X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/853149575e6cb46031b3ed06f3d0fa4c42440962..726cc8697cd44a41b43257f05ca8cdd42b71a711:/src/gtk/toolbar.cpp diff --git a/src/gtk/toolbar.cpp b/src/gtk/toolbar.cpp index b25f775019..aeb1dff251 100644 --- a/src/gtk/toolbar.cpp +++ b/src/gtk/toolbar.cpp @@ -195,12 +195,15 @@ image_expose_event(GtkWidget* widget, GdkEventExpose*, wxToolBarTool* tool) return false; // draw disabled bitmap ourselves, GtkImage has no way to specify it - const GtkAllocation& alloc = widget->allocation; + GtkAllocation alloc; + gtk_widget_get_allocation(widget, &alloc); + GtkRequisition req; + gtk_widget_get_requisition(widget, &req); gdk_draw_pixbuf( - widget->window, widget->style->black_gc, bitmap.GetPixbuf(), + gtk_widget_get_window(widget), gtk_widget_get_style(widget)->black_gc, bitmap.GetPixbuf(), 0, 0, - alloc.x + (alloc.width - widget->requisition.width) / 2, - alloc.y + (alloc.height - widget->requisition.height) / 2, + alloc.x + (alloc.width - req.width) / 2, + alloc.y + (alloc.height - req.height) / 2, -1, -1, GDK_RGB_DITHER_NORMAL, 0, 0); return true; } @@ -250,7 +253,7 @@ void wxToolBar::AddChildGTK(wxWindowGTK* child) GtkToolItem* item = gtk_tool_item_new(); gtk_container_add(GTK_CONTAINER(item), align); // position will be corrected in DoInsertTool if necessary - gtk_toolbar_insert(GTK_TOOLBAR(GTK_BIN(m_widget)->child), item, -1); + gtk_toolbar_insert(GTK_TOOLBAR(gtk_bin_get_child(GTK_BIN(m_widget))), item, -1); } // ---------------------------------------------------------------------------- @@ -284,7 +287,7 @@ void wxToolBarTool::CreateDropDown() box = gtk_hbox_new(false, 0); arrow = gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_NONE); } - GtkWidget* tool_button = GTK_BIN(m_item)->child; + GtkWidget* tool_button = gtk_bin_get_child(GTK_BIN(m_item)); gtk_widget_reparent(tool_button, box); GtkWidget* arrow_button = gtk_toggle_button_new(); gtk_button_set_relief(GTK_BUTTON(arrow_button), @@ -308,7 +311,8 @@ void wxToolBarTool::ShowDropdown(GtkToggleButton* button) wxMenu* menu = GetDropdownMenu(); if (menu) { - const GtkAllocation& alloc = GTK_WIDGET(button)->allocation; + GtkAllocation alloc; + gtk_widget_get_allocation(GTK_WIDGET(button), &alloc); int x = alloc.x; int y = alloc.y; if (toolbar->HasFlag(wxTB_LEFT | wxTB_RIGHT)) @@ -376,12 +380,14 @@ bool wxToolBar::Create( wxWindow *parent, FixupStyle(); m_toolbar = GTK_TOOLBAR( gtk_toolbar_new() ); +#if !GTK_CHECK_VERSION(3,0,0) && !defined(GTK_DISABLE_DEPRECATED) if (gtk_check_version(2, 12, 0)) { m_tooltips = gtk_tooltips_new(); g_object_ref(m_tooltips); gtk_object_sink(GTK_OBJECT(m_tooltips)); } +#endif GtkSetStyle(); if (style & wxTB_DOCKABLE) @@ -417,7 +423,7 @@ bool wxToolBar::Create( wxWindow *parent, GdkWindow *wxToolBar::GTKGetWindow(wxArrayGdkWindows& WXUNUSED(windows)) const { - return GTK_WIDGET(m_toolbar)->window; + return gtk_widget_get_window(GTK_WIDGET(m_toolbar)); } void wxToolBar::GtkSetStyle() @@ -436,7 +442,11 @@ void wxToolBar::GtkSetStyle() style = GTK_TOOLBAR_BOTH_HORIZ; } +#if GTK_CHECK_VERSION(3,0,0) || defined(GTK_DISABLE_DEPRECATED) + gtk_orientable_set_orientation(GTK_ORIENTABLE(m_toolbar), orient); +#else gtk_toolbar_set_orientation(m_toolbar, orient); +#endif gtk_toolbar_set_style(m_toolbar, style); } @@ -479,6 +489,7 @@ bool wxToolBar::DoInsertTool(size_t pos, wxToolBarToolBase *toolBase) wxToolBarTool* tool = static_cast(toolBase); GSList* radioGroup; + GtkWidget* bin_child; switch ( tool->GetStyle() ) { case wxTOOL_STYLE_BUTTON: @@ -532,7 +543,7 @@ bool wxToolBar::DoInsertTool(size_t pos, wxToolBarToolBase *toolBase) if (!HasFlag(wxTB_NO_TOOLTIPS) && !tool->GetShortHelp().empty()) { #if GTK_CHECK_VERSION(2, 12, 0) - if (!gtk_check_version(2, 12, 0)) + if (GTK_CHECK_VERSION(3,0,0) || gtk_check_version(2,12,0) == NULL) { gtk_tool_item_set_tooltip_text(tool->m_item, wxGTK_CONV(tool->GetShortHelp())); @@ -540,15 +551,18 @@ bool wxToolBar::DoInsertTool(size_t pos, wxToolBarToolBase *toolBase) else #endif { +#if !GTK_CHECK_VERSION(3,0,0) && !defined(GTK_DISABLE_DEPRECATED) gtk_tool_item_set_tooltip(tool->m_item, m_tooltips, wxGTK_CONV(tool->GetShortHelp()), ""); +#endif } } - g_signal_connect(GTK_BIN(tool->m_item)->child, "button_press_event", + bin_child = gtk_bin_get_child(GTK_BIN(tool->m_item)); + g_signal_connect(bin_child, "button_press_event", G_CALLBACK(button_press_event), tool); - g_signal_connect(tool->m_item, "enter_notify_event", + g_signal_connect(bin_child, "enter_notify_event", G_CALLBACK(enter_notify_event), tool); - g_signal_connect(tool->m_item, "leave_notify_event", + g_signal_connect(bin_child, "leave_notify_event", G_CALLBACK(enter_notify_event), tool); if (tool->GetKind() == wxITEM_DROPDOWN) @@ -572,9 +586,9 @@ bool wxToolBar::DoInsertTool(size_t pos, wxToolBarToolBase *toolBase) case wxTOOL_STYLE_CONTROL: wxWindow* control = tool->GetControl(); - if (control->m_widget->parent == NULL) + if (gtk_widget_get_parent(control->m_widget) == NULL) AddChildGTK(control); - tool->m_item = GTK_TOOL_ITEM(control->m_widget->parent->parent); + tool->m_item = GTK_TOOL_ITEM(gtk_widget_get_parent(gtk_widget_get_parent(control->m_widget))); if (gtk_toolbar_get_item_index(m_toolbar, tool->m_item) != int(pos)) { g_object_ref(tool->m_item); @@ -609,7 +623,7 @@ bool wxToolBar::DoDeleteTool(size_t /* pos */, wxToolBarToolBase* toolBase) // while if we're called from DeleteTool() the control will // be destroyed when wxToolBarToolBase itself is deleted GtkWidget* widget = tool->GetControl()->m_widget; - gtk_container_remove(GTK_CONTAINER(widget->parent), widget); + gtk_container_remove(GTK_CONTAINER(gtk_widget_get_parent(widget)), widget); } gtk_object_destroy(GTK_OBJECT(tool->m_item)); tool->m_item = NULL; @@ -709,7 +723,7 @@ void wxToolBar::SetToolShortHelp( int id, const wxString& helpString ) if (tool->m_item) { #if GTK_CHECK_VERSION(2, 12, 0) - if (!gtk_check_version(2, 12, 0)) + if (GTK_CHECK_VERSION(3,0,0) || gtk_check_version(2,12,0) == NULL) { gtk_tool_item_set_tooltip_text(tool->m_item, wxGTK_CONV(helpString)); @@ -717,8 +731,10 @@ void wxToolBar::SetToolShortHelp( int id, const wxString& helpString ) else #endif { +#if !GTK_CHECK_VERSION(3,0,0) && !defined(GTK_DISABLE_DEPRECATED) gtk_tool_item_set_tooltip(tool->m_item, m_tooltips, wxGTK_CONV(helpString), ""); +#endif } } } @@ -747,20 +763,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; - - if (wxUpdateUIEvent::CanUpdate(this) && IsShownOnScreen()) - UpdateWindowUI(wxUPDATE_UI_FROMIDLE); -} - - // ---------------------------------------------------------------------------- // static