forked from enlightenment/efl
adding some grab calls while i'm making my window border code work... :)
SVN revision: 3871
This commit is contained in:
parent
70c496497d
commit
d40d6c6f01
|
@ -235,6 +235,12 @@ void e_window_get_virtual_area(Window win, int *area_x,
|
|||
void e_get_virtual_area(int *area_x, int *area_y);
|
||||
void e_window_get_root_relative_location(Window win, int *x, int *y);
|
||||
|
||||
void e_button_grab(Window win, int button, int events, Ev_Key_Modifiers mod, int any_mod);
|
||||
void e_button_ungrab(Window win, int button, Ev_Key_Modifiers mod, int any_mod);
|
||||
void e_pointer_replay(Time t);
|
||||
void e_pointer_grab(Window win, Time t);
|
||||
void e_pointer_ungrab(Time t);
|
||||
|
||||
typedef struct _eev Eevent;
|
||||
typedef struct _ev_fd_handler Ev_Fd_Handler;
|
||||
typedef struct _ev_pid_handler Ev_Pid_Handler;
|
||||
|
|
|
@ -442,6 +442,7 @@ e_ev_x_handle_enter_notify(XEvent * xevent)
|
|||
{
|
||||
Ev_Window_Enter *e;
|
||||
|
||||
if ((xevent->xcrossing.mode == NotifyGrab) || (xevent->xcrossing.mode == NotifyUngrab)) return;
|
||||
e_pointer_xy_set(xevent->xcrossing.x_root, xevent->xcrossing.y_root);
|
||||
e = NEW(Ev_Window_Enter, 1);
|
||||
e->win = xevent->xcrossing.window;
|
||||
|
@ -475,6 +476,7 @@ e_ev_x_handle_leave_notify(XEvent * xevent)
|
|||
{
|
||||
Ev_Window_Leave *e;
|
||||
|
||||
if ((xevent->xcrossing.mode == NotifyGrab) || (xevent->xcrossing.mode == NotifyUngrab)) return;
|
||||
e_pointer_xy_set(xevent->xcrossing.x_root, xevent->xcrossing.y_root);
|
||||
{
|
||||
Ev_Mouse_Move *e;
|
||||
|
|
|
@ -2473,3 +2473,88 @@ e_window_get_root_relative_location(Window win, int *x, int *y)
|
|||
if (x) *x = dx;
|
||||
if (y) *y = dy;
|
||||
}
|
||||
|
||||
void
|
||||
e_button_grab(Window win, int button, int events, Ev_Key_Modifiers mod, int any_mod)
|
||||
{
|
||||
unsigned int b;
|
||||
unsigned int m;
|
||||
unsigned int locks[8];
|
||||
int i;
|
||||
|
||||
b = button;
|
||||
if (b == 0) b = AnyButton;
|
||||
m = 0;
|
||||
if (any_mod) m = AnyModifier;
|
||||
else
|
||||
{
|
||||
if (mod & EV_KEY_MODIFIER_SHIFT) m |= e_mod_mask_shift_get();
|
||||
if (mod & EV_KEY_MODIFIER_CTRL) m |= e_mod_mask_ctrl_get();
|
||||
if (mod & EV_KEY_MODIFIER_ALT) m |= e_mod_mask_alt_get();
|
||||
if (mod & EV_KEY_MODIFIER_WIN) m |= e_mod_mask_win_get();
|
||||
}
|
||||
locks[0] = 0;
|
||||
locks[1] = e_lock_mask_caps_get();
|
||||
locks[2] = e_lock_mask_num_get();
|
||||
locks[3] = e_lock_mask_scroll_get();
|
||||
locks[4] = e_lock_mask_caps_get() | e_lock_mask_num_get();
|
||||
locks[5] = e_lock_mask_caps_get() | e_lock_mask_scroll_get();
|
||||
locks[6] = e_lock_mask_num_get() | e_lock_mask_scroll_get();
|
||||
locks[7] = e_lock_mask_caps_get() | e_lock_mask_num_get() | e_lock_mask_scroll_get();
|
||||
for (i = 0; i < 8; i++)
|
||||
XGrabButton(disp, b, m | locks[i],
|
||||
win, False, events,
|
||||
GrabModeSync, GrabModeAsync, None, None);
|
||||
}
|
||||
|
||||
void
|
||||
e_button_ungrab(Window win, int button, Ev_Key_Modifiers mod, int any_mod)
|
||||
{
|
||||
unsigned int b;
|
||||
unsigned int m;
|
||||
unsigned int locks[8];
|
||||
int i;
|
||||
|
||||
b = button;
|
||||
if (b == 0) b = AnyButton;
|
||||
m = 0;
|
||||
if (any_mod) m = AnyModifier;
|
||||
else
|
||||
{
|
||||
if (mod & EV_KEY_MODIFIER_SHIFT) m |= e_mod_mask_shift_get();
|
||||
if (mod & EV_KEY_MODIFIER_CTRL) m |= e_mod_mask_ctrl_get();
|
||||
if (mod & EV_KEY_MODIFIER_ALT) m |= e_mod_mask_alt_get();
|
||||
if (mod & EV_KEY_MODIFIER_WIN) m |= e_mod_mask_win_get();
|
||||
}
|
||||
locks[0] = 0;
|
||||
locks[1] = e_lock_mask_caps_get();
|
||||
locks[2] = e_lock_mask_num_get();
|
||||
locks[3] = e_lock_mask_scroll_get();
|
||||
locks[4] = e_lock_mask_caps_get() | e_lock_mask_num_get();
|
||||
locks[5] = e_lock_mask_caps_get() | e_lock_mask_scroll_get();
|
||||
locks[6] = e_lock_mask_num_get() | e_lock_mask_scroll_get();
|
||||
locks[7] = e_lock_mask_caps_get() | e_lock_mask_num_get() | e_lock_mask_scroll_get();
|
||||
for (i = 0; i < 8; i++)
|
||||
XUngrabButton(disp, b, m | locks[i], win);
|
||||
}
|
||||
|
||||
void
|
||||
e_pointer_replay(Time t)
|
||||
{
|
||||
XSync(disp, False);
|
||||
XAllowEvents(disp, ReplayPointer, t);
|
||||
XSync(disp, False);
|
||||
}
|
||||
|
||||
void
|
||||
e_pointer_grab(Window win, Time t)
|
||||
{
|
||||
XGrabPointer(disp, win, False, XEV_BUTTON | XEV_MOUSE_MOVE | XEV_IN_OUT,
|
||||
GrabModeAsync, GrabModeAsync, None, None, t);
|
||||
}
|
||||
|
||||
void
|
||||
e_pointer_ungrab(Time t)
|
||||
{
|
||||
XUngrabPointer(disp, t);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue