vcl/inc/unx/gtk/gtkgdi.hxx | 1 vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx | 35 +++++++++++++++++++------- 2 files changed, 27 insertions(+), 9 deletions(-)
New commits: commit 426915d4418266817258b837ddb830a1b78fa151 Author: Lucas Baudin <xapa...@gmail.com> Date: Fri Oct 21 22:21:39 2011 +0200 gtk3: Use CheckBox style (there is still a problem with the hover stage) diff --git a/vcl/inc/unx/gtk/gtkgdi.hxx b/vcl/inc/unx/gtk/gtkgdi.hxx index 589a109..6ca6c47 100644 --- a/vcl/inc/unx/gtk/gtkgdi.hxx +++ b/vcl/inc/unx/gtk/gtkgdi.hxx @@ -71,6 +71,7 @@ private: GtkStyleContext *mpScrollbarStyle; GtkStyleContext *mpToolbarStyle; GtkStyleContext *mpToolButtonStyle; + GtkStyleContext *mpCheckButtonStyle; void renderAreaToPix( cairo_t* cr, cairo_rectangle_t* rect ); void drawStyleContext( GtkStyleContext* style, GtkStateFlags flags, const Rectangle& rControlRegion, bool render_background = true ); diff --git a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx index 6058924..b021036 100644 --- a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx +++ b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx @@ -96,19 +96,28 @@ void GtkSalGraphics::drawStyleContext( GtkStyleContext* style, GtkStateFlags fla gtk_style_context_set_state(style, flags); - gtk_render_background(style, cr, - 1, 1, - rControlRegion.GetWidth(), rControlRegion.GetHeight()); - gtk_render_frame(style, cr, - 1, 1, - rControlRegion.GetWidth(), rControlRegion.GetHeight()); + if(!(style == mpCheckButtonStyle)) + { + gtk_render_background(style, cr, + 1, 1, + rControlRegion.GetWidth(), rControlRegion.GetHeight()); + gtk_render_frame(style, cr, + 1, 1, + rControlRegion.GetWidth(), rControlRegion.GetHeight()); + } + else + { + gtk_render_check(style, cr, + 1, 1, + rControlRegion.GetWidth(), rControlRegion.GetHeight()); + } renderAreaToPix(cr, &rect); cairo_destroy(cr); } sal_Bool GtkSalGraphics::drawNativeControl( ControlType nType, ControlPart nPart, const Rectangle& rControlRegion, - ControlState nState, const ImplControlValue&, + ControlState nState, const ImplControlValue& aValue, const rtl::OUString& ) { GtkStateFlags flags; @@ -131,6 +140,10 @@ sal_Bool GtkSalGraphics::drawNativeControl( ControlType nType, ControlPart nPart return sal_True; } break; + case CTRL_CHECKBOX: + flags = (GtkStateFlags)(flags | ( (aValue.getTristateVal() == BUTTONVALUE_ON) ? GTK_STATE_FLAG_ACTIVE : GTK_STATE_FLAG_NORMAL)); + drawStyleContext(mpCheckButtonStyle, flags, rControlRegion); + return sal_True; case CTRL_PUSHBUTTON: drawStyleContext(mpButtonStyle, flags, rControlRegion); return sal_True; @@ -502,7 +515,10 @@ void GtkSalGraphics::updateSettings( AllSettings& rSettings ) sal_Bool GtkSalGraphics::IsNativeControlSupported( ControlType nType, ControlPart nPart ) { - if((nType == CTRL_PUSHBUTTON && nPart == PART_ENTIRE_CONTROL) || nType == CTRL_SCROLLBAR || nType == CTRL_EDITBOX /*|| + if( (nType == CTRL_PUSHBUTTON && nPart == PART_ENTIRE_CONTROL) + || (nType == CTRL_CHECKBOX && nPart == PART_ENTIRE_CONTROL) + || nType == CTRL_SCROLLBAR + || nType == CTRL_EDITBOX /*|| segfault with recent code, needs investigating nType == CTRL_TOOLBAR*/ ) return sal_True; return sal_False; @@ -538,6 +554,8 @@ GtkSalGraphics::GtkSalGraphics( GtkSalFrame *pFrame, GtkWidget *pWindow ) getStyleContext(&mpToolButtonStyle, GTK_WIDGET(toolbutton)); gtk_style_context_add_class(mpToolButtonStyle, "button"); /* TODO */ getStyleContext(&mpScrollbarStyle, gtk_vscrollbar_new(NULL)); + getStyleContext(&mpCheckButtonStyle, gtk_check_button_new()); + gtk_style_context_add_class(mpCheckButtonStyle, "check"); } @@ -567,7 +585,6 @@ void GtkSalGraphics::copyArea( long nDestX, long nDestY, long nSrcWidth, long nSrcHeight, sal_uInt16 nFlags ) { - return; mpFrame->pushIgnoreDamage(); SvpSalGraphics::copyArea( nDestX, nDestY, nSrcX, nSrcY, nSrcWidth, nSrcHeight, nFlags ); mpFrame->popIgnoreDamage(); _______________________________________________ Libreoffice-commits mailing list Libreoffice-commits@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits