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 }