vcl/inc/unx/gtk/gtkgdi.hxx                    |    4 ++
 vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx |   39 ++++++++++++++++++--------
 2 files changed, 32 insertions(+), 11 deletions(-)

New commits:
commit cc06e7b6b8b73ae68a2eea72d94c6f45c9fbf497
Author: Ivan Timofeev <timofeev....@gmail.com>
Date:   Mon Jul 1 21:29:29 2013 +0400

    gtk3: for checkbox map BUTTONVALUE_MIXED to GTK_STATE_FLAG_INCONSISTENT
    
    Change-Id: I5f5810a1e2dc56afb0fba7fde20a383980e3ba51

diff --git a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx 
b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
index 1821cbe..350d1e9 100644
--- a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
+++ b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
@@ -853,7 +853,9 @@ sal_Bool GtkSalGraphics::drawNativeControl( ControlType 
nType, ControlPart nPart
         break;
     case CTRL_CHECKBOX:
         flags = (GtkStateFlags)(flags |
-                ( (aValue.getTristateVal() == BUTTONVALUE_ON) ? 
GTK_STATE_FLAG_ACTIVE : GTK_STATE_FLAG_NORMAL));
+                ( (aValue.getTristateVal() == BUTTONVALUE_ON) ? 
GTK_STATE_FLAG_ACTIVE :
+                  (aValue.getTristateVal() == BUTTONVALUE_MIXED) ? 
GTK_STATE_FLAG_INCONSISTENT :
+                  GTK_STATE_FLAG_NORMAL));
         context = mpCheckButtonStyle;
         styleClass = GTK_STYLE_CLASS_CHECK;
         renderType = RENDER_CHECK;
commit 76c9d45ccf8480f8b73815607ff8701a3d41a649
Author: Ivan Timofeev <timofeev....@gmail.com>
Date:   Mon Jul 1 21:24:25 2013 +0400

    gtk3: add indicator-spacing to size of checkbox/radiobutton
    
    Change-Id: Ifea43607c8cd5a8047796b7d2efdf14289b029e2

diff --git a/vcl/inc/unx/gtk/gtkgdi.hxx b/vcl/inc/unx/gtk/gtkgdi.hxx
index 4d5ff7c..912e27e 100644
--- a/vcl/inc/unx/gtk/gtkgdi.hxx
+++ b/vcl/inc/unx/gtk/gtkgdi.hxx
@@ -103,6 +103,10 @@ private:
                         ControlType nType,
                         ControlPart nPart,
                         const ImplControlValue& aValue );
+    void PaintCheckOrRadio(GtkStyleContext *context,
+                           cairo_t *cr,
+                           const Rectangle& rControlRectangle,
+                           ControlType nType);
 
     static bool style_loaded;
 };
diff --git a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx 
b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
index 3448615..1821cbe 100644
--- a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
+++ b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
@@ -751,6 +751,24 @@ void GtkSalGraphics::PaintCombobox( GtkStyleContext 
*context,
                      arrowRect.GetWidth() );
 }
 
+void GtkSalGraphics::PaintCheckOrRadio(GtkStyleContext *context,
+                                       cairo_t *cr,
+                                       const Rectangle& rControlRectangle,
+                                       ControlType nType)
+{
+    gint x, y, indicator_size;
+    gtk_style_context_get_style(mpCheckButtonStyle,
+                                "indicator-size", &indicator_size,
+                                NULL );
+
+    x = (rControlRectangle.GetWidth() - indicator_size) / 2;
+    y = (rControlRectangle.GetHeight() - indicator_size) / 2;
+    if (nType == CTRL_CHECKBOX)
+        gtk_render_check(context, cr, x, y, indicator_size, indicator_size);
+    else if (nType == CTRL_RADIOBUTTON)
+        gtk_render_option(context, cr, x, y, indicator_size, indicator_size);
+}
+
 sal_Bool GtkSalGraphics::drawNativeControl( ControlType nType, ControlPart 
nPart, const Rectangle& rControlRegion,
                                             ControlState nState, const 
ImplControlValue& aValue,
                                             const OUString& )
@@ -891,14 +909,8 @@ sal_Bool GtkSalGraphics::drawNativeControl( ControlType 
nType, ControlPart nPart
                              rControlRegion.GetWidth(), 
rControlRegion.GetHeight());
         break;
     case RENDER_CHECK:
-        gtk_render_check(context, cr,
-                         0, 0,
-                         rControlRegion.GetWidth(), 
rControlRegion.GetHeight());
-        break;
     case RENDER_RADIO:
-        gtk_render_option(context, cr,
-                          0, 0,
-                          rControlRegion.GetWidth(), 
rControlRegion.GetHeight());
+        PaintCheckOrRadio(context, cr, rControlRegion, nType);
         break;
     case RENDER_LINE:
         gtk_render_line(context, cr,
@@ -982,18 +994,21 @@ sal_Bool GtkSalGraphics::getNativeControlRegion( 
ControlType nType, ControlPart
 {
     /* TODO: all this funcions needs improvements */
     Rectangle aEditRect = rControlRegion;
-    gint indicator_size, point;
+    gint indicator_size, indicator_spacing, point;
 
     if(((nType == CTRL_CHECKBOX) || (nType == CTRL_RADIOBUTTON)) &&
        nPart == PART_ENTIRE_CONTROL)
     {
         gtk_style_context_get_style( mpCheckButtonStyle,
                                      "indicator-size", &indicator_size,
+                                     "indicator-spacing", &indicator_spacing,
                                      (char *)NULL );
 
-        point = MAX(0, rControlRegion.GetHeight() - indicator_size);
+        gint size = indicator_size + indicator_spacing*2;
+
+        point = MAX(0, rControlRegion.GetHeight() - size);
         aEditRect = Rectangle( Point( 0, point / 2),
-                               Size( indicator_size, indicator_size ) );
+                               Size( size, size ) );
     }
     else if( nType == CTRL_MENU_POPUP)
     {
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to