From d81442f55dd1414fd23617044ea157de8d9f1baa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bert=20M=C3=BCnnich?= Date: Thu, 5 Oct 2017 13:47:02 +0200 Subject: Own win method for mouse cursor location --- commands.c | 10 ++++------ window.c | 11 +++++++++++ window.h | 1 + 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/commands.c b/commands.c index 2e1d66c..01e7878 100644 --- a/commands.c +++ b/commands.c @@ -322,19 +322,17 @@ bool ci_scroll_to_edge(arg_t dir) bool ci_drag(arg_t _) { - int i, x, y; + int x, y; float px, py; - unsigned int ui; XEvent e; - Window w; - if ((int)(img.w * img.zoom) < win.w && (int)(img.h * img.zoom) < win.h) - return false; - if (!XQueryPointer(win.env.dpy, win.xwin, &w, &w, &i, &i, &x, &y, &ui)) + if ((int)(img.w * img.zoom) <= win.w && (int)(img.h * img.zoom) <= win.h) return false; win_set_cursor(&win, CURSOR_DRAG); + win_cursor_pos(&win, &x, &y); + for (;;) { px = MIN(MAX(0.0, x - win.w*0.1), win.w*0.8) / (win.w*0.8) * (win.w - img.w * img.zoom); diff --git a/window.c b/window.c index 72b94b2..be2c9fa 100644 --- a/window.c +++ b/window.c @@ -470,3 +470,14 @@ void win_set_cursor(win_t *win, cursor_t cursor) XFlush(win->env.dpy); } } + +void win_cursor_pos(win_t *win, int *x, int *y) +{ + int i; + unsigned int ui; + Window w; + + if (!XQueryPointer(win->env.dpy, win->xwin, &w, &w, &i, &i, x, y, &ui)) + *x = *y = 0; +} + diff --git a/window.h b/window.h index f5f9df0..1bf62ec 100644 --- a/window.h +++ b/window.h @@ -106,5 +106,6 @@ int win_textwidth(const win_env_t*, const char*, unsigned int, bool); void win_set_title(win_t*, const char*); void win_set_cursor(win_t*, cursor_t); +void win_cursor_pos(win_t*, int*, int*); #endif /* WINDOW_H */ -- cgit v1.2.3