Commit Graph

9873 Commits

Author SHA1 Message Date
ManoloFLTK f61dfc3c05 Remove redundant Fl_Xlib_Graphics_Driver::scale_bitmap_for_PostScript() under USE_XFT=1. 2022-07-26 10:01:51 +02:00
ManoloFLTK acc9075a58 Remove redundant Fl_PostScript_Graphics_Driver::color() under Pango. 2022-07-26 09:39:30 +02:00
ManoloFLTK d026f29993 Document the class hierarchy below Fl_System_Driver. 2022-07-26 09:29:49 +02:00
ManoloFLTK 237c0c1393 Add Pango version check for Fl_PostScript_Graphics_Driver 2022-07-24 18:03:11 +02:00
ManoloFLTK cd60ea17b0 Add Fl_PostScript_File_Device::set_current() and end_current() members. 2022-07-24 08:46:52 +02:00
ManoloFLTK 2cedae1ece Fl_Cairo_Graphics_Driver: simpler handling of font size. 2022-07-21 13:57:02 +02:00
ManoloFLTK 4ae905cc9d Change prototype of virtual Fl_Graphics_Driver::pango_font_description(). 2022-07-20 08:37:21 +02:00
ManoloFLTK 536c32ee99 Fl_Cairo_Graphics_Driver: simpler way to construct the PangoLayout object. 2022-07-18 22:58:02 +02:00
Albrecht Schlosser 3560ff450f Remove empty line 2022-07-16 16:52:26 +02:00
Leon Winter 9d27ec8754 beep: use maximum loudness for error, otherwise system-default 2022-07-16 16:52:26 +02:00
Leon Winter 3dd8c314d6 Let beep use system default settings
Please note that the parameter 'percent' of XBell(3).
Given the value of 100, the system defined setting
(normally specified via xset) is ignored and the
percent of 100 is used instead. When calling the
bell from fltk with FL_BEEP_DEFAULT I would expect
to get the default (system specified) percent setting.
2022-07-16 16:52:26 +02:00
Albrecht Schlosser d73327e181 Document that Fl_Help_View can't be used with FL_NO_BOX
This widget overrides FL_NO_BOX internally by FL_UP_BOX for all
practical purposes, e.g. draw(). This has been this way since
its initial release and can't be changed.
2022-07-14 20:05:21 +02:00
ManoloFLTK 2327ede74c Add explanatory comments about text handling by Fl_Cairo_Graphics_Driver. 2022-07-11 12:11:04 +02:00
Albrecht Schlosser 79ce6547ce Fix non-xft build referencing fl_get_font_xfld() (#461)
This is only one part of issue 461 which describes two build errors
on "Raspberry Pi4 bullseye". It turned out that the build didn't
find Xft.
2022-07-09 22:05:46 +02:00
Albrecht Schlosser d9d3406be8 Upgrade the bundled nanosvg library to current version
For details see README.bundled-libs.txt.
2022-07-09 14:37:46 +02:00
ManoloFLTK f097141662 Move member q_width from class Fl_Font_Descriptor to Fl_Quartz_Font_Descriptor.
That's because this member is used only in Fl_Quartz_Font_Descriptor.
2022-07-06 10:18:40 +02:00
ManoloFLTK c6659c9a29 Fl_Cairo_Graphics_Driver: fix issues in string width computations when scaling applies.
The implemented approach is to create and use the pango_layout_ object only relatively
to an unscaled cairo context. With this, the pixel width of a drawn string equals
the sum of the widths of its characters.
2022-07-06 10:05:00 +02:00
Albrecht Schlosser 3c6b34bb70 Fix a potential memory leak, see issue #457 2022-07-05 18:49:15 +02:00
ManoloFLTK d096ec48d0 Documentation: add missing mentions of the Wayland platform. 2022-07-05 10:13:31 +02:00
ManoloFLTK 0fdef887d0 Documentation: add Wayland-related information for use of OpenGL 3. 2022-07-04 14:44:23 +02:00
ManoloFLTK 844d3d6d5c Wayland platform.: complete support of gl_start/gl_finish. 2022-07-04 11:44:03 +02:00
ManoloFLTK 8a2559e1af Wayland platform: add missing initialisation to Fl_Wayland_Gl_Window_Driver::gl_start(). 2022-07-02 17:41:45 +02:00
ManoloFLTK 16ecd6b821 Wayland platform: more accurate initial state of window buffer. 2022-07-02 16:44:17 +02:00
ManoloFLTK c7493496c9 Wayland platform: add support of FL_ALPHA for GL windows. 2022-07-02 16:43:27 +02:00
Albrecht Schlosser ef72df0dc7 Improve X11 selection data transfer (INCR) protocol (#451)
This improves reading large selections and fixes one more bug.

- Fix reading selection data size of clients that don't send the size.
  These clients don't respect the ICCCM. Using a default size instead.

- Improve memory allocation by pre-allocating at least 4 MB and
  extending by 4 MB to reduce the number of realloc() operations.
  This may waste up to 4 MB buffer space but this is only an issue
  if clients don't send an appropriate size (see above).

- Limit the initial allocation to 200 MB in case clients send higher
  values. This is very unlikely and might be a bug in these clients.
  Default extension as above would apply anyway.

- Add more comments and optional debug statements (commented out).

Note: reading selections (clipboard) from other clients using the
  INCR protocol is implemented but the opposite (providing large
  selections (clipboard) by using the INCR protocol is not.
2022-07-02 15:44:46 +02:00
Albrecht Schlosser c555629162 Fix "Segfault if using very large selections" (issue #451)
- Fix reading the size (aka "lower bound") of selection data.

- Use Fl::fatal() to terminate the process if memory for the selection
  (aka clipboard) data can't be allocated. This should rarely
  happen but if it does this is at least a "clean" exit and does
  not overwrite arbitrary data waiting for later errors that are
  hard to debug (as the old code would have done).

  Todo: find a better solution because this can be caused by
  another faulty process (the "selection owner"). It would be good
  if we could ignore the transfer rather than killing the process.

- Continue processing the INCR protocol if another "unexpected" event
  is received. Such events can definitely happen but the current code
  can't deal with this because other events might cause recursions.
  Hence such events are currently ignored.

  Example: pressing and holding ctrl/v would trigger another clipboard
  transfer while we're still processing one.

Todo: maybe process "other" events correctly while processing the INCR
  protocol. The current processing is done inside a function and would
  need to call fl_handle() with potential recursions, hence this would
  likely need major refactoring.
2022-07-01 17:39:41 +02:00
Albrecht Schlosser 42c27da735 Reformat, remove unnecessary code, add comments 2022-07-01 17:39:41 +02:00
ManoloFLTK 50d26b09a8 Wayland platform: add support of gl_start() / gl_finish(). 2022-07-01 09:10:32 +02:00
ManoloFLTK 4d85b15417 Documentation: update "Using OpenGL in Normal FLTK Windows" for Wayland. 2022-06-30 17:01:23 +02:00
Michael Tolly 65e5cd27cc kdialog native picker: properly handle spaces in filenames
Asks kdialog to use newlines for multiple files instead
2022-06-29 18:49:51 +02:00
ManoloFLTK 47f0d63f19 Wayland platform: send FL_ENTER/LEAVE/MOVE events to top-level windows only. 2022-06-29 18:02:11 +02:00
ManoloFLTK a025a46cac Wayland platform: add support of FL_LEAVE event. 2022-06-28 18:47:15 +02:00
ManoloFLTK 8dd7ab1922 Fix for issue #450 : Fl_Counter slips into infinite loop (V2).
Need to poll only for the file descriptor associated to the wayland display.
2022-06-27 19:40:08 +02:00
ManoloFLTK c2185f31b9 Remove unused code controlled by the FLTK_CONSOLIDATE_MOTION preprocessor variable. 2022-06-27 14:55:40 +02:00
ManoloFLTK 2a5c2322f1 Fix for issue #454 : crash in Fl::get_font_name(). 2022-06-27 13:25:35 +02:00
ZJUGKC 2f52b54a08
Fix unicode support in scandir_win32.c by using GetFileAttributesW (#455)
* Fix unicode support in scandir_win32.c by using GetFileAttributesW

* Remove the useless comments in scandir_win32.c
2022-06-25 20:53:19 +02:00
ManoloFLTK feb0d918fb Remove arbitrary maximum length of font name. 2022-06-25 20:00:17 +02:00
ManoloFLTK fb7469c85c Fix for issue #452: Fl::get_font_name failure on OS-X. 2022-06-24 19:50:47 +02:00
ManoloFLTK 617dc2ce12 Fix for issue #450: Fl_Counter slips into infinite loop.
This issue revealed that the macOS and Wayland platform processed events slightly differently
from other platforms.
Under X11 and Windows, Fl::wait() processes one event if one is present, and also all other events
present in the event queue immediately after the processing of that event.
Under macOS and Wayland, Fl::wait() processes one event if one is present and returns.

This commits makes the macOS and Wayland platforms behave as other platforms.
2022-06-23 19:12:35 +02:00
ManoloFLTK e698af035a Fix issue #427 - 2nd part
Fix Fl_Tiled_Image made from scaled source image.
Fix Fl_Shared_Image::update() to allow scaled source image.
Correct handling of default value (-1) of 3rd argument of 3-argument Fl_BMP_Image constructor.
2022-06-20 12:49:38 +02:00
ManoloFLTK 02870242ee Move input method support to Fl_Screen_Driver from Fl_Graphics_Driver 2022-06-19 10:23:24 +02:00
Albrecht Schlosser 232743c3a5 Fix Fl_Counter event handling (#450, part 2)
This fixes some issues of the repeat timeout of Fl_Counter. It could
happen that the widget missed the FL_RELEASE event, for instance if
a modal window like fl_message() was opened in the callback but there
could be other reasons as well. See issue #450 for more info.
2022-06-17 17:16:59 +02:00
Albrecht Schlosser f3bf231cc0 Improve reliability of timeout handling (#450, part 1)
This commit prevents "timer loops" without intermediate event handling
if callback handling takes longer than the timer delay of repeating
timers.

For more details see GitHub issue #450.
2022-06-17 17:05:10 +02:00
ManoloFLTK d8eb1f9ca4 Minor simplification of Fl_Wayland_Graphics_Driver::cairo_init. 2022-06-13 16:37:25 +02:00
ManoloFLTK 394298aff4 Add explanatory comment about WL_SHM_FORMAT_ARGB8888 and CAIRO_FORMAT_ARGB32. 2022-06-13 16:19:43 +02:00
ManoloFLTK 2fc2c5b562 Fix support of transparent windows by wayland platform. 2022-06-13 10:41:24 +02:00
MatthiasWM 1b1e8a4d46 Issue #141: fl_filename_absolute bugs fixed for MSWindows. 2022-06-12 14:53:06 +02:00
Matthias Melcher 995e3118a6 Local `isdirsep()` must not be visible to the outside. 2022-06-12 14:14:23 +02:00
Matthias Melcher e6ca751e92 Issue #142: fl_filename_absolute correctly handles trailing "..". 2022-06-12 14:07:16 +02:00
ManoloFLTK c6516673ee New member Fl_Cairo_Graphics_Driver::bitmap_to_pattern() to avoid code duplication. 2022-06-12 09:04:22 +02:00