don't show layouts in xkb gadget menu if option to disable xkb layout changing is...
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Wed, 6 Feb 2013 10:56:24 +0000 (10:56 +0000)
committerMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Wed, 6 Feb 2013 10:56:24 +0000 (10:56 +0000)
SVN revision: 83675

src/modules/xkbswitch/e_mod_main.c

index 5129c31..730605c 100644 (file)
@@ -204,7 +204,7 @@ _gc_init(E_Gadcon *gc, const char *gcname, const char *id, const char *style)
                              "base/theme/modules/xkbswitch",
                              "e/modules/xkbswitch/main");
    edje_object_part_text_set(inst->o_xkbswitch, "e.text.label",
-                             inst->layout ? e_xkb_layout_name_reduce(inst->layout->name) : "?");
+                             inst->layout ? e_xkb_layout_name_reduce(inst->layout->name) : _("NONE"));
    /* The gadcon client */
    inst->gcc = e_gadcon_client_new(gc, gcname, id, style, inst->o_xkbswitch);
    inst->gcc->data = inst;
@@ -352,7 +352,8 @@ _e_xkb_cb_mouse_down(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSE
    else if ((ev->button == 1) && (!inst->lmenu)) /* Left-click layout menu */
      {
         Evas_Coord x, y, w, h;
-        int cx, cy;
+        int cx, cy, dir;
+        E_Menu_Item *mi;
 
         /* Coordinates and sizing */
         evas_object_geometry_get(inst->o_xkbswitch, &x, &y, &w, &h);
@@ -363,21 +364,19 @@ _e_xkb_cb_mouse_down(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSE
 
         if (!inst->lmenu) inst->lmenu = e_menu_new();
 
-        if (inst->lmenu)
+        mi = e_menu_item_new(inst->lmenu);
+
+        e_menu_item_label_set(mi, _("Settings"));
+        e_util_menu_item_theme_icon_set(mi, "preferences-system");
+        e_menu_item_callback_set(mi, _e_xkb_cb_menu_configure, NULL);
+
+        if (!e_config->xkb.dont_touch_my_damn_keyboard)
           {
              E_Config_XKB_Layout *cl, *cur;
-             E_Menu_Item *mi;
              Eina_List *l;
-             int dir;
              char buf[4096];
 
              mi = e_menu_item_new(inst->lmenu);
-
-             e_menu_item_label_set(mi, _("Settings"));
-             e_util_menu_item_theme_icon_set(mi, "preferences-system");
-             e_menu_item_callback_set(mi, _e_xkb_cb_menu_configure, NULL);
-
-             mi = e_menu_item_new(inst->lmenu);
              e_menu_item_separator_set(mi, 1);
              cur = e_xkb_layout_get();
 
@@ -401,79 +400,79 @@ _e_xkb_cb_mouse_down(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSE
                   e_menu_item_label_set(mi, buf);
                   e_menu_item_callback_set(mi, _e_xkb_cb_lmenu_set, cl);
                }
+          }
 
-             /* Deactivate callback */
-             e_menu_post_deactivate_callback_set(inst->lmenu,
-                                                 _e_xkb_cb_lmenu_post, inst);
-             /* Proper menu orientation */
-             switch (inst->gcc->gadcon->orient)
-               {
-                case E_GADCON_ORIENT_TOP:
-                  dir = E_MENU_POP_DIRECTION_DOWN;
-                  break;
-
-                case E_GADCON_ORIENT_BOTTOM:
-                  dir = E_MENU_POP_DIRECTION_UP;
-                  break;
-
-                case E_GADCON_ORIENT_LEFT:
-                  dir = E_MENU_POP_DIRECTION_RIGHT;
-                  break;
-
-                case E_GADCON_ORIENT_RIGHT:
-                  dir = E_MENU_POP_DIRECTION_LEFT;
-                  break;
-
-                case E_GADCON_ORIENT_CORNER_TL:
-                  dir = E_MENU_POP_DIRECTION_DOWN;
-                  break;
-
-                case E_GADCON_ORIENT_CORNER_TR:
-                  dir = E_MENU_POP_DIRECTION_DOWN;
-                  break;
-
-                case E_GADCON_ORIENT_CORNER_BL:
-                  dir = E_MENU_POP_DIRECTION_UP;
-                  break;
-
-                case E_GADCON_ORIENT_CORNER_BR:
-                  dir = E_MENU_POP_DIRECTION_UP;
-                  break;
-
-                case E_GADCON_ORIENT_CORNER_LT:
-                  dir = E_MENU_POP_DIRECTION_RIGHT;
-                  break;
-
-                case E_GADCON_ORIENT_CORNER_RT:
-                  dir = E_MENU_POP_DIRECTION_LEFT;
-                  break;
-
-                case E_GADCON_ORIENT_CORNER_LB:
-                  dir = E_MENU_POP_DIRECTION_RIGHT;
-                  break;
-
-                case E_GADCON_ORIENT_CORNER_RB:
-                  dir = E_MENU_POP_DIRECTION_LEFT;
-                  break;
-
-                case E_GADCON_ORIENT_FLOAT:
-                case E_GADCON_ORIENT_HORIZ:
-                case E_GADCON_ORIENT_VERT:
-                default:
-                  dir = E_MENU_POP_DIRECTION_AUTO;
-                  break;
-               }
+        /* Deactivate callback */
+        e_menu_post_deactivate_callback_set(inst->lmenu,
+                                            _e_xkb_cb_lmenu_post, inst);
+        /* Proper menu orientation */
+        switch (inst->gcc->gadcon->orient)
+          {
+           case E_GADCON_ORIENT_TOP:
+             dir = E_MENU_POP_DIRECTION_DOWN;
+             break;
+
+           case E_GADCON_ORIENT_BOTTOM:
+             dir = E_MENU_POP_DIRECTION_UP;
+             break;
+
+           case E_GADCON_ORIENT_LEFT:
+             dir = E_MENU_POP_DIRECTION_RIGHT;
+             break;
+
+           case E_GADCON_ORIENT_RIGHT:
+             dir = E_MENU_POP_DIRECTION_LEFT;
+             break;
+
+           case E_GADCON_ORIENT_CORNER_TL:
+             dir = E_MENU_POP_DIRECTION_DOWN;
+             break;
+
+           case E_GADCON_ORIENT_CORNER_TR:
+             dir = E_MENU_POP_DIRECTION_DOWN;
+             break;
+
+           case E_GADCON_ORIENT_CORNER_BL:
+             dir = E_MENU_POP_DIRECTION_UP;
+             break;
+
+           case E_GADCON_ORIENT_CORNER_BR:
+             dir = E_MENU_POP_DIRECTION_UP;
+             break;
+
+           case E_GADCON_ORIENT_CORNER_LT:
+             dir = E_MENU_POP_DIRECTION_RIGHT;
+             break;
+
+           case E_GADCON_ORIENT_CORNER_RT:
+             dir = E_MENU_POP_DIRECTION_LEFT;
+             break;
+
+           case E_GADCON_ORIENT_CORNER_LB:
+             dir = E_MENU_POP_DIRECTION_RIGHT;
+             break;
+
+           case E_GADCON_ORIENT_CORNER_RB:
+             dir = E_MENU_POP_DIRECTION_LEFT;
+             break;
+
+           case E_GADCON_ORIENT_FLOAT:
+           case E_GADCON_ORIENT_HORIZ:
+           case E_GADCON_ORIENT_VERT:
+           default:
+             dir = E_MENU_POP_DIRECTION_AUTO;
+             break;
+          }
 
-             e_gadcon_locked_set(inst->gcc->gadcon, 1);
+        e_gadcon_locked_set(inst->gcc->gadcon, 1);
 
-             /* We display not relatively to the gadget, but similarly to
-              * the start menu - thus the need for direction etc.
-              */
-             e_menu_activate_mouse(inst->lmenu,
-                                   e_util_zone_current_get
-                                     (e_manager_current_get()),
-                                   x, y, w, h, dir, ev->timestamp);
-          }
+        /* We display not relatively to the gadget, but similarly to
+         * the start menu - thus the need for direction etc.
+         */
+        e_menu_activate_mouse(inst->lmenu,
+                              e_util_zone_current_get
+                                (e_manager_current_get()),
+                              x, y, w, h, dir, ev->timestamp);
      }
    else if (ev->button == 2) /* Middle click */
      e_xkb_layout_next();