Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_border.c Log Message: alt+left mouse drag! WHERD! =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -3 -r1.11 -r1.12 --- e_border.c 2 Dec 2004 10:07:50 -0000 1.11 +++ e_border.c 4 Dec 2004 03:55:23 -0000 1.12 @@ -48,6 +48,7 @@ static int _e_border_cb_mouse_up(void *data, int type, void *event); static int _e_border_cb_mouse_move(void *data, int type, void *event); static int _e_border_cb_mouse_wheel(void *data, int type, void *event); +static int _e_border_cb_grab_replay(void *data, int type, void *event); static void _e_border_eval(E_Border *bd); static void _e_border_resize_limit(E_Border *bd, int *w, int *h); @@ -76,6 +77,7 @@ handlers = evas_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_IN, _e_border_cb_window_focus_in, NULL)); handlers = evas_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_OUT, _e_border_cb_window_focus_out, NULL)); handlers = evas_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE, _e_border_cb_client_message, NULL)); + ecore_x_passive_grab_replay_func_set(_e_border_cb_grab_replay, NULL); return 1; } @@ -106,6 +108,14 @@ bd->w = 1; bd->h = 1; bd->win = ecore_x_window_override_new(bd->container->win, 0, 0, bd->w, bd->h); + /* FIXME: use config list of bindings */ + ecore_x_window_button_grab(bd->win, + 1, + ECORE_X_EVENT_MASK_MOUSE_DOWN | + ECORE_X_EVENT_MASK_MOUSE_UP | + ECORE_X_EVENT_MASK_MOUSE_MOVE, + ECORE_X_MODIFIER_ALT, + 0); bd->bg_ecore_evas = ecore_evas_software_x11_new(NULL, bd->win, 0, 0, bd->w, bd->h); ecore_evas_software_x11_direct_resize_set(bd->bg_ecore_evas, 1); e_canvas_add(bd->bg_ecore_evas); @@ -423,6 +433,11 @@ e_canvas_del(bd->bg_ecore_evas); ecore_evas_free(bd->bg_ecore_evas); ecore_x_window_del(bd->client.shell_win); + /* FIXME: use config list of bindings */ + ecore_x_window_button_ungrab(bd->win, + 1, + ECORE_X_MODIFIER_ALT, + 0); ecore_x_window_del(bd->win); bd->container->clients = evas_list_remove(bd->container->clients, bd); borders = evas_list_remove(borders, bd); @@ -1002,6 +1017,31 @@ ev = event; bd = data; + if (ev->event_win == bd->win) + { + printf("GRABPRESS!\n"); + if ((ev->button >= 1) && (ev->button <= 3)) + { + bd->mouse.last_down[ev->button - 1].mx = ev->root.x; + bd->mouse.last_down[ev->button - 1].my = ev->root.y; + bd->mouse.last_down[ev->button - 1].x = bd->x; + bd->mouse.last_down[ev->button - 1].y = bd->y; + bd->mouse.last_down[ev->button - 1].w = bd->w; + bd->mouse.last_down[ev->button - 1].h = bd->h; + } + bd->mouse.current.mx = ev->root.x; + bd->mouse.current.my = ev->root.y; + /* FIXME: decide that this is a button binding and what to do */ + if (ev->button == 1) + { + if (!bd->moving) + { + bd->moving = 1; + _e_border_moveinfo_gather(bd, "mouse,1"); + e_border_raise(bd); + } + } + } if (ev->win != bd->event_win) return 1; if ((ev->button >= 1) && (ev->button <= 3)) { @@ -1033,6 +1073,27 @@ ev = event; bd = data; + if (ev->event_win == bd->win) + { + printf("GRABRELEASE!\n"); + if ((ev->button >= 1) && (ev->button <= 3)) + { + bd->mouse.last_up[ev->button - 1].mx = ev->root.x; + bd->mouse.last_up[ev->button - 1].my = ev->root.y; + bd->mouse.last_up[ev->button - 1].x = bd->x; + bd->mouse.last_up[ev->button - 1].y = bd->y; + } + bd->mouse.current.mx = ev->root.x; + bd->mouse.current.my = ev->root.y; + /* FIXME: decide that this is a button binding and what to do */ + if (ev->button == 1) + { + if (bd->moving) + { + bd->moving = 0; + } + } + } if (ev->win != bd->event_win) return 1; if ((ev->button >= 1) && (ev->button <= 3)) { @@ -1056,7 +1117,12 @@ ev = event; bd = data; - if (ev->win != bd->event_win) return 1; + if (ev->event_win == bd->win) + { + printf("GRABMOVE2!\n"); + } + if ((ev->win != bd->event_win) && + (ev->event_win != bd->win)) return 1; bd->mouse.current.mx = ev->root.x; bd->mouse.current.my = ev->root.y; if (bd->moving) @@ -1115,6 +1181,22 @@ return 1; } +static int +_e_border_cb_grab_replay(void *data, int type, void *event) +{ + if (type == ECORE_X_EVENT_MOUSE_BUTTON_DOWN) + { + Ecore_X_Event_Mouse_Button_Down *e; + E_Border *bd; + + e = event; + bd = e_border_find_by_client_window(e->win); + if (!bd) bd = e_border_find_by_client_window(e->event_win); + /* FIXME: return 1 if we pass this click on... */ + } + return 0; +} + static void _e_border_eval(E_Border *bd) { ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://productguide.itmanagersjournal.com/ _______________________________________________ enlightenment-cvs mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs