How to create Gnome-3 style application menu?
- From: Gerardo Ballabio <gerardo ballabio gmail com>
- To: gtkmm-list <gtkmm-list gnome org>
- Subject: How to create Gnome-3 style application menu?
- Date: Sun, 2 Aug 2015 23:01:59 +0200
Hello all,
I'm trying to learn how to build a gtkmm application that conforms to Gnome 3 style guidelines.
In particular I want to create a custom application menu (the menu that pops up when you click the application name in the Gnome 3 top bar). As far as I can see, the gtkmm tutorial (chapter 12) only shows how to create a Gnome 2-style menubar.
Reading the gtkmm 3 API reference I figured I should use Gtk::Application::set_app_menu() and wrote the attached sample file, but it doesn't seem to work: when I run it, it shows the fallback application menu that gets generated when no menu has been set, that is, with a single "Quit" entry (see attached screenshot).
I'm running my test program in Gnome 3 in Debian 8 (gtkmm version 3.14.0), so application menus should definitely be supported. Indeed app->prefers_app_menu() returns true, and Gnome programs such as Web do show their application menus.
Can you please help me find what I'm doing wrong?
The documentation says set_app_menu() should be called after the application has been registered and that "Application::signal_startup() is a good place [to do that]". Indeed I tried to call set_app_menu() in the main function before running app->run(window), but then I get this error message:
(menus:1997): Gtk-CRITICAL **: gtk_application_set_app_menu: assertion 'g_application_get_is_registered (G_APPLICATION (application))' failed
So I connected a callback to app->signal_startup() and called it from there (I considered also subclassing Gtk::Application, but because it has no public constructor and gets instantiated via a static create() method, I don't think I can or should do that). Then I get no error, but no menu either.
I guess the Gio::Menu instance that I'm building may not be adequate, but in the documentation I couldn't find any guidance on how to build it. The procedure described in the tutorial to build menus doesn't create a Gio::Menu and doesn't seem applicable here (or is it?).
Any help will be much appreciated. (A working example would be VERY much appreciated.)
Thanks
Gerardo
Attachment:
menus.cc
Description: Binary data
Attachment:
menus.png
Description: PNG image
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]