118
127
return window->priv->class;
122
destroy_recursive (XigWindow *window)
126
/* Destroy all children first */
127
for (link = window->priv->children; link; link = link->next)
129
XigWindow *w = link->data;
130
destroy_recursive (w);
133
g_signal_emit (window, signals[DESTROY_NOTIFY], 0);
134
g_signal_emit (window->priv->parent, signals[CHILD_DESTROY_NOTIFY], 0, window);
136
g_object_unref (window);
140
xig_window_destroy (XigWindow *window)
142
window->priv->parent->priv->children = g_list_remove (window->priv->parent->priv->children, window);
143
destroy_recursive (window);
147
xig_window_destroy_subwindows (XigWindow *window)
150
for (link = window->priv->children; link; link = link->next)
152
XigWindow *w = link->data;
153
destroy_recursive (w);
155
g_list_free (window->priv->children);
156
window->priv->children = NULL;
131
xig_window_get_x (XigWindow *window)
133
return window->priv->x;
137
xig_window_get_y (XigWindow *window)
139
return window->priv->y;
143
xig_window_get_width (XigWindow *window)
145
return window->priv->width;
149
xig_window_get_height (XigWindow *window)
151
return window->priv->height;
155
xig_window_get_border_width (XigWindow *window)
157
return window->priv->border_width;
161
xig_window_get_visual (XigWindow *window)
163
return window->priv->visual;
167
xig_window_get_background_pixmap (XigWindow *window)
169
return window->priv->background_pixmap;
173
xig_window_get_background_pixel (XigWindow *window)
175
return window->priv->background_pixel;
179
xig_window_get_border_pixmap (XigWindow *window)
181
return window->priv->border_pixmap;
185
xig_window_get_border_pixel (XigWindow *window)
187
return window->priv->border_pixel;
191
xig_window_get_bit_gravity (XigWindow *window)
193
return window->priv->bit_gravity;
197
xig_window_get_win_gravity (XigWindow *window)
199
return window->priv->win_gravity;
203
xig_window_get_backing_store (XigWindow *window)
205
return window->priv->backing_store;
209
xig_window_get_backing_planes (XigWindow *window)
211
return window->priv->backing_planes;
215
xig_window_get_backing_pixel (XigWindow *window)
217
return window->priv->backing_pixel;
221
xig_window_get_override_redirect (XigWindow *window)
223
return window->priv->override_redirect;
227
xig_window_get_save_under (XigWindow *window)
229
return window->priv->save_under;
233
xig_window_get_properties (XigWindow *window)
235
return window->priv->properties;
239
xig_window_get_property (XigWindow *window, const gchar *name)
241
return g_hash_table_lookup (window->priv->properties, name);
245
xig_window_get_children (XigWindow *window)
247
return window->priv->children;
251
xig_window_is_root (XigWindow *window)
253
return window->priv->parent == NULL;
257
xig_window_get_root (XigWindow *window)
259
while (window->priv->parent)
260
window = window->priv->parent;
265
xig_window_get_parent (XigWindow *window)
267
return window->priv->parent;
271
xig_window_get_window_below (XigWindow *window)
273
XigWindow *parent = window->priv->parent;
276
link = g_list_find (parent->priv->children, window);
277
if (link && link->prev)
278
return link->prev->data;
284
xig_window_get_window_above (XigWindow *window)
286
XigWindow *parent = window->priv->parent;
289
link = g_list_find (parent->priv->children, window);
290
if (link && link->next)
291
return link->next->data;
297
xig_window_has_child (XigWindow *window, XigWindow *child)
299
return g_list_find (window->priv->children, child) != NULL;
303
xig_window_get_is_on_bottom (XigWindow *window)
307
link = g_list_find (window->priv->parent->priv->children, window);
308
g_return_val_if_fail (link != NULL, FALSE);
310
return link->prev == NULL;
314
xig_window_get_is_on_top (XigWindow *window)
318
link = g_list_find (window->priv->parent->priv->children, window);
319
g_return_val_if_fail (link != NULL, FALSE);
321
return link->next == NULL;
325
xig_window_has_sibling (XigWindow *window, XigWindow *sibling)
327
return xig_window_has_child (window->priv->parent, sibling);
331
xig_window_add_child (XigWindow *window, XigRemoteClient *client, guint32 wid, XigWindowClassType class, gint16 x, gint16 y, guint16 width, guint16 height, guint16 border_width, XigVisual *visual, XigCreateWindowValueMask value_mask, XigPixmap *background_pixmap, guint32 background_pixel, XigPixmap *border_pixmap, guint32 border_pixel, XigBitGravity bit_gravity, XigWinGravity win_gravity, guint8 backing_store, guint32 backing_planes, guint32 backing_pixel, gboolean override_redirect, gboolean save_under)
335
child = _xig_window_new (window->priv->server, client, wid, window, class, x, y, width, height, border_width, visual);
336
xig_window_change_attributes (child, value_mask, background_pixmap, background_pixel, border_pixmap, border_pixel, bit_gravity, win_gravity, backing_store, backing_planes, backing_pixel, override_redirect, save_under);
337
_xig_server_add_window (xig_window_get_server (window), child);
343
xig_window_change_attributes (XigWindow *window, XigCreateWindowValueMask value_mask, XigPixmap *background_pixmap, guint32 background_pixel, XigPixmap *border_pixmap, guint32 border_pixel, XigBitGravity bit_gravity, XigWinGravity win_gravity, guint8 backing_store, guint32 backing_planes, guint32 backing_pixel, gboolean override_redirect, gboolean save_under)
345
if (value_mask & XIG_WINDOW_VALUE_MASK_background_pixmap)
347
if (window->priv->background_pixmap)
348
g_object_unref (window->priv->background_pixmap);
349
window->priv->background_pixmap = NULL;
350
if (background_pixmap)
351
window->priv->background_pixmap = g_object_ref (background_pixmap);
353
if (value_mask & XIG_WINDOW_VALUE_MASK_background_pixel)
354
window->priv->background_pixel = background_pixel;
355
if (value_mask & XIG_WINDOW_VALUE_MASK_border_pixmap)
357
if (window->priv->border_pixmap)
358
g_object_unref (window->priv->border_pixmap);
359
window->priv->border_pixmap = NULL;
361
window->priv->border_pixmap = g_object_ref (border_pixmap);
363
if (value_mask & XIG_WINDOW_VALUE_MASK_border_pixel)
364
window->priv->border_pixel = border_pixel;
365
if (value_mask & XIG_WINDOW_VALUE_MASK_bit_gravity)
366
window->priv->bit_gravity = bit_gravity;
367
if (value_mask & XIG_WINDOW_VALUE_MASK_win_gravity)
368
window->priv->win_gravity = win_gravity;
369
if (value_mask & XIG_WINDOW_VALUE_MASK_backing_store)
370
window->priv->backing_store = backing_store;
371
if (value_mask & XIG_WINDOW_VALUE_MASK_backing_planes)
372
window->priv->backing_planes = backing_planes;
373
if (value_mask & XIG_WINDOW_VALUE_MASK_backing_pixel)
374
window->priv->backing_pixel = backing_pixel;
375
if (value_mask & XIG_WINDOW_VALUE_MASK_override_redirect)
376
window->priv->override_redirect = override_redirect;
377
if (value_mask & XIG_WINDOW_VALUE_MASK_save_under)
378
window->priv->save_under = save_under;
332
554
g_signal_emit (window, signals[CHILD_CIRCULATE_NOTIFY], 0, child);
336
xig_window_get_x (XigWindow *window)
338
return window->priv->x;
342
xig_window_get_y (XigWindow *window)
344
return window->priv->y;
348
xig_window_get_width (XigWindow *window)
350
return window->priv->width;
354
xig_window_get_height (XigWindow *window)
356
return window->priv->height;
360
xig_window_get_border_width (XigWindow *window)
362
return window->priv->border_width;
366
xig_window_get_visual (XigWindow *window)
368
return window->priv->visual;
372
xig_window_get_background_pixmap (XigWindow *window)
374
return window->priv->background_pixmap;
378
xig_window_set_background_pixmap (XigWindow *window, XigPixmap *pixmap)
380
window->priv->background_pixmap = g_object_ref (pixmap);
384
xig_window_set_background_pixel (XigWindow *window, guint32 pixel)
386
window->priv->background_pixel = pixel;
390
xig_window_get_background_pixel (XigWindow *window)
392
return window->priv->background_pixel;
396
xig_window_get_border_pixmap (XigWindow *window)
398
return window->priv->border_pixmap;
402
xig_window_set_border_pixmap (XigWindow *window, XigPixmap *pixmap)
404
window->priv->border_pixmap = g_object_ref (pixmap);
408
xig_window_set_border_pixel (XigWindow *window, guint32 pixel)
410
window->priv->border_pixel = pixel;
414
xig_window_get_border_pixel (XigWindow *window)
416
return window->priv->border_pixel;
420
xig_window_get_bit_gravity (XigWindow *window)
422
return window->priv->bit_gravity;
426
xig_window_set_bit_gravity (XigWindow *window, XigBitGravity gravity)
428
window->priv->bit_gravity = gravity;
432
xig_window_get_win_gravity (XigWindow *window)
434
return window->priv->win_gravity;
438
xig_window_set_win_gravity (XigWindow *window, XigWinGravity gravity)
440
window->priv->win_gravity = gravity;
444
xig_window_set_backing_store (XigWindow *window, guint8 store)
446
window->priv->backing_store = store;
450
xig_window_get_backing_store (XigWindow *window)
452
return window->priv->backing_store;
456
xig_window_set_backing_planes (XigWindow *window, guint32 planes)
458
window->priv->backing_planes = planes;
462
xig_window_get_backing_planes (XigWindow *window)
464
return window->priv->backing_planes;
468
xig_window_set_backing_pixel (XigWindow *window, guint32 pixel)
470
window->priv->backing_pixel = pixel;
474
xig_window_get_backing_pixel (XigWindow *window)
476
return window->priv->backing_pixel;
480
xig_window_set_override_redirect (XigWindow *window, gboolean override_redirect)
482
window->priv->override_redirect = override_redirect;
486
xig_window_get_override_redirect (XigWindow *window)
488
return window->priv->override_redirect;
492
xig_window_set_save_under (XigWindow *window, gboolean save_under)
494
window->priv->save_under = save_under;
498
xig_window_get_save_under (XigWindow *window)
500
return window->priv->save_under;
504
xig_window_get_properties (XigWindow *window)
506
return window->priv->properties;
510
xig_window_get_property (XigWindow *window, const gchar *name)
512
return g_hash_table_lookup (window->priv->properties, name);
516
558
property_free (XigWindowProperty *property)
585
627
g_signal_emit (window, signals[PROPERTY_NOTIFY], 0, name);
589
xig_window_get_children (XigWindow *window)
591
return window->priv->children;
595
xig_window_is_root (XigWindow *window)
597
return window->priv->parent == NULL;
601
xig_window_get_root (XigWindow *window)
603
while (window->priv->parent)
604
window = window->priv->parent;
609
xig_window_get_parent (XigWindow *window)
611
return window->priv->parent;
615
xig_window_get_window_below (XigWindow *window)
617
XigWindow *parent = window->priv->parent;
620
link = g_list_find (parent->priv->children, window);
621
if (link && link->prev)
622
return link->prev->data;
628
xig_window_get_window_above (XigWindow *window)
630
XigWindow *parent = window->priv->parent;
633
link = g_list_find (parent->priv->children, window);
634
if (link && link->next)
635
return link->next->data;
641
xig_window_has_child (XigWindow *window, XigWindow *child)
643
return g_list_find (window->priv->children, child) != NULL;
647
xig_window_get_is_on_bottom (XigWindow *window)
651
link = g_list_find (window->priv->parent->priv->children, window);
652
g_return_val_if_fail (link != NULL, FALSE);
654
return link->prev == NULL;
658
xig_window_get_is_on_top (XigWindow *window)
662
link = g_list_find (window->priv->parent->priv->children, window);
663
g_return_val_if_fail (link != NULL, FALSE);
665
return link->next == NULL;
669
xig_window_has_sibling (XigWindow *window, XigWindow *sibling)
671
return xig_window_has_child (window->priv->parent, sibling);
631
destroy_recursive (XigWindow *window)
635
/* Destroy all children first */
636
for (link = window->priv->children; link; link = link->next)
638
XigWindow *w = link->data;
639
destroy_recursive (w);
642
g_signal_emit (window, signals[DESTROY_NOTIFY], 0);
643
g_signal_emit (window->priv->parent, signals[CHILD_DESTROY_NOTIFY], 0, window);
645
g_object_unref (window);
649
xig_window_destroy (XigWindow *window)
651
window->priv->parent->priv->children = g_list_remove (window->priv->parent->priv->children, window);
652
destroy_recursive (window);
656
xig_window_destroy_subwindows (XigWindow *window)
659
for (link = window->priv->children; link; link = link->next)
661
XigWindow *w = link->data;
662
destroy_recursive (w);
664
g_list_free (window->priv->children);
665
window->priv->children = NULL;