X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8a0681f9338345d0ef32b2ad809d49fd20861119..6443de026310552cacd68a6d0318e73d14929680:/src/gtk/tbargtk.cpp diff --git a/src/gtk/tbargtk.cpp b/src/gtk/tbargtk.cpp index aa7574feca..b78ce9d916 100644 --- a/src/gtk/tbargtk.cpp +++ b/src/gtk/tbargtk.cpp @@ -30,6 +30,8 @@ #include "gdk/gdk.h" #include "gtk/gtk.h" +extern GdkFont *GtkGetDefaultGuiFont(); + // ---------------------------------------------------------------------------- // globals // ---------------------------------------------------------------------------- @@ -80,7 +82,7 @@ protected: // wxWin macros // ---------------------------------------------------------------------------- -IMPLEMENT_DYNAMIC_CLASS(wxToolBar, wxControl) +IMPLEMENT_DYNAMIC_CLASS(wxToolBar, wxToolBarBase) // ============================================================================ // implementation @@ -139,35 +141,7 @@ static gint gtk_toolbar_enter_callback( GtkWidget *WXUNUSED(widget), wxToolBar *tb = (wxToolBar *)tool->GetToolBar(); -#if (GTK_MINOR_VERSION == 0) - /* we grey-out the tip text of disabled tool in GTK 1.0 */ - if (tool->IsEnabled()) - { - if (tb->m_fg->red != 0) - { - tb->m_fg->red = 0; - tb->m_fg->green = 0; - tb->m_fg->blue = 0; - gdk_color_alloc( gtk_widget_get_colormap( GTK_WIDGET(tb->m_toolbar) ), tb->m_fg ); - - gtk_tooltips_set_colors( GTK_TOOLBAR(tb->m_toolbar)->tooltips, tb->m_bg, tb->m_fg ); - } - } - else - { - if (tb->m_fg->red == 0) - { - tb->m_fg->red = 33000; - tb->m_fg->green = 33000; - tb->m_fg->blue = 33000; - gdk_color_alloc( gtk_widget_get_colormap( GTK_WIDGET(tb->m_toolbar) ), tb->m_fg ); - gtk_tooltips_set_colors( GTK_TOOLBAR(tb->m_toolbar)->tooltips, tb->m_bg, tb->m_fg ); - } - } -#endif - - /* emit the event */ - + // emit the event tb->OnMouseEnter( tool->GetId() ); return FALSE; @@ -180,7 +154,7 @@ static gint gtk_toolbar_enter_callback( GtkWidget *WXUNUSED(widget), static void wxInsertChildInToolBar( wxToolBar* WXUNUSED(parent), wxWindow* WXUNUSED(child) ) { - /* we don't do anything here but pray */ + // we don't do anything here } // ---------------------------------------------------------------------------- @@ -218,9 +192,7 @@ void wxToolBar::Init() { m_fg = m_bg = (GdkColor *)NULL; - m_toolbar = (GtkToolbar *)NULL; - m_blockNextEvent = FALSE; } @@ -260,10 +232,8 @@ bool wxToolBar::Create( wxWindow *parent, gtk_container_add( GTK_CONTAINER(m_widget), GTK_WIDGET(m_toolbar) ); gtk_widget_show( GTK_WIDGET(m_toolbar) ); -#if (GTK_MINOR_VERSION > 0) if (style & wxTB_FLAT) gtk_handle_box_set_shadow_type( GTK_HANDLE_BOX(m_widget), GTK_SHADOW_NONE ); -#endif } else { @@ -272,24 +242,26 @@ bool wxToolBar::Create( wxWindow *parent, gtk_toolbar_set_tooltips( GTK_TOOLBAR(m_toolbar), TRUE ); -#if (GTK_MINOR_VERSION > 0) if (style & wxTB_FLAT) gtk_toolbar_set_button_relief( GTK_TOOLBAR(m_toolbar), GTK_RELIEF_NONE ); -#endif + m_fg = new GdkColor; - m_fg->red = 0; - m_fg->green = 0; + m_fg->red = 0; + m_fg->green = 0; m_fg->blue = 0; - gdk_color_alloc( gtk_widget_get_colormap( GTK_WIDGET(m_toolbar) ), m_fg ); - + wxColour fg(0,0,0); + fg.CalcPixel( gtk_widget_get_colormap( GTK_WIDGET(m_toolbar) ) ); + m_fg->pixel = fg.GetPixel(); + m_bg = new GdkColor; m_bg->red = 65535; m_bg->green = 65535; - m_bg->blue = 50000; - gdk_color_alloc( gtk_widget_get_colormap( GTK_WIDGET(m_toolbar) ), m_bg ); - -#if (GTK_MINOR_VERSION > 0) + m_bg->blue = 49980; + wxColour bg(255,255,196); + bg.CalcPixel( gtk_widget_get_colormap( GTK_WIDGET(m_toolbar) ) ); + m_bg->pixel = bg.GetPixel(); + gtk_tooltips_force_window( GTK_TOOLBAR(m_toolbar)->tooltips ); GtkStyle *g_style = @@ -298,10 +270,9 @@ bool wxToolBar::Create( wxWindow *parent, GTK_TOOLBAR(m_toolbar)->tooltips->tip_window ) ); g_style->bg[GTK_STATE_NORMAL] = *m_bg; + gdk_font_unref( g_style->font ); + g_style->font = gdk_font_ref( GtkGetDefaultGuiFont() ); gtk_widget_set_style( GTK_TOOLBAR(m_toolbar)->tooltips->tip_window, g_style ); -#else - gtk_tooltips_set_colors( GTK_TOOLBAR(m_toolbar)->tooltips, m_bg, m_fg ); -#endif m_parent->DoAddChild( this ); @@ -316,6 +287,9 @@ bool wxToolBar::DoInsertTool(size_t pos, wxToolBarToolBase *toolBase) { wxToolBarTool *tool = (wxToolBarTool *)toolBase; + // we have inserted a space before all the tools + if (m_xMargin > 1) pos++; + if ( tool->IsButton() ) { wxBitmap bitmap = tool->GetBitmap1(); @@ -380,7 +354,7 @@ bool wxToolBar::DoInsertTool(size_t pos, wxToolBarToolBase *toolBase) break; case wxTOOL_STYLE_SEPARATOR: - gtk_toolbar_append_space( m_toolbar ); + gtk_toolbar_insert_space( m_toolbar, pos ); // skip the rest return TRUE; @@ -397,14 +371,15 @@ bool wxToolBar::DoInsertTool(size_t pos, wxToolBarToolBase *toolBase) } GtkRequisition req; - (* GTK_WIDGET_CLASS( GTK_OBJECT(m_widget)->klass )->size_request ) (m_widget, &req ); + (* GTK_WIDGET_CLASS( GTK_OBJECT_GET_CLASS(m_widget) )->size_request ) + (m_widget, &req ); m_width = req.width + m_xMargin; - m_height = req.height + 2*m_yMargin + 4; + m_height = req.height + 2*m_yMargin; return TRUE; } -bool wxToolBar::DoDeleteTool(size_t pos, wxToolBarToolBase *toolBase) +bool wxToolBar::DoDeleteTool(size_t WXUNUSED(pos), wxToolBarToolBase *toolBase) { wxToolBarTool *tool = (wxToolBarTool *)toolBase; @@ -501,6 +476,18 @@ void wxToolBar::SetToolSeparation( int separation ) m_toolSeparation = separation; } +void wxToolBar::SetToolShortHelp( int id, const wxString& helpString ) +{ + wxToolBarTool *tool = (wxToolBarTool *)FindById(id); + + if ( tool ) + { + (void)tool->SetShortHelp(helpString); + gtk_tooltips_set_tip(m_toolbar->tooltips, tool->m_item, + helpString.mbc_str(), ""); + } +} + // ---------------------------------------------------------------------------- // wxToolBar idle handling // ---------------------------------------------------------------------------- @@ -550,4 +537,4 @@ void wxToolBar::OnInternalIdle() UpdateWindowUI(); } -#endif +#endif // wxUSE_TOOLBAR_NATIVE