Commit Graph

1460 Commits

Author SHA1 Message Date
ManoloFLTK
bb7e1635ad macOS: remove a bunch of deprecation warnings 2023-10-09 11:16:36 +02:00
ManoloFLTK
d1436f4f63 Clean long source lines in Fl_Wayland_Graphics_Driver.cxx 2023-10-09 09:11:20 +02:00
ManoloFLTK
da15a12ffe Fix " Wayland compilation warnings" (#788) 2023-10-09 08:11:54 +02:00
Albrecht Schlosser
1fd6f0dd3a Fix STR 3458: "GLUT compatibility mode segfaults"
... "when there's no current window".

Silently ignore GLUT function calls that need a current window if the
current window is NULL, return 0 from functions that return an 'int'.

Check if window is shown in Fl_X11_Gl_Window_Driver::swap_buffers().
This would issue "XRequest.nnn: GLXBadDrawable 0x0" on X11 otherwise.

Note: the chosen implementation to ignore GLUT calls silently appears
to be compatible with GLUT (3.7) whereas FreeGLUT 3.0 would issue error
messages and exit. The latter could be implemented as well but would
be much more work.
2023-10-07 17:14:11 +02:00
ManoloFLTK
6571bd2f28 Wayland: whitespace only changes 2023-10-05 17:07:55 +02:00
ManoloFLTK
e8f633cf2f Wayland: remove useless code 2023-10-04 10:24:27 +02:00
ManoloFLTK
aa14ffe6a1 Fix fltk.coredev: mandelbrot demo segfault under Wayland 2023-10-03 21:56:01 +02:00
ManoloFLTK
4132590d8c Wayland: add security test to avoid NULL pointer dereferencing 2023-10-03 08:13:33 +02:00
ManoloFLTK
ff0a3a9d59 Wayland: throttle window redraws during interactive resizes (#776) 2023-09-29 12:29:52 +02:00
ManoloFLTK
b8fa522ca4 New member function Fl_Wayland_Graphics_Driver::create_wld_buffer()
The previous member Fl_Wayland_Graphics_Driver::create_shm_buffer() is now
renamed to create_wld_buffer() and divided in 2 parts:
- one is related to the draw buffer;
- the other is related to the wl_buffer and is what is now called create_shm_buffer().
This allows to delay creation of the wl_buffer until absolutely necessary,
done inside Fl_Wayland_Graphics_Driver::buffer_commit().
2023-09-25 16:40:01 +02:00
ManoloFLTK
59b251cc39 Slightly simpler Fl_Wayland_Window_Driver::flush()
and beef up description of Wayland's mechanism to throttle screen redrawing.
2023-09-24 09:52:48 +02:00
ManoloFLTK
220dd47bea Increase reuse of mmap'ed data by FLTK Wayland buffer factory 2023-09-22 11:51:24 +02:00
ManoloFLTK
a26e12590c Step back commit 8248183 that's unsatisfactory while resizing windows 2023-09-18 13:06:13 +02:00
ManoloFLTK
be07e5448f Improve reuse of mmap'ed data by Wayland buffers 2023-09-17 13:05:50 +02:00
Matthias Melcher
6bb5a81cee Adds some convenience methods.
fl_filename_absolute can no generate a path using arbitrary source paths.
Fl_Menu_ adds find_item_with_user_data and find_item_with_argument
Fl_String adds find(string, start)
2023-09-05 14:45:57 +02:00
ManoloFLTK
d245a157b6 Slightly simpler handle_close() in Fl_Wayland_Window_Driver.cxx 2023-08-27 16:46:16 +02:00
ManoloFLTK
7e3aabf80e Remove useless function prototype declaration 2023-08-27 08:06:16 +02:00
Matthias Melcher
3ed43363cd FLUID: fixes file path calculation bug 2023-08-26 16:10:02 +02:00
ManoloFLTK
ee0f173d9f Undo commit 5ea7a04 which requires Mutter V12
That commit's goal was to use an algorithm that does not assume
that number keys are at keycodes 10-19, which may not hold with
"special" keyboards. Unfortunately, the new algorithm requires
Mutter V12 and fails with Mutter V11, used by Debian 12.
2023-08-23 15:59:04 +02:00
ManoloFLTK
c61d6bc46a Wayland: fix regression in menu positioning brought by c43cf2f 2023-08-22 15:33:13 +02:00
ManoloFLTK
ac7c3297fa Undo commit 0a31225 which killed "caps lock" 2023-08-20 19:20:25 +02:00
ManoloFLTK
0a312259a2 Simpler function process_wld_key(() 2023-08-20 18:58:37 +02:00
ManoloFLTK
5ea7a0465e Wayland: process number keys independently of keyboard layout
The new algorithm supports alternate keyboard layouts, e.g., Dvorak.
2023-08-20 16:29:14 +02:00
ManoloFLTK
fc339b4319 Remove redundant initialisation 2023-08-20 09:34:44 +02:00
ManoloFLTK
442faf9462 Create class function Fl_Wayland_Graphics_Driver::custom_offscreen() 2023-08-20 09:10:55 +02:00
ManoloFLTK
3384776f8e Improve handling of type Fl_Offscreen under Wayland
Type Fl_Offscreen is now to be cast to cairo_t*.
Also, make sure the dimensions of GL windows are
multiples of the screen scale factor.
2023-08-18 18:02:35 +02:00
ManoloFLTK
e6440ca0a8 Wayland mouse wheel support: compositors can behave differently 2023-08-15 08:44:53 +02:00
Albrecht Schlosser
3c7610ec23 Handle shift + mousewheel event on Wayland (STR 3521)
Pressing the shift key while using the mousewheel changes
horizontal to vertical scrolling and vice versa. This allows users
with a standard mouse with only one scrollwheel to use it for both
scrolling directions.

This concludes "handling shift + mousewheel" for all supported platforms.
2023-08-14 16:57:33 +02:00
ManoloFLTK
1943fe54c8 Wayland: fix fl_read_image() from offscreen buffer 2023-08-09 10:31:36 +02:00
ManoloFLTK
27c3d0b780 Wayland: improve layout of struct fl_wld_draw_buffer 2023-08-08 16:08:53 +02:00
ManoloFLTK
45d119eb3c Move repeated code to Fl_Wayland_Graphics_Driver::cairo_init() 2023-08-08 09:05:12 +02:00
ManoloFLTK
2953db58c7 Let FLTK give more detailed description of a Wayland fatal error
Wayland protocol error messages now give the protocol name and the error code.
2023-08-05 12:09:13 +02:00
ManoloFLTK
c427f037ce Improve procedure to close decorated Wayland window
Libdecor complicates what should be simple, to close a decorated window,
because it uses the titlebar after return from the closing callback function.
Thus, FLTK delays the sending of the FL_CLOSE event to the window,
only when libdecor runs in CSD mode.
2023-08-04 19:14:13 +02:00
ManoloFLTK
0bf6a4b044 Slightly improve Fl_Wayland_Screen_Driver::poll_or_select_with_delay() 2023-08-03 08:12:08 +02:00
ManoloFLTK
e49f2008a6 Fix Fl_Wayland_Image_Surface_Driver::end_current() 2023-08-02 16:10:41 +02:00
ManoloFLTK
b440c26e65 Wayland: fix window closing with Sway's kill command or app menu 2023-08-02 10:04:45 +02:00
ManoloFLTK
e12eb99b5d Wayland: add test to avoid null pointer dereferencing 2023-07-31 19:26:37 +02:00
ManoloFLTK
7feddabd24 Implement Fl_Wayland_Screen_Driver::poll_or_select_with_delay(double) 2023-07-31 16:29:15 +02:00
ManoloFLTK
b1ab37eeff Wayland: simpler use of function eglChooseConfig() 2023-07-29 14:16:18 +02:00
ManoloFLTK
d9fa2c6082 Wayland.dox: add info about the xdg decoration protocol
Also, use KWin to name the KDE desktop's Wayland compositor.
2023-07-28 15:27:38 +02:00
ManoloFLTK
cdd617d094 Wayland: slightly improve procedure to close toplevel window 2023-07-21 15:34:24 +02:00
ManoloFLTK
6f05af3c12 Wayland: add control of targeted screen by fullscreen windows 2023-07-13 18:19:01 +02:00
Albrecht Schlosser
44840af076 Wayland: keep mouse button state across push/release events
Notes:

(1) Fl::e_state holds the current state of all mouse buttons which is
    returned by Fl::event_buttons() - "plural form".

(2) Fl::e_keysym holds the "key" of the current event which can be a
    mouse button, returned by Fl::event_button() - "singular form".
2023-07-12 18:49:01 +02:00
Albrecht Schlosser
858c3cad86 Fix Wayland FL_RELEASE events reporting wrong button
... in Fl::event_button().

This can be seen when two buttons have been pressed simultaneously
and then released (see test/handle_events.cxx).
2023-07-12 18:05:07 +02:00
ManoloFLTK
8bb29e823c Have Fl_Wayland_Window_Driver use Fl::add_check() when adequate 2023-06-28 08:47:21 +02:00
ManoloFLTK
f5879ae228 Slight simplification of Fl_Wayland_Gl_Window_Driver::swap_buffers()
Also, reorder members of class Fl_Wayland_Gl_Window_Driver
2023-06-27 09:05:46 +02:00
ManoloFLTK
81615bbe0b Fix Fl_Cocoa_Gl_Window_Driver::resize()
The additional [NSOpenGLContext flushBuffer] messages appear necessary when an Fl_Tile contains
2 or more GL subwindows.
2023-06-26 15:00:52 +02:00
ManoloFLTK
5196d66825 Wayland: improve mapping and hiding of GL (subs)windows 2023-06-24 09:23:01 +02:00
ManoloFLTK
38381ef544 Slightly simpler Fl_Wayland_Window_Driver::hide() 2023-06-23 10:03:30 +02:00
ManoloFLTK
c43cf2f192 Wayland: improve support of multi-display setups 2023-06-19 17:48:37 +02:00