Commit Graph

419 Commits

Author SHA1 Message Date
ManoloFLTK
d93fc2bfa6 Use <config.h> when appropriate. 2021-02-16 11:08:59 +01:00
ManoloFLTK
a723c0e889 PR #174: Skip the call to MonitorFromRect when it is not needed. 2021-02-15 21:07:24 +01:00
ManoloFLTK
9fad601401 Remove compilation warnings issued by Visual Studio 2019. 2021-02-13 21:13:04 +01:00
ManoloFLTK
818a2ab838 Windows scaling support: fix after WM_MOVE and in mouse_event()
The fix in mouse_event() makes sure the scale factor of the receiving window is correct
when distinct screens have distinct scale factor values.

The fix after WM_MOVE event makes sure a subwindow-containing window in a
multiple-screen desktop having distinct scale factor values is correctly rescaled.
2021-02-10 10:19:08 +01:00
ManoloFLTK
7fdac3790a Windows: fix scaling problem in Fl_Tile.
The problem was visible with test/tile for fractional scaling values when
moving the vertical division.
2021-01-25 08:01:42 +01:00
ManoloFLTK
4f29313a80 Windows scaling: fix redraw after partial expose events.
Under XP (at least), WM_PAINT events occur where information of where to redraw
is mostly given by the system, in the window's update region. When the GUI is scaled,
that information must be un-scaled and then added to Fl_X::i(window)->region, for the
adequate part of the window to be painted.
2020-12-03 15:08:59 +01:00
ManoloFLTK
4171cbe0be Windows scaling: fix computation of border sizes.
The corrected error was to use, e.g.,
  int dx = W - w->w() * s;
which does not produce the desired integer value.
The correct writing is :
  int dx = W - int(w->w() * s);
2020-12-01 16:58:08 +01:00
ManoloFLTK
ff372c86d8 Fix for issue #123 - Windows platform 2020-11-29 09:48:23 +01:00
ManoloFLTK
f5f9043208 Windows: fix undrawn pixels at right and bottom of scaled windows. 2020-11-29 09:15:04 +01:00
Greg Ercolano
2141c63628 Implement + deploy fl_strdup() 2020-08-01 14:19:40 -07:00
Albrecht Schlosser
f09e17c3c5 Remove $Id$ tags, update URL's, and more
- remove obsolete svn '$Id$' tags from all source files
- update .fl files and generated files accordingly
- replace 'http://www.fltk.org' URL's with 'https://...'
- replace bug report URL 'str.php' with 'bugs.php'
- remove trailing whitespace
- fix other whitespace errors flagged by Git
- add and/or fix missing or wrong standard headers
- convert tabs to spaces in all source files

The only relevant code changes are in the fluid/ folder where
some .fl files and other source files were used to generate
the '$Id' headers and footers.
2020-07-06 20:28:20 +02:00
ManoloFLTK
7f7e0e4ea1 Replace Fl_Window_Driver::is_a_rescale() by Fl_Window::is_a_rescale()
so it can be called by any user code.
2020-05-08 17:08:33 +02:00
ManoloFLTK
24f9e7e7c4 Fix for issue #65: FLTK breaks when resize request is denied
Under Windows, window resize requests sent by the program are now ignored,
which is what happens under X11 and macOS.
Previously, the window would become frozen.
2020-03-25 12:16:03 +01:00
ManoloFLTK
643533b4b8 Windows platform: resize all windows after screen configuration events 2019-06-16 23:41:51 +02:00
ManoloFLTK
62bce5b50a Make FLTK Windows apps "Per-Monitor-V2 DPI Aware"
Per-Monitor V2 awareness mode is supported on Windows 10 1703 or above
and has window title bars correctly scaled on HighDPI screens.
Before this commit, FLTK Windows apps were "Per-Monitor-V1 DPI Aware".

