replace drop_events arch by x,y pointer coordinates saving
This commit is contained in:
parent
317929baea
commit
de8dcbb724
12
awesome.c
12
awesome.c
|
@ -126,7 +126,7 @@ setup(int screen)
|
||||||
|
|
||||||
/* select for events */
|
/* select for events */
|
||||||
wa.event_mask = SubstructureRedirectMask | SubstructureNotifyMask
|
wa.event_mask = SubstructureRedirectMask | SubstructureNotifyMask
|
||||||
| EnterWindowMask | LeaveWindowMask | StructureNotifyMask;
|
| EnterWindowMask | LeaveWindowMask | StructureNotifyMask | PointerMotionMask;
|
||||||
wa.cursor = globalconf.cursor[CurNormal];
|
wa.cursor = globalconf.cursor[CurNormal];
|
||||||
|
|
||||||
XChangeWindowAttributes(globalconf.display,
|
XChangeWindowAttributes(globalconf.display,
|
||||||
|
@ -322,6 +322,7 @@ main(int argc, char *argv[])
|
||||||
handler[DestroyNotify] = handle_event_destroynotify;
|
handler[DestroyNotify] = handle_event_destroynotify;
|
||||||
handler[EnterNotify] = handle_event_enternotify;
|
handler[EnterNotify] = handle_event_enternotify;
|
||||||
handler[LeaveNotify] = handle_event_leavenotify;
|
handler[LeaveNotify] = handle_event_leavenotify;
|
||||||
|
handler[MotionNotify] = handle_event_motionnotify;
|
||||||
handler[Expose] = handle_event_expose;
|
handler[Expose] = handle_event_expose;
|
||||||
handler[KeyPress] = handle_event_keypress;
|
handler[KeyPress] = handle_event_keypress;
|
||||||
handler[MappingNotify] = handle_event_mappingnotify;
|
handler[MappingNotify] = handle_event_mappingnotify;
|
||||||
|
@ -417,15 +418,6 @@ main(int argc, char *argv[])
|
||||||
if(handler[ev.type])
|
if(handler[ev.type])
|
||||||
handler[ev.type](&ev);
|
handler[ev.type](&ev);
|
||||||
|
|
||||||
/* drop events requested to */
|
|
||||||
if(globalconf.drop_events)
|
|
||||||
{
|
|
||||||
/* need to resync */
|
|
||||||
XSync(dpy, False);
|
|
||||||
while(XCheckMaskEvent(dpy, globalconf.drop_events, &ev));
|
|
||||||
globalconf.drop_events = NoEventMask;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* need to resync */
|
/* need to resync */
|
||||||
XSync(dpy, False);
|
XSync(dpy, False);
|
||||||
}
|
}
|
||||||
|
|
4
client.c
4
client.c
|
@ -230,7 +230,6 @@ client_focus(Client *c, int screen, Bool raise)
|
||||||
|
|
||||||
widget_invalidate_cache(screen, WIDGET_CACHE_CLIENTS);
|
widget_invalidate_cache(screen, WIDGET_CACHE_CLIENTS);
|
||||||
ewmh_update_net_active_window(phys_screen);
|
ewmh_update_net_active_window(phys_screen);
|
||||||
globalconf.drop_events |= EnterWindowMask;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Manage a new client
|
/** Manage a new client
|
||||||
|
@ -768,7 +767,6 @@ uicb_client_swapprev(int screen __attribute__ ((unused)),
|
||||||
{
|
{
|
||||||
client_list_swap(&globalconf.clients, prev, globalconf.focus->client);
|
client_list_swap(&globalconf.clients, prev, globalconf.focus->client);
|
||||||
globalconf.screens[prev->screen].need_arrange = True;
|
globalconf.screens[prev->screen].need_arrange = True;
|
||||||
globalconf.drop_events |= EnterWindowMask;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -787,7 +785,6 @@ uicb_client_swapnext(int screen __attribute__ ((unused)),
|
||||||
{
|
{
|
||||||
client_list_swap(&globalconf.clients, globalconf.focus->client, next);
|
client_list_swap(&globalconf.clients, globalconf.focus->client, next);
|
||||||
globalconf.screens[next->screen].need_arrange = True;
|
globalconf.screens[next->screen].need_arrange = True;
|
||||||
globalconf.drop_events |= EnterWindowMask;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1000,7 +997,6 @@ uicb_client_zoom(int screen, char *arg __attribute__ ((unused)))
|
||||||
client_list_detach(&globalconf.clients, sel);
|
client_list_detach(&globalconf.clients, sel);
|
||||||
client_list_push(&globalconf.clients, sel);
|
client_list_push(&globalconf.clients, sel);
|
||||||
globalconf.screens[screen].need_arrange = True;
|
globalconf.screens[screen].need_arrange = True;
|
||||||
globalconf.drop_events |= EnterWindowMask;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
21
event.c
21
event.c
|
@ -216,6 +216,9 @@ handle_event_destroynotify(XEvent * e)
|
||||||
client_unmanage(c);
|
client_unmanage(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Handle event enternotify
|
||||||
|
* \param e XEvent
|
||||||
|
*/
|
||||||
void
|
void
|
||||||
handle_event_enternotify(XEvent *e)
|
handle_event_enternotify(XEvent *e)
|
||||||
{
|
{
|
||||||
|
@ -223,9 +226,15 @@ handle_event_enternotify(XEvent * e)
|
||||||
XCrossingEvent *ev = &e->xcrossing;
|
XCrossingEvent *ev = &e->xcrossing;
|
||||||
int screen;
|
int screen;
|
||||||
|
|
||||||
if(ev->mode != NotifyNormal)
|
if(ev->mode != NotifyNormal
|
||||||
|
|| (ev->x_root == globalconf.pointer_x
|
||||||
|
&& ev->y_root == globalconf.pointer_y))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
/* the idea behing saving pointer_x and pointer_y is Bob Marley powered */
|
||||||
|
globalconf.pointer_x = ev->x_root;
|
||||||
|
globalconf.pointer_y = ev->y_root;
|
||||||
|
|
||||||
if((c = client_get_bywin(globalconf.clients, ev->window)))
|
if((c = client_get_bywin(globalconf.clients, ev->window)))
|
||||||
{
|
{
|
||||||
window_grabbuttons(get_phys_screen(c->screen), c->win);
|
window_grabbuttons(get_phys_screen(c->screen), c->win);
|
||||||
|
@ -238,6 +247,16 @@ handle_event_enternotify(XEvent * e)
|
||||||
for(screen = 0; screen < ScreenCount(e->xany.display); screen++)
|
for(screen = 0; screen < ScreenCount(e->xany.display); screen++)
|
||||||
if(ev->window == RootWindow(e->xany.display, screen))
|
if(ev->window == RootWindow(e->xany.display, screen))
|
||||||
window_root_grabbuttons(screen);
|
window_root_grabbuttons(screen);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
handle_event_motionnotify(XEvent *e)
|
||||||
|
{
|
||||||
|
XMotionEvent *ev = &e->xmotion;
|
||||||
|
|
||||||
|
globalconf.pointer_x = ev->x_root;
|
||||||
|
globalconf.pointer_y = ev->y_root;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
1
event.h
1
event.h
|
@ -33,6 +33,7 @@ void handle_event_configurerequest(XEvent *);
|
||||||
void handle_event_configurenotify(XEvent *);
|
void handle_event_configurenotify(XEvent *);
|
||||||
void handle_event_destroynotify(XEvent *);
|
void handle_event_destroynotify(XEvent *);
|
||||||
void handle_event_enternotify(XEvent *);
|
void handle_event_enternotify(XEvent *);
|
||||||
|
void handle_event_motionnotify(XEvent *);
|
||||||
void handle_event_expose(XEvent *);
|
void handle_event_expose(XEvent *);
|
||||||
void handle_event_keypress(XEvent *);
|
void handle_event_keypress(XEvent *);
|
||||||
void handle_event_leavenotify(XEvent *);
|
void handle_event_leavenotify(XEvent *);
|
||||||
|
|
|
@ -331,8 +331,8 @@ struct AwesomeConf
|
||||||
tag_client_node_t *tclink;
|
tag_client_node_t *tclink;
|
||||||
/** Command line passed to awesome */
|
/** Command line passed to awesome */
|
||||||
char *argv;
|
char *argv;
|
||||||
/** EventMask to drop before each XEvent treatement */
|
/** Last XMotionEvent coords */
|
||||||
long drop_events;
|
int pointer_x, pointer_y;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue