summaryrefslogtreecommitdiff
path: root/src/Fl_win32.cxx
AgeCommit message (Collapse)Author
2018-06-18Recent (circa early 2018) versions of the Mingw32 headers have changed the ↵Ian MacArthur
file header layout, breaking the build of fltk-1.4 for some users. These changes should give a working build once more - more complete rework is still needed to fully address the issues raised. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12946 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-05-12Remove public member function Fl_Window_Driver *Fl_Window::driver() so class ↵Manolo Gouy
Fl_Window_Driver is not in FLTK public API. This function is replaced by static Fl_Window_Driver* Fl_Window_Driver::(const Fl_Window *win). The purpose is to have class Fl_Window_Driver outside from FLTK ABI. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12915 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-05-09Rename Fl_Paged_Device::start_job() to begin_job() and ↵Manolo Gouy
Fl_Paged_Device::start_page() to begin_page(). The new function names begin_job() and begin_page() better match end_job() and end_page() with which they must be used by pair. The old names start_job() and start_page() are maintained for API compatibility with FLTK 1.3.x git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12910 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-05-06Remove useless #include <FL/Fl_Shared_Image.H> following usage of the new ↵Manolo Gouy
Fl_Image::scale() member function. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12903 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-05-06Simplify Fl_XXX_Window_Driver::capture_titlebar_and_borders() using ↵Manolo Gouy
Fl_Image::scale(). git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12902 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-04-29Fl_WinAPI_System_Driver::paste() : fix handling of clipboard containing ↵Manolo Gouy
top-down DIB image. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12883 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-04-29Fl_WinAPI_System_Driver::paste() : fix indentation only.Manolo Gouy
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12882 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-04-29Pasting image from clipboard: partial support of top-down DIB image (still ↵Manolo Gouy
needs completion) git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12881 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-04-29Fix Fl_WinAPI_System_Driver::paste() when clipboard contains GIF imageManolo Gouy
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12878 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-04-29Fix Fl_WinAPI_System_Driver::paste() when the clipboard contains an image as ↵Manolo Gouy
a DIB and for GUI scale support. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12877 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-04-26Fix Fl_WinAPI_System_Driver::paste() when clipboard contains an image and ↵Manolo Gouy
the GUI is scaled. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12873 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-04-25Have Fl_WinAPI_Window_Driver::capture_titlebar_and_borders() restore the ↵Manolo Gouy
window's device context before return git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12870 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-03-09Windows: remove necessity to compile with -DFLTK_HIDPI_SUPPORT to make WIN32 ↵Manolo Gouy
FLTK apps DPI-aware. At this point, Windows FLTK apps detect HighDPI displays and rescale their GUI accordingly. They also all reply to ctrl/+/-/0/ keystrokes to enlarge/shrink/reset their windows. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12723 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-02-19Don't use FLTK's way to support HighDPI screens when the app has set a DPI ↵Manolo Gouy
awareness through a manifest - cont'd. It's also necessary to prevent FLTK from rescaling windows moved between screens with different DPI's. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12678 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-02-18Don't use FLTK's way to support HighDPI screens when the app has set a DPI ↵Manolo Gouy
awareness through a manifest. FLTK reads during fl_open_display() the scaling factor of each screen and uses that to transform FLTK units into screen units. This change avoids this reading if the app declared to be DPI-aware though a manifest, a symptom that the app supports HighDPI independently from FLTK. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12677 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-02-16Remove Fl_Window_Driver::current_cursor() and its platform-specific forms ↵Manolo Gouy
that are now unused. This became unused when window scaling no longer involved window destruction/recreation. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12668 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-02-09Replace "WIN32" with "_WIN32" or "Windows".Albrecht Schlosser
Replace compiler/preprocessor/platform macro "WIN32" with "_WIN32". Replace "WIN32" in text and documentation with "Windows". Replace "MSWindows" with "Windows". To do: README.Windows.txt (and maybe other documentation as well) needs updates. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12655 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-02-09Fix fl_read_image() under MacOS platform when GUI is rescaled.Manolo Gouy
This commit also simplifies the platform-dependent support of fl_read_image(): only Fl_XXX_Screen_Driver::read_win_rectangle() contains platform-specific code to capture pixels from the current window or from an offscreen buffer. Platform-independent function Fl_Screen_Driver::traverse_to_gl_subwindows() captures subwindows that intersect with the area fl_read_image() targets. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12653 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-01-31Replace FL/x.H with FL/platform.H - step 2 (STR #3435).Albrecht Schlosser
This second step replaces FL/x.H with FL/platform.H in all source files. Dependencies have been adjusted as well. This commit completes the replacement of FL/x.H with FL/platform.H. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12641 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-12-19Fix indenting and formatting according to the CMP.Albrecht Schlosser
Sorry for the big commit. There were so many indenting and formatting issues in src/Fl_win32.cxx that I decided to reformat it with clang-format (see previous commit). However, this commit is not the direct result of using clang-format - I adjusted some parts of the code manually. Other manual changes: I ... - reordered some #define's and added comments - added comments to switch/case/break statements and {} for clarity - moved a few 'break' statements inside or outside of braces {} There should not be any code changes though, i.e. the compiled object code should be identical. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12599 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-12-15Remove VS specific #pragma comment (lib, ...).Albrecht Schlosser
This Visual Studio specific pragma hides missing library references on Visual Studio builds, but since comctl32 is not the only necessary Windows dll and this has never been extended to other libs, this pragma is unnecessary and potentially confusing, so I removed it. Documentation of dependencies mentions comctl32 (and more) and future CMake generation of user project VS IDE files can reference the FLTK dependencies by internal (CMake) means anyway. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12591 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-08-26Fl_WinAPI_Window_Driver::capture_titlebar_and_borders(): remove a few ↵Manolo Gouy
unnecessary statements. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12402 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-08-25WIN32: have Fl_win32.cxx #include "config_lib.h"Manolo Gouy
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12397 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-08-19Prevent situation where SetProcessDPIAwareness was called after ↵Manolo Gouy
Fl_WinAPI_Screen_Driver::init(). The effect was that the file_chooser test app did not recognize the window scaling factor. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12393 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-08-05Strenghten Fl_WinAPI_System_Driver::paste(): the widget's handle method may ↵Manolo Gouy
change Fl::e_text. The widget's handle method may change the value of Fl::e_text. This occurs for instance if this method calls fl_choice(). So, memorize the value of Fl::e_text before, to delete the correct array after the call to the handle method. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12371 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-07-30Improve rescaling when window moved across screens: make sure center stays ↵Manolo Gouy
on new screen. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12367 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-07-28Replace static protected bool Fl_Window_Driver::is_a_rescale by a private ↵Manolo Gouy
static variable and a public getter. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12364 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-07-27IsIconic() is the adequate WINAPI function to detect a minimised window.Manolo Gouy
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12360 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-07-27Simpler initialisation of the 'scale' local variable in WndProc().Manolo Gouy
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12359 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-07-27Rename Fl_Window_Driver::in_resize_after_scale_change to 'is_a_rescale' ↵Manolo Gouy
which is more expressive. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12358 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-07-27Fix window iconize/deiconize when multiple screens with distinct scaling ↵Manolo Gouy
factors. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12357 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-07-25Remove Fl_Window_Driver::reuse_cursor() that is no longer used since commit ↵Manolo Gouy
r12349. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12350 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-07-25Rewrite Fl_Window_Driver::resize_after_scale_change() removing calls to ↵Manolo Gouy
Fl_Window::hide() and Fl_Window::show(). Windows are now rescaled with a call to Fl_Window::resize() which has been slightly modified. Static member variable bool Fl_Window_Driver::in_resize_after_scale_change is created, and is true if and only if Fl_Window::resize() is called by Fl_Window_Driver::resize_after_scale_change(). This new flag allows Fl_Window::resize() to perform correctly the rescaling of the window. Fl_Gl_Window::resize() and Fl_Double_Window::resize() also consult the value of the Fl_Window_Driver::in_resize_after_scale_change flag. The platform-specific Fl_WinAPI_Window_Driver::resize() and Fl_X11_Window_Driver::resize() also use the Fl_Window_Driver::in_resize_after_scale_change flag. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12349 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-07-07Define Fl_WinAPI_Screen_Driver::DWM_scaling_factor() only without ↵Manolo Gouy
FLTK_HIDPI_SUPPORT. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12298 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-07-07WIN32 HiDPI support: fix copy and paste of image data when rescaling is applied.Manolo Gouy
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12297 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-07-03HiDPI support under WIN32 platform: completed.Manolo Gouy
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12285 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-07-01WIN32: fix error when building without FLTK_HIDPI_SUPPORT.Manolo Gouy
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12284 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-06-29HiDPI support for WIN32 platform: begin to support screen-specific scale factor.Manolo Gouy
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12280 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-06-28Better implementation of Fl_WinAPI_Window_Driver::reuse_cursor() that will ↵Manolo Gouy
also work with custom cursors. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12277 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-06-28HiDPI support: keep window's cursor after rescaling.Manolo Gouy
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12275 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-06-27WIN32 platform: more progress for full HiDPI supportManolo Gouy
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12273 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-06-19HiDPI support under WIN32: fix bugs with tile demo and with fullscreen demo.Manolo Gouy
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12268 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-06-19HiDPI support under WIN32 platform: fix ↵Manolo Gouy
Fl_WinAPI_Window_Driver::capture_titlebar_and_borders() under XP. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12266 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-06-18Advancing HiDPI support for the WIN32 platform - still incomplete.Manolo Gouy
It's still necessary to compile with -DFLTK_HIDPI_SUPPORT to activate the new HiDPI support. Default builds get the same HiDPI support as in FLTK 1.3 git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12265 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-06-17Make Fl_Screen_Driver::get_mouse(int&, int&) return the number of the ↵Manolo Gouy
mouse-containing screen. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12264 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-06-11 Scaling for WIN32 platform: avoid undrawn right and bottom window margins ↵Manolo Gouy
when manually resizing windows git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12258 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-06-01Divide virtual Fl_Screen_Driver::open_display() in a platform-specific part ↵Manolo Gouy
followed by a platform-independent part. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12245 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-05-21Fix Visual Studio build with HiDPI support.Albrecht Schlosser
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12241 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-05-17Introduce HiDPI + rescaling support for the X11 platform (+ partial support ↵Manolo Gouy
for WIN32) Corresponds to STR #3320 1) HiDPI support consists in detecting the adequate scaling factor for the screen on which FLTK maps a window, and scaling all FLTK units by this factor. FLTK tries to detect the correct value of this factor at startup (see more details below). Environment variable FLTK_SCALING_FACTOR can also be used to set this value. 2) Rescaling support consists in changing the scaling factor of all FLTK windows in reply to ctrl/+/-/0/ keystrokes. More details for the various platforms : - X11: Support is very advanced. Some details need still to be improved. Automatic detection of the correct starting value of the scaling factor works well with the gnome desktop. The present code contains no support for this on other desktops. FLTK_SCALING_FACTOR provides a workaround. -WIN32: Support is incomplete at this point, although many test applications have partial or complete HiDPI and scaling support. The current value of the system's scaling factor is correctly detected at application startup. Apps respond to changes of this value in real time. Support needs to define the FLTK_HIDPI_SUPPORT preprocessor variable at compile time. This way, standard builds produce a code with the default WIN32 HiDPI support, that is, where all graphics goes to an internal buffer that gets enlarged by the system and then mapped to the HiDPI display. To experiment with (or develop) the new HiDPI support requires a modified build procedure in which FLTK_HIDPI_SUPPORT is defined at compile time. When the support will be complete, the requirement for the definition of this preprocessor variable will be removed. The present commit contains support for a single scaling factor. Eventually, per-screen scaling factors should be implemented, as done for X11. - MacOS: this commit does not give new HiDPI for this platform. Eventually, window rescaling in reply to command/+/-/0/ is desirable. Per-screen scaling factor makes no sense on this platform because the OS itself takes care of the difference between the resolutions of traditional and retina displays. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12239 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-12-07Add static void Fl_Surface_Device::push_current(Fl_Surface_Device ↵Manolo Gouy
*new_current) and pop_current() to set/unset the current drawing surface. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12140 ea41ed52-d2ee-0310-a9c1-e6b18d33e121