Hi,
here is a little patch to add the remember taskbar in the window menu.
It also add them to the remember possibilities. And the skip window list is
modified to trigger a E_EVENT_BORDER_PROPERTY when changed.

lok
Index: src/bin/e_border.c
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_border.c,v
retrieving revision 1.629
diff -u -r1.629 e_border.c
--- src/bin/e_border.c	7 Mar 2008 11:51:31 -0000	1.629
+++ src/bin/e_border.c	7 Mar 2008 12:19:29 -0000
@@ -5204,7 +5204,6 @@
 
 	if (bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DOCK)
 	  {
-	     /* TODO: Make this user options */
 	     if (!bd->client.netwm.state.skip_pager)
 	       {
 		  bd->client.netwm.state.skip_pager = 1;
@@ -5837,6 +5836,10 @@
 	       }
 	     if (rem->apply & E_REMEMBER_APPLY_SKIP_WINLIST)
 	       bd->user_skip_winlist = rem->prop.skip_winlist;
+	     if (rem->apply & E_REMEMBER_APPLY_SKIP_PAGER)
+	       bd->client.netwm.state.skip_pager = rem->prop.skip_pager;
+	     if (rem->apply & E_REMEMBER_APPLY_SKIP_TASKBAR)
+	       bd->client.netwm.state.skip_taskbar = rem->prop.skip_taskbar;
 	     if (rem->apply & E_REMEMBER_APPLY_ICON_PREF)
 	       bd->icon_preference = rem->prop.icon_preference;
 	     if (rem->apply & E_REMEMBER_SET_FOCUS_ON_START)
Index: src/bin/e_remember.c
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_remember.c,v
retrieving revision 1.24
diff -u -r1.24 e_remember.c
--- src/bin/e_remember.c	15 Jul 2007 08:28:03 -0000	1.24
+++ src/bin/e_remember.c	7 Mar 2008 12:19:34 -0000
@@ -288,6 +288,8 @@
      rem->prop.shaded = 50 + bd->shade.dir;
    
    rem->prop.skip_winlist = bd->user_skip_winlist;
+   rem->prop.skip_pager   = bd->client.netwm.state.skip_pager;
+   rem->prop.skip_taskbar = bd->client.netwm.state.skip_taskbar;
    rem->prop.icon_preference = bd->icon_preference;
 
    e_desk_xy_get(bd->desk, &rem->prop.desk_x, &rem->prop.desk_y);
Index: src/bin/e_remember.h
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_remember.h,v
retrieving revision 1.12
diff -u -r1.12 e_remember.h
--- src/bin/e_remember.h	28 Dec 2007 03:18:37 -0000	1.12
+++ src/bin/e_remember.h	7 Mar 2008 12:19:34 -0000
@@ -23,8 +23,10 @@
 #define E_REMEMBER_APPLY_ZONE (1 << 8)
 #define E_REMEMBER_APPLY_RUN (1 << 9)
 #define E_REMEMBER_APPLY_SKIP_WINLIST (1 << 10)
-#define E_REMEMBER_APPLY_ICON_PREF (1 << 11)
-#define E_REMEMBER_SET_FOCUS_ON_START (1 << 12)
+#define E_REMEMBER_APPLY_SKIP_PAGER (1 << 11)
+#define E_REMEMBER_APPLY_SKIP_TASKBAR (1 << 12)
+#define E_REMEMBER_APPLY_ICON_PREF (1 << 13)
+#define E_REMEMBER_SET_FOCUS_ON_START (1 << 14)
 
 #else
 #ifndef E_REMEMBER_H
@@ -81,6 +83,8 @@
 	unsigned char sticky;
 	unsigned char shaded;
 	unsigned char skip_winlist;
+	unsigned char skip_pager;
+	unsigned char skip_taskbar;
 	unsigned char icon_preference;
       
 	int           desk_x, desk_y;
Index: src/bin/e_int_border_menu.c
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_int_border_menu.c,v
retrieving revision 1.78
diff -u -r1.78 e_int_border_menu.c
--- src/bin/e_int_border_menu.c	12 Jan 2008 07:58:18 -0000	1.78
+++ src/bin/e_int_border_menu.c	7 Mar 2008 12:19:36 -0000
@@ -24,6 +24,7 @@
 static void _e_border_menu_cb_fullscreen(void *data, E_Menu *m, E_Menu_Item *mi);
 static void _e_border_menu_cb_skip_winlist(void *data, E_Menu *m, E_Menu_Item *mi);
 static void _e_border_menu_cb_skip_pager(void *data, E_Menu *m, E_Menu_Item *mi);
+static void _e_border_menu_cb_skip_taskbar(void *data, E_Menu *m, E_Menu_Item *mi);
 static void _e_border_menu_cb_sendto_pre(void *data, E_Menu *m, E_Menu_Item *mi);
 static void _e_border_menu_cb_sendto(void *data, E_Menu *m, E_Menu_Item *mi);
 static void _e_border_menu_cb_pin(void *data, E_Menu *m, E_Menu_Item *mi);
@@ -660,6 +661,7 @@
      bd->user_skip_winlist = e_menu_item_toggle_get(mi);
    else
      bd->user_skip_winlist = 0;
+   bd->changed = 1;
    if (bd->remember) e_remember_update(bd->remember, bd);
 }
 
