From 33eb87940dcc672ac50a3c1a26b437e7f1320112 Mon Sep 17 00:00:00 2001 From: ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> Date: Wed, 21 Aug 2019 12:01:01 +0200 Subject: Fix a case when fl_read_window() did not capture subwindows correctly. The case was under macOS with a non-GL parent window mapped to a retina display containing a GL subwindow and if the app did not call Fl::use_high_res_GL(1). --- src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.H | 2 +- src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'src/drivers/WinAPI') diff --git a/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.H b/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.H index 09beb1108..11a923331 100644 --- a/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.H +++ b/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.H @@ -75,7 +75,7 @@ public: virtual void remove_timeout(Fl_Timeout_Handler cb, void *argp); virtual int dnd(int unused); virtual int compose(int &del); - virtual Fl_RGB_Image *read_win_rectangle(int X, int Y, int w, int h, Fl_Window *win); + virtual Fl_RGB_Image *read_win_rectangle(int X, int Y, int w, int h, Fl_Window *win, bool may_capture_subwins, bool *did_capture_subwins); Fl_RGB_Image *read_win_rectangle_unscaled(int X, int Y, int w, int h, Fl_Window *win); virtual int get_mouse(int &x, int &y); virtual void enable_im(); diff --git a/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx b/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx index 5eff35d9d..edbfba577 100644 --- a/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx +++ b/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx @@ -488,7 +488,8 @@ Fl_WinAPI_Screen_Driver::read_win_rectangle( int Y, // I - Top position int w, // I - Width of area to read int h, // I - Height of area to read - Fl_Window *win) // I - window to capture from or NULL to capture from current offscreen + Fl_Window *win, // I - window to capture from or NULL to capture from current offscreen + bool may_capture_subwins, bool *did_capture_subwins) { float s = Fl_Surface_Device::surface()->driver()->scale(); int ws, hs; -- cgit v1.2.3