14.12.2011 17:01, Michael Meeks пишет:
On Wed, 2011-12-14 at 15:32 +0400, Ivan Timofeev wrote:
If I understood you right, the MENU_FLAG_SHOWCHECKIMAGES flag was
introduced to control whether a simple check mark [x] or an image should
be painted with a checkable menu item; if it is so, it don't work anyway.
But may be I missed some piece of logic again :)

        So - you're right; sorry for the noise ! :-) How does it look with your
fix in place ? :-)

see the attaches :)

I've tweaked menu.cxx a bit and have added "Checkable = TRUE ; \" to some (not all) indigent menu items in sw/source/ui/app/mn.src, don't know whether this is a right solution. If so, we should very carefully visit all such src files.

And somehow we should enable MENU_FLAG_SHOWCHECKIMAGES for win I think. I have not enough time to do that now, crazy pre-session weeks have started! :)

Regards,
Ivan

<<attachment: refined-menu.png>>

diff --git a/sw/source/ui/app/mn.src b/sw/source/ui/app/mn.src
index edcaa8e..71d72ee 100644
--- a/sw/source/ui/app/mn.src
+++ b/sw/source/ui/app/mn.src
@@ -76,41 +76,50 @@
             {\
                 MenuItem\
                 {\
+                    Checkable = TRUE ; \
                     ITEM_FORMAT_ATTR_CHAR_WEIGHT\
                 };\
                 MenuItem\
                 {\
+                    Checkable = TRUE ; \
                     ITEM_FORMAT_ATTR_CHAR_POSTURE\
                 };\
                 MenuItem\
                 {\
+                    Checkable = TRUE ; \
                     ITEM_FORMAT_ATTR_CHAR_OVERLINE\
                 };\
                 MenuItem\
                 {\
+                    Checkable = TRUE ; \
                     ITEM_FORMAT_ATTR_CHAR_UNDERLINE\
                 };\
                 MenuItem\
                 {\
+                    Checkable = TRUE ; \
                     ITEM_FORMAT_ATTR_CHAR_STRIKEOUT\
                 };\
                 MenuItem\
                 {\
+                    Checkable = TRUE ; \
                     ITEM_FORMAT_ATTR_CHAR_SHADOWED\
                 };\
                 MenuItem\
                 {\
+                    Checkable = TRUE ; \
                     ITEM_FORMAT_ATTR_CHAR_CONTOUR\
                 };\
                 SEPARATOR ; \
                 MenuItem\
                 {\
+                    Checkable = TRUE ; \
                     Identifier = FN_SET_SUPER_SCRIPT ; \
                     HelpId = CMD_FN_SET_SUPER_SCRIPT ; \
                     Text [ en-US ] = "Superscript" ; \
                 };\
                 MenuItem\
                 {\
+                    Checkable = TRUE ; \
                     Identifier = FN_SET_SUB_SCRIPT ; \
                     HelpId = CMD_FN_SET_SUB_SCRIPT ; \
                     Text [ en-US ] = "Subscript" ; \
@@ -1141,18 +1150,22 @@ Menu MN_ANNOTATION_POPUPMENU
     {
         MenuItem\
                 {\
+                    Checkable = TRUE ;\
                     ITEM_FORMAT_ATTR_CHAR_WEIGHT\
                 };\
                 MenuItem\
                 {\
+                    Checkable = TRUE ;\
                     ITEM_FORMAT_ATTR_CHAR_POSTURE\
                 };\
                 MenuItem\
                 {\
+                    Checkable = TRUE ;\
                     ITEM_FORMAT_ATTR_CHAR_UNDERLINE\
                 };\
                 MenuItem\
                 {\
+                    Checkable = TRUE ;\
                     ITEM_FORMAT_ATTR_CHAR_STRIKEOUT\
                 };\
         SEPARATOR ;
diff --git a/vcl/source/window/menu.cxx b/vcl/source/window/menu.cxx
index e143dfe..9f6ac6e 100644
--- a/vcl/source/window/menu.cxx
+++ b/vcl/source/window/menu.cxx
@@ -2434,7 +2434,8 @@ Size Menu::ImplCalcSize( Window* pWin )
             }
 
             // Image:
-            if ( !bIsMenuBar && ( ( pData->eType == MENUITEM_IMAGE ) || ( pData->eType == MENUITEM_STRINGIMAGE ) ) )
+            if ( !bIsMenuBar && ( ( pData->eType == MENUITEM_IMAGE ) || ( pData->eType == MENUITEM_STRINGIMAGE ) ) &&
+                 ( (nMenuFlags & MENU_FLAG_SHOWCHECKIMAGES) || !pData->HasCheck() ) )
             {
                 Size aImgSz = pData->aImage.GetSizePixel();
                 aImgSz.Height() += 4; // add a border for native marks
@@ -2748,7 +2749,8 @@ void Menu::ImplPaint( Window* pWin, sal_uInt16 nBorder, long nStartY, MenuItemDa
                     // however do not do this if native checks will be painted since
                     // the selection color too often does not fit the theme's check and/or radio
 
-                    if( ! ( ( pData->eType == MENUITEM_IMAGE ) || ( pData->eType == MENUITEM_STRINGIMAGE ) ) )
+                    if( ! ( ( pData->eType == MENUITEM_IMAGE ) || ( pData->eType == MENUITEM_STRINGIMAGE ) ) ||
+                        (nMenuFlags & MENU_FLAG_SHOWCHECKIMAGES) == 0 )
                     {
                         if ( pWin->IsNativeControlSupported( CTRL_MENU_POPUP,
                                                              (pData->nBits & MIB_RADIOCHECK)
_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to