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