X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;ds=sidebyside;f=wm-wmii.c;h=9bf45a93f8a4589896cc774c9a01a47aeec8fba2;hb=ba03157f639c56cc6547675493914699f9dd40e6;hp=82fc223a4c8e9e6fe5ba7980460f6e3a6ae0ad86;hpb=e666d231a1035c96788fc148bcc7eda4b8c1b6ec;p=wmpus diff --git a/wm-wmii.c b/wm-wmii.c index 82fc223..9bf45a9 100644 --- a/wm-wmii.c +++ b/wm-wmii.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, Andy Spencer + * Copyright (c) 2011-2012, Andy Spencer * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -212,16 +212,6 @@ static void set_focus(win_t *win) return; } - /* - Only grab mouse button on unfocused window, - * this prevents stealing all mouse clicks from client windows, - * - A better way may be to re-send mouse clicks to client windows - * using the return value from wm_handle_key */ - for (int i = EV_MOUSE1; i < EV_MOUSE7; i++) { - if (wm_focus) - sys_watch(wm_focus, i, MOD()); - sys_unwatch(win, i, MOD()); - } - dpy_t *dpy; col_t *col; row_t *row; flt_t *flt; switch (search(wm_tag, win, &dpy, &col, &row, &flt)) { case TILING: @@ -723,10 +713,10 @@ int wm_handle_event(win_t *win, event_t ev, mod_t mod, ptr_t ptr) // mod.shift ? 's' : '-', // mod.win ? 'w' : '-'); - /* Mouse movement */ - if (ev == EV_MOUSE1) - raise_float(win); + /* Mouse events */ if (EV_MOUSE0 <= ev && ev <= EV_MOUSE7) { + if (ev == EV_MOUSE1 && !mod.MODKEY && !mod.up) + return raise_float(win), 0; if (ev == EV_MOUSE1 && mod.MODKEY && !mod.up) return set_move(win,ptr,MOVE), 1; if (ev == EV_MOUSE3 && mod.MODKEY && !mod.up) @@ -812,9 +802,6 @@ int wm_handle_event(win_t *win, event_t ev, mod_t mod, ptr_t ptr) if (ev == EV_ENTER && win->state != ST_SHADE) return set_focus(win), 1; - if (EV_MOUSE0 <= ev && ev <= EV_MOUSE7) - return set_focus(win), 0; - /* Reset focus after after focus change, * not sure what is causing the focus change in the first place * but preventing that would be a better solution */ @@ -913,7 +900,7 @@ void wm_init(win_t *root) wm->tag = tag_new(wm->screens, 1); wm->tags = list_insert(NULL, wm->tag); - event_t ev_e[] = {EV_ENTER, EV_FOCUS}; + event_t ev_e[] = {EV_ENTER, EV_FOCUS, EV_MOUSE1}; event_t ev_s[] = {'h', 'j', 'k', 'l', 'c', 'q', ' ', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; event_t ev_m[] = {'h', 'j', 'k', 'l', 'd', 's', 'm', 't', ' ',