X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f9dae7798b164a5f4abc85d16f49cabd4e0980c0..68ba3b21da83bad8fa95b3d7f9efc041df9a64b2:/src/gtk/tbargtk.cpp diff --git a/src/gtk/tbargtk.cpp b/src/gtk/tbargtk.cpp index 5c319548a4..3360929f68 100644 --- a/src/gtk/tbargtk.cpp +++ b/src/gtk/tbargtk.cpp @@ -16,10 +16,13 @@ // headers // ---------------------------------------------------------------------------- -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "tbargtk.h" #endif +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + #include "wx/toolbar.h" #if wxUSE_TOOLBAR_NATIVE @@ -57,8 +60,13 @@ static void GetGtkStyle(long style, if ( style & wxTB_TEXT ) { - *gtkStyle = style & wxTB_NOICONS ? GTK_TOOLBAR_TEXT : - ( style & wxTB_HORZ_LAYOUT ? GTK_TOOLBAR_BOTH_HORIZ: GTK_TOOLBAR_BOTH ); + *gtkStyle = style & wxTB_NOICONS + ? GTK_TOOLBAR_TEXT + : ( +#ifdef __WXGTK20__ + style & wxTB_HORZ_LAYOUT ? GTK_TOOLBAR_BOTH_HORIZ : +#endif // __WXGTK20__ + GTK_TOOLBAR_BOTH); } else // no text, hence we must have the icons or what would we show? { @@ -131,7 +139,7 @@ protected: // wxWin macros // ---------------------------------------------------------------------------- -IMPLEMENT_DYNAMIC_CLASS(wxToolBar, wxToolBarBase) +IMPLEMENT_DYNAMIC_CLASS(wxToolBar, wxControl) // ============================================================================ // implementation @@ -176,7 +184,22 @@ static void gtk_toolbar_callback( GtkWidget *WXUNUSED(widget), } } - tbar->OnLeftClick( tool->GetId(), tool->IsToggled() ); + if( !tbar->OnLeftClick( tool->GetId(), tool->IsToggled() ) && tool->CanBeToggled() ) + { + // revert back + tool->Toggle(); + + wxBitmap bitmap = tool->GetBitmap(); + if ( bitmap.Ok() ) + { + GtkPixmap *pixmap = GTK_PIXMAP( tool->m_pixmap ); + + GdkBitmap *mask = bitmap.GetMask() ? bitmap.GetMask()->GetBitmap() + : (GdkBitmap *)NULL; + + gtk_pixmap_set( pixmap, bitmap.GetPixmap(), mask ); + } + } } //----------------------------------------------------------------------------- @@ -250,6 +273,8 @@ void wxToolBar::Init() m_bg = (GdkColor *)NULL; m_toolbar = (GtkToolbar *)NULL; m_blockEvent = FALSE; + m_defaultWidth = 32; + m_defaultHeight = 32; } wxToolBar::~wxToolBar() @@ -279,7 +304,7 @@ bool wxToolBar::Create( wxWindow *parent, #ifdef __WXGTK20__ m_toolbar = GTK_TOOLBAR( gtk_toolbar_new() ); GtkSetStyle(); - + // Doesn't work this way. // GtkToolbarSpaceStyle space_style = GTK_TOOLBAR_SPACE_EMPTY; // gtk_widget_style_set (GTK_WIDGET (m_toolbar), "space_style", &space_style, NULL); @@ -348,9 +373,7 @@ bool wxToolBar::Create( wxWindow *parent, m_parent->DoAddChild( this ); - PostCreation(); - - Show( TRUE ); + PostCreation(size); return TRUE; } @@ -428,8 +451,10 @@ bool wxToolBar::DoInsertTool(size_t pos, wxToolBarToolBase *toolBase) if ( tool->IsRadio() ) { - wxToolBarToolsList::Node *node = pos ? m_tools.Item(pos - 1) - : NULL; + wxToolBarToolsList::compatibility_iterator node + = wxToolBarToolsList::compatibility_iterator(); + if ( pos ) node = m_tools.Item(pos - 1); + while ( node ) { wxToolBarTool *tool = (wxToolBarTool *)node->GetData(); @@ -474,7 +499,7 @@ bool wxToolBar::DoInsertTool(size_t pos, wxToolBarToolBase *toolBase) return FALSE; } - + gtk_signal_connect( GTK_OBJECT(tool->m_item), "enter_notify_event", GTK_SIGNAL_FUNC(gtk_toolbar_tool_callback), @@ -655,7 +680,7 @@ void wxToolBar::OnInternalIdle() gdk_window_set_cursor( m_widget->window, cursor.GetCursor() ); } - wxToolBarToolsList::Node *node = m_tools.GetFirst(); + wxToolBarToolsList::compatibility_iterator node = m_tools.GetFirst(); while ( node ) { wxToolBarTool *tool = (wxToolBarTool *)node->GetData(); @@ -678,4 +703,22 @@ void wxToolBar::OnInternalIdle() UpdateWindowUI(wxUPDATE_UI_FROMIDLE); } + +// ---------------------------------------------------------------------------- + +// static +wxVisualAttributes +wxToolBar::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant)) +{ +#ifdef __WXGTK20__ + return GetDefaultAttributesFromGTKWidget(gtk_toolbar_new); +#else + wxVisualAttributes attr; + GtkWidget* widget = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_BOTH); + attr = GetDefaultAttributesFromGTKWidget(widget); + gtk_widget_destroy(widget); + return attr; +#endif +} + #endif // wxUSE_TOOLBAR_NATIVE