]> git.saurik.com Git - wxWidgets.git/commitdiff
Add ability to render checkbox in undeterminate state, fixes #12290: wxRendererGTK...
authorRobert Roebling <robert@roebling.de>
Thu, 29 Jul 2010 16:57:09 +0000 (16:57 +0000)
committerRobert Roebling <robert@roebling.de>
Thu, 29 Jul 2010 16:57:09 +0000 (16:57 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65139 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

samples/render/render.cpp
src/gtk/renderer.cpp

index c5833775490574bfc592e43fce877d9bf98ceadd..db50a5663b456fd821e3ec9acd1f7031ba3a4fce 100644 (file)
@@ -124,6 +124,8 @@ private:
         { OnToggleDrawFlag(event, wxCONTROL_CHECKED); }
     void OnDrawHot(wxCommandEvent& event)
         { OnToggleDrawFlag(event, wxCONTROL_CURRENT); }
+    void OnDrawUndetermined(wxCommandEvent &event)
+        { OnToggleDrawFlag(event, wxCONTROL_UNDETERMINED); }
 
     void OnAlignLeft(wxCommandEvent& WXUNUSED(event))
         { OnChangeAlign(wxALIGN_LEFT); }
@@ -195,6 +197,8 @@ private:
             flagsString += "wxCONTROL_CURRENT ";
         if ( m_flags & wxCONTROL_CHECKED )
             flagsString += "wxCONTROL_CHECKED ";
+        if ( m_flags & wxCONTROL_UNDETERMINED )
+            flagsString += "wxCONTROL_UNDETERMINED ";
         if ( flagsString.empty() )
             flagsString = "(none)";
         dc.DrawText("Using flags: " + flagsString, x1, y);
@@ -291,6 +295,7 @@ enum
     Render_DrawPressed,
     Render_DrawChecked,
     Render_DrawHot,
+    Render_DrawUndetermined,
 
     Render_AlignLeft,
     Render_AlignCentre,
@@ -326,7 +331,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
     EVT_MENU(Render_DrawPressed, MyFrame::OnDrawPressed)
     EVT_MENU(Render_DrawChecked, MyFrame::OnDrawChecked)
     EVT_MENU(Render_DrawHot, MyFrame::OnDrawHot)
-
+    EVT_MENU(Render_DrawUndetermined, MyFrame::OnDrawUndetermined)
     EVT_MENU(Render_AlignLeft, MyFrame::OnAlignLeft)
     EVT_MENU(Render_AlignCentre, MyFrame::OnAlignCentre)
     EVT_MENU(Render_AlignRight, MyFrame::OnAlignRight)
@@ -405,6 +410,8 @@ MyFrame::MyFrame()
                               "Draw in &checked state\tCtrl-C");
     menuFile->AppendCheckItem(Render_DrawHot,
                               "Draw in &hot state\tCtrl-H");
+    menuFile->AppendCheckItem(Render_DrawUndetermined,
+                              "Draw in unde&termined state\tCtrl-T");
     menuFile->AppendSeparator();
 
     menuFile->AppendRadioItem(Render_AlignLeft, "&Left align\tCtrl-1");
index d859f6846b1556dc242fa7e364c1177ed6e01614..c905ae8fc056ec546baa8f5f5801eb1e4a0c5218 100644 (file)
@@ -469,12 +469,21 @@ wxRendererGTK::DrawCheckBox(wxWindow* win,
     else
         state = GTK_STATE_NORMAL;
 
+    GtkShadowType shadow_type;
+
+    if ( flags & wxCONTROL_UNDETERMINED )
+        shadow_type = GTK_SHADOW_ETCHED_IN;
+    else if ( flags & wxCONTROL_CHECKED )
+        shadow_type = GTK_SHADOW_IN;
+    else
+        shadow_type = GTK_SHADOW_OUT;
+
     gtk_paint_check
     (
         button->style,
         gdk_window,
         state,
-        flags & wxCONTROL_CHECKED ? GTK_SHADOW_IN : GTK_SHADOW_OUT,
+        shadow_type,
         NULL,
         button,
         "cellcheck",