Commit Graph

6591 Commits

Author SHA1 Message Date
ManoloFLTK
89454508a2 Fix Fl_Simple_Terminal::append(str, len) assumes a null terminated string (#728) 2023-05-19 18:57:18 +02:00
ManoloFLTK
033880673a Add null-pointer check for tall menu window under Wayland+KDE 2023-05-17 09:39:39 +02:00
ManoloFLTK
e5ac5678dc Fix handling of tall menu windows with the KDE Wayland compositor
Unfortunately (sigh), the KDE Wayland compositor does not seem to support
correctly, that is, as described by the Wayland protocol, popup windows
that are taller than the display : there is no means to make it draw such popup
so that part of it is above the screen top, whereas the 3 other tested compositors
(Mutter, Weston, Sway) don't have this problem.

This commit implements a new approach to draw tall menu windows, and uses
it only with the KDE compositor : instead of asking the compositor to slide the
menu window up, the menu window remains at a fixed position and the graphics
inside the window is slided up.

This requires to add a member variable, int offset_y, to class menuwindow, that
gets used only for the Wayland platform and that contains the vertical offset by which
graphics to the menu window is moved, expressed in FLTK units. An accessor
to the address of this member variable is added to class Fl_Window_Driver.
2023-05-15 12:40:24 +02:00
ManoloFLTK
1555132df1 Wayland: improve tall menu window support with xdg_positioner_set_offset() 2023-05-13 16:29:51 +02:00
ManoloFLTK
7a50c8234a Wayland: slightly simpler surface_enter() for toplevel GL windows 2023-05-12 08:47:56 +02:00
ManoloFLTK
7ef6b9f802 Wayland: fix opening GL top-level window on 2-screen system - cont'd 2023-05-11 18:59:34 +02:00
ManoloFLTK
37abac2d8e Wayland: fix opening GL top-level window on 2-screen system 2023-05-11 18:42:07 +02:00
Albrecht Schlosser
a4c6c18b3d Fix doxygen doc generation and document platform specific files
Pure platform specific files like 'src/*_win32.cxx' are excluded from
doxygen processing and don't need doxygen specific guard macros.

Document this fact prominently at the beginning of each file.

Fix exclude patterns and remove duplicates from Doxyfile.in.
2023-05-09 22:36:41 +02:00
ManoloFLTK
89a2b1a7a8 Fl_Wayland_Screen_Driver::get_system_scheme() is not needed 2023-05-03 14:17:10 +02:00
ManoloFLTK
a94fed77e4 Wayland: clearer procedure to complete initialisation of screen data 2023-05-03 08:50:19 +02:00
ManoloFLTK
9ffeef7697 Wayland: problem with menus on secondary monitor - cont'd (#724) 2023-05-02 17:59:08 +02:00
ManoloFLTK
ef5bf60239 Wayland: problem with dropdown menus on secondary monitor (#724) 2023-05-02 14:50:33 +02:00
ManoloFLTK
0394a27074 Wayland: wl_cursor_theme_load() may return NULL 2023-05-01 21:41:26 +02:00
ManoloFLTK
02c7ee5128 Fix regression in Fl::screeen_xywh() introduced at 9ea0cc8 2023-05-01 21:10:43 +02:00
ManoloFLTK
ae65a6bf99 Check return values of calls to libxkbcommon functions (#727) 2023-05-01 17:36:36 +02:00
ManoloFLTK
3e2c8d5a95 Allow building Wayland platform without dbus - cont'd (#726)
CMake-based building without dbus is made possible
2023-04-30 21:36:19 +02:00
Matthias Melcher
a2929b15ba Undid old change in Windows code that causes undesired results (STR 1115)
Windows created when another window was grab()'d would always become
dependents under WIN32, hiding them when the grabbed window was hidden.
2023-04-30 20:08:44 +02:00
ManoloFLTK
7a8343e7e4 Fix crash reported in issues #723 and #724 2023-04-29 17:06:55 +02:00
ManoloFLTK
52a15632a6 Make sure Wayland surface size is integer multiple of wld_ scale 2023-04-28 11:27:32 +02:00
ManoloFLTK
04e996ee81 Improve integration with the OWL Wayland compositor 2023-04-28 09:47:20 +02:00
ManoloFLTK
9ea0cc89fb Slightly simpler Fl_Wayland_Screen_Driver::open_display_platform() 2023-04-27 17:06:46 +02:00
ManoloFLTK
e82e709bcc Multiline Fl_Input: fix move up/down in non ASCII text 2023-04-26 08:25:32 +02:00
ManoloFLTK
58bd71f26d Wayland filename drag-n-drop: fix final null byte 2023-04-25 16:49:45 +02:00
ManoloFLTK
8489a245ee Wayland: accept all data_device_manager protocol versions 2023-04-25 10:25:34 +02:00
ManoloFLTK
1ae25242bd Wayland: set required version of wl_seat protocol to 2 2023-04-25 09:35:46 +02:00
Albrecht Schlosser
6f77f40aad Windows: define _WIN32_IE for older MinGW versions (#710)
... if _WIN32_IE is not defined. Older MinGW versions would
otherwise not define SHGFP_TYPE_CURRENT which is needed since
commit 5a4e7caa54 that fixes
GitHub issue #710: "Fl_Preferences not stored on Windows 10".

This commit is based on Ian's work as discussed in fltk.coredev, thread
"fltk-1.4 build error in Fl_WinAPI_System_Driver.cxx with 32-bit mingw"
on Apr 20, 2023.
2023-04-24 14:26:56 +02:00
ManoloFLTK
4bf9172a8e Replace internal fl_create_offscreen() calls by new Fl_Image_Surface 2023-04-23 10:03:02 +02:00
ManoloFLTK
897a6910b6 Slightly simpler Fl_Wayland_Graphics_Driver::copy_offscreen() 2023-04-23 09:37:36 +02:00
ManoloFLTK
544ab551e1 Remove superfluous #include directive 2023-04-21 23:48:23 +02:00
ManoloFLTK
fe972185c0 Fl_Window_Driver::destroy_double_buffer() does not need overrides 2023-04-21 16:27:08 +02:00
ManoloFLTK
f8f7e101f3 Remove unnecessary Fl_Window_Driver::flush_Fl_Window() 2023-04-21 14:33:26 +02:00
ManoloFLTK
9a00f36113 Wayland: keep window resizable after native file chooser - cont'd 2023-04-20 16:45:18 +02:00
ManoloFLTK
bcab001eb5 Wayland: keep window resizable after native file chooser 2023-04-20 15:29:40 +02:00
ManoloFLTK
8d79e4ad43 Inform Wayland compositor that most FLTK windows are opaque 2023-04-20 10:06:43 +02:00
ZJUGKC
385cabf3aa
Add const qualifiers to can_undo and can_redo (#720) 2023-04-17 16:12:03 +02:00
ManoloFLTK
54ef53d4ae Move constant expression out of loop 2023-04-17 10:28:27 +02:00
ManoloFLTK
256e368368 Wayland: account for memorised keyboard surface before wl_surface_destroy() 2023-04-17 08:19:59 +02:00
Albrecht Schlosser
ac76239db7 Remove scheme specific initialization from Fl_Tree_Prefs
This initialization would prevent changing the 'selectbox' type
automatically when changing the FLTK scheme.

It would also require to set the FLTK scheme *before* the constructor
of Fl_Tree_Prefs (i.e. Fl_Tree) is executed which is unexpected and
error prone for user code.

It is up to the user program to set another boxtype after the
constructor if needed.
2023-04-15 20:31:35 +02:00
ManoloFLTK
1a7ed133d0 Fix for "Wayland: heap-use-after-free after popup/pulldown" (#719) 2023-04-14 19:09:38 +02:00
ManoloFLTK
7091df8c93 Restore building with macOS SDK 10.9 and earlier 2023-04-14 17:57:33 +02:00
Matthias Melcher
e18b5353cd Fixed leak in Fl_Text_Buffer #716 2023-04-14 16:54:11 +02:00
Matthias Melcher
afd3fde5de Memory leak in Input_ #716 2023-04-14 16:32:36 +02:00
ManoloFLTK
7e2defc10d macOS: remove calls to deprecated API 2023-04-14 15:24:18 +02:00
ManoloFLTK
0fe118aa94 Remove duplication of Pango standard font names
And move each array of standard font names to appropriate font-related source file
2023-04-14 08:15:50 +02:00
Albrecht Schlosser
4bc63da34d Fix compiler warnings [-Wpedantic]
Remove extra semicolons after function definitions
2023-04-13 20:27:00 +02:00
ManoloFLTK
232a5399d7 Lower Pango required version from 1.22 to 1.16 2023-04-13 14:32:51 +02:00
ManoloFLTK
caaa11a96f Standardize API to "graphics context" across platforms
Rename fl_wl_cairo() to fl_wl_gc()
Add function cairo_t* fl_cairo_gc() under OPTION_USE_CAIRO
2023-04-13 10:02:40 +02:00
ManoloFLTK
e6c9deb4a4 Wayland: limit copied pixels when window update is a region - cont'd
Simpler Fl_Wayland_Window_Driver::flush_overlay() is enough.
2023-04-12 15:01:35 +02:00
ManoloFLTK
2d263a830a Wayland: limit copied pixels when window update is a region - cont'd
Handle Fl_Overlay_Window objects
2023-04-12 00:32:20 +02:00
Albrecht Schlosser
7d8195140c Add public accessor methods Fl_Widget::needs_keyboard()
- add public getter and setter for
- document the new methods
- document that these methods are not yet used internally
- remove unnecessary friend declaration 'NEEDS_KEYBOARD' flag
- simplify Fl::focus(Fl_Widget *) using the new methods.
2023-04-11 16:38:24 +02:00
Albrecht Schlosser
3835b72e2f Fix CMake generation for minimal CMake version (3.2.3)
Unfortunately `execute_process(COMMAND pkg-config ...)` used for
CMake versions lower than 3.4 appends a trailing newline ('\n')
to the output variable which must be removed.

Replace double slash '//' returned by pkg-config with a single '/'
for consistency (applies to all CMake versions).

Tested with CMake 3.2.3 but we should probably raise the minimal
CMake version to a more recent version in the future.
2023-04-10 16:19:09 +02:00
Albrecht Schlosser
027e738655 Fix compiler warning [-Wsign-compare] 2023-04-10 15:58:05 +02:00
ManoloFLTK
4c567a4dd9 Fix "Giant cursor on Wayland + fractional scaling" (#713) 2023-04-08 06:50:56 +02:00
ManoloFLTK
0691833375 Wayland: non-resizable windows are positioned in the wrong place (#711) - cont'd
That is also expected to be the fix for #712
2023-04-07 15:47:01 +02:00
ManoloFLTK
ad8dd440d2 Wayland: fix for issue #712 (hopefully) 2023-04-07 14:47:03 +02:00
ManoloFLTK
c149091deb Wayland: fix reporting of relative location of multiple displays 2023-04-07 10:14:11 +02:00
ManoloFLTK
0c930b9ca3 Wayland: limit copied pixels when window update is a region 2023-04-05 23:21:43 +02:00
ManoloFLTK
5cedb9e174 Wayland backend draws everything two or three times - cont'd (#708) 2023-04-05 14:57:38 +02:00
ManoloFLTK
e790a3a185 Remove superfluous #include directives 2023-04-04 15:30:18 +02:00
ManoloFLTK
74cd7817af Remove unneeded #include directives 2023-04-03 16:11:24 +02:00
ManoloFLTK
1d0e63ea78 Improve member function Fl_Wayland_Screen_Driver::surface_to_window()
Rename it to Fl_Wayland_Window_Driver::surface_to_window() and
avoid loop over all mapped FLTK windows that used to be performed.
2023-04-03 15:25:19 +02:00
ManoloFLTK
cebf6b5368 Wayland: update comment about differences between compositors
Mutter goes back to what it did in earlier versions.
Fortunately, FLTK can handle this change.
2023-04-03 11:20:26 +02:00
ManoloFLTK
7e08bd7e26 Wayland + Weston: fix focus loss after click on titlebar 2023-04-03 08:21:07 +02:00
ManoloFLTK
e239d00cad Fix "Wayland: non-resizable windows are positioned in the wrong place" (#711) 2023-04-02 18:05:36 +02:00
ManoloFLTK
64ac7b47b8 Improve detection of the location of Wayland protocol files across OSes 2023-03-29 15:25:29 +02:00
ManoloFLTK
70252b0c1a Improve Wayland support of Fl::event_key(int)
Key pressed when the Wayland window acquires focus are now detected.
2023-03-29 12:53:39 +02:00
ManoloFLTK
a681aa803c Complete explanatory comment about Weston compositor 2023-03-29 09:30:30 +02:00
ManoloFLTK
43c4bd1031 Wayland: improve switching window to/from fullscreen mode
The call to Fl_Window::fullscreen() can be made before or after the window is show()'n
Tested compositors: Mutter, Plasma, Weston.
2023-03-29 08:49:14 +02:00
ManoloFLTK
5e101bc00c Wayland + Plasma: fix switching fullscreen mode for borderless window 2023-03-28 14:39:11 +02:00
ManoloFLTK
43a9c70d8c Wayland: fix regression in test/fullscreen
Commit e918d94 to fix issue #708 broke turning back from fullscreen state
for borderless window, visible in test/fullscreen.
2023-03-28 05:10:52 +02:00
Albrecht Schlosser
5a4e7caa54 Windows: use SHGetFolderPathW() for application data folder (#710)
See GitHub issue #710: "Fl_Preferences not stored on Windows 10"

Summary: don't use the undocumented registry key "Shell Folders",
use function SHGetFolderPathW() instead although this function is
meanwhile deprecated (but available since Windows XP).

Note: tested with 32-bit build running on Windows XP (works).
2023-03-27 19:51:09 +02:00
ManoloFLTK
6aa6866d80 Wayland: move "struct seat" inside class Fl_Wayland_Screen_Driver 2023-03-27 11:31:26 +02:00
ManoloFLTK
31b5d5b562 Complete Fl_Wayland_Screen_Driver::close_display() 2023-03-27 11:06:17 +02:00
ManoloFLTK
cce40848ce Improve methods Fl_Wayland_Screen_Driver::en/disable_im() 2023-03-26 17:38:44 +02:00
ManoloFLTK
a242e4a65d Implement methods Fl_Wayland_Screen_Driver::en/disable_im() 2023-03-26 11:04:01 +02:00
Albrecht Schlosser
16338ff4e4 Wayland: remove compilation warning (#706) - cont'd
The previous attempt to fix this issue in commit
dcb4c39956 missed to remove the keyword
'struct' in the offending statement. This new commit actually removes
the compiler warning.
2023-03-25 16:40:52 +01:00
ManoloFLTK
40537ae335 Wayland: slightly simpler writing of function wl_keyboard_key() 2023-03-25 15:52:03 +01:00
ManoloFLTK
9aa62f4492 Add Fl_Cairo_Graphics_Driver::focus_rect() override
This allows to bypass what looks like a Cairo bug:
FLTK_SCALING_FACTOR=1.7   bin/test/tabs
click on tab2
---> crash

But no crash with other scaling factor values (e.g., 1.8).
2023-03-25 15:31:30 +01:00
ManoloFLTK
9d7e680925 Wayland: Fl::get_key(c) for lower case letters different behavior from X11 (#404) 2023-03-25 14:51:57 +01:00
ManoloFLTK
9f9e584919 Wayland Fl_Copy_Surface and Fl::copy() issues (#707) - cont'd 2023-03-24 16:56:25 +01:00
ManoloFLTK
e918d94b67 Fix: Wayland backend draws everything two or three times (#708) 2023-03-24 15:34:35 +01:00
ManoloFLTK
dcb4c39956 Wayland: remove compilation warning (#706)
drivers/Wayland/Fl_Wayland_Window_Driver.cxx:1515:47: warning: declaration ‘struct wld_window::custom_cursor’ does not declare anything
2023-03-23 18:42:02 +01:00
Albrecht Schlosser
aebf2fec39 Improve Fl_Cairo_Window documentation (typos + indentation)
Also fix a doxygen warning in Fl_String.
2023-03-23 13:26:14 +01:00
ManoloFLTK
b98aa7bee6 Remove extraneous Wayland-related comment from Windows code 2023-03-22 21:05:28 +01:00
Albrecht Schlosser
8b327d1ddd Fix option CAIRO_EXT in combination with X11 on macOS
This modification became necessary since "__APPLE__" is no longer
undefined by the build system when X11 is used on macOS.
2023-03-22 21:01:36 +01:00
ManoloFLTK
2c03959511 CMake: check for presence of needed Wayland protocol source files 2023-03-22 10:45:24 +01:00
ManoloFLTK
41c94c4d87 Wayland: attempt to improve registry_handle_global_remove()
This function still needs to be tested on a true multi-display Unix box
2023-03-20 10:39:55 +01:00
ManoloFLTK
ad3ead111a Simulate one display for OWL Wayland compositor 2023-03-20 09:57:36 +01:00
Matthias Melcher
f9004352b4 Fix gl_rect and OGL::fl_point #688 2023-03-18 20:14:39 +01:00
Matthias Melcher
5c482f9d9b
Fix and update alignment #346 (#701)
* interactive layout alignment rewritten
* interface for new alignment rules
* new alignment dialog box
* user defined layout rules added
* layout rules can be stored in projects, settings, and external files
* Valgrind verification
2023-03-18 17:33:27 +01:00
ManoloFLTK
a9fb6a979f Rename bool variable for better clarity 2023-03-16 10:41:54 +01:00
ManoloFLTK
0eb6a0e193 Fix Fl_Wayland_Screen_Driver::get_mouse() for scale factor effect 2023-03-14 16:59:29 +01:00
ManoloFLTK
add43cd3fc Wayland: add support for multiple high or low DPI displays - cont'd 2023-03-14 11:50:44 +01:00
ManoloFLTK
16448d5ba8 Wayland: improve cursor_surface_enter() 2023-03-14 08:09:39 +01:00
ManoloFLTK
8aafe6cf69 Fix Fl_Wayland_Window_Driver::set_cursor_4args() 2023-03-13 15:31:12 +01:00
ManoloFLTK
9980dc6fa1 Remove unused variable 2023-03-13 12:31:25 +01:00
ManoloFLTK
eeb9267e6e Wayland: add support for multiple high or low DPI displays 2023-03-13 10:38:28 +01:00
ManoloFLTK
73a2ca5261 Fix c'tor of Fl_Wayland_Image_Surface_Driver for HighDPI displays 2023-03-10 13:17:53 +01:00
ManoloFLTK
2ee688dae9 Improve member function Fl_Wayland_Gl_Window_Driver::make_current_before() 2023-03-10 10:17:20 +01:00
Albrecht Schlosser
0f3b5ded8f Fix dependencies, typos, trailing whitespace, and formatting
No code changes.
2023-03-09 18:28:37 +01:00