Mercurial > audlegacy-plugins
comparison src/skins/ui_skinned_equalizer_slider.c @ 2888:7c7471554d88
convert some widgets into windowless ones
author | Tomasz Mon <desowin@gmail.com> |
---|---|
date | Tue, 12 Aug 2008 15:50:01 +0200 |
parents | ba91ea50f214 |
children | 963796db51ea |
comparison
equal
deleted
inserted
replaced
2887:3fce72e687dd | 2888:7c7471554d88 |
---|---|
49 | 49 |
50 static void ui_skinned_equalizer_slider_class_init (UiSkinnedEqualizerSliderClass *klass); | 50 static void ui_skinned_equalizer_slider_class_init (UiSkinnedEqualizerSliderClass *klass); |
51 static void ui_skinned_equalizer_slider_init (UiSkinnedEqualizerSlider *equalizer_slider); | 51 static void ui_skinned_equalizer_slider_init (UiSkinnedEqualizerSlider *equalizer_slider); |
52 static void ui_skinned_equalizer_slider_destroy (GtkObject *object); | 52 static void ui_skinned_equalizer_slider_destroy (GtkObject *object); |
53 static void ui_skinned_equalizer_slider_realize (GtkWidget *widget); | 53 static void ui_skinned_equalizer_slider_realize (GtkWidget *widget); |
54 static void ui_skinned_equalizer_slider_unrealize (GtkWidget *widget); | |
55 static void ui_skinned_equalizer_slider_map (GtkWidget *widget); | |
56 static void ui_skinned_equalizer_slider_unmap (GtkWidget *widget); | |
54 static void ui_skinned_equalizer_slider_size_request (GtkWidget *widget, GtkRequisition *requisition); | 57 static void ui_skinned_equalizer_slider_size_request (GtkWidget *widget, GtkRequisition *requisition); |
55 static void ui_skinned_equalizer_slider_size_allocate (GtkWidget *widget, GtkAllocation *allocation); | 58 static void ui_skinned_equalizer_slider_size_allocate (GtkWidget *widget, GtkAllocation *allocation); |
56 static gboolean ui_skinned_equalizer_slider_expose (GtkWidget *widget, GdkEventExpose *event); | 59 static gboolean ui_skinned_equalizer_slider_expose (GtkWidget *widget, GdkEventExpose *event); |
57 static gboolean ui_skinned_equalizer_slider_button_press (GtkWidget *widget, GdkEventButton *event); | 60 static gboolean ui_skinned_equalizer_slider_button_press (GtkWidget *widget, GdkEventButton *event); |
58 static gboolean ui_skinned_equalizer_slider_button_release (GtkWidget *widget, GdkEventButton *event); | 61 static gboolean ui_skinned_equalizer_slider_button_release (GtkWidget *widget, GdkEventButton *event); |
95 parent_class = gtk_type_class (gtk_widget_get_type ()); | 98 parent_class = gtk_type_class (gtk_widget_get_type ()); |
96 | 99 |
97 object_class->destroy = ui_skinned_equalizer_slider_destroy; | 100 object_class->destroy = ui_skinned_equalizer_slider_destroy; |
98 | 101 |
99 widget_class->realize = ui_skinned_equalizer_slider_realize; | 102 widget_class->realize = ui_skinned_equalizer_slider_realize; |
103 widget_class->unrealize = ui_skinned_equalizer_slider_unrealize; | |
104 widget_class->map = ui_skinned_equalizer_slider_map; | |
105 widget_class->unmap = ui_skinned_equalizer_slider_unmap; | |
100 widget_class->expose_event = ui_skinned_equalizer_slider_expose; | 106 widget_class->expose_event = ui_skinned_equalizer_slider_expose; |
101 widget_class->size_request = ui_skinned_equalizer_slider_size_request; | 107 widget_class->size_request = ui_skinned_equalizer_slider_size_request; |
102 widget_class->size_allocate = ui_skinned_equalizer_slider_size_allocate; | 108 widget_class->size_allocate = ui_skinned_equalizer_slider_size_allocate; |
103 widget_class->button_press_event = ui_skinned_equalizer_slider_button_press; | 109 widget_class->button_press_event = ui_skinned_equalizer_slider_button_press; |
104 widget_class->button_release_event = ui_skinned_equalizer_slider_button_release; | 110 widget_class->button_release_event = ui_skinned_equalizer_slider_button_release; |
116 } | 122 } |
117 | 123 |
118 static void ui_skinned_equalizer_slider_init(UiSkinnedEqualizerSlider *equalizer_slider) { | 124 static void ui_skinned_equalizer_slider_init(UiSkinnedEqualizerSlider *equalizer_slider) { |
119 UiSkinnedEqualizerSliderPrivate *priv = UI_SKINNED_EQUALIZER_SLIDER_GET_PRIVATE(equalizer_slider); | 125 UiSkinnedEqualizerSliderPrivate *priv = UI_SKINNED_EQUALIZER_SLIDER_GET_PRIVATE(equalizer_slider); |
120 priv->pressed = FALSE; | 126 priv->pressed = FALSE; |
127 | |
128 equalizer_slider->event_window = NULL; | |
129 GTK_WIDGET_SET_FLAGS(equalizer_slider, GTK_NO_WINDOW); | |
121 } | 130 } |
122 | 131 |
123 GtkWidget* ui_skinned_equalizer_slider_new(GtkWidget *fixed, gint x, gint y) { | 132 GtkWidget* ui_skinned_equalizer_slider_new(GtkWidget *fixed, gint x, gint y) { |
124 UiSkinnedEqualizerSlider *es = g_object_new (ui_skinned_equalizer_slider_get_type (), NULL); | 133 UiSkinnedEqualizerSlider *es = g_object_new (ui_skinned_equalizer_slider_get_type (), NULL); |
125 UiSkinnedEqualizerSliderPrivate *priv = UI_SKINNED_EQUALIZER_SLIDER_GET_PRIVATE(es); | 134 UiSkinnedEqualizerSliderPrivate *priv = UI_SKINNED_EQUALIZER_SLIDER_GET_PRIVATE(es); |
153 gint attributes_mask; | 162 gint attributes_mask; |
154 | 163 |
155 g_return_if_fail (widget != NULL); | 164 g_return_if_fail (widget != NULL); |
156 g_return_if_fail (UI_SKINNED_IS_EQUALIZER_SLIDER(widget)); | 165 g_return_if_fail (UI_SKINNED_IS_EQUALIZER_SLIDER(widget)); |
157 | 166 |
158 GTK_WIDGET_SET_FLAGS(widget, GTK_REALIZED); | 167 if (GTK_WIDGET_CLASS (parent_class)->realize) |
168 (* GTK_WIDGET_CLASS (parent_class)->realize) (widget); | |
159 equalizer_slider = UI_SKINNED_EQUALIZER_SLIDER(widget); | 169 equalizer_slider = UI_SKINNED_EQUALIZER_SLIDER(widget); |
160 | 170 |
161 attributes.x = widget->allocation.x; | 171 attributes.x = widget->allocation.x; |
162 attributes.y = widget->allocation.y; | 172 attributes.y = widget->allocation.y; |
163 attributes.width = widget->allocation.width; | 173 attributes.width = widget->allocation.width; |
164 attributes.height = widget->allocation.height; | 174 attributes.height = widget->allocation.height; |
165 attributes.wclass = GDK_INPUT_OUTPUT; | 175 attributes.wclass = GDK_INPUT_ONLY; |
166 attributes.window_type = GDK_WINDOW_CHILD; | 176 attributes.window_type = GDK_WINDOW_CHILD; |
167 attributes.event_mask = gtk_widget_get_events(widget); | 177 attributes.event_mask = gtk_widget_get_events(widget); |
168 attributes.event_mask |= GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | | 178 attributes.event_mask |= GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | |
169 GDK_POINTER_MOTION_MASK | GDK_SCROLL_MASK; | 179 GDK_POINTER_MOTION_MASK | GDK_SCROLL_MASK; |
170 attributes.visual = gtk_widget_get_visual(widget); | 180 |
171 attributes.colormap = gtk_widget_get_colormap(widget); | 181 attributes_mask = GDK_WA_X | GDK_WA_Y; |
172 | 182 equalizer_slider->event_window = gdk_window_new(widget->parent->window, &attributes, attributes_mask); |
173 attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; | 183 |
174 widget->window = gdk_window_new(widget->parent->window, &attributes, attributes_mask); | 184 gdk_window_set_user_data(equalizer_slider->event_window, widget); |
175 | 185 } |
176 widget->style = gtk_style_attach(widget->style, widget->window); | 186 |
177 gdk_window_set_user_data(widget->window, widget); | 187 static void ui_skinned_equalizer_slider_unrealize(GtkWidget *widget) { |
188 UiSkinnedEqualizerSlider *equalizer_slider = UI_SKINNED_EQUALIZER_SLIDER(widget); | |
189 | |
190 if ( equalizer_slider->event_window != NULL ) | |
191 { | |
192 gdk_window_set_user_data( equalizer_slider->event_window , NULL ); | |
193 gdk_window_destroy( equalizer_slider->event_window ); | |
194 equalizer_slider->event_window = NULL; | |
195 } | |
196 | |
197 if (GTK_WIDGET_CLASS (parent_class)->unrealize) | |
198 (* GTK_WIDGET_CLASS (parent_class)->unrealize) (widget); | |
199 } | |
200 | |
201 static void ui_skinned_equalizer_slider_map (GtkWidget *widget) | |
202 { | |
203 UiSkinnedEqualizerSlider *equalizer_slider = UI_SKINNED_EQUALIZER_SLIDER(widget); | |
204 | |
205 if (equalizer_slider->event_window != NULL) | |
206 gdk_window_show (equalizer_slider->event_window); | |
207 | |
208 if (GTK_WIDGET_CLASS (parent_class)->map) | |
209 (* GTK_WIDGET_CLASS (parent_class)->map) (widget); | |
210 } | |
211 | |
212 static void ui_skinned_equalizer_slider_unmap (GtkWidget *widget) | |
213 { | |
214 UiSkinnedEqualizerSlider *equalizer_slider = UI_SKINNED_EQUALIZER_SLIDER(widget); | |
215 | |
216 if (equalizer_slider->event_window != NULL) | |
217 gdk_window_hide (equalizer_slider->event_window); | |
218 | |
219 if (GTK_WIDGET_CLASS (parent_class)->unmap) | |
220 (* GTK_WIDGET_CLASS (parent_class)->unmap) (widget); | |
178 } | 221 } |
179 | 222 |
180 static void ui_skinned_equalizer_slider_size_request(GtkWidget *widget, GtkRequisition *requisition) { | 223 static void ui_skinned_equalizer_slider_size_request(GtkWidget *widget, GtkRequisition *requisition) { |
181 UiSkinnedEqualizerSliderPrivate *priv = UI_SKINNED_EQUALIZER_SLIDER_GET_PRIVATE(widget); | 224 UiSkinnedEqualizerSliderPrivate *priv = UI_SKINNED_EQUALIZER_SLIDER_GET_PRIVATE(widget); |
182 | 225 |
190 | 233 |
191 widget->allocation = *allocation; | 234 widget->allocation = *allocation; |
192 widget->allocation.x *= (priv->scaled ? config.scale_factor : 1); | 235 widget->allocation.x *= (priv->scaled ? config.scale_factor : 1); |
193 widget->allocation.y *= (priv->scaled ? config.scale_factor : 1); | 236 widget->allocation.y *= (priv->scaled ? config.scale_factor : 1); |
194 if (GTK_WIDGET_REALIZED (widget)) | 237 if (GTK_WIDGET_REALIZED (widget)) |
195 gdk_window_move_resize(widget->window, widget->allocation.x, widget->allocation.y, allocation->width, allocation->height); | 238 if (equalizer_slider->event_window) |
239 gdk_window_move_resize(equalizer_slider->event_window, widget->allocation.x, widget->allocation.y, allocation->width, allocation->height); | |
196 | 240 |
197 equalizer_slider->x = widget->allocation.x/(priv->scaled ? config.scale_factor : 1); | 241 equalizer_slider->x = widget->allocation.x/(priv->scaled ? config.scale_factor : 1); |
198 equalizer_slider->y = widget->allocation.y/(priv->scaled ? config.scale_factor : 1); | 242 equalizer_slider->y = widget->allocation.y/(priv->scaled ? config.scale_factor : 1); |
199 } | 243 } |
200 | 244 |
220 if (priv->pressed) | 264 if (priv->pressed) |
221 skin_draw_pixbuf(widget, aud_active_skin, obj, priv->skin_index, 0, 176, 1, priv->position, 11, 11); | 265 skin_draw_pixbuf(widget, aud_active_skin, obj, priv->skin_index, 0, 176, 1, priv->position, 11, 11); |
222 else | 266 else |
223 skin_draw_pixbuf(widget, aud_active_skin, obj, priv->skin_index, 0, 164, 1, priv->position, 11, 11); | 267 skin_draw_pixbuf(widget, aud_active_skin, obj, priv->skin_index, 0, 164, 1, priv->position, 11, 11); |
224 | 268 |
225 ui_skinned_widget_draw(widget, obj, priv->width, priv->height, priv->scaled); | 269 ui_skinned_widget_draw_with_coordinates(widget, obj, priv->width, priv->height, |
270 widget->allocation.x, | |
271 widget->allocation.y, | |
272 priv->scaled); | |
226 | 273 |
227 g_object_unref(obj); | 274 g_object_unref(obj); |
228 | 275 |
229 return FALSE; | 276 return FALSE; |
230 } | 277 } |