diff options
| author | Manolo Gouy <Manolo> | 2017-07-30 16:21:57 +0000 |
|---|---|---|
| committer | Manolo Gouy <Manolo> | 2017-07-30 16:21:57 +0000 |
| commit | c4e04e4c7f446464ef65382cf10bc13417563b3b (patch) | |
| tree | f012307f02f8fba85f406f533908f63f7b15ea1c /src/Fl_x.cxx | |
| parent | 5a7a954ebd1005b30bbe48d84e4291c66ad30252 (diff) | |
Improve rescaling when window moved across screens: make sure center stays on new screen.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12367 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/Fl_x.cxx')
| -rw-r--r-- | src/Fl_x.cxx | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/Fl_x.cxx b/src/Fl_x.cxx index 25ae92d55..9e51e7068 100644 --- a/src/Fl_x.cxx +++ b/src/Fl_x.cxx @@ -726,7 +726,8 @@ int Fl_X11_Screen_Driver::get_mouse_unscaled(int &mx, int &my) { Window c; int cx,cy; unsigned int mask; XQueryPointer(fl_display, root, &root, &c, &mx, &my, &cx, &cy, &mask); #if USE_XFT - return screen_num_unscaled(mx, my); + int screen = screen_num_unscaled(mx, my); + return screen >= 0 ? screen : 0; #else return screen_num(mx, my); #endif @@ -2015,12 +2016,12 @@ fprintf(stderr,"\n");*/ Window cr; int X, Y, W = actual.width, H = actual.height; XTranslateCoordinates(fl_display, fl_xid(window), actual.root, 0, 0, &X, &Y, &cr); -#if USE_XFT // detect when window changes screen - int num = 0; +#if USE_XFT // detect when window centre changes screen Fl_X11_Screen_Driver *d = (Fl_X11_Screen_Driver*)Fl::screen_driver(); - num = d->screen_num_unscaled(X, Y, actual.width, actual.height); Fl_X11_Window_Driver *wd = Fl_X11_Window_Driver::driver(window); int olds = wd->screen_num(); + int num = d->screen_num_unscaled(X+ actual.width/2, Y +actual.height/2); + if (num == -1) num = olds; float s = d->scale(num); if (num != olds) { if (s != d->scale(olds) && |
