X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0b83552acf359689c43d641175f7292391f6a9e6..bbd55ff9564dcaf1a5d2ee93d789c4d656baabef:/src/gtk/toolbar.cpp?ds=sidebyside diff --git a/src/gtk/toolbar.cpp b/src/gtk/toolbar.cpp index 701ec64a84..f8a8cade54 100644 --- a/src/gtk/toolbar.cpp +++ b/src/gtk/toolbar.cpp @@ -445,6 +445,32 @@ void wxToolBar::SetWindowStyleFlag( long style ) GtkSetStyle(); } +bool wxToolBar::Realize() +{ + if ( !wxToolBarBase::Realize() ) + return false; + + // bring the initial state of all the toolbar items in line with the + // internal state if the latter was changed by calling wxToolBarTool:: + // Enable(): this works under MSW, where the toolbar items are only created + // in Realize() which uses the internal state to determine the initial + // button state, so make it work under GTK too + for ( wxToolBarToolsList::const_iterator i = m_tools.begin(); + i != m_tools.end(); + ++i ) + { + // by default the toolbar items are enabled and not toggled, so we only + // have to do something if their internal state doesn't correspond to + // this + if ( !(*i)->IsEnabled() ) + DoEnableTool(*i, false); + if ( (*i)->IsToggled() ) + DoToggleTool(*i, true); + } + + return true; +} + bool wxToolBar::DoInsertTool(size_t pos, wxToolBarToolBase *toolBase) { wxToolBarTool* tool = static_cast(toolBase); @@ -519,6 +545,15 @@ bool wxToolBar::DoInsertTool(size_t pos, wxToolBarToolBase *toolBase) case wxTOOL_STYLE_SEPARATOR: tool->m_item = gtk_separator_tool_item_new(); + if ( tool->IsStretchable() ) + { + gtk_separator_tool_item_set_draw + ( + GTK_SEPARATOR_TOOL_ITEM(tool->m_item), + FALSE + ); + gtk_tool_item_set_expand(tool->m_item, TRUE); + } gtk_toolbar_insert(m_toolbar, tool->m_item, int(pos)); break; @@ -698,45 +733,6 @@ void wxToolBar::OnInternalIdle() // Check if we have to show window now if (GTKShowFromOnIdle()) return; - wxCursor cursor = m_cursor; - if (g_globalCursor.Ok()) cursor = g_globalCursor; - - if (cursor.Ok()) - { - /* I now set the cursor the anew in every OnInternalIdle call - as setting the cursor in a parent window also effects the - windows above so that checking for the current cursor is - not possible. */ - - if (HasFlag(wxTB_DOCKABLE) && (m_widget->window)) - { - /* if the toolbar is dockable, then m_widget stands for the - GtkHandleBox widget, which uses its own window so that we - can set the cursor for it. if the toolbar is not dockable, - m_widget comes from m_toolbar which uses its parent's - window ("windowless windows") and thus we cannot set the - cursor. */ - gdk_window_set_cursor( m_widget->window, cursor.GetCursor() ); - } - - wxToolBarToolsList::compatibility_iterator node = m_tools.GetFirst(); - while ( node ) - { - wxToolBarTool *tool = (wxToolBarTool *)node->GetData(); - node = node->GetNext(); - - if (tool->m_item) - { - GdkWindow* window = GTK_WIDGET(tool->m_item)->window; - - if ( window ) - { - gdk_window_set_cursor( window, cursor.GetCursor() ); - } - } - } - } - if (wxUpdateUIEvent::CanUpdate(this) && IsShownOnScreen()) UpdateWindowUI(wxUPDATE_UI_FROMIDLE); }