瀏覽代碼

Own win method for mouse cursor location

master
Bert Münnich 7 年之前
父節點
當前提交
d81442f55d
共有 3 個文件被更改,包括 16 次插入6 次删除
  1. +4
    -6
      commands.c
  2. +11
    -0
      window.c
  3. +1
    -0
      window.h

+ 4
- 6
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);


+ 11
- 0
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;
}


+ 1
- 0
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 */

Loading…
取消
儲存