@@ -680,6 +682,22 @@
 }
 
 static void
+_e_border_menu_cb_skip_taskbar(void *data, E_Menu *m, E_Menu_Item *mi)
+{
+   E_Border *bd;
+
+   bd = data;
+   if (!bd) return;
+
+   if ((bd->client.icccm.accepts_focus) || (bd->client.icccm.take_focus))
+     bd->client.netwm.state.skip_taskbar = e_menu_item_toggle_get(mi);
+   else
+     bd->client.netwm.state.skip_taskbar = 0;
+   bd->changed = 1;
+   if (bd->remember) e_remember_update(bd->remember, bd);
+}
+
+static void
 _e_border_menu_cb_sendto_pre(void *data, E_Menu *m, E_Menu_Item *mi)
 {
    E_Menu *subm;
@@ -985,6 +1003,16 @@
 			     e_theme_edje_file_get("base/theme/borders",
 						   "e/widgets/border/default/skip_pager"),
 			     "e/widgets/border/default/skip_pager");
+
+   submi = e_menu_item_new(subm);
+   e_menu_item_label_set(submi, _("Taskbar"));
+   e_menu_item_check_set(submi, 1);
+   e_menu_item_toggle_set(submi, bd->client.netwm.state.skip_taskbar);
+   e_menu_item_callback_set(submi, _e_border_menu_cb_skip_taskbar, bd);
+   e_menu_item_icon_edje_set(submi,
+			     e_theme_edje_file_get("base/theme/borders",
+						   "e/widgets/border/default/skip_taskbar"),
+			     "e/widgets/border/default/skip_taskbar");
 }
 
 static void
Index: src/bin/e_int_border_remember.c
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_int_border_remember.c,v
retrieving revision 1.17
diff -u -r1.17 e_int_border_remember.c
--- src/bin/e_int_border_remember.c	28 Dec 2007 03:18:37 -0000	1.17
+++ src/bin/e_int_border_remember.c	7 Mar 2008 12:19:40 -0000
@@ -42,6 +42,8 @@
       int apply_shade;
       int apply_zone;
       int apply_skip_winlist;
+      int apply_skip_pager;
+      int apply_skip_taskbar;
       int apply_run;
       int apply_icon_pref;
       int set_focus_on_start;
