Got a couple of patches related to sticky windows: stickysignal.e17.diff Add edje signals to e17 for window sticky state changes, and also allow the border/theme to toggle the sticky state of a window.
stickywindows.e17.ibox.diff With the ibox module set to only show the windows of the active desktop, it now also shows the sticky windows from the other desktops. maximise.e17.diff When using the 'Fill available space' maximize policy, a maximising window now takes also takes into account all the sticky windows (not just the ones on the active desktop). And it also now ignores windows that are iconified. regards, Peter van de Werken
Index: apps/e/src/bin/e_border.c =================================================================== RCS file: /var/cvs/e/e17/apps/e/src/bin/e_border.c,v retrieving revision 1.625 diff -u -r1.625 e_border.c --- apps/e/src/bin/e_border.c 6 Feb 2008 00:03:23 -0000 1.625 +++ apps/e/src/bin/e_border.c 23 Feb 2008 21:39:27 -0000 @@ -2265,6 +2265,7 @@ } } + edje_object_signal_emit(bd->bg_object, "e,state,sticky", "e"); ev = E_NEW(E_Event_Border_Stick, 1); ev->border = bd; e_object_ref(E_OBJECT(bd)); @@ -2300,6 +2301,7 @@ } } + edje_object_signal_emit(bd->bg_object, "e,state,unsticky", "e"); ev = E_NEW(E_Event_Border_Unstick, 1); ev->border = bd; e_object_ref(E_OBJECT(bd)); @@ -5932,6 +5934,8 @@ } if (bd->shaded) edje_object_signal_emit(bd->bg_object, "e,state,shaded", "e"); + if (bd->sticky) + edje_object_signal_emit(bd->bg_object, "e,state,sticky", "e"); if ((bd->maximized & E_MAXIMIZE_TYPE) == E_MAXIMIZE_FULLSCREEN) edje_object_signal_emit(bd->bg_object, "e,action,maximize,fullscreen", "e"); else if ((bd->maximized & E_MAXIMIZE_TYPE) != E_MAXIMIZE_NONE) Index: e_config.c =================================================================== RCS file: /var/cvs/e/e17/apps/e/src/bin/e_config.c,v retrieving revision 1.282 diff -u -r1.282 apps/e/src/bin/e_config.c --- e_config.c 20 Feb 2008 04:12:58 -0000 1.282 +++ e_config.c 23 Feb 2008 21:42:17 -0000 @@ -1113,6 +1113,10 @@ "e.event.shade", E_BINDING_MODIFIER_NONE, 1, "window_shaded_toggle", "up"); + CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,clicked,1", + "e.event.sticky", + E_BINDING_MODIFIER_NONE, 1, + "window_sticky_toggle", NULL); CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,clicked,?", "e.event.lower", E_BINDING_MODIFIER_NONE, 1,
Index: apps/e/src/modules/ibox/e_mod_main.c =================================================================== RCS file: /var/cvs/e/e17/apps/e/src/modules/ibox/e_mod_main.c,v retrieving revision 1.92 diff -u -r1.92 e_mod_main.c --- apps/e/src/modules/ibox/e_mod_main.c 27 Jan 2008 19:33:27 -0000 1.92 +++ apps/e/src/modules/ibox/e_mod_main.c 23 Feb 2008 21:39:33 -0000 @@ -378,7 +378,11 @@ } else if((b->inst->ci->show_zone == 1) && (bd->iconic)) { - if ((b->inst->ci->show_desk == 0) && (bd->zone == b->zone)) + if (bd->sticky) + { + ok = 1; + } + else if ((b->inst->ci->show_desk == 0) && (bd->zone == b->zone)) { ok = 1; } @@ -1039,7 +1043,7 @@ { b = l->data; if (_ibox_icon_find(b, ev->border)) continue; - if ((b->inst->ci->show_desk) && (ev->border->desk != desk)) continue; + if ((b->inst->ci->show_desk) && (ev->border->desk != desk) && (!ev->border->sticky)) continue; ic = _ibox_icon_new(b, ev->border); if (!ic) continue; b->icons = evas_list_append(b->icons, ic); @@ -1101,7 +1105,7 @@ { b = l->data; if (_ibox_icon_find(b, ev->border)) continue; - if ((b->inst->ci->show_desk) && (ev->border->desk != desk)) continue; + if ((b->inst->ci->show_desk) && (ev->border->desk != desk) && (!ev->border->sticky)) continue; ic = _ibox_icon_new(b, ev->border); if (!ic) continue; b->icons = evas_list_append(b->icons, ic);
Index: apps/e/src/bin/e_maximize.c =================================================================== RCS file: /var/cvs/e/e17/apps/e/src/bin/e_maximize.c,v retrieving revision 1.21 diff -u -r1.21 e_maximize.c --- apps/e/src/bin/e_maximize.c 30 Sep 2007 23:21:54 -0000 1.21 +++ apps/e/src/bin/e_maximize.c 23 Feb 2008 21:39:31 -0000 @@ -180,7 +180,7 @@ bl = e_container_border_list_first(bd->zone->container); while ((bd2 = e_container_border_list_next(bl))) { - if ((bd2->zone != bd->zone) || (bd == bd2) || (bd2->desk != bd->desk)) + if ((bd2->zone != bd->zone) || (bd == bd2) || (bd2->desk != bd->desk && !bd2->sticky) || (bd2->iconic)) continue; OBSTACLE(bd2->x, bd2->y, bd2->x + bd2->w, bd2->y + bd2->h); }
pgpuousKK7VGF.pgp
Description: PGP signature
------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel