On 9/24/21 7:45 PM Bill Spitzak wrote:
> I think we are talking about the same thing. Basically, if the FLTK
> program does not make any calls to Fl_Sys_Menu_Bar, then the menu bar
> on the top of the mac is left absolutely unchanged (either as whatever
> another toolkit set it to, or whatever the default behavior of Mac is
> when you don't do anything). It sounds like the current FLTK messes
> with the top menu when the programmer does nothing, which I don't
> think is correct behavior.
I'm not sure about this. For instance, the test/demo app seems to add
'about demo' and 'Print Front Window' items which I think are generally
useful.
I'm not a regular Mac user and didn't explore the Sys_Menu_Bar features
yet, so my observations may not be helpful.
> For avoiding having to change your code depending on the platform, I
> think a window subclass (MainWindow?) would work. If a Sys_Menu_Bar is
> set up on a system that does not have such a menubar, these windows
> move all the widgets down sufficiently and add a regular MenuBar. This
> would allow the programmer to select what window(s) get menu bars,
> rather than a single one or all of them.
+1 ... basically ...
This sounds sensible. However I would rather use an Fl_Window method -
maybe main_window() or menu_bar_window() - since we have more than one
window class that needs this (Fl_Window, Fl_Double_Window, ...). Hard to
tell which one to derive the 'MainWindow' class from.
I'm also not sure what would be "sufficient" to add a regular MenuBar.
This should likely be a user option as well. I know from my own
experience that I had a program where the menubar contained icons which
made it taller than a "normal" menubar.
OTOH I could also imagine an option that does "the opposite": think of a
"standard" (i.e. non-macOS) program that includes a standard menubar. An
option to "convert" this Fl_Menu_Bar to a system menubar *and* move all
the other widgets up by the height of the given menubar *and* decrease
the window height by the same amount would make this application
cross-platform w/o changing any code.
Again, I'm not sure if this would be feasible for a "real" program
because I don't know much about the different menu bar approaches on
macOS and other platforms.
There are maybe more (better?) options to make a "standard" application
macOS (ie. system menubar) aware w/o having to use platform specific
code, different widget positions, and window sizes. At least I hope so.