discomfitor pushed a commit to branch master.

commit 9a615c1438efc83a6b63cf572477150a22f6c455
Author: Mike Blumenkrantz <[email protected]>
Date:   Thu May 30 14:23:13 2013 +0100

    new user-requested option for moving the winlist-selected window to the 
current desk
---
 ChangeLog                                  |  1 +
 NEWS                                       |  1 +
 src/bin/e_config.c                         |  1 +
 src/bin/e_config.h                         |  1 +
 src/modules/winlist/e_int_config_winlist.c | 12 ++++++++++--
 src/modules/winlist/e_winlist.c            |  5 +++++
 6 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 054b6fb..c3efab9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,7 @@
 2013-05-29 Mike Blumenkrantz
 
         * added e_border_inset utility functions
+        * new winlist config option for moving selected window to current desk
 
 2013-05-29 Mike Blumenkrantz
 
diff --git a/NEWS b/NEWS
index 4b6ff2d..2a5fefd 100644
--- a/NEWS
+++ b/NEWS
@@ -53,6 +53,7 @@ Additions:
        * Added support for systemd user session
        * Added support for systemd hibernate and suspend
         * added support for systemd halt and poweroff
+        * new winlist config option for moving selected window to current desk
 
 Changes:
     Modules:
diff --git a/src/bin/e_config.c b/src/bin/e_config.c
index 2db11e3..3a5519e 100644
--- a/src/bin/e_config.c
+++ b/src/bin/e_config.c
@@ -505,6 +505,7 @@ _e_config_edd_init(Eina_Bool old)
    E_CONFIG_VAL(D, T, winlist_list_jump_desk_while_selecting, INT); /**/
    E_CONFIG_VAL(D, T, winlist_list_focus_while_selecting, INT); /**/
    E_CONFIG_VAL(D, T, winlist_list_raise_while_selecting, INT); /**/
+   E_CONFIG_VAL(D, T, winlist_list_move_after_select, INT); /**/
    E_CONFIG_VAL(D, T, winlist_pos_align_x, DOUBLE); /**/
    E_CONFIG_VAL(D, T, winlist_pos_align_y, DOUBLE); /**/
    E_CONFIG_VAL(D, T, winlist_pos_size_w, DOUBLE); /**/
diff --git a/src/bin/e_config.h b/src/bin/e_config.h
index 2369bd3..562bfa0 100644
--- a/src/bin/e_config.h
+++ b/src/bin/e_config.h
@@ -140,6 +140,7 @@ struct _E_Config
    int         winlist_list_jump_desk_while_selecting; // GUI
    int         winlist_list_focus_while_selecting; // GUI
    int         winlist_list_raise_while_selecting; // GUI
+   int         winlist_list_move_after_select; // GUI
    double      winlist_pos_align_x; // GUI
    double      winlist_pos_align_y; // GUI
    double      winlist_pos_size_w; // GUI
diff --git a/src/modules/winlist/e_int_config_winlist.c 
b/src/modules/winlist/e_int_config_winlist.c
index 6c3b444..be1df80 100644
--- a/src/modules/winlist/e_int_config_winlist.c
+++ b/src/modules/winlist/e_int_config_winlist.c
@@ -21,6 +21,7 @@ struct _E_Config_Dialog_Data
    int    warp_at_end;
    int    no_warp_on_direction;
    int    jump_desk;
+   int    move_after_select;
 
    int    scroll_animate;
    double scroll_speed;
@@ -62,6 +63,7 @@ _fill_data(E_Config_Dialog_Data *cfdata)
    cfdata->raise = e_config->winlist_list_raise_while_selecting;
    cfdata->uncover = e_config->winlist_list_uncover_while_selecting;
    cfdata->jump_desk = e_config->winlist_list_jump_desk_while_selecting;
+   cfdata->move_after_select = e_config->winlist_list_move_after_select;
 
    cfdata->windows_other_desks =
      e_config->winlist_list_show_other_desk_windows;
