X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9067c6c5377cd6248d34352a2c8a0e1a2485e5c9..1f4d7e441c3706ae396a4153df76871080ea3802:/src/gtk/toolbar.cpp diff --git a/src/gtk/toolbar.cpp b/src/gtk/toolbar.cpp index df4530d636..969c7f9f36 100644 --- a/src/gtk/toolbar.cpp +++ b/src/gtk/toolbar.cpp @@ -351,7 +351,7 @@ void wxToolBar::Init() wxToolBar::~wxToolBar() { - if (m_tooltips) + if (m_tooltips) // always NULL if GTK >= 2.12 { gtk_object_destroy(GTK_OBJECT(m_tooltips)); g_object_unref(m_tooltips); @@ -376,9 +376,12 @@ bool wxToolBar::Create( wxWindow *parent, FixupStyle(); m_toolbar = GTK_TOOLBAR( gtk_toolbar_new() ); - m_tooltips = gtk_tooltips_new(); - g_object_ref(m_tooltips); - gtk_object_sink(GTK_OBJECT(m_tooltips)); + if (gtk_check_version(2, 12, 0)) + { + m_tooltips = gtk_tooltips_new(); + g_object_ref(m_tooltips); + gtk_object_sink(GTK_OBJECT(m_tooltips)); + } GtkSetStyle(); if (style & wxTB_DOCKABLE) @@ -528,8 +531,18 @@ bool wxToolBar::DoInsertTool(size_t pos, wxToolBarToolBase *toolBase) } if (!HasFlag(wxTB_NO_TOOLTIPS) && !tool->GetShortHelp().empty()) { - gtk_tool_item_set_tooltip(tool->m_item, - m_tooltips, wxGTK_CONV(tool->GetShortHelp()), ""); +#if GTK_CHECK_VERSION(2, 12, 0) + if (!gtk_check_version(2, 12, 0)) + { + gtk_tool_item_set_tooltip_text(tool->m_item, + wxGTK_CONV(tool->GetShortHelp())); + } + else +#endif + { + gtk_tool_item_set_tooltip(tool->m_item, + m_tooltips, wxGTK_CONV(tool->GetShortHelp()), ""); + } } g_signal_connect(GTK_BIN(tool->m_item)->child, "button_press_event", G_CALLBACK(button_press_event), tool); @@ -695,8 +708,18 @@ void wxToolBar::SetToolShortHelp( int id, const wxString& helpString ) (void)tool->SetShortHelp(helpString); if (tool->m_item) { - gtk_tool_item_set_tooltip(tool->m_item, - m_tooltips, wxGTK_CONV(helpString), ""); +#if GTK_CHECK_VERSION(2, 12, 0) + if (!gtk_check_version(2, 12, 0)) + { + gtk_tool_item_set_tooltip_text(tool->m_item, + wxGTK_CONV(helpString)); + } + else +#endif + { + gtk_tool_item_set_tooltip(tool->m_item, + m_tooltips, wxGTK_CONV(helpString), ""); + } } } } @@ -724,59 +747,6 @@ void wxToolBar::SetToolDisabledBitmap( int id, const wxBitmap& bitmap ) } } -// ---------------------------------------------------------------------------- -// wxToolBar idle handling -// ---------------------------------------------------------------------------- - -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); -} - - // ---------------------------------------------------------------------------- // static