]> git.saurik.com Git - wxWidgets.git/commitdiff
Implemented flat toolbars
authorRobert Roebling <robert@roebling.de>
Mon, 3 May 1999 12:19:16 +0000 (12:19 +0000)
committerRobert Roebling <robert@roebling.de>
Mon, 3 May 1999 12:19:16 +0000 (12:19 +0000)
  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
samples/controls/controls.cpp
src/generic/splitter.cpp
src/gtk/slider.cpp
src/gtk/tbargtk.cpp
src/gtk/textctrl.cpp
src/gtk1/slider.cpp
src/gtk1/tbargtk.cpp
src/gtk1/textctrl.cpp

index a19d19b1c291079595fc429bc0eb7d197def0359..90ac41fb0ab3afc5cf2c2317e63b1a24aceebc34 100644 (file)
@@ -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
 
 /*
index 895095231a4141f6e2b264ecf9e00a248ea79c52..a119c5975c2872cf3aa05c70433785f5d858e462 100644 (file)
@@ -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 :-(
index 853774c7858f4c02d80a2dbc04029ddee03bee98..c52c7e75862de163505530cc8be3e05cf0740572 100644 (file)
@@ -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);
 
index fb6b989378e4ce4404e33ef5beccb3a5c226fdda..e7f36d0c4ce00226eb5ddbceb887c2ce9fb0f890 100644 (file)
@@ -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 );
 
index 0f80c3f2a98c0c7b89b7a1f6ac5234c70bb84df4..21dbab1dec3c9a3d765d22bd707969e36709924b 100644 (file)
@@ -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;
index 714956eaef2675d124796b3f7a5ea408c6089c3f..b8bba6c69b86da45062810a37f83bf5babc63ff0 100644 (file)
@@ -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 );
index fb6b989378e4ce4404e33ef5beccb3a5c226fdda..e7f36d0c4ce00226eb5ddbceb887c2ce9fb0f890 100644 (file)
@@ -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 );
 
index 0f80c3f2a98c0c7b89b7a1f6ac5234c70bb84df4..21dbab1dec3c9a3d765d22bd707969e36709924b 100644 (file)
@@ -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;
index 714956eaef2675d124796b3f7a5ea408c6089c3f..b8bba6c69b86da45062810a37f83bf5babc63ff0 100644 (file)
@@ -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 );