Commit Graph

318 Commits

Author SHA1 Message Date
Vadim Zeitlin
338cd95c2d Move GetBitmapFromBundle() to wxMenuItemBase
This is just a refactoring to avoid duplicating this function code in
all ports and just have it once in the base class.
2022-02-05 20:39:19 +01:00
Vadim Zeitlin
bec31f1919 Setup bitmaps for all menu item kinds in wxGTK
This doesn't change anything for now, but doesn't cost anything and
might avoid problems in the future if another menu item kind is added.
2022-02-05 20:34:54 +01:00
Vadim Zeitlin
d745ff0a90 Remove wxMenuItem::GetBitmapBundle() from wxGTK
This function doesn't exist in the other ports and is not really needed
in this one neither, so just remove it for now.

If we really want to have it, we need to make it available everywhere.
2022-02-05 20:34:04 +01:00
Alexander Koshelev
28d8ed37d6 wxBitmapBundle for wxMenuItem on GTK 2022-02-04 15:45:49 +03:00
Vadim Zeitlin
2f0bce2979 Replace old Trac links with GitHub ones
Also update a couple of links to SF.
2022-01-13 16:52:58 +01:00
Alexander Koshelev
0cd898975c Allow to add extra accelerators to wxMenuItem
These accelerators are not shown in wxMenuItem label, but still will
work.

Implement support for them in all major ports and XRC.

Co-Authored-By: Vadim Zeitlin <vadim@wxwidgets.org>
2021-11-16 17:26:39 +01:00
Vadim Zeitlin
e729791222 Allow creating GtkAccel from an existing wxAcceleratorEntry
Refactor the existing code to allow using an already existing
accelerator instead of always extracting it from wxMenuItem.

This is not used yet, but will be in the next commit.
2021-11-16 03:20:13 +01:00
Vadim Zeitlin
4f5f309d1b Add GtkAccel helper abstracting operations with GTK accelerators
This simple struct combines both the accelerator code and flags and is
simpler to work with than two different variables.

It will also allow reusing this functionality in the upcoming changes
more easily.

No real changes yet.
2021-11-16 03:20:04 +01:00
Paul Cornett
4d7ca07211 Fix RTL layout of menus with GTK
Set layout direction for all menu items and sub-menus,
setting just the top level menu doesn't do much
2021-01-24 09:20:54 -08:00
Maarten Bent
0438ca19c1 Fix implicit-fallthrough warning 2020-12-23 17:03:05 +01:00
Paul Cornett
85d63c3150 Add a class derived from GtkImage to support HiDPI bitmaps
And use it to get HiDPI support wherever we use GtkImage. This extends and
consolidates support for custom drawing of images which has already been added
somewhat redundantly in several places.
2020-09-15 11:52:03 -07:00
Paul Cornett
948ddc6e0f Eliminate -Wcast-qual warnings with GCC and Clang
Use const_cast, mutable, and various other changes to avoid -Wcast-qual
2020-02-02 22:50:32 -08:00
Paul Cornett
d3ea00b40f Remove an extraneous semicolon 2019-11-25 20:59:21 -08:00
Ian McInerney
3a668b4d0a GTK: Use wxID_NONE for unhighlight events 2019-11-05 12:09:26 +00:00
Vadim Zeitlin
68b36aed6d Only give messages about unsupported accelerators in wxGTK
Doing this under all platforms results in too many false positives,
which can't be avoided currently, e.g. even if an application uses "Tab"
as an accelerator only under MSW, these messages still appear (in debug
builds, but this is more than sufficient for them to be annoying).

For now, restrict the messages to wxGTK only. In the future we could
revert to giving them under all platforms if we provide some way of
disabling them, e.g. qualifying accelerators with "[port]" or "[!port]"
string before them.

This partially reverts 6596f5a98d, see
https://github.com/wxWidgets/wxWidgets/pull/1505

Closes https://github.com/wxWidgets/wxWidgets/pull/1566
2019-09-27 12:47:03 +02:00
Vadim Zeitlin
83134174fa Merge branch 'menu_highlight_event' of https://github.com/imciner2/wxWidgets
Set menu object for the menu highlight events too.

