wxDC& dc,
const wxRect& rect,
int flags = 0,
+ wxHeaderSortIconType sortArrow = wxHDR_SORT_ICON_NONE,
wxHeaderButtonParams* params = NULL);
// draw the expanded/collapsed icon for a tree control item
wxDC& dc,
const wxRect& rect,
int flags,
+ wxHeaderSortIconType sortArrow,
wxHeaderButtonParams* params)
{
GtkWidget *button = GetButtonWidget();
+ GdkWindow* gdk_window = dc.GetGDKWindow();
+ wxASSERT_MSG( gdk_window,
+ wxT("cannot use wxRendererNative on wxDC of this type") );
+
int x_diff = 0;
if (win->GetLayoutDirection() == wxLayout_RightToLeft)
x_diff = rect.width;
gtk_paint_box
(
button->style,
- // FIXME: I suppose GTK_PIZZA(win->m_wxwindow)->bin_window doesn't work with wxMemoryDC.
- // Maybe use code similar as in DrawPushButton below?
- GTK_PIZZA(win->m_wxwindow)->bin_window,
+ gdk_window,
flags & wxCONTROL_DISABLED ? GTK_STATE_INSENSITIVE : GTK_STATE_NORMAL,
GTK_SHADOW_OUT,
NULL,
dc.LogicalToDeviceX(rect.x) - x_diff, rect.y, rect.width, rect.height
);
- DrawHeaderButtonContents(win, dc, rect, flags, params);
+ DrawHeaderButtonContents(win, dc, rect, flags, sortArrow, params);
}
// draw a ">" or "v" button
{
GtkWidget *tree = GetTreeWidget();
+ GdkWindow* gdk_window = dc.GetGDKWindow();
+ wxASSERT_MSG( gdk_window,
+ wxT("cannot use wxRendererNative on wxDC of this type") );
+
GtkStateType state;
if ( flags & wxCONTROL_CURRENT )
state = GTK_STATE_PRELIGHT;
int x_diff = 0;
if (win->GetLayoutDirection() == wxLayout_RightToLeft)
x_diff = rect.width;
-
+
// VZ: I don't know how to get the size of the expander so as to centre it
// in the given rectangle, +2/3 below is just what looks good here...
gtk_paint_expander
(
tree->style,
- GTK_PIZZA(win->m_wxwindow)->bin_window,
+ gdk_window,
state,
NULL,
tree,
"treeview",
- dc.LogicalToDeviceX(rect.x) + 2 - x_diff,
+ dc.LogicalToDeviceX(rect.x) + 6 - x_diff,
dc.LogicalToDeviceY(rect.y) + 3,
flags & wxCONTROL_EXPANDED ? GTK_EXPANDER_EXPANDED
: GTK_EXPANDER_COLLAPSED
return;
}
+ GdkWindow* gdk_window = dc.GetGDKWindow();
+ wxASSERT_MSG( gdk_window,
+ wxT("cannot use wxRendererNative on wxDC of this type") );
+
wxCoord full_size = GetGtkSplitterFullSize();
// are we drawing vertical or horizontal splitter?
gtk_paint_handle
(
win->m_wxwindow->style,
- GTK_PIZZA(win->m_wxwindow)->bin_window,
+ gdk_window,
flags & wxCONTROL_CURRENT ? GTK_STATE_PRELIGHT : GTK_STATE_NORMAL,
GTK_SHADOW_NONE,
NULL /* no clipping */,
}
void
-wxRendererGTK::DrawDropArrow(wxWindow *win,
+wxRendererGTK::DrawDropArrow(wxWindow *WXUNUSED(win),
wxDC& dc,
const wxRect& rect,
int flags)
// work for wxMemoryDC. So that is why we assume wxDC
// is wxWindowDC (wxClientDC, wxMemoryDC and wxPaintDC
// are derived from it) and use its m_window.
- wxWindowDC& wdc = (wxWindowDC&)dc;
-
- // only doing debug-time checking here (it should
- // probably be enough)
- wxASSERT ( wdc.IsKindOf(CLASSINFO(wxWindowDC)) );
+ GdkWindow* gdk_window = dc.GetGDKWindow();
+ wxASSERT_MSG( gdk_window,
+ wxT("cannot use wxRendererNative on wxDC of this type") );
// draw arrow so that there is even space horizontally
// on both sides
gtk_paint_arrow
(
button->style,
- wdc.m_window,
+ gdk_window,
state,
flags & wxCONTROL_PRESSED ? GTK_SHADOW_IN : GTK_SHADOW_OUT,
NULL,
}
void
-wxRendererGTK::DrawCheckBox(wxWindow *win,
+wxRendererGTK::DrawCheckBox(wxWindow *WXUNUSED(win),
wxDC& dc,
const wxRect& rect,
int flags )
GtkWidget *button = GetCheckButtonWidget();
// for reason why we do this, see DrawDropArrow
- wxWindowDC& wdc = (wxWindowDC&)dc;
- wxASSERT ( wdc.IsKindOf(CLASSINFO(wxWindowDC)) );
+ GdkWindow* gdk_window = dc.GetGDKWindow();
+ wxASSERT_MSG( gdk_window,
+ wxT("cannot use wxRendererNative on wxDC of this type") );
GtkStateType state;
gtk_paint_check
(
button->style,
- wdc.m_window,
+ gdk_window,
state,
flags & wxCONTROL_CHECKED ? GTK_SHADOW_IN : GTK_SHADOW_OUT,
NULL,
}
void
-wxRendererGTK::DrawPushButton(wxWindow *win,
+wxRendererGTK::DrawPushButton(wxWindow *WXUNUSED(win),
wxDC& dc,
const wxRect& rect,
int flags)
GtkWidget *button = GetButtonWidget();
// for reason why we do this, see DrawDropArrow
- wxWindowDC& wdc = (wxWindowDC&)dc;
- wxASSERT ( wdc.IsKindOf(CLASSINFO(wxWindowDC)) );
+ GdkWindow* gdk_window = dc.GetGDKWindow();
+ wxASSERT_MSG( gdk_window,
+ wxT("cannot use wxRendererNative on wxDC of this type") );
// draw button
GtkStateType state;
gtk_paint_box
(
button->style,
- wdc.m_window,
+ gdk_window,
state,
flags & wxCONTROL_PRESSED ? GTK_SHADOW_IN : GTK_SHADOW_OUT,
NULL,
const wxRect& rect,
int flags )
{
+ GdkWindow* gdk_window = dc.GetGDKWindow();
+ wxASSERT_MSG( gdk_window,
+ wxT("cannot use wxRendererNative on wxDC of this type") );
+
+ int x_diff = 0;
+ if (win->GetLayoutDirection() == wxLayout_RightToLeft)
+ x_diff = rect.width;
+
GtkStateType state;
if (flags & wxCONTROL_SELECTED)
{
- if (flags & wxCONTROL_FOCUSED)
- state = GTK_STATE_SELECTED;
- else
- state = GTK_STATE_INSENSITIVE;
+ // the wxCONTROL_FOCUSED state is deduced
+ // directly from the m_wxwindow by GTK+
+ state = GTK_STATE_SELECTED;
- gtk_paint_flat_box( win->m_wxwindow->style,
- GTK_PIZZA(win->m_wxwindow)->bin_window,
+ gtk_paint_flat_box( win->m_widget->style,
+ gdk_window,
state,
GTK_SHADOW_NONE,
NULL,
win->m_wxwindow,
- "treeview",
- dc.LogicalToDeviceX(rect.x),
+ "cell_even",
+ dc.LogicalToDeviceX(rect.x) - x_diff,
dc.LogicalToDeviceY(rect.y),
rect.width,
rect.height );
if (flags & wxCONTROL_CURRENT)
{
- dc.SetPen( *wxBLACK_PEN );
- dc.SetBrush( *wxTRANSPARENT_BRUSH );
- dc.DrawRectangle( rect );
+ gtk_paint_focus( win->m_widget->style,
+ gdk_window,
+ GTK_STATE_SELECTED,
+ NULL,
+ win->m_wxwindow,
+ "treeview",
+ dc.LogicalToDeviceX(rect.x),
+ dc.LogicalToDeviceY(rect.y),
+ rect.width,
+ rect.height );
}
}