Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_int_border_menu.c e_int_config_focus.c e_menu.c 


Log Message:


illogicit patches for:
>e_int_config_focus_missing_options.patch: adds refocus last focused window on
desktop switch and revert focus when hiding or closing a window options.
>e_menu_various.patch: (up-to-date) adds several things...
 - support KeyPad equivalent for keybindings (numbers as well as
 directions).
 - add [home] [end] support : will go to the first/last menu item
 - 0 will go to the last menu item instead of going to the 10th one.
 - corrected the bug when the first menu item was activated *twice* when
 creating a POP_DIRECTION_DOWN menu with keyboard <- passed a long time
 on this trying to figure why it was happening
 - do not activate an already active menu item
>e_int_border_menu_consistency.patch: do not show items that will ne be taken
into account anyway.

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_border_menu.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -3 -r1.12 -r1.13
--- e_int_border_menu.c 7 Jan 2006 10:39:45 -0000       1.12
+++ e_int_border_menu.c 3 Feb 2006 06:16:25 -0000       1.13
@@ -78,7 +78,7 @@
    e_menu_category_data_set("border/maximize",bd);
    bd->border_maximize_menu = m;
    /* Only allow to change layer for windows in "normal" layers */
-   if ((!bd->lock_user_maximize) &&
+   if ((!bd->lock_user_maximize) && (!bd->shaded) &&
        ((bd->layer == 50) || (bd->layer == 100) || (bd->layer == 150)))
    { 
      int __fullmaximization = 0;
@@ -187,7 +187,8 @@
                                  "widgets/border/default/maximize");
      }
 
-   if ((!bd->lock_user_shade) && (!(!strcmp("borderless", 
bd->client.border.name))))
+   if ((!bd->lock_user_shade) && (!bd->fullscreen) && (!bd->maximized) &&
+       (!(!strcmp("borderless", bd->client.border.name))))
      {
        mi = e_menu_item_new(m);
        e_menu_item_label_set(mi, _("Shaded"));
@@ -265,7 +266,7 @@
                                  "widgets/border/default/borderless");
      }
    
-   if (!bd->lock_user_fullscreen)
+   if ((!bd->lock_user_fullscreen) && (!bd->shaded))
      {
        mi = e_menu_item_new(m);
        e_menu_item_label_set(mi, _("Fullscreen"));
@@ -325,7 +326,7 @@
        e_menu_item_separator_set(mi, 1);
      }
    
-   if (!bd->lock_user_iconify)
+   if ((!bd->lock_user_iconify) && (!bd->fullscreen))
      {
        mi = e_menu_item_new(m);
        e_menu_item_label_set(mi, _("Iconify"));
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_config_focus.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- e_int_config_focus.c        22 Jan 2006 14:12:17 -0000      1.9
+++ e_int_config_focus.c        3 Feb 2006 06:16:25 -0000       1.10
@@ -23,6 +23,8 @@
    int pass_click_on;
    int always_click_to_raise;
    int always_click_to_focus;
+   int focus_last_focused_per_desktop;
+   int focus_revert_on_hide_or_close;
 };
 
 /* a nice easy setup function that does the dirty work */
@@ -55,6 +57,8 @@
    cfdata->pass_click_on = e_config->pass_click_on;
    cfdata->always_click_to_raise = e_config->always_click_to_raise;
    cfdata->always_click_to_focus = e_config->always_click_to_focus;
+   cfdata->focus_last_focused_per_desktop = 
e_config->focus_last_focused_per_desktop;
+   cfdata->focus_revert_on_hide_or_close = 
e_config->focus_revert_on_hide_or_close;
 
    cfdata->mode = cfdata->focus_policy;
 }
@@ -93,6 +97,8 @@
        e_config->pass_click_on = 1;
        e_config->always_click_to_raise = 0;
        e_config->always_click_to_focus = 0;
+       e_config->focus_last_focused_per_desktop = 0;
+       e_config->focus_revert_on_hide_or_close = 1;
      }
    else if (cfdata->mode == E_FOCUS_MOUSE)
      {
@@ -101,6 +107,8 @@
        e_config->pass_click_on = 1;
        e_config->always_click_to_raise = 0;
        e_config->always_click_to_focus = 0;
+       e_config->focus_last_focused_per_desktop = 0;
+       e_config->focus_revert_on_hide_or_close = 0;
      }
    else
      {
@@ -109,6 +117,8 @@
        e_config->pass_click_on = 1;
        e_config->always_click_to_raise = 0;
        e_config->always_click_to_focus = 0;
+       e_config->focus_last_focused_per_desktop = 1;
+       e_config->focus_revert_on_hide_or_close = 1;
      }
    e_border_button_bindings_grab_all();
    e_config_save_queue();