See https://github.com/wxWidgets/wxWidgets/pull/1506
2019-08-27 13:13:23 +02:00
Ian McInerney
2c146d830d Fixes from review 2019-08-25 17:31:02 +02:00
Ian McInerney
65a21a5393 Add menu object to menu item highlight events
The OSX highlight events already included the menu object, so this
adds it to the other platforms to make it consistent.
2019-08-25 16:07:01 +02:00
Ian McInerney
2a08afb369 Replace fail msg with logdebug in the GTK accelerator creation 2019-08-25 15:26:13 +02:00
Ian McInerney
ff1eb1afcc Fix comments from review 2019-08-05 20:51:46 +02:00
Ian McInerney
1eea919f13 Mark more keys as being invalid for GTK accelerator keys 2019-08-04 21:46:27 +02:00
Ian McInerney
a8af0c27af Add validity check before doing accelerator key creation 2019-08-04 21:45:59 +02:00
Ian McInerney
f3edad2761 Remove invalid GTK accelerator keys 2019-08-04 21:17:10 +02:00
Ian McInerney
891053792f Cleanup the GTK accelerator key creation
* Remove the accelerator text if the key is not created
* Fix naming of some GTK keycodes
2019-08-04 18:53:01 +02:00
Vadim Zeitlin
c0b0562533 Avoid many -Wparentheses warnings from gtk/gtk.h with gcc8
Add wx/gtk/private/wrapgtk.h wrapping gtk/gtk.h in pragmas disabling
these warnings and include it everywhere instead of directly including
gtk/gtk.h.