@@ -119,6 +121,7 @@ _basic_apply(E_Config_Dialog *cfd __UNUSED__, 
E_Config_Dialog_Data *cfdata)
    DO(list_show_other_screen_windows, windows_other_screens);
    DO(list_uncover_while_selecting, uncover);
    DO(list_jump_desk_while_selecting, jump_desk);
+   DO(list_move_after_select, move_after_select);
    DO(warp_while_selecting, warp_while_selecting);
    DO(warp_at_end, warp_at_end);
    DO(no_warp_on_direction, no_warp_on_direction);
@@ -152,6 +155,7 @@ _basic_check_changed(E_Config_Dialog *cfd __UNUSED__, 
E_Config_Dialog_Data *cfda
    DO(list_show_other_screen_windows, windows_other_screens);
    DO(list_uncover_while_selecting, uncover);
    DO(list_jump_desk_while_selecting, jump_desk);
+   DO(list_move_after_select, move_after_select);
    DO(warp_while_selecting, warp_while_selecting);
    DO(warp_at_end, warp_at_end);
    DO(no_warp_on_direction, no_warp_on_direction);
@@ -173,7 +177,7 @@ _basic_check_changed(E_Config_Dialog *cfd __UNUSED__, 
E_Config_Dialog_Data *cfda
 static Evas_Object *
 _basic_create(E_Config_Dialog *cfd __UNUSED__, Evas *evas, 
E_Config_Dialog_Data *cfdata)
 {
-   Evas_Object *otb, *ol, *ob, *iconified, *scroll_animate;
+   Evas_Object *otb, *ol, *ob, *iconified, *scroll_animate, *ck;
 
    otb = e_widget_toolbook_add(evas, (48 * e_scale), (48 * e_scale));
 
@@ -216,7 +220,11 @@ _basic_create(E_Config_Dialog *cfd __UNUSED__, Evas *evas, 
E_Config_Dialog_Data
                            &(cfdata->no_warp_on_direction));
    e_widget_disabled_set(ob, e_config->disable_all_pointer_warps);
    e_widget_list_object_append(ol, ob, 1, 0, 0.0);
-   ob = e_widget_check_add(evas, _("Jump to desk"), &(cfdata->jump_desk));
+   ck = ob = e_widget_check_add(evas, _("Jump to desk"), &(cfdata->jump_desk));
+   e_widget_list_object_append(ol, ob, 1, 0, 0.0);
+   ob = e_widget_check_add(evas, _("Move to current desk after switch"), 
&(cfdata->move_after_select));
+   e_widget_check_widget_disable_on_checked_add(ck, ob);
+   e_widget_check_widget_disable_on_checked_add(ob, ck);
    e_widget_list_object_append(ol, ob, 1, 0, 0.0);
    e_widget_toolbook_page_append(otb, NULL, _("Selecting"), ol,
                                  0, 0, 1, 0, 0.5, 0.0);
diff --git a/src/modules/winlist/e_winlist.c b/src/modules/winlist/e_winlist.c
index c88a9a8..7eb8240 100644
--- a/src/modules/winlist/e_winlist.c
+++ b/src/modules/winlist/e_winlist.c
@@ -269,6 +269,11 @@ e_winlist_hide(void)
              if (!bd->lock_user_shade)
                e_border_unshade(bd, bd->shade.dir);
           }
+        if (e_config->winlist_list_move_after_select)
+          {
+             e_border_zone_set(bd, 
e_zone_current_get(e_util_container_current_get()));
+             e_border_desk_set(bd, e_desk_current_get(bd->zone));
+          }
         else if (bd->desk)
           {
              if (!bd->sticky) e_desk_show(bd->desk);

-- 

------------------------------------------------------------------------------
Introducing AppDynamics Lite, a free troubleshooting tool for Java/.NET
Get 100% visibility into your production application - at no cost.
Code-level diagnostics for performance bottlenecks with <2% overhead
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap1

Reply via email to