@@ -125,6 +135,8 @@
    e_config->pass_click_on = cfdata->pass_click_on;
    e_config->always_click_to_raise = cfdata->always_click_to_raise;
    e_config->always_click_to_focus = cfdata->always_click_to_focus;
+   e_config->focus_last_focused_per_desktop = 
cfdata->focus_last_focused_per_desktop;
+   e_config->focus_revert_on_hide_or_close = 
cfdata->focus_revert_on_hide_or_close;
    e_border_button_bindings_grab_all();
    e_config_save_queue();
    return 1; /* Apply was OK */
@@ -191,6 +203,10 @@
    e_widget_framelist_object_append(of, ob);
    ob = e_widget_check_add(evas, _("A click in a window always focuses it"), 
&(cfdata->always_click_to_focus));
    e_widget_framelist_object_append(of, ob);
+   ob = e_widget_check_add(evas, _("Refocus last focused window on desktop 
switch"), &(cfdata->focus_last_focused_per_desktop));
+   e_widget_framelist_object_append(of, ob);
+   ob = e_widget_check_add(evas, _("Revert focus when hiding or closing a 
window"), &(cfdata->focus_revert_on_hide_or_close));
+   e_widget_framelist_object_append(of, ob);
    e_widget_list_object_append(o, of, 1, 1, 0.5);
    
    return o;
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_menu.c,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -3 -r1.47 -r1.48
--- e_menu.c    8 Jan 2006 16:38:01 -0000       1.47
+++ e_menu.c    3 Feb 2006 06:16:25 -0000       1.48
@@ -49,6 +49,9 @@
 static int  _e_menu_active_call                   (void);
 static void _e_menu_item_activate_next            (void);
 static void _e_menu_item_activate_previous        (void);
+static void _e_menu_item_activate_first           (void);
+static void _e_menu_item_activate_last            (void);
+static void _e_menu_item_activate_nth             (int n);
 static void _e_menu_activate_next                 (void);
 static void _e_menu_activate_previous             (void);
 static void _e_menu_activate_first                (void);
@@ -194,6 +197,7 @@
        _e_menu_activate_last();
        break;
       case E_MENU_POP_DIRECTION_DOWN:
+       _e_menu_realize(m);
        m->cur.x = x + w;
        m->cur.y = y + h;
        _e_menu_activate_first();
@@ -726,6 +730,7 @@
        E_Menu_Item *pmi;
        
        pmi = _e_menu_item_active_get();
+       if (mi == pmi) return;
        if (pmi) e_menu_item_active_set(pmi, 0);
        mi->active = 1;
        if (mi->bg_object)
@@ -1928,6 +1933,84 @@
 }
 
 static void
+_e_menu_item_activate_first(void)
+{
+   E_Menu *m;
+   Evas_List *ll;
+   E_Menu_Item *mi;
+
+   /* FIXME: inefficient. should track current menu and active item */
+   m = _e_menu_active_get();
+   if (m)
+     {
+       ll = m->items;
+       mi = ll->data;
+       while ((mi->separator) && (ll->next))
+         {
+            ll = ll->next;
+            mi = ll->data;
+         }
+       if (mi->separator) return;
+       e_menu_item_active_set(mi, 1);
+       _e_menu_item_ensure_onscreen(mi);
+       return;
+     }
+   _e_menu_activate_first();
+}
+
+static void
+_e_menu_item_activate_last(void)
+{
+   E_Menu *m;
+   Evas_List *ll;
+   E_Menu_Item *mi;
+
+   /* FIXME: inefficient. should track current menu and active item */
+   m = _e_menu_active_get();
+   if (m)
+     {
+       ll = evas_list_last(m->items);
+       mi = ll->data;
+       while ((mi->separator) && (ll->prev))
+         {
+            ll = ll->prev;
+            mi = ll->data;
+         }
+       if (mi->separator) return;
+       e_menu_item_active_set(mi, 1);
+       _e_menu_item_ensure_onscreen(mi);
+       return;
+     }
+   _e_menu_activate_first();
+}
+
+static void
+_e_menu_item_activate_nth(int n)
+{
+   E_Menu *m;
+   E_Menu_Item *mi;
+   Evas_List *ll;
+   int i;
+   
+   mi = _e_menu_item_active_get();
+   if (!mi)
+     {
+       _e_menu_activate_first();
+       mi = _e_menu_item_active_get();
+       if (!mi) return;
+     }
+   m = mi->menu;
+   for (i = -1, ll = m->items; ll; ll = ll->next)
+     {
+       mi = ll->data;
+       if (!mi->separator) i++;
+       if (i == n) break;
+     }
+   e_menu_item_active_set(mi, 1);
+   _e_menu_item_ensure_onscreen(mi);
+}
+
+static void
 _e_menu_activate_next(void)
 {
    E_Menu_Item *mi;
@@ -2346,45 +2429,56 @@
    
    ev = event;
    if (ev->win != _e_menu_win) return 1;
-   if      (!strcmp(ev->keysymbol, "Up"))
+   if      ((!strcmp(ev->keysymbol, "Up")) ||
+           (!strcmp(ev->keysymbol, "KP_Up")))
      _e_menu_item_activate_previous();
-   else if (!strcmp(ev->keysymbol, "Down"))
+   else if ((!strcmp(ev->keysymbol, "Down")) ||
+           (!strcmp(ev->keysymbol, "KP_Down")))
      _e_menu_item_activate_next();
-   else if (!strcmp(ev->keysymbol, "Left"))
+   else if ((!strcmp(ev->keysymbol, "Left")) ||
+           (!strcmp(ev->keysymbol, "KP_Left")))
      _e_menu_activate_previous();
-   else if (!strcmp(ev->keysymbol, "Right"))
+   else if ((!strcmp(ev->keysymbol, "Right")) ||
+           (!strcmp(ev->keysymbol, "KP_Right")))
      _e_menu_activate_next();
+   else if ((!strcmp(ev->keysymbol, "Home")) ||
+           (!strcmp(ev->keysymbol, "KP_Home")))
+     _e_menu_item_activate_first();
+   else if ((!strcmp(ev->keysymbol, "End")) ||
+           (!strcmp(ev->keysymbol, "KP_End")))
+     _e_menu_item_activate_last();
    else if (!strcmp(ev->keysymbol, "space"))
      {
        _e_menu_active_call();
      }
-   else if (!strcmp(ev->keysymbol, "Return"))
+   else if ((!strcmp(ev->keysymbol, "Return")) ||
+           (!strcmp(ev->keysymbol, "KP_Enter")))
      {
        _e_menu_active_call();
        _e_menu_deactivate_all();
      }
    else if (!strcmp(ev->keysymbol, "Escape"))
      _e_menu_deactivate_all();
-   else if (!strcmp(ev->keysymbol, "1"))
-     _e_menu_activate_nth(0);
-   else if (!strcmp(ev->keysymbol, "2"))
-     _e_menu_activate_nth(1);
-   else if (!strcmp(ev->keysymbol, "3"))
-     _e_menu_activate_nth(2);
-   else if (!strcmp(ev->keysymbol, "4"))
-     _e_menu_activate_nth(3);
-   else if (!strcmp(ev->keysymbol, "5"))
-     _e_menu_activate_nth(4);
-   else if (!strcmp(ev->keysymbol, "6"))
-     _e_menu_activate_nth(5);
-   else if (!strcmp(ev->keysymbol, "7"))
-     _e_menu_activate_nth(6);
-   else if (!strcmp(ev->keysymbol, "8"))
-     _e_menu_activate_nth(7);
-   else if (!strcmp(ev->keysymbol, "9"))
-     _e_menu_activate_nth(8);
-   else if (!strcmp(ev->keysymbol, "0"))
-     _e_menu_activate_nth(9);
+   else if ((!strcmp(ev->keysymbol, "1")) || (!strcmp(ev->keysymbol, "KP_1")))
+     _e_menu_item_activate_first();
+   else if ((!strcmp(ev->keysymbol, "2")) || (!strcmp(ev->keysymbol, "KP_2")))
+     _e_menu_item_activate_nth(1);
+   else if ((!strcmp(ev->keysymbol, "3")) || (!strcmp(ev->keysymbol, "KP_3")))
+     _e_menu_item_activate_nth(2);
+   else if ((!strcmp(ev->keysymbol, "4")) || (!strcmp(ev->keysymbol, "KP_4")))
+     _e_menu_item_activate_nth(3);
+   else if ((!strcmp(ev->keysymbol, "5")) || (!strcmp(ev->keysymbol, "KP_5")))
+     _e_menu_item_activate_nth(4);
+   else if ((!strcmp(ev->keysymbol, "6")) || (!strcmp(ev->keysymbol, "KP_6")))
+     _e_menu_item_activate_nth(5);
+   else if ((!strcmp(ev->keysymbol, "7")) || (!strcmp(ev->keysymbol, "KP_7")))
+     _e_menu_item_activate_nth(6);
+   else if ((!strcmp(ev->keysymbol, "8")) || (!strcmp(ev->keysymbol, "KP_8")))
+     _e_menu_item_activate_nth(7);
+   else if ((!strcmp(ev->keysymbol, "9")) || (!strcmp(ev->keysymbol, "KP_9")))
+     _e_menu_item_activate_nth(8);
+   else if ((!strcmp(ev->keysymbol, "0")) || (!strcmp(ev->keysymbol, "KP_0")))
+     _e_menu_item_activate_last();
    return 1;
 }
 




-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to