10096 Commits

Author SHA1 Message Date
Albrecht Schlosser
e6c2503453 Add Fl_Flex demo "howto-flex-simple" to examples
This demo program uses an Fl_Flex widget with one row of buttons.
2022-08-07 18:01:59 +02:00
Albrecht Schlosser
713d276b1c Fl_Flex: support different margin sizes, improve docs
Support different margin sizes on all four edges. Default margin
  and gap size is now 0 (compatible with Fl_Pack).

Doxygen: move the description from the constructor to the class
  declaration which constitutes a "description".

Make some methods virtual and/or 'const'.

Clarify demo programs, make them even more "FLTK style".
2022-08-07 16:00:41 +02:00
ManoloFLTK
f5b14397dd Wayland platform: fix declaration of local variable 'scale'. 2022-08-07 10:49:11 +02:00
ManoloFLTK
5dfc64ef32 Wayland platform: move repeated code into Fl_Wayland_Graphics_Driver::buffer_commit(). 2022-08-07 10:43:38 +02:00
ManoloFLTK
b25549ffa7 Wayland: make sure wl_surface_frame() is followed by wl_surface_commit(). 2022-08-06 17:30:44 +02:00
ManoloFLTK
149673863d Wayland: fix regression from 50d26b0 in test/mandelbrot. 2022-08-06 16:50:58 +02:00
ManoloFLTK
33ea30432f Check for error while communicating with Wayland - cont'd. 2022-08-06 10:27:17 +02:00
ManoloFLTK
e73e13120e Check for error while communicating with Wayland. 2022-08-06 10:07:38 +02:00
Albrecht Schlosser
128aa08be8 Improve docs about FLTK coordinate systems
Enlarge the screenshot of test/coordinates for better readability in
html and pdf docs.
2022-08-03 16:39:44 +02:00
ManoloFLTK
169c6980d1 Fl_Darwin_System_Driver: use explicit unicode characters, comment out coding sequences. 2022-08-02 17:48:39 +02:00
Albrecht Schlosser
c8565bf4f3 Fix Fl_Flex unsetting of set_size()
Don't add the widget to the array if size == 0 (unset) but it has
not been in the array (or it's called twice).
2022-08-01 19:56:08 +02:00
Albrecht Schlosser
f37aca15e9 Add Fl_Flex widget from Karsten Pedersen (issue #255)
This work is based on the repository and latest commit:
  https://github.com/osen/FL_Flex.git

  commit 36e4ed75a00daac825b87e81295818b4650991f5
  Author: Karsten Pedersen <...>
  Date:   Fri Apr 23 12:06:16 2021 +0000

    Added Fltk (LGPL) license.

This widget is similar to Fl_Pack and supports either one row or one
column of widgets but has some more features. Test and demo programs
are included:

  test/flex_login.cxx: simple "login window" demo program
  test/flex_demo.cxx:  slightly more complex demo program

The original demo programs can still be compiled and built with
the new widget provided you '#include <FL/Fl_Flex.H>'.
Backwards compatible methods are included (except debug()).

The original widget has been modified to match FLTK standards and
enhanced in several ways, including:

- support box frames
- add HORIZONTAL and VERTICAL enum values (as in Fl_Pack)
- add horizontal() method (as in Fl_Pack)
- use type() rather than internal 'direction' variable
- add standard widget constructor (x, y, w, h, label)
- add margin and gap accessors rather than hard coding constants
- improve test and demo programs
- add documentation
- replace <vector> with array as required by FLTK CMP
- rename camelCase method names, keeping old names for compatibility:
  - change 'setSize(Fl_Widget*, int)'   to 'set_size(Fl_Widget*, int)'
  - change 'bool isSetSize(Fl_Widget*)' to 'int set_size(Fl_Widget*)'
- remove debug() method
- add a way to "unset" fixed size: set_size(Fl_Widget *, 0)
- add layout() method to force recalculation of children
- unify resizeRow() and resizeCol() methods to avoid code duplication
- improve widget size calculation.
2022-08-01 15:33:20 +02:00
ManoloFLTK
de8e6de25b Mention support of macOS 13.0 "Ventura". 2022-07-31 13:55:24 +02:00
ManoloFLTK
c411778e71 Add support of macOS Ventura 13.0 2022-07-30 12:13:05 +02:00
Albrecht Schlosser
29a3062b02 Improve check mark visibility for small sizes
This looks a little better and more like FLTK 1.3
2022-07-27 20:20:33 +02:00
Albrecht Schlosser
15bbfeb975 Configure/make: update dependencies 2022-07-27 19:45:08 +02:00
Albrecht Schlosser
a2fe4f5910 test/buttons: reorder buttons, remove unnecessary includes
Reorder buttons in the expected <tab> order (left to right, top down),
make window resizable, and remove unnecessary #include statements.
2022-07-27 19:44:37 +02:00
Albrecht Schlosser
6f883d87d7 Add active/inactive button to unittest_schemes.cxx
... to test the deactivated status of integrated widgets.
2022-07-27 19:07:36 +02:00
ManoloFLTK
3932ed261f Fix for issue #471 for the Wayland platform. 2022-07-27 17:52:58 +02:00
ManoloFLTK
f77c4737bb Fix for issue #471: Different Fl_Window::resize() behavior between v1.3.8 and v1.4 2022-07-27 16:53:43 +02:00
ManoloFLTK
d6832f210c Fl_Sys_Menu_Bar: allow use of more keys as menu shortcuts. 2022-07-27 00:52:09 +02:00
ManoloFLTK
f582e06224 Fl_Sys_Menu_Bar: allow use of escape and tab as menu shortcuts. 2022-07-26 19:01:41 +02:00
ManoloFLTK
2241bab478 Remove useless variables and preprocessor directives. 2022-07-26 18:58:44 +02:00
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