コード例 #1
0
ファイル: eclair_menu.c プロジェクト: playya/Enlightenment
//Popup the menu at the position (x, y)
void eclair_menu_popup_at_xy(Eclair_Menu *menu, int x, int y)
{
   if (!menu)
      return;

   if (!_eclair_menu_input_window)
   {
      Ecore_X_Window root, parent;
      int root_x, root_y, root_w, root_h;

      root = menu->x_window;
      while ((parent = ecore_x_window_parent_get(root)) != 0)
         root = parent;
 
      ecore_x_window_geometry_get(root, &root_x, &root_y, &root_w, &root_h);
      _eclair_menu_input_window = ecore_x_window_input_new(root, root_x, root_y, root_w, root_h);
   }
   if (!_eclair_menu_root)
   {
      _eclair_menu_mouse_up_handler = ecore_event_handler_add(ECORE_X_EVENT_MOUSE_BUTTON_UP, _eclair_menu_mouse_up_cb, menu);
      _eclair_menu_mouse_move_handler = ecore_event_handler_add(ECORE_X_EVENT_MOUSE_MOVE, _eclair_menu_mouse_move_cb, menu);
      ecore_x_window_show(_eclair_menu_input_window);
      ecore_x_keyboard_grab(_eclair_menu_input_window);
      ecore_x_pointer_confine_grab(_eclair_menu_input_window);

      _eclair_menu_root = menu;
   }
   ecore_evas_move(menu->window, x, y);
   ecore_evas_show(menu->window);
   evas_event_feed_mouse_move(menu->evas, -100000, -100000, ecore_x_current_time_get(), NULL);
   evas_event_feed_mouse_in(menu->evas, ecore_x_current_time_get(), NULL);
   _eclair_menu_popped_menus = eina_list_append(_eclair_menu_popped_menus, menu);

   _eclair_menu_update_slide_timer(menu);
}
コード例 #2
0
ファイル: e_grabinput.c プロジェクト: Limsik/e17
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;
}