//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); }
EAPI int elm_main(int argc, char **argv) { Evas_Object *win=NULL, *bg=NULL, *pattern=NULL, *edje=NULL, *object=NULL, *item=NULL; Ecore_X_Window xwin, rootxwin; char theme[PATH_MAX]; setlocale(LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); win = elm_win_add(NULL, "e_pattern_lock", ELM_WIN_BASIC); elm_win_autodel_set(win, EINA_TRUE); elm_win_maximized_set(win, EINA_TRUE); // change to full screen and above everything for lockscreen effect evas_object_size_hint_min_set(win, 480, 480); evas_object_size_hint_max_set(win, 640, 640); elm_win_fullscreen_set(win, EINA_TRUE); elm_win_sticky_set(win, EINA_TRUE); elm_win_keyboard_mode_set(win, ELM_WIN_KEYBOARD_OFF); elm_win_layer_set(win, INT_MAX); xwin = elm_win_xwindow_get(win); rootxwin = ecore_x_window_root_get(xwin); ecore_x_pointer_grab(xwin); ecore_x_keyboard_grab(rootxwin); bg = elm_bg_add(win); evas_object_size_hint_weight_set(bg, 1.0, 1.0); elm_win_resize_object_add(win, bg); evas_object_show(bg); snprintf(theme, sizeof(theme), "%s/themes/default.edj", PKGDATADIR); elm_theme_extension_add(NULL, theme); elm_theme_overlay_add(NULL, theme); pattern = elm_layout_add(win); elm_layout_file_set(pattern, theme, "e_lock/table/default"); evas_object_size_hint_weight_set(pattern, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(pattern, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_win_resize_object_add(win, pattern); edje = elm_layout_edje_get(pattern); set_event_cbs(0, 0, "top_left"); set_event_cbs(1, 0, "top"); set_event_cbs(2, 0, "top_right"); set_event_cbs(0, 1, "left"); set_event_cbs(1, 1, "center"); set_event_cbs(2, 1, "right"); set_event_cbs(0, 2, "bottom_left"); set_event_cbs(1, 2, "bottom"); set_event_cbs(2, 2, "bottom_right"); evas_object_show(pattern); evas_object_show(win); elm_run(); elm_shutdown(); return(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; }