@@ -99,6 +101,8 @@
 	if (cfdata->border->remember->apply & E_REMEMBER_APPLY_SHADE) cfdata->remember.apply_shade = 1;
 	if (cfdata->border->remember->apply & E_REMEMBER_APPLY_ZONE) cfdata->remember.apply_zone = 1;
 	if (cfdata->border->remember->apply & E_REMEMBER_APPLY_SKIP_WINLIST) cfdata->remember.apply_skip_winlist = 1;
+	if (cfdata->border->remember->apply & E_REMEMBER_APPLY_SKIP_PAGER) cfdata->remember.apply_skip_pager = 1;
+	if (cfdata->border->remember->apply & E_REMEMBER_APPLY_SKIP_TASKBAR) cfdata->remember.apply_skip_taskbar = 1;
 	if (cfdata->border->remember->apply & E_REMEMBER_APPLY_RUN) cfdata->remember.apply_run = 1;
 	if (cfdata->border->remember->apply & E_REMEMBER_APPLY_ICON_PREF) cfdata->remember.apply_icon_pref = 1;
 	if (cfdata->border->remember->apply & E_REMEMBER_SET_FOCUS_ON_START) cfdata->remember.set_focus_on_start = 1;
@@ -110,6 +114,7 @@
 	    (cfdata->remember.apply_border) && (cfdata->remember.apply_sticky) &&
 	    (cfdata->remember.apply_desktop) && (cfdata->remember.apply_shade) &&
 	    (cfdata->remember.apply_zone) && (cfdata->remember.apply_skip_winlist) &&
+	    (cfdata->remember.apply_skip_pager) && (cfdata->remember.apply_skip_taskbar) &&
 	    (cfdata->remember.set_focus_on_start))
      cfdata->mode = MODE_ALL;
    else if ((cfdata->remember.apply_pos) && (cfdata->remember.apply_size) && 
@@ -276,7 +281,10 @@
 	else if (cfdata->mode == MODE_GEOMETRY_LOCKS)
 	  cfdata->border->remember->apply = E_REMEMBER_APPLY_POS | E_REMEMBER_APPLY_SIZE | E_REMEMBER_APPLY_LOCKS;
 	else if (cfdata->mode == MODE_ALL)
-	  cfdata->border->remember->apply = E_REMEMBER_APPLY_POS | E_REMEMBER_APPLY_SIZE | E_REMEMBER_APPLY_LAYER | E_REMEMBER_APPLY_LOCKS | E_REMEMBER_APPLY_BORDER | E_REMEMBER_APPLY_STICKY | E_REMEMBER_APPLY_DESKTOP | E_REMEMBER_APPLY_SHADE | E_REMEMBER_APPLY_ZONE | E_REMEMBER_APPLY_SKIP_WINLIST;
+	  cfdata->border->remember->apply = E_REMEMBER_APPLY_POS | E_REMEMBER_APPLY_SIZE | E_REMEMBER_APPLY_LAYER | 
+					    E_REMEMBER_APPLY_LOCKS | E_REMEMBER_APPLY_BORDER | E_REMEMBER_APPLY_STICKY | 
+					    E_REMEMBER_APPLY_DESKTOP | E_REMEMBER_APPLY_SHADE | E_REMEMBER_APPLY_ZONE | 
+					    E_REMEMBER_APPLY_SKIP_WINLIST | E_REMEMBER_APPLY_SKIP_PAGER | E_REMEMBER_APPLY_SKIP_TASKBAR;
 	cfdata->border->remember->apply_first_only = 0;
        e_remember_update(cfdata->border->remember, cfdata->border);
      }
@@ -295,6 +303,7 @@
 	 (cfdata->remember.apply_border) || (cfdata->remember.apply_sticky) ||
 	 (cfdata->remember.apply_desktop) || (cfdata->remember.apply_shade) ||
 	 (cfdata->remember.apply_zone) || (cfdata->remember.apply_skip_winlist) ||
