Example #1
0
//Pop down the menu and its childrend
void eclair_menu_pop_down(Eclair_Menu *menu)
{
   Eina_List *l;
   Eclair_Menu_Item *item;

   if (!menu)
      return;

   for (l = menu->items; l; l = l->next)
   {
      if (!(item = l->data))
         continue;

      eclair_menu_item_deactivate(item);
   }

   ecore_evas_hide(menu->window);
   if (menu == _eclair_menu_root)
   {
      ecore_x_keyboard_ungrab();
      ecore_x_pointer_ungrab();
      ecore_x_window_hide(_eclair_menu_input_window);
      ecore_event_handler_del(_eclair_menu_mouse_up_handler);
      ecore_event_handler_del(_eclair_menu_mouse_move_handler);
      _eclair_menu_root = NULL;
   }

   _eclair_menu_popped_menus = eina_list_remove(_eclair_menu_popped_menus, menu);
}
Example #2
0
EAPI int
e_grabinput_get(Ecore_X_Window mouse_win, int confine_mouse, Ecore_X_Window key_win)
{
   if (grab_mouse_win)
     {
        ecore_x_pointer_ungrab();
        grab_mouse_win = 0;
     }
   if (grab_key_win)
     {
        ecore_x_keyboard_ungrab();
        grab_key_win = 0;
        focus_win = 0;
     }
   if (mouse_win)
     {
        int ret = 0;

        if (confine_mouse)
          ret = ecore_x_pointer_confine_grab(mouse_win);
        else
          ret = ecore_x_pointer_grab(mouse_win);
        if (!ret) return 0;
        grab_mouse_win = mouse_win;
     }
   if (key_win)
     {
        int ret = 0;

        ret = ecore_x_keyboard_grab(key_win);
        if (!ret)
          {
             if (grab_mouse_win)
               {
                  ecore_x_pointer_ungrab();
                  grab_mouse_win = 0;
               }
             return 0;
          }
        grab_key_win = key_win;
     }
   return 1;
}
Example #3
0
EAPI void
e_grabinput_release(Ecore_X_Window mouse_win, Ecore_X_Window key_win)
{
   if (mouse_win == grab_mouse_win)
     {
        ecore_x_pointer_ungrab();
        grab_mouse_win = 0;
     }
   if (key_win == grab_key_win)
     {
        ecore_x_keyboard_ungrab();
        grab_key_win = 0;
        if (focus_win != 0)
          {
             /* fprintf(stderr, "release focus to %x\n", focus_win); */
             _e_grabinput_focus(focus_win, focus_method);
             focus_win = 0;
             focus_method = E_FOCUS_METHOD_NO_INPUT;
          }
     }
}