FLTK apps detect at run-time whether the V2 mode is possible.
2019-06-16 12:00:38 +02:00
ManoloFLTK
b238ec26e5 Fix Fl_WinAPI_Window_Driver::capture_titlebar_and_borders() when window titlebar is partially out of screen 2019-06-11 18:51:10 +02:00
ManoloFLTK
94fffb701c Add one argument to Fl_Screen_Driver::read_win_rectangle()
The new argument gives the window to be captured, or NULL to indicate capture
from the current offscreen.
Calling this function becomes easier because less dependent on global variables.
2019-06-06 18:28:49 +02:00
ManoloFLTK
499ec5c291 Replace static void Fl_Window_Driver::default_icons() by virtual Fl_Screen_Driver::default_icons() 2019-03-25 18:47:29 +01:00
ManoloFLTK
d988930461 Process env var FLTK_SCALING_FACTOR consistently across platforms.
The procedure to set screen scaling factors becomes:
1) each screen scaling factor is set to 1
2) the OS is queried according to each platform to get screen scaling factor
values
3) The value of FLTK_SCALING_FACTOR, if present, is used to multiply
scaling factors
2019-03-06 11:10:37 +01:00
Albrecht Schlosser
339ba4c8b3 Fix crash when a program exits before it opens a window (STR #3484).
This crash and the fix are Windows specific.


git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@13007 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-08-06 16:51:02 +00:00
Manolo Gouy
26cb08badb Move Fl_Screen_Driver.H from FL/ to src/
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12975 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-06-26 14:04:09 +00:00
Manolo Gouy
7ebe8e21b0 Move Fl_Window_Driver.H from FL/ to src/
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12974 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-06-26 13:43:18 +00:00
Matthias Melcher
b8e97d7c28 Doxygen only: fixed all block comments starting with an asterisk to space-only, fixed doxygen keywords prepended with @ to use a backward slash instead. No code was changed.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12970 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-06-23 20:50:22 +00:00
Albrecht Schlosser
e34c06ffc9 Windows: Disable dynamic linking/loading of winsock dll.
This *preliminary* commit disables dynamic linking/loading of winsock
(ws2_32.dll) and links it statically to fluid and all FLTK test
programs. This is done by conditional code (#if 0) that disables the
old code and #defines some macros. This *must* be removed and replaced
with the original socket interface once the code has proved to work as
expected.

Note: example programs in the examples/ folder are not yet modified.
Todo: check and fix examples/Makefile if necessary.


git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12947 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-06-19 09:30:37 +00:00
Ian MacArthur
9e212ec6f9 Recent (circa early 2018) versions of the Mingw32 headers have changed the 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-06-18 22:49:04 +00:00
Manolo Gouy
8b7f7c78b2 Remove public member function Fl_Window_Driver *Fl_Window::driver() so class 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-12 09:36:36 +00:00
Manolo Gouy
2b7aac129b Rename Fl_Paged_Device::start_job() to begin_job() and 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-09 14:16:35 +00:00
Manolo Gouy
ccae86b291 Remove useless #include <FL/Fl_Shared_Image.H> following usage of the new Fl_Image::scale() member function.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12903 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-05-06 10:20:45 +00:00
Manolo Gouy
5c16dcb65b Simplify Fl_XXX_Window_Driver::capture_titlebar_and_borders() using Fl_Image::scale().
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12902 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-05-06 07:14:13 +00:00
Manolo Gouy
3d70c8c90f Fl_WinAPI_System_Driver::paste() : fix handling of clipboard containing top-down DIB image.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12883 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-04-29 19:04:24 +00:00
Manolo Gouy
41b0245163 Fl_WinAPI_System_Driver::paste() : fix indentation only.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12882 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-04-29 17:28:57 +00:00
Manolo Gouy
6cdfd92247 Pasting image from clipboard: partial support of top-down DIB image (still needs completion)
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12881 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-04-29 17:25:33 +00:00
Manolo Gouy
7dba27a404 Fix Fl_WinAPI_System_Driver::paste() when clipboard contains GIF image
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12878 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-04-29 11:02:34 +00:00
Manolo Gouy
ba4559701f Fix Fl_WinAPI_System_Driver::paste() when the clipboard contains an image as 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-29 07:35:06 +00:00
Manolo Gouy
dd93cbd888 Fix Fl_WinAPI_System_Driver::paste() when clipboard contains an image and the GUI is scaled.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12873 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-04-26 11:51:28 +00:00
Manolo Gouy
527df2dc7f Have Fl_WinAPI_Window_Driver::capture_titlebar_and_borders() restore the window's device context before return
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12870 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-04-25 15:52:53 +00:00
Manolo Gouy
7f78b1ef14 Windows: remove necessity to compile with -DFLTK_HIDPI_SUPPORT to make WIN32 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-03-09 16:27:27 +00:00
Manolo Gouy
78183fb45b Don't use FLTK's way to support HighDPI screens when the app has set a DPI 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-19 10:18:55 +00:00
Manolo Gouy
288d61a953 Don't use FLTK's way to support HighDPI screens when the app has set a DPI 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-18 16:58:38 +00:00
Manolo Gouy
0cef82d746 Remove Fl_Window_Driver::current_cursor() and its platform-specific forms 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-16 16:24:32 +00:00
Albrecht Schlosser
52ae3582a2 Replace "WIN32" with "_WIN32" or "Windows".
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-09 14:39:42 +00:00
Manolo Gouy
c472d5d8b7 Fix fl_read_image() under MacOS platform when GUI is rescaled.
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-02-09 13:48:22 +00:00
Albrecht Schlosser
42d8aba117 Replace FL/x.H with FL/platform.H - step 2 (STR #3435).
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
2018-01-31 21:17:17 +00:00
Albrecht Schlosser
52d4fef698 Fix indenting and formatting according to the CMP.
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-19 12:52:57 +00:00
Albrecht Schlosser
0e1916de51 Remove VS specific #pragma comment (lib, ...).
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-12-15 13:04:07 +00:00
Manolo Gouy
04565cdcad Fl_WinAPI_Window_Driver::capture_titlebar_and_borders(): remove a few unnecessary statements.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12402 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-08-26 14:15:20 +00:00
Manolo Gouy
475d2504bd WIN32: have Fl_win32.cxx #include "config_lib.h"
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12397 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-08-25 15:02:25 +00:00
Manolo Gouy
c51cbd0a50 Prevent situation where SetProcessDPIAwareness was called after 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-19 07:29:26 +00:00
Manolo Gouy
6126e8cb0e Strenghten Fl_WinAPI_System_Driver::paste(): the widget's handle method may 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-08-05 14:25:09 +00:00
Manolo Gouy
c4e04e4c7f 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
2017-07-30 16:21:57 +00:00