From 858b5bddf67a137c09cd1ac63820a02a4dc3efb3 Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Mon, 3 May 1999 12:19:16 +0000 Subject: [PATCH] Implemented flat toolbars corrected mouse cursor over splitter window corrected segvs when setting bg colour in text ctrl sliders enlarge when they have labels to avoid pixel junk git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2329 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/defs.h | 4 ++-- samples/controls/controls.cpp | 2 +- src/generic/splitter.cpp | 3 +++ src/gtk/slider.cpp | 23 +++++++++++++++++++++++ src/gtk/tbargtk.cpp | 8 ++++++++ src/gtk/textctrl.cpp | 3 +++ src/gtk1/slider.cpp | 23 +++++++++++++++++++++++ src/gtk1/tbargtk.cpp | 8 ++++++++ src/gtk1/textctrl.cpp | 3 +++ 9 files changed, 74 insertions(+), 3 deletions(-) diff --git a/include/wx/defs.h b/include/wx/defs.h index a19d19b1c2..90ac41fb0a 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -420,9 +420,9 @@ typedef void (*wxFunction) (wxObject&, wxEvent&); #define wxTB_3DBUTTONS 0x8000 #define wxTB_HORIZONTAL 0x0002 #define wxTB_VERTICAL 0x0004 -// Flatbar/Coolbar under Win98 +// Flatbar/Coolbar under Win98/ GTK 1.2 #define wxTB_FLAT 0x0008 -// use native docking +// use native docking under GTK #define wxTB_DOCKABLE 0x0010 /* diff --git a/samples/controls/controls.cpp b/samples/controls/controls.cpp index 895095231a..a119c5975c 100644 --- a/samples/controls/controls.cpp +++ b/samples/controls/controls.cpp @@ -549,7 +549,7 @@ m_text(NULL), m_notebook(NULL) panel = new wxPanel(m_notebook); (void)new wxStaticBox( panel, -1, "wxGauge and wxSlider", wxPoint(10,10), wxSize(180,130) ); m_gauge = new wxGauge( panel, -1, 200, wxPoint(18,50), wxSize(155, 30) ); - m_slider = new wxSlider( panel, ID_SLIDER, 0, 0, 200, wxPoint(18,90), wxSize(155,-1) ); + m_slider = new wxSlider( panel, ID_SLIDER, 0, 0, 200, wxPoint(18,90), wxSize(155,-1), wxSL_LABELS ); (void)new wxStaticBox( panel, -1, "Explanation", wxPoint(200,10), wxSize(290,130) ); #ifdef __WXMOTIF__ // No wrapping text in wxStaticText yet :-( diff --git a/src/generic/splitter.cpp b/src/generic/splitter.cpp index 853774c785..c52c7e7586 100644 --- a/src/generic/splitter.cpp +++ b/src/generic/splitter.cpp @@ -173,6 +173,9 @@ void wxSplitterWindow::OnMouseEvent(wxMouseEvent& event) m_dragMode = wxSPLIT_DRAG_NONE; ReleaseMouse(); +#ifdef __WXGTK__ + SetCursor(* wxSTANDARD_CURSOR); +#endif // Erase old tracker DrawSashTracker(m_oldX, m_oldY); diff --git a/src/gtk/slider.cpp b/src/gtk/slider.cpp index fb6b989378..e7f36d0c4c 100644 --- a/src/gtk/slider.cpp +++ b/src/gtk/slider.cpp @@ -107,7 +107,30 @@ bool wxSlider::Create(wxWindow *parent, wxWindowID id, m_widget = gtk_hscale_new( (GtkAdjustment *) NULL ); if (style & wxSL_LABELS) + { gtk_scale_set_draw_value( GTK_SCALE( m_widget ), TRUE ); + + /* labels need more space and too small window will + cause junk to appear on the dialog */ + if (style & wxSL_VERTICAL) + { + wxSize sz( size ); + if (sz.x < 35) + { + sz.x = 35; + SetSize( sz ); + } + } + else + { + wxSize sz( size ); + if (sz.y < 35) + { + sz.y = 35; + SetSize( sz ); + } + } + } else gtk_scale_set_draw_value( GTK_SCALE( m_widget ), FALSE ); diff --git a/src/gtk/tbargtk.cpp b/src/gtk/tbargtk.cpp index 0f80c3f2a9..21dbab1dec 100644 --- a/src/gtk/tbargtk.cpp +++ b/src/gtk/tbargtk.cpp @@ -162,6 +162,9 @@ bool wxToolBar::Create( wxWindow *parent, wxWindowID id, m_widget = gtk_handle_box_new(); gtk_container_add( GTK_CONTAINER(m_widget), GTK_WIDGET(m_toolbar) ); gtk_widget_show( GTK_WIDGET(m_toolbar) ); + + if (style & wxTB_FLAT) + gtk_handle_box_set_shadow_type( GTK_HANDLE_BOX(m_widget), GTK_SHADOW_NONE ); } else { @@ -169,6 +172,11 @@ bool wxToolBar::Create( wxWindow *parent, wxWindowID id, } 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; diff --git a/src/gtk/textctrl.cpp b/src/gtk/textctrl.cpp index 714956eaef..b8bba6c69b 100644 --- a/src/gtk/textctrl.cpp +++ b/src/gtk/textctrl.cpp @@ -960,6 +960,8 @@ void wxTextCtrl::SetBackgroundColour( const wxColour &colour ) wxCHECK_RET( m_text != NULL, _T("invalid text ctrl") ); wxControl::SetBackgroundColour( colour ); + + if (!m_widget->window) return; wxColour sysbg = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE ); if (sysbg.Red() == colour.Red() && @@ -974,6 +976,7 @@ void wxTextCtrl::SetBackgroundColour( const wxColour &colour ) if (m_windowStyle & wxTE_MULTILINE) { GdkWindow *window = GTK_TEXT(m_text)->text_area; + if (!window) return; m_backgroundColour.CalcPixel( gdk_window_get_colormap( window ) ); gdk_window_set_background( window, m_backgroundColour.GetColor() ); gdk_window_clear( window ); diff --git a/src/gtk1/slider.cpp b/src/gtk1/slider.cpp index fb6b989378..e7f36d0c4c 100644 --- a/src/gtk1/slider.cpp +++ b/src/gtk1/slider.cpp @@ -107,7 +107,30 @@ bool wxSlider::Create(wxWindow *parent, wxWindowID id, m_widget = gtk_hscale_new( (GtkAdjustment *) NULL ); if (style & wxSL_LABELS) + { gtk_scale_set_draw_value( GTK_SCALE( m_widget ), TRUE ); + + /* labels need more space and too small window will + cause junk to appear on the dialog */ + if (style & wxSL_VERTICAL) + { + wxSize sz( size ); + if (sz.x < 35) + { + sz.x = 35; + SetSize( sz ); + } + } + else + { + wxSize sz( size ); + if (sz.y < 35) + { + sz.y = 35; + SetSize( sz ); + } + } + } else gtk_scale_set_draw_value( GTK_SCALE( m_widget ), FALSE ); diff --git a/src/gtk1/tbargtk.cpp b/src/gtk1/tbargtk.cpp index 0f80c3f2a9..21dbab1dec 100644 --- a/src/gtk1/tbargtk.cpp +++ b/src/gtk1/tbargtk.cpp @@ -162,6 +162,9 @@ bool wxToolBar::Create( wxWindow *parent, wxWindowID id, m_widget = gtk_handle_box_new(); gtk_container_add( GTK_CONTAINER(m_widget), GTK_WIDGET(m_toolbar) ); gtk_widget_show( GTK_WIDGET(m_toolbar) ); + + if (style & wxTB_FLAT) + gtk_handle_box_set_shadow_type( GTK_HANDLE_BOX(m_widget), GTK_SHADOW_NONE ); } else { @@ -169,6 +172,11 @@ bool wxToolBar::Create( wxWindow *parent, wxWindowID id, } 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; diff --git a/src/gtk1/textctrl.cpp b/src/gtk1/textctrl.cpp index 714956eaef..b8bba6c69b 100644 --- a/src/gtk1/textctrl.cpp +++ b/src/gtk1/textctrl.cpp @@ -960,6 +960,8 @@ void wxTextCtrl::SetBackgroundColour( const wxColour &colour ) wxCHECK_RET( m_text != NULL, _T("invalid text ctrl") ); wxControl::SetBackgroundColour( colour ); + + if (!m_widget->window) return; wxColour sysbg = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE ); if (sysbg.Red() == colour.Red() && @@ -974,6 +976,7 @@ void wxTextCtrl::SetBackgroundColour( const wxColour &colour ) if (m_windowStyle & wxTE_MULTILINE) { GdkWindow *window = GTK_TEXT(m_text)->text_area; + if (!window) return; m_backgroundColour.CalcPixel( gdk_window_get_colormap( window ) ); gdk_window_set_background( window, m_backgroundColour.GetColor() ); gdk_window_clear( window ); -- 2.45.2