Also include wx/gtk/private/gtk2-compat.h from this wrapper header as it
was included by 90% of the files including gtk/gtk.h itself and it seems
to be better and simpler to just always include it.
2018-05-21 12:34:04 +02:00
Vadim Zeitlin
e5a1a29e77 Fix wxGTK build with glib < 2.32 and streamline the code a bit
Define g_signal_handlers_disconnect_by_data() if it's not available,
i.e. when using glib older than 2.32 where it was added, to fix the
build under old systems such as CentOS 6 broken by the changes of
8278f7b618 (see #18084).

Also use it elsewhere instead of g_signal_handlers_disconnect_matched()
as it's more readable.

Closes https://github.com/wxWidgets/wxWidgets/pull/760
2018-03-11 22:22:45 +01:00
Paul Cornett
97ee4582a4 Avoid GtkHandleBox, GtkTearoffMenuItem, GtkImageMenuItem with GTK+4 2017-12-19 10:38:38 -08:00
Artur Wieczorek
5ffae1c936 Don't use stock items in wxMenu
Stock items are deprecated since GTK+ 3.10 so corresponding labels
should be used instead of them.
2017-12-17 00:24:01 +01:00
Paul Cornett
7e41ac405f Avoid blank menubar/toolbar when using wx[MT]B_DOCKABLE with GTK+ 3.20
A GTK+ bug involving GtkHandleBox somehow prevents drawing of its child
since 3.19.7.  Avoid this by disabling the docking functionality, which
is preferable to having the bar be blank.
See #17539
2016-05-25 09:39:50 -07:00
Paul Cornett
6245e2d996 remove const from pass-by-value parameters 2016-01-16 11:03:50 -08:00
Artur Wieczorek
13783d8733 Fixed regression in wxMenuItem::Check introduced by dbd98a10.
Internal check flag (via wxMenuItemBase::Check) has to be set as a first to avoid generating a spurious wxEVT_MENU when menu item is checked.
2016-01-07 21:45:17 +01:00
Artur Wieczorek
dbd98a1078 Don't attempt to uncheck menu radio item in wxGTK
Unchecking radio item makes no sense and wxMSW does nothing in this case, so
don't do anything in wxGTK neither, in particular don't generate a spurious
wxEVT_MENU.

Closes #17318.
2016-01-06 03:45:00 +01:00
Tobias Taschner
5f75b7506f Remove Hildon framework support.
The Hildon framework was used for Nokia 770 and other Maemo devices.
This platform discontinued and hasn't seen a new release since 2011.
2015-08-26 22:49:53 +02:00
Vadim Zeitlin
2d20e3fc51 Harmonize wxMenuEvent handling between all major ports.
Send these events to the menu itself first, then to the menu bar containing
it or the window invoking it if it's a popup menu and, finally, to the top
level window in all of wxGTK, wxMSW and wxOSX.

In particular, this ensures that help strings are now shown in the parent MDI
frame status bar by default, even when the menus are attached to the client
MDI frame or shown as popup menus.

At the implementation level, this logic is now encapsulated in a new static
wxMenu::ProcessMenuEvent() method which can be easily modified and reused in
other ports.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78230 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-12-05 22:17:58 +00:00
Vadim Zeitlin
f4edf48ec8 Fix accelerators in appended submenu items in wxGTK.
They were not previously taken into account because we didn't call
gtk_widget_add_accelerator() on the right GtkAccelGroup.

Closes #16050.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76115 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-03-11 16:04:12 +00:00
Vadim Zeitlin
69384772ac Fix wxMenu::GetTitle() before the menu is appended to the menu bar.
The mnemonics conversion was not done correctly when the menu title contained
them but the menu hadn't been appended to the menu bar yet.

Closes #15461.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74731 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-08-30 23:32:37 +00:00
Vadim Zeitlin
3f66f6a5b3 Remove all lines containing cvs/svn "$Id$" keyword.
This keyword is not expanded by Git which means it's not replaced with the
correct revision value in the releases made using git-based scripts and it's
confusing to have lines with unexpanded "$Id$" in the released files. As
expanding them with Git is not that simple (it could be done with git archive
and export-subst attribute) and there are not many benefits in having them in
the first place, just remove all these lines.

If nothing else, this will make an eventual transition to Git simpler.

Closes #14487.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-07-26 16:02:46 +00:00
Vadim Zeitlin
830c06655b Ensure that detached menus don't keep focus grab in wxGTK.
A widget being hidden must remove its focus grab with GTK+, otherwise GTK+
would continue sending all input messages to it but fail to process them
because the widget is not realized any more, resulting in a complete freeze of
the entire program.

Do it when detaching menus from menubar and menubar from the frame to fix just
such a problem in case SetMenuBar() was called while the previous menubar was
opened.

Closes #15221.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74056 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-05-26 13:14:43 +00:00
Vadim Zeitlin
6150a29606 Fix program not shutting down when using Ubuntu app menu.
Ensure that an idle event is generated after a menu event even when the latter
comes, via DBUS, from the out of process app menu and not from a real GTK menu.

Closes #15122.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73737 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-03-29 19:53:26 +00:00
Vadim Zeitlin
0ecd03525b Fix wrong return value in the changes of r73365.
Really fix menus under Unity.

Closes #14961.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73368 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-01-13 15:28:25 +00:00
Vadim Zeitlin
bee8e2b1f0 Fix compilation without PCH after r73365.
Need to explicitly include wx/dialog.h to use wxDynamicCast to wxDialog.

See #14961.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73367 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-01-12 12:03:37 +00:00
Vadim Zeitlin
68a335b43b Relax Unity menu interdiction hack to allow popup menus in modal dialogs.
The changes of r73007 fixed the problem with menus remaining active while a
modal dialog was shown (see #14823) but also disabled processing of the events
from any popup menus shown by the dialog itself. Reallow the latter while
still forbidding the former now by checking whether the window associated with
the menu is the dialog itself.

Closes #14961.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73365 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-01-12 03:09:06 +00:00
Paul Cornett
4116bc7edd call GTKApplyWidgetStyle() from PostCreation() instead of GTKHandleRealized()
it's a better place to catch font or color changes made before creation

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73361 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-01-10 07:17:01 +00:00
Paul Cornett
4011652414 reference count the GtkMenuItem in wxMenuItem as well
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73311 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-12-29 07:07:29 +00:00
Paul Cornett
9166fbf48a Use gtk_menu_item_remove_submenu() with GTK2
because gtk_menu_item_set_submenu() with NULL menu argument does not work
before GTK 2.12 and there is no need to avoid calling it on later GTK2 versions


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73296 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-12-28 16:56:01 +00:00
Paul Cornett
234aeaafa3 Use proper reference counting on GtkMenuItem that we keep a pointer to
Fixes crash that occurs with Ubuntu libdbusmenu
See #14292


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73277 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-12-27 05:59:23 +00:00
Paul Cornett
4d854e1536 Better fix for avoiding warnings from Ubuntu libdbusmenu
Previous workaround from r71648, modified in r72560, broke MDI child menu handling
See #14292


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73276 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-12-27 05:28:32 +00:00
Vadim Zeitlin
6bc9f42c3d Ignore menu events while modal dialogs are shown in wxGTK.
Normally menus are disabled in this case but not when running under Ubuntu
Unity, so add an explicit test for this to avoid breaking the program expected
flow of control by allowing the user to show the same modal dialog twice, for
example.

This is not ideal, it would be better to visually disable the menu while the
modal dialogs are shown but is better than nothing.

Closes #14823.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73007 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-11-25 00:15:03 +00:00
Paul Cornett
8ab7533289 Disconnect all GTK signals referencing a wx object which is being destructed
or which is destroying the associated GTK object


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72696 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-10-17 16:23:18 +00:00
Paul Cornett
efc645e229 fix crash in wxWindowGTK::GTKHandleUnrealize(), closes #14752
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72691 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-10-16 18:05:09 +00:00