GTK application menus are not correctly displayed

Bug #726678 reported by Aurélien Gâteau
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
DBus Menu
Fix Released
Critical
Ted Gould
libdbusmenu-qt
Invalid
Critical
Aurélien Gâteau

Bug Description

When a GTK app is started, its menu appears in the menubar but clicking on any item will always show the menu for the first item. The menubar then clears itself until the application is restarted.

Related branches

Changed in libdbusmenu-qt:
status: New → Triaged
importance: Undecided → Critical
assignee: nobody → Aurélien Gâteau (agateau)
Revision history for this message
Aurélien Gâteau (agateau) wrote :
Download full text (5.2 KiB)

It seems GetLayout() implementation in dbusmenu-glib is buggy: it ignores the parentId parameter.

Getting first level of items for gedit:

# dbus-send --print-reply --dest=:1.442 /com/canonical/menu/7C000A3 com.canonical.dbusmenu.GetLayout int32:0 int32:1 'array:string:'

method return sender=:1.442 -> dest=:1.455 reply_serial=2
   uint32 2
   struct {
      int32 0
      array [
         dict entry(
            string "children-display"
            variant string "submenu"
         )
      ]
      array [
         variant struct {
               int32 2
               array [
                  dict entry(
                     string "children-display"
                     variant string "submenu"
                  )
                  dict entry(
                     string "label"
                     variant string "File"
                  )
               ]
               array [
               ]
            }
         variant struct {
               int32 3
               array [
                  dict entry(
                     string "children-display"
                     variant string "submenu"
                  )
                  dict entry(
                     string "label"
                     variant string "Edit"
                  )
               ]
               array [
               ]
            }
         variant struct {
               int32 4
               array [
                  dict entry(
                     string "children-display"
                     variant string "submenu"
                  )
                  dict entry(
                     string "label"
                     variant string "View"
                  )
               ]
               array [
               ]
            }
         variant struct {
               int32 5
               array [
                  dict entry(
                     string "children-display"
                     variant string "submenu"
                  )
                  dict entry(
                     string "label"
                     variant string "Search"
                  )
               ]
               array [
               ]
            }
         variant struct {
               int32 6
               array [
                  dict entry(
                     string "children-display"
                     variant string "submenu"
                  )
                  dict entry(
                     string "label"
                     variant string "Tools"
                  )
               ]
               array [
               ]
            }
         variant struct {
               int32 7
               array [
                  dict entry(
                     string "enabled"
                     variant boolean true
                  )
                  dict entry(
                     strin...

Read more...

Changed in dbusmenu:
importance: Undecided → Critical
assignee: nobody → Ted Gould (ted)
status: New → Confirmed
Ted Gould (ted)
Changed in dbusmenu:
status: Confirmed → In Progress
Ted Gould (ted)
Changed in dbusmenu:
status: In Progress → Fix Committed
Ted Gould (ted)
Changed in dbusmenu:
status: Fix Committed → Fix Released
Changed in libdbusmenu-qt:
status: Triaged → Invalid
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.