From: Robert Roebling Date: Thu, 29 Jul 2010 16:57:09 +0000 (+0000) Subject: Add ability to render checkbox in undeterminate state, fixes #12290: wxRendererGTK... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/e78778c8e2d82897664643339a88e7e5599bd2d6 Add ability to render checkbox in undeterminate state, fixes #12290: wxRendererGTK does not support wx.CONTROL_UNDETERMINED for checkboxes git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65139 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/samples/render/render.cpp b/samples/render/render.cpp index c583377549..db50a5663b 100644 --- a/samples/render/render.cpp +++ b/samples/render/render.cpp @@ -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"); diff --git a/src/gtk/renderer.cpp b/src/gtk/renderer.cpp index d859f6846b..c905ae8fc0 100644 --- a/src/gtk/renderer.cpp +++ b/src/gtk/renderer.cpp @@ -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",