+void
+wxRendererGTK::DrawComboBoxDropButton(wxWindow *win,
+ wxDC& dc,
+ const wxRect& rect,
+ int flags)
+{
+ DrawPushButton(win,dc,rect,flags);
+ DrawDropArrow(win,dc,rect);
+}
+
+void
+wxRendererGTK::DrawCheckBox(wxWindow *WXUNUSED(win),
+ wxDC& dc,
+ const wxRect& rect,
+ int flags )
+{
+ GtkWidget *button = GetCheckButtonWidget();
+
+ // for reason why we do this, see DrawDropArrow
+ GdkWindow* gdk_window = dc.GetGDKWindow();
+ wxASSERT_MSG( gdk_window,
+ wxT("cannot use wxRendererNative on wxDC of this type") );
+
+ GtkStateType state;
+
+ if ( flags & wxCONTROL_PRESSED )
+ state = GTK_STATE_ACTIVE;
+ else if ( flags & wxCONTROL_DISABLED )
+ state = GTK_STATE_INSENSITIVE;
+ else if ( flags & wxCONTROL_CURRENT )
+ state = GTK_STATE_PRELIGHT;
+ else
+ state = GTK_STATE_NORMAL;
+
+ gtk_paint_check
+ (
+ button->style,
+ gdk_window,
+ state,
+ flags & wxCONTROL_CHECKED ? GTK_SHADOW_IN : GTK_SHADOW_OUT,
+ NULL,
+ button,
+ "cellcheck",
+ dc.LogicalToDeviceX(rect.x)+2,
+ dc.LogicalToDeviceY(rect.y)+3,
+ 13, 13
+ );
+}
+
+void
+wxRendererGTK::DrawPushButton(wxWindow *WXUNUSED(win),
+ wxDC& dc,
+ const wxRect& rect,
+ int flags)
+{
+ GtkWidget *button = GetButtonWidget();
+
+ // for reason why we do this, see DrawDropArrow
+ GdkWindow* gdk_window = dc.GetGDKWindow();
+ wxASSERT_MSG( gdk_window,
+ wxT("cannot use wxRendererNative on wxDC of this type") );
+
+ // draw button
+ GtkStateType state;
+
+ if ( flags & wxCONTROL_PRESSED )
+ state = GTK_STATE_ACTIVE;
+ else if ( flags & wxCONTROL_DISABLED )
+ state = GTK_STATE_INSENSITIVE;
+ else if ( flags & wxCONTROL_CURRENT )
+ state = GTK_STATE_PRELIGHT;
+ else
+ state = GTK_STATE_NORMAL;
+
+ gtk_paint_box
+ (
+ button->style,
+ gdk_window,
+ state,
+ flags & wxCONTROL_PRESSED ? GTK_SHADOW_IN : GTK_SHADOW_OUT,
+ NULL,
+ button,
+ "button",
+ rect.x, rect.y, rect.width, rect.height
+ );
+}
+
+void
+wxRendererGTK::DrawItemSelectionRect(wxWindow *win,
+ wxDC& dc,
+ const wxRect& rect,
+ int flags )
+{
+ GdkWindow* gdk_window = dc.GetGDKWindow();
+ wxASSERT_MSG( gdk_window,
+ wxT("cannot use wxRendererNative on wxDC of this type") );
+
+ GtkStateType state;
+ if (flags & wxCONTROL_SELECTED)
+ {
+ if (flags & wxCONTROL_FOCUSED)
+ state = GTK_STATE_SELECTED;
+ else
+ state = GTK_STATE_INSENSITIVE;
+
+ gtk_paint_flat_box( win->m_wxwindow->style,
+ gdk_window,
+ state,
+ GTK_SHADOW_NONE,
+ NULL,
+ win->m_wxwindow,
+ "treeview",
+ dc.LogicalToDeviceX(rect.x),
+ dc.LogicalToDeviceY(rect.y),
+ rect.width,
+ rect.height );
+ }
+
+ if (flags & wxCONTROL_CURRENT)
+ {
+ dc.SetPen( *wxBLACK_PEN );
+ dc.SetBrush( *wxTRANSPARENT_BRUSH );
+ dc.DrawRectangle( rect );
+ }
+}