Re: Trouble with UIManager toolbar/menu re-ordering
- From: "R. Douglas Barbieri" <dooglio gmail com>
- To: "gtkmm-list gnome org" <gtkmm-list gnome org>
- Subject: Re: Trouble with UIManager toolbar/menu re-ordering
- Date: Thu, 27 Mar 2008 13:36:51 -0700
Sorry, I didn't hear back from anyone on the list yet. Is this the
right list to ask about this? Or should I go to the Gtk+ mailing list?
On Wed, Mar 26, 2008 at 11:20 AM, R. Douglas Barbieri <dooglio gmail com> wrote:
> Hi all,
>
> I have an example app that I've posted to help illustrate a problem
> I've encountered with the UIManager's XML re-ordering for
> menus/toolbars after the initial loading has taken place.
>
> I took the stock Gtkmm example project found in
> book/menus_and_toolbars and added an extra placeholder called
> "NewItems" into the toolbar XML string. I add items to it that are
> deliberately out of order. When you click on any button that triggers
> the on_action_others() signal, I add a new menu item plus reorder the
> items with a new XML string. I make sure the old "UI" from this extra
> XML merge id is removed first.
>
> So in addition to the actions that are already present in the example
> code, I added new actions:
>
> Last, Middle and First (and also NewItem, but it is not added yet).
> Here is the new XML fragment I'm adding:
>
> ui_info = "<ui>"
> " <toolbar name='ToolBar'>"
> " <placeholder name='NewItems'>"
> " <toolitem action='Last'/>"
> " <toolitem action='First'/>"
> " <toolitem action='Middle'/>"
> " </placeholder>"
> " </toolbar>"
> "</ui>";
> m_newItemsMergeId = m_refUIManager->add_ui_from_string(ui_info);
>
>
> Now the items appear on the toolbar in that order, because this is
> done in the ExampleWindow constructor.
>
> When you click on a button that invokes the on_action_others() method,
> I attempt to alter the order of the toolbar, plus add the "NewItem"
> action to the toolbar:
>
> m_refUIManager->remove_ui( m_newItemsMergeId );
> //
> Glib::ustring ui_info =
> "<ui>"
> " <toolbar name='ToolBar'>"
> " <placeholder name='NewItems'>"
> " <toolitem action='NewItem'/>"
> " <toolitem action='First'/>"
> " <toolitem action='Middle'/>"
> " <toolitem action='Last'/>"
> " </placeholder>"
> " </toolbar>"
> "</ui>";
> //
> m_newItemsMergeId = m_refUIManager->add_ui_from_string(ui_info);
>
> Notice the the order has been changed, and the "NewItem" should appear
> at first on the toolbar. Unfortunately, the buttons appear in the same
> order as before, and the "NewItem" action shows up at the *end*, not
> right after the placeholder.
>
> I added a small hack to force the "NewItem" to be at position 3, and
> that at least works correctly. But the UIManager seems to not be able
> to recognize when a toolbar is reorder via XML merging. Oh, and this
> bug happens with the menubar as well, so it's not just isolated in the
> toolbar Gtkmm/+ code.
>
> Speaking of that, I don't know if the problem is with gtkmm or with
> the underlying gtk+ code. Has anyone else run across this? I have had
> this issue for years and have always had to work around it.
>
> Thanks!
>
> PS:
>
> Here is the example code:
> http://www.dooglio.net/source/menus_and_toolbars.tar.gz
>
> --
> dooglio gmail com
>
--
dooglio gmail com
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]