diff options
Diffstat (limited to 'src/Fl_Screen_Driver.cxx')
| -rw-r--r-- | src/Fl_Screen_Driver.cxx | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/src/Fl_Screen_Driver.cxx b/src/Fl_Screen_Driver.cxx index 971ce423e..85a60109c 100644 --- a/src/Fl_Screen_Driver.cxx +++ b/src/Fl_Screen_Driver.cxx @@ -196,6 +196,7 @@ Fl_RGB_Image *Fl_Screen_Driver::traverse_to_gl_subwindows(Fl_Group *g, int x, in if (full_img) g->as_window()->make_current(); full_img = Fl::screen_driver()->read_win_rectangle(x, y, w, h); } + float full_img_scale = (full_img && w > 0 ? float(full_img->data_w())/w : 1); int n = g->children(); for (int i = 0; i < n; i++) { Fl_Widget *c = g->child(i); @@ -221,9 +222,7 @@ Fl_RGB_Image *Fl_Screen_Driver::traverse_to_gl_subwindows(Fl_Group *g, int x, in } else { top = full_img->h() - (origin_y - y + img->h()); } - int nscreen = c->as_window()->driver()->screen_num(); - float s = Fl::screen_driver()->scale(nscreen); - write_image_inside(full_img, img, (origin_x - x) * s, top * s); + write_image_inside(full_img, img, (origin_x - x) * full_img_scale, top * full_img_scale); delete img; } } |
