[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [E-devel] Showing icons on other desks and screens in the window list (or not).....



On 12/14/2006 09:53, Ravenlock wrote:
On 12/14/2006 09:29, Ravenlock wrote:
On 12/14/2006 10:43, Aleksej Struk wrote:
On Thu, Dec 14, 2006 at 08:36:35AM -0600, Ravenlock wrote:
On 12/14/2006 03:43, Christopher Michael wrote:
Ravenlock wrote:
On 12/13/2006 23:00, Ravenlock wrote:
Hello,

I wanted a slightly different behavior than what was available, so I've changed it up a bit on my copy, and wanted others opinions as to whether the change might be suitable for the general population.

I applaud the effort, but can you provide a patch that others can use/try ? Sometimes ideas have a better chance if they come with examples :)
K. Try the attached. Do you (the e-developers) have a preferred diff format? If you have trouble with the diff let me know.

usually cvs diff -u is preferred.

heh.  Sorry.  Here you go (I hope).


Here is a final one with the ipc updates as well. If this patch does not apply cleanly please let me know.

Please take a look at the constants defined in e_ipc_handlers_list.h
, as I took the "easy way out"... and slipped them in out of numeric order. Would you prefer I update ALL constants that follow my updates?


Ok.  One more try.

WRT the constants in e_ipc_handlers_list.h... Given our conversation, and after a little more thought, I decided you were right. They should be near the bottom, with the appropriate values. I think keeping them out of order with a note at the top would simply cause bookeeping headaches for others. So I opted for a note in the middle pointing you to where the new constants are, since they are not where you might think they would be.

Let me know if you have any troubles.


Please excuse me if I am getting my terminology (screens vs desks) mixed up.

Presently in e17.037...
when you iconify a window, you can choose whether you want to have them enumerated in the window list or not. If you choose not to, then they are not present at all. If you wish to see them, you see *all* iconified windows on the same screen. Therefore, if you have only one screen like myself, and you switch to one of your other virtual desks... you see them *all* in the list.

I would prefer them to not be there. I prefer to use each virtual desk as entirely separate from the others.

Others may also...
Presently in my patched version...
I have created options in the Configuration Panel -> Advanced -> Window List -> Window List Settings dialog which read:
 - Show iconified windows (<- This was already present)
 - Show iconified windows from other desks
 - Show iconified windows from other screens

and modified the winlist_border_add function with the following rule:
   if (bd->iconic)
     {
   if (!e_config->winlist_list_show_iconified) ok = 0;
   if ((bd->zone != zone) &&
(!e_config->winlist_list_show_other_screen_iconified)) ok = 0; if ((bd->desk != desk) &&
       (!e_config->winlist_list_show_other_desk_iconified)) ok = 0;
     }

This allows me more flexibility over what I see in the window list. If I do not want to see those windows which are iconified on desk0 *from* desk1, then I can uncheck the "Show iconified windows from other desks".
[Forgot to mention]
This matches (I think) the functionality of the ibox, in a sense. The icon boxes can show (!or not!) windows from other screens and desks.

I have given the following default values
   winlist_list_show_iconified = 1
   winlist_list_show_other_desk_iconified = 1
   winlist_list_show_other_screen_iconified = 0
as I think these represent the original behavior before the changes.

One thing I am aware of that I *did not* do (which may need addressing)... I did not modify the IPC_Handlers in any way. I was hoping for comments on that. Is it necessary? Adding something to e_int_config_winlist.h looks, well.... painful.

It's general practice that when new config properties get created, they should be put into enlightenment_remote ipc calls, yes. In the future, the ipc code is going to get a much-needed cleaning, but for now your option should go in.
ok. I started down this road. May have even completed it, though I haven't built it yet. So I backed it out for the diff attached. How would I go about testing them? using enlightenment_remote? I've never used that nor do I have any idea what its for (aside from what the name implies). I'll look into it.

Your thoughts?  Would anyone be interested in this functionality?

Regards,
-R
Cheers,
dh




------------------------------------------------------------------------

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV


------------------------------------------------------------------------

_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Index: e17/apps/e/src/bin/e_config.c
===================================================================
RCS file: /var/cvs/e/e17/apps/e/src/bin/e_config.c,v
retrieving revision 1.215
diff -u -r1.215 e_config.c
--- e17/apps/e/src/bin/e_config.c	13 Nov 2006 07:26:14 -0000	1.215
+++ e17/apps/e/src/bin/e_config.c	15 Dec 2006 05:48:39 -0000
@@ -397,6 +397,8 @@
    E_CONFIG_VAL(D, T, winlist_scroll_animate, INT); /**/
    E_CONFIG_VAL(D, T, winlist_scroll_speed, DOUBLE); /**/
    E_CONFIG_VAL(D, T, winlist_list_show_iconified, INT); /**/
+   E_CONFIG_VAL(D, T, winlist_list_show_other_desk_iconified, INT); /**/
+   E_CONFIG_VAL(D, T, winlist_list_show_other_screen_iconified, INT); /**/
    E_CONFIG_VAL(D, T, winlist_list_show_other_desk_windows, INT); /**/
    E_CONFIG_VAL(D, T, winlist_list_show_other_screen_windows, INT); /**/
    E_CONFIG_VAL(D, T, winlist_list_uncover_while_selecting, INT); /**/
@@ -601,6 +603,8 @@
    e_config->winlist_scroll_animate = 1;
    e_config->winlist_scroll_speed = 0.1;
    e_config->winlist_list_show_iconified = 1;
+   e_config->winlist_list_show_other_desk_iconified = 1;
+   e_config->winlist_list_show_other_screen_iconified = 0;
    e_config->winlist_list_show_other_desk_windows = 0;
    e_config->winlist_list_show_other_screen_windows = 0;
    e_config->winlist_list_uncover_while_selecting = 0;
@@ -1314,6 +1318,8 @@
    E_CONFIG_LIMIT(e_config->winlist_scroll_animate, 0, 1);
    E_CONFIG_LIMIT(e_config->winlist_scroll_speed, 0.0, 1.0);
    E_CONFIG_LIMIT(e_config->winlist_list_show_iconified, 0, 1);
+   E_CONFIG_LIMIT(e_config->winlist_list_show_other_desk_iconified, 0, 1);
+   E_CONFIG_LIMIT(e_config->winlist_list_show_other_screen_iconified, 0, 1);
    E_CONFIG_LIMIT(e_config->winlist_list_show_other_desk_windows, 0, 1);
    E_CONFIG_LIMIT(e_config->winlist_list_show_other_screen_windows, 0, 1);
    E_CONFIG_LIMIT(e_config->winlist_list_uncover_while_selecting, 0, 1);
Index: e17/apps/e/src/bin/e_config.h
===================================================================
RCS file: /var/cvs/e/e17/apps/e/src/bin/e_config.h,v
retrieving revision 1.131
diff -u -r1.131 e_config.h
--- e17/apps/e/src/bin/e_config.h	15 Nov 2006 11:40:27 -0000	1.131
+++ e17/apps/e/src/bin/e_config.h	15 Dec 2006 05:48:39 -0000
@@ -51,7 +51,7 @@
 /* increment this whenever a new set of config values are added but the users
  * config doesn't need top be wiped - simply new values need to be put in
  */
-#define E_CONFIG_FILE_GENERATION 0x0103
+#define E_CONFIG_FILE_GENERATION 0x0104
 #define E_CONFIG_FILE_VERSION    ((E_CONFIG_FILE_EPOCH << 16) | E_CONFIG_FILE_GENERATION)
 
 #define E_EVAS_ENGINE_DEFAULT      0
@@ -148,6 +148,8 @@
    int         winlist_scroll_animate; // GUI
    double      winlist_scroll_speed; // GUI
    int         winlist_list_show_iconified; // GUI
+   int         winlist_list_show_other_desk_iconified; // GUI
+   int         winlist_list_show_other_screen_iconified; // GUI
    int         winlist_list_show_other_desk_windows; // GUI
    int         winlist_list_show_other_screen_windows; // GUI
    int         winlist_list_uncover_while_selecting; // GUI
Index: e17/apps/e/src/bin/e_int_config_winlist.c
===================================================================
RCS file: /var/cvs/e/e17/apps/e/src/bin/e_int_config_winlist.c,v
retrieving revision 1.11
diff -u -r1.11 e_int_config_winlist.c
--- e17/apps/e/src/bin/e_int_config_winlist.c	8 Oct 2006 08:04:18 -0000	1.11
+++ e17/apps/e/src/bin/e_int_config_winlist.c	15 Dec 2006 05:48:40 -0000
@@ -13,6 +13,8 @@
    int warp_at_end;
    int scroll_animate;
    int list_show_iconified;
+   int list_show_other_desk_iconified;
+   int list_show_other_screen_iconified;
    int list_show_other_desk_windows;
    int list_show_other_screen_windows;
    int list_uncover_while_selecting;
@@ -65,6 +67,8 @@
    cfdata->scroll_animate = e_config->winlist_scroll_animate;
    cfdata->scroll_speed = e_config->winlist_scroll_speed;
    cfdata->list_show_iconified = e_config->winlist_list_show_iconified;
+   cfdata->list_show_other_desk_iconified = e_config->winlist_list_show_other_desk_iconified;
+   cfdata->list_show_other_screen_iconified = e_config->winlist_list_show_other_screen_iconified;
    cfdata->list_show_other_desk_windows = e_config->winlist_list_show_other_desk_windows;
    cfdata->list_show_other_screen_windows = e_config->winlist_list_show_other_screen_windows;
    cfdata->list_uncover_while_selecting = e_config->winlist_list_uncover_while_selecting;
@@ -101,6 +105,8 @@
 _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) 
 {
    e_config->winlist_list_show_iconified = cfdata->list_show_iconified;
+   e_config->winlist_list_show_other_desk_iconified = cfdata->list_show_other_desk_iconified;
+   e_config->winlist_list_show_other_screen_iconified = cfdata->list_show_other_screen_iconified;
    e_config->winlist_list_show_other_desk_windows = cfdata->list_show_other_desk_windows;
    e_config->winlist_list_show_other_screen_windows = cfdata->list_show_other_screen_windows;
    e_config->winlist_list_uncover_while_selecting = cfdata->list_uncover_while_selecting;
@@ -125,6 +131,10 @@
    of = e_widget_framelist_add(evas, _("General Settings"), 0);
    ob = e_widget_check_add(evas, _("Show iconified windows"), &(cfdata->list_show_iconified));
    e_widget_framelist_object_append(of, ob);
+   ob = e_widget_check_add(evas, _("Show iconified windows from other desks"), &(cfdata->list_show_other_desk_iconified));
+   e_widget_framelist_object_append(of, ob);
+   ob = e_widget_check_add(evas, _("Show iconified windows from other screens"), &(cfdata->list_show_other_screen_iconified));
+   e_widget_framelist_object_append(of, ob);	
    ob = e_widget_check_add(evas, _("Show windows from other desks"), &(cfdata->list_show_other_desk_windows));
    e_widget_framelist_object_append(of, ob);
    ob = e_widget_check_add(evas, _("Show windows from other screens"), &(cfdata->list_show_other_screen_windows));
@@ -161,6 +171,8 @@
 _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) 
 {
    e_config->winlist_list_show_iconified = cfdata->list_show_iconified;
+   e_config->winlist_list_show_other_desk_iconified = cfdata->list_show_other_desk_iconified;
+   e_config->winlist_list_show_other_screen_iconified = cfdata->list_show_other_screen_iconified;
    e_config->winlist_list_show_other_desk_windows = cfdata->list_show_other_desk_windows;
    e_config->winlist_list_show_other_screen_windows = cfdata->list_show_other_screen_windows;
    e_config->winlist_list_uncover_while_selecting = cfdata->list_uncover_while_selecting;
Index: e17/apps/e/src/bin/e_ipc_handlers.h
===================================================================
RCS file: /var/cvs/e/e17/apps/e/src/bin/e_ipc_handlers.h,v
retrieving revision 1.137
diff -u -r1.137 e_ipc_handlers.h
--- e17/apps/e/src/bin/e_ipc_handlers.h	13 Nov 2006 08:30:29 -0000	1.137
+++ e17/apps/e/src/bin/e_ipc_handlers.h	15 Dec 2006 05:48:53 -0000
@@ -3868,6 +3868,86 @@
 #undef HDL
 
 /****************************************************************************/
+#define HDL E_IPC_OP_WINLIST_LIST_SHOW_OTHER_DESK_ICONIFIED_SET
+#if (TYPE == E_REMOTE_OPTIONS)
+   OP("-winlist-list-show-other-desk-iconified-set", 1, "Set whether winlist (alt+tab) will show iconfied windows from other desks", 0, HDL)
+#elif (TYPE == E_REMOTE_OUT)
+   REQ_INT(atoi(params[0]), HDL);
+#elif (TYPE == E_WM_IN)
+   START_INT(policy, HDL);
+   e_config->winlist_list_show_other_desk_iconified = policy;
+   E_CONFIG_LIMIT(e_config->winlist_list_show_other_desk_iconified, 0, 1);
+   SAVE;
+   END_INT;
+#elif (TYPE == E_REMOTE_IN)
+#endif
+#undef HDL
+
+/****************************************************************************/
+#define HDL E_IPC_OP_WINLIST_LIST_SHOW_OTHER_DESK_ICONIFIED_GET
+#if (TYPE == E_REMOTE_OPTIONS)
+   OP("-winlist-list-show-other-desk-iconified-get", 0, "Get whether winlist (alt+tab) will show iconfied windows from other desks", 1, HDL)
+#elif (TYPE == E_REMOTE_OUT)
+   REQ_NULL(HDL);
+#elif (TYPE == E_WM_IN)
+   SEND_INT(e_config->winlist_list_show_other_desk_iconified, E_IPC_OP_WINLIST_LIST_SHOW_OTHER_DESK_ICONIFIED_GET_REPLY, HDL);
+#elif (TYPE == E_REMOTE_IN)
+#endif
+#undef HDL
+
+/****************************************************************************/
+#define HDL E_IPC_OP_WINLIST_LIST_SHOW_OTHER_DESK_ICONIFIED_GET_REPLY
+#if (TYPE == E_REMOTE_OPTIONS)
+#elif (TYPE == E_REMOTE_OUT)
+#elif (TYPE == E_WM_IN)
+#elif (TYPE == E_REMOTE_IN)
+   START_INT(val, HDL);
+   printf("REPLY: POLICY=%d\n", val);
+   END_INT;
+#endif
+#undef HDL
+
+/****************************************************************************/
+#define HDL E_IPC_OP_WINLIST_LIST_SHOW_OTHER_SCREEN_ICONIFIED_SET
+#if (TYPE == E_REMOTE_OPTIONS)
+   OP("-winlist-list-show-other-screen-iconified-set", 1, "Set whether winlist (alt+tab) will show iconfied windows from other screens", 0, HDL)
+#elif (TYPE == E_REMOTE_OUT)
+   REQ_INT(atoi(params[0]), HDL);
+#elif (TYPE == E_WM_IN)
+   START_INT(policy, HDL);
+   e_config->winlist_list_show_other_screen_iconified = policy;
+   E_CONFIG_LIMIT(e_config->winlist_list_show_other_screen_iconified, 0, 1);
+   SAVE;
+   END_INT;
+#elif (TYPE == E_REMOTE_IN)
+#endif
+#undef HDL
+
+/****************************************************************************/
+#define HDL E_IPC_OP_WINLIST_LIST_SHOW_OTHER_SCREEN_ICONIFIED_GET
+#if (TYPE == E_REMOTE_OPTIONS)
+   OP("-winlist-list-show-other-screen-iconified-get", 0, "Get whether winlist (alt+tab) will show iconfied windows from other screens", 1, HDL)
+#elif (TYPE == E_REMOTE_OUT)
+   REQ_NULL(HDL);
+#elif (TYPE == E_WM_IN)
+   SEND_INT(e_config->winlist_list_show_other_screen_iconified, E_IPC_OP_WINLIST_LIST_SHOW_OTHER_SCREEN_ICONIFIED_GET_REPLY, HDL);
+#elif (TYPE == E_REMOTE_IN)
+#endif
+#undef HDL
+
+/****************************************************************************/
+#define HDL E_IPC_OP_WINLIST_LIST_SHOW_OTHER_SCREEN_ICONIFIED_GET_REPLY
+#if (TYPE == E_REMOTE_OPTIONS)
+#elif (TYPE == E_REMOTE_OUT)
+#elif (TYPE == E_WM_IN)
+#elif (TYPE == E_REMOTE_IN)
+   START_INT(val, HDL);
+   printf("REPLY: POLICY=%d\n", val);
+   END_INT;
+#endif
+#undef HDL
+
+/****************************************************************************/
 #define HDL E_IPC_OP_WINLIST_LIST_SHOW_OTHER_DESK_WINDOWS_SET
 #if (TYPE == E_REMOTE_OPTIONS)
    OP("-winlist-list-show-other-desk-windows-set", 1, "Set whether winlist (alt+tab) will show other desk windows", 0, HDL)
Index: e17/apps/e/src/bin/e_ipc_handlers_list.h
===================================================================
RCS file: /var/cvs/e/e17/apps/e/src/bin/e_ipc_handlers_list.h,v
retrieving revision 1.50
diff -u -r1.50 e_ipc_handlers_list.h
--- e17/apps/e/src/bin/e_ipc_handlers_list.h	13 Nov 2006 07:26:14 -0000	1.50
+++ e17/apps/e/src/bin/e_ipc_handlers_list.h	15 Dec 2006 05:48:53 -0000
@@ -133,6 +133,10 @@
 #define E_IPC_OP_WINLIST_LIST_SHOW_ICONIFIED_SET 133
 #define E_IPC_OP_WINLIST_LIST_SHOW_ICONIFIED_GET 134
 #define E_IPC_OP_WINLIST_LIST_SHOW_ICONIFIED_GET_REPLY 135
+/* 
+ * WINLIST_LIST_SHOW_OTHER_DESK_ICONIFIED and WINLIST_LIST_SHOW_OTHER_SCREEN_ICONIFIED
+ * can be found below, starting at 366.
+ */
 #define E_IPC_OP_WINLIST_LIST_SHOW_OTHER_DESK_WINDOWS_SET 136
 #define E_IPC_OP_WINLIST_LIST_SHOW_OTHER_DESK_WINDOWS_GET 137
 #define E_IPC_OP_WINLIST_LIST_SHOW_OTHER_DESK_WINDOWS_GET_REPLY 138
@@ -393,3 +397,10 @@
 #define E_IPC_OP_USE_COMPOSITE_SET 363
 #define E_IPC_OP_USE_COMPOSITE_GET 364
 #define E_IPC_OP_USE_COMPOSITE_GET_REPLY 365
+
+#define E_IPC_OP_WINLIST_LIST_SHOW_OTHER_DESK_ICONIFIED_SET 366            
+#define E_IPC_OP_WINLIST_LIST_SHOW_OTHER_DESK_ICONIFIED_GET 367
+#define E_IPC_OP_WINLIST_LIST_SHOW_OTHER_DESK_ICONIFIED_GET_REPLY 368
+#define E_IPC_OP_WINLIST_LIST_SHOW_OTHER_SCREEN_ICONIFIED_SET 369
+#define E_IPC_OP_WINLIST_LIST_SHOW_OTHER_SCREEN_ICONIFIED_GET 370
+#define E_IPC_OP_WINLIST_LIST_SHOW_OTHER_SCREEN_ICONIFIED_GET_REPLY 371
Index: e17/apps/e/src/bin/e_winlist.c
===================================================================
RCS file: /var/cvs/e/e17/apps/e/src/bin/e_winlist.c,v
retrieving revision 1.47
diff -u -r1.47 e_winlist.c
--- e17/apps/e/src/bin/e_winlist.c	27 Oct 2006 02:49:05 -0000	1.47
+++ e17/apps/e/src/bin/e_winlist.c	15 Dec 2006 05:48:54 -0000
@@ -401,7 +401,9 @@
      {
 	if (!e_config->winlist_list_show_iconified) ok = 0;
 	if ((bd->zone != zone) &&
-	    (!e_config->winlist_list_show_other_screen_windows)) ok = 0;
+	    (!e_config->winlist_list_show_other_screen_iconified)) ok = 0;	
+	if ((bd->desk != desk) &&
+	    (!e_config->winlist_list_show_other_desk_iconified)) ok = 0;
      }
    else
      {
@@ -948,4 +950,3 @@
    _e_winlist_show_active();
    _e_winlist_activate();
 }
-