+	 (cfdata->remember.apply_skip_pager) || (cfdata->remember.apply_skip_taskbar) ||
 	 (cfdata->remember.apply_run) || (cfdata->remember.apply_icon_pref) ||
 	 (cfdata->remember.set_focus_on_start)))
      {
@@ -403,6 +412,8 @@
 	if (cfdata->remember.apply_shade) cfdata->border->remember->apply |= E_REMEMBER_APPLY_SHADE;
 	if (cfdata->remember.apply_zone) cfdata->border->remember->apply |= E_REMEMBER_APPLY_ZONE;
 	if (cfdata->remember.apply_skip_winlist) cfdata->border->remember->apply |= E_REMEMBER_APPLY_SKIP_WINLIST;
+	if (cfdata->remember.apply_skip_pager) cfdata->border->remember->apply |= E_REMEMBER_APPLY_SKIP_PAGER;
+	if (cfdata->remember.apply_skip_taskbar) cfdata->border->remember->apply |= E_REMEMBER_APPLY_SKIP_TASKBAR;
 	if (cfdata->remember.apply_run) cfdata->border->remember->apply |= E_REMEMBER_APPLY_RUN;
 	if (cfdata->remember.apply_icon_pref) cfdata->border->remember->apply |= E_REMEMBER_APPLY_ICON_PREF;
 	if (cfdata->remember.set_focus_on_start) cfdata->border->remember->apply |= E_REMEMBER_SET_FOCUS_ON_START;
@@ -506,15 +517,19 @@
    ob = e_widget_check_add(evas, _("Icon Preference"), &(cfdata->remember.apply_icon_pref));
    e_widget_frametable_object_append(of, ob, 0, 5, 1, 1, 1, 1, 1, 1);
    ob = e_widget_check_add(evas, _("Stickiness"), &(cfdata->remember.apply_sticky));
-   e_widget_frametable_object_append(of, ob, 1, 0, 1, 1, 1, 1, 1, 1);
+   e_widget_frametable_object_append(of, ob, 0, 6, 1, 1, 1, 1, 1, 1);
    ob = e_widget_check_add(evas, _("Virtual Desktop"), &(cfdata->remember.apply_desktop));
-   e_widget_frametable_object_append(of, ob, 1, 1, 1, 1, 1, 1, 1, 1);
+   e_widget_frametable_object_append(of, ob, 1, 0, 1, 1, 1, 1, 1, 1);
    ob = e_widget_check_add(evas, _("Shaded state"), &(cfdata->remember.apply_shade));
-   e_widget_frametable_object_append(of, ob, 1, 2, 1, 1, 1, 1, 1, 1);
+   e_widget_frametable_object_append(of, ob, 1, 1, 1, 1, 1, 1, 1, 1);
    ob = e_widget_check_add(evas, _("Current Screen"), &(cfdata->remember.apply_zone));
-   e_widget_frametable_object_append(of, ob, 1, 3, 1, 1, 1, 1, 1, 1);
+   e_widget_frametable_object_append(of, ob, 1, 2, 1, 1, 1, 1, 1, 1);
    ob = e_widget_check_add(evas, _("Skip Window List"), &(cfdata->remember.apply_skip_winlist));
+   e_widget_frametable_object_append(of, ob, 1, 3, 1, 1, 1, 1, 1, 1);
+   ob = e_widget_check_add(evas, _("Skip Pager"), &(cfdata->remember.apply_skip_pager));
    e_widget_frametable_object_append(of, ob, 1, 4, 1, 1, 1, 1, 1, 1);
+   ob = e_widget_check_add(evas, _("Skip Taskbar"), &(cfdata->remember.apply_skip_taskbar));
+   e_widget_frametable_object_append(of, ob, 1, 5, 1, 1, 1, 1, 1, 1);
    e_widget_list_object_append(o, of, 1, 1, 0.5);
    
    ob = e_widget_check_add(evas, _("Match only one window"), &(cfdata->remember.apply_first_only));
-------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to