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);
      }

Attachment: 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

Reply via email to