[Libreoffice-commits] .: vcl/unx

Lubos Lunak llunak at kemper.freedesktop.org
Fri Feb 25 10:43:26 PST 2011


 vcl/unx/kde4/KDESalGraphics.cxx |   23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

New commits:
commit 9f588950a1f5f87c597826c037cc4a7d73c5bace
Author: Luboš Luňák <l.lunak at suse.cz>
Date:   Fri Feb 25 19:42:38 2011 +0100

    some fixes for checkboxes and radiobuttons in popups (bnc#581833)

diff --git a/vcl/unx/kde4/KDESalGraphics.cxx b/vcl/unx/kde4/KDESalGraphics.cxx
index 2978a64..84465f3 100644
--- a/vcl/unx/kde4/KDESalGraphics.cxx
+++ b/vcl/unx/kde4/KDESalGraphics.cxx
@@ -341,7 +341,6 @@ BOOL KDESalGraphics::drawNativeControl( ControlType type, ControlPart part,
     }
     m_image->fill(KApplication::palette().color(QPalette::Window).rgb());
     
-    
     QRegion* clipRegion = NULL;
 
     if (type == CTRL_PUSHBUTTON)
@@ -367,24 +366,32 @@ BOOL KDESalGraphics::drawNativeControl( ControlType type, ControlPart part,
         }
     }
     else if (type == CTRL_MENU_POPUP)
-    {		
+    {
         if (part == PART_MENU_ITEM)
         {
             QStyleOptionMenuItem option;
             draw( QStyle::CE_MenuItem, &option, m_image, 
                   vclStateValue2StateFlag(nControlState, value) );
         }
-        else if (part == PART_MENU_ITEM_CHECK_MARK && (nControlState & CTRL_STATE_PRESSED) )
+        else if (part == PART_MENU_ITEM_CHECK_MARK)
         {
-            QStyleOptionButton option;
-            draw( QStyle::PE_IndicatorMenuCheckMark, &option, m_image, 
-                  vclStateValue2StateFlag(nControlState, value) );
+            m_image->fill(Qt::transparent);
+            if(nControlState & CTRL_STATE_PRESSED) // at least Oxygen paints always as checked
+            {
+                QStyleOptionButton option;
+                draw( QStyle::PE_IndicatorMenuCheckMark, &option, m_image,
+                      vclStateValue2StateFlag(nControlState, value));
+            }
         }
-        else if (part == PART_MENU_ITEM_RADIO_MARK && (nControlState & CTRL_STATE_PRESSED) )
+        else if (part == PART_MENU_ITEM_RADIO_MARK)
         {
+            m_image->fill(Qt::transparent);
             QStyleOptionButton option;
+            // we get always passed BUTTONVALUE_DONTKNOW in 'value', and the checked
+            // state is actually CTRL_STATE_PRESSED
+            QStyle::State set = ( nControlState & CTRL_STATE_PRESSED ) ? QStyle::State_On : QStyle::State_Off;
             draw( QStyle::PE_IndicatorRadioButton, &option, m_image,
-                  vclStateValue2StateFlag(nControlState, value) );
+                  vclStateValue2StateFlag(nControlState, value) | set );
         }
         else
         {


More information about the Libreoffice-commits mailing list