[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 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.


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


diff -u /home/ravenlock/MyDocs/MyProjects/E/e17.0/apps/e/src/bin/e_config.c ./e_config.c
--- /home/ravenlock/MyDocs/MyProjects/E/e17.0/apps/e/src/bin/e_config.c	Mon Nov 13 01:26:14 2006
+++ ./e_config.c	Wed Dec 13 19:48:38 2006
@@ -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);
diff -u /home/ravenlock/MyDocs/MyProjects/E/e17.0/apps/e/src/bin/e_config.h ./e_config.h
--- /home/ravenlock/MyDocs/MyProjects/E/e17.0/apps/e/src/bin/e_config.h	Wed Nov 15 05:40:27 2006
+++ ./e_config.h	Wed Dec 13 19:37:06 2006
@@ -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
diff -u /home/ravenlock/MyDocs/MyProjects/E/e17.0/apps/e/src/bin/e_int_config_winlist.c ./e_int_config_winlist.c
--- /home/ravenlock/MyDocs/MyProjects/E/e17.0/apps/e/src/bin/e_int_config_winlist.c	Sun Oct  8 03:04:18 2006
+++ ./e_int_config_winlist.c	Wed Dec 13 21:04:31 2006
@@ -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;
diff -u /home/ravenlock/MyDocs/MyProjects/E/e17.0/apps/e/src/bin/e_winlist.c ./e_winlist.c
--- /home/ravenlock/MyDocs/MyProjects/E/e17.0/apps/e/src/bin/e_winlist.c	Thu Oct 26 21:49:05 2006
+++ ./e_winlist.c	Wed Dec 13 20:53:51 2006
@@ -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();
 }
-