X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5eefe029764003751db7998a92f0645765c6e6c7..82df62ef8e55adf38221afc82439edeed4fe3368:/src/gtk/renderer.cpp?ds=sidebyside diff --git a/src/gtk/renderer.cpp b/src/gtk/renderer.cpp index 133f7af1cf..2802f9274a 100644 --- a/src/gtk/renderer.cpp +++ b/src/gtk/renderer.cpp @@ -47,6 +47,7 @@ public: 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 @@ -185,11 +186,16 @@ wxRendererGTK::DrawHeaderButton(wxWindow *win, 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; @@ -197,9 +203,7 @@ wxRendererGTK::DrawHeaderButton(wxWindow *win, 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, @@ -208,7 +212,7 @@ wxRendererGTK::DrawHeaderButton(wxWindow *win, 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 @@ -218,6 +222,10 @@ wxRendererGTK::DrawTreeItemButton(wxWindow* win, { 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; @@ -227,18 +235,18 @@ wxRendererGTK::DrawTreeItemButton(wxWindow* win, 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 @@ -297,6 +305,10 @@ wxRendererGTK::DrawSplitterSash(wxWindow *win, 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? @@ -330,7 +342,7 @@ wxRendererGTK::DrawSplitterSash(wxWindow *win, 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 */, @@ -345,7 +357,7 @@ wxRendererGTK::DrawSplitterSash(wxWindow *win, } void -wxRendererGTK::DrawDropArrow(wxWindow *win, +wxRendererGTK::DrawDropArrow(wxWindow *WXUNUSED(win), wxDC& dc, const wxRect& rect, int flags) @@ -357,11 +369,9 @@ wxRendererGTK::DrawDropArrow(wxWindow *win, // 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 @@ -388,7 +398,7 @@ wxRendererGTK::DrawDropArrow(wxWindow *win, gtk_paint_arrow ( button->style, - wdc.m_window, + gdk_window, state, flags & wxCONTROL_PRESSED ? GTK_SHADOW_IN : GTK_SHADOW_OUT, NULL, @@ -414,7 +424,7 @@ wxRendererGTK::DrawComboBoxDropButton(wxWindow *win, } void -wxRendererGTK::DrawCheckBox(wxWindow *win, +wxRendererGTK::DrawCheckBox(wxWindow *WXUNUSED(win), wxDC& dc, const wxRect& rect, int flags ) @@ -422,8 +432,9 @@ wxRendererGTK::DrawCheckBox(wxWindow *win, 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; @@ -439,7 +450,7 @@ wxRendererGTK::DrawCheckBox(wxWindow *win, gtk_paint_check ( button->style, - wdc.m_window, + gdk_window, state, flags & wxCONTROL_CHECKED ? GTK_SHADOW_IN : GTK_SHADOW_OUT, NULL, @@ -452,7 +463,7 @@ wxRendererGTK::DrawCheckBox(wxWindow *win, } void -wxRendererGTK::DrawPushButton(wxWindow *win, +wxRendererGTK::DrawPushButton(wxWindow *WXUNUSED(win), wxDC& dc, const wxRect& rect, int flags) @@ -460,8 +471,9 @@ wxRendererGTK::DrawPushButton(wxWindow *win, 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; @@ -478,7 +490,7 @@ wxRendererGTK::DrawPushButton(wxWindow *win, gtk_paint_box ( button->style, - wdc.m_window, + gdk_window, state, flags & wxCONTROL_PRESSED ? GTK_SHADOW_IN : GTK_SHADOW_OUT, NULL, @@ -494,6 +506,10 @@ wxRendererGTK::DrawItemSelectionRect(wxWindow *win, 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) { @@ -503,7 +519,7 @@ wxRendererGTK::DrawItemSelectionRect(wxWindow *win, state = GTK_STATE_INSENSITIVE; gtk_paint_flat_box( win->m_wxwindow->style, - GTK_PIZZA(win->m_wxwindow)->bin_window, + gdk_window, state, GTK_SHADOW_NONE, NULL,