rpms/openoffice.org/devel workspace.vcl100.patch, NONE, 1.1 openoffice.org.spec, 1.1806, 1.1807

Caolan McNamara caolanm at fedoraproject.org
Tue Feb 17 08:53:21 UTC 2009


Author: caolanm

Update of /cvs/pkgs/rpms/openoffice.org/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv5747

Modified Files:
	openoffice.org.spec 
Added Files:
	workspace.vcl100.patch 
Log Message:
add workspace.vcl100.patch

workspace.vcl100.patch:

--- NEW FILE workspace.vcl100.patch ---
Index: vcl/source/window/menu.cxx
===================================================================
--- vcl/source/window/menu.cxx	(.../tags/DEV300_m40)	(revision 267843)
+++ vcl/source/window/menu.cxx	(.../cws/vcl100)	(revision 267843)
@@ -2325,6 +2325,8 @@
             if ( !bIsMenuBar && ( ( pData->eType == MENUITEM_IMAGE ) || ( pData->eType == MENUITEM_STRINGIMAGE ) ) )
             {
                 Size aImgSz = pData->aImage.GetSizePixel();
+                aImgSz.Height() += 4; // add a border for native marks
+                aImgSz.Width() += 4; // add a border for native marks
                 if ( aImgSz.Width() > aMaxImgSz.Width() )
                     aMaxImgSz.Width() = aImgSz.Width();
                 if ( aImgSz.Height() > aMaxImgSz.Height() )
@@ -2337,8 +2339,12 @@
 			if ( !bIsMenuBar && pData->HasCheck() )
 			{
 				nCheckWidth = nMaxCheckWidth;
-				if (nMenuFlags & MENU_FLAG_SHOWCHECKIMAGES) 
-					nWidth += nCheckWidth + nExtra * 2;
+				if (nMenuFlags & MENU_FLAG_SHOWCHECKIMAGES)
+                {
+                    // checks / images take the same place
+                    if( ! ( ( pData->eType == MENUITEM_IMAGE ) || ( pData->eType == MENUITEM_STRINGIMAGE ) ) )
+                        nWidth += nCheckWidth + nExtra * 2;
+                }
 			}
 
             // Text:
@@ -2399,16 +2405,14 @@
         nCheckPos = (USHORT)nExtra;
 		if (nMenuFlags & MENU_FLAG_SHOWCHECKIMAGES)
 		{
-            // non-NWF case has an implicit little extra space around
-            // the symbol; NWF case has not, so image pos needs to
-            // be distinct in this case
+            long nImgOrChkWidth = 0;
+            nImagePos = nCheckPos;
             if( nMax > 0 ) // NWF case
-                nImagePos = (USHORT)(nCheckPos + nMax + nExtra );
+                nImgOrChkWidth = nMax + nExtra;
             else // non NWF case
-                nImagePos = (USHORT)(nCheckPos + nFontHeight/2 + gfxExtra );
-            nTextPos = (USHORT)(nImagePos+aMaxImgSz.Width());
-            if ( aMaxImgSz.Width() )
-                nTextPos = nTextPos + gfxExtra;
+                nImgOrChkWidth = nFontHeight/2 + gfxExtra;
+            nImgOrChkWidth = Max( nImgOrChkWidth, aMaxImgSz.Width() + gfxExtra );
+            nTextPos = (USHORT)(nImagePos + nImgOrChkWidth);
 		}
 		else
 		{
@@ -2466,6 +2470,45 @@
     return aSz;
 }
 
+static void ImplPaintCheckBackground( Window* i_pWindow, const Rectangle& i_rRect, bool i_bHighlight )
+{
+    BOOL bNativeOk = FALSE;
+    if( i_pWindow->IsNativeControlSupported( CTRL_TOOLBAR, PART_BUTTON ) )
+    {
+        ImplControlValue    aControlValue;
+        Region              aCtrlRegion( i_rRect );
+        ControlState        nState = CTRL_STATE_PRESSED | CTRL_STATE_ENABLED;
+        
+        aControlValue.setTristateVal( BUTTONVALUE_ON );
+        
+        bNativeOk = i_pWindow->DrawNativeControl( CTRL_TOOLBAR, PART_BUTTON, 
+                                                  aCtrlRegion, nState, aControlValue,
+                                                  rtl::OUString() );
+    }
+
+    if( ! bNativeOk )
+    {
+        const StyleSettings& rSettings = i_pWindow->GetSettings().GetStyleSettings();
+        if( i_bHighlight )
+        {
+            i_pWindow->Push( PUSH_ALL );
+            Color aCol = rSettings.GetMenuHighlightTextColor();
+            i_pWindow->SetFillColor( rSettings.GetMenuHighlightTextColor() );
+            if( aCol.IsDark() )
+                aCol.IncreaseLuminance( 128 );
+            else
+                aCol.DecreaseLuminance( 128 );
+            i_pWindow->SetLineColor( aCol );
+            Polygon aPoly( i_rRect );
+            PolyPolygon aPolyPoly( aPoly );
+            i_pWindow->DrawTransparent( aPolyPoly, 20 );
+            i_pWindow->Pop();
+        }
+        else
+            i_pWindow->DrawSelectionBackground( i_rRect, 1, FALSE, TRUE, FALSE );
+    }
+}
+
 void Menu::ImplPaint( Window* pWin, USHORT nBorder, long nStartY, MenuItemData* pThisItemOnly, BOOL bHighlighted, bool bLayout ) const
 {
     // Fuer Symbole: nFontHeight x nFontHeight
@@ -2539,15 +2582,89 @@
                     pWin->SetLineColor();
                 }
 
+                Rectangle aOuterCheckRect( Point( aPos.X()+nCheckPos, aPos.Y() ), Size( pData->aSz.Height(), pData->aSz.Height() ) );
+                aOuterCheckRect.Left()      += 1;
+                aOuterCheckRect.Right()     -= 1;
+                aOuterCheckRect.Top()       += 1;
+                aOuterCheckRect.Bottom()    -= 1;
+
+                // CheckMark
+                if ( !bLayout && !bIsMenuBar && pData->HasCheck() )
+                {
+                    // draw selection transparent marker if checked
+                    // onto that either a checkmark or the item image
+                    // will be painted
+                    // 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 ( pWin->IsNativeControlSupported( CTRL_MENU_POPUP,
+                                                             (pData->nBits & MIB_RADIOCHECK)
+                                                             ? PART_MENU_ITEM_CHECK_MARK
+                                                             : PART_MENU_ITEM_RADIO_MARK ) )
+                        {
+                            ControlPart nPart = ((pData->nBits & MIB_RADIOCHECK)
+                                                 ? PART_MENU_ITEM_RADIO_MARK
+                                                 : PART_MENU_ITEM_CHECK_MARK);
+    
+                            ControlState nState = 0;
+    
+                            if ( pData->bChecked )
+                                nState |= CTRL_STATE_PRESSED;
+    
+                            if ( pData->bEnabled )
+                                nState |= CTRL_STATE_ENABLED;
+    
+                            if ( bHighlighted )
+                                nState |= CTRL_STATE_SELECTED;
+    
+                            long nCtrlHeight = (pData->nBits & MIB_RADIOCHECK) ? nCheckHeight : nRadioHeight;
+                            aTmpPos.X() = aOuterCheckRect.Left() + (aOuterCheckRect.GetWidth() - nCtrlHeight)/2;
+                            aTmpPos.Y() = aOuterCheckRect.Top() + (aOuterCheckRect.GetHeight() - nCtrlHeight)/2;
+                            
+                            Rectangle aCheckRect( aTmpPos, Size( nCtrlHeight, nCtrlHeight ) );                            
+                            pWin->DrawNativeControl( CTRL_MENU_POPUP, nPart,
+                                                     Region( aCheckRect ),
+                                                     nState,
+                                                     ImplControlValue(),
+                                                     OUString() );
+                        }
+                        else if ( pData->bChecked ) // by default do nothing for unchecked items
+                        {
+                            ImplPaintCheckBackground( pWin, aOuterCheckRect, pThisItemOnly && bHighlighted );
+                            
+                            SymbolType eSymbol;
+                            Size aSymbolSize;
+                            if ( pData->nBits & MIB_RADIOCHECK )
+                            {
+                                eSymbol = SYMBOL_RADIOCHECKMARK;
+                                aSymbolSize = Size( nFontHeight/2, nFontHeight/2 );
+                            }
+                            else
+                            {
+                                eSymbol = SYMBOL_CHECKMARK;
+                                aSymbolSize = Size( (nFontHeight*25)/40, nFontHeight/2 );
+                            }
+                            aTmpPos.X() = aOuterCheckRect.Left() + (aOuterCheckRect.GetWidth() - aSymbolSize.Width())/2;
+                            aTmpPos.Y() = aOuterCheckRect.Top() + (aOuterCheckRect.GetHeight() - aSymbolSize.Height())/2;
+                            Rectangle aRect( aTmpPos, aSymbolSize );
+                            aDecoView.DrawSymbol( aRect, eSymbol, pWin->GetTextColor(), nSymbolStyle );
+                        }
+                    }
+                }
+
                 // Image:
                 if ( !bLayout && !bIsMenuBar && ( ( pData->eType == MENUITEM_IMAGE ) || ( pData->eType == MENUITEM_STRINGIMAGE ) ) )
                 {
 					// Don't render an image for a check thing
 					if ((nMenuFlags & MENU_FLAG_SHOWCHECKIMAGES) || !pData->HasCheck() )
 					{
-	                    aTmpPos.Y() = aPos.Y();
-	                    aTmpPos.X() = aPos.X() + nImagePos;
-	                    aTmpPos.Y() += (pData->aSz.Height()-pData->aImage.GetSizePixel().Height())/2;
+                        if( pData->bChecked )
+                            ImplPaintCheckBackground( pWin, aOuterCheckRect, pThisItemOnly && bHighlighted );
+                        aTmpPos = aOuterCheckRect.TopLeft();
+	                    aTmpPos.X() += (aOuterCheckRect.GetWidth()-pData->aImage.GetSizePixel().Width())/2;
+	                    aTmpPos.Y() += (aOuterCheckRect.GetHeight()-pData->aImage.GetSizePixel().Height())/2;
 	                    pWin->DrawImage( aTmpPos, pData->aImage, nImageStyle );
 					}
                 }
@@ -2600,65 +2717,6 @@
                     pWin->DrawCtrlText( aTmpPos, aAccText, 0, aAccText.Len(), nTextStyle );
                 }
 
-                // CheckMark
-                if ( !bLayout && !bIsMenuBar && pData->HasCheck() )
-                {
-                    if ( pWin->IsNativeControlSupported( CTRL_MENU_POPUP,
-                                                         (pData->nBits & MIB_RADIOCHECK)
-                                                         ? PART_MENU_ITEM_CHECK_MARK
-                                                         : PART_MENU_ITEM_RADIO_MARK ) )
-                    {
-                        ControlPart nPart = ((pData->nBits & MIB_RADIOCHECK)
-                                             ? PART_MENU_ITEM_RADIO_MARK
-                                             : PART_MENU_ITEM_CHECK_MARK);
-
-                        ControlState nState = 0;
-
-                        if ( pData->bChecked )
-                            nState |= CTRL_STATE_PRESSED;
-
-                        if ( pData->bEnabled )
-                            nState |= CTRL_STATE_ENABLED;
-
-                        if ( bHighlighted )
-                            nState |= CTRL_STATE_SELECTED;
-
-                        aTmpPos.X() = aPos.X() + nCheckPos;
-                        aTmpPos.Y() = aPos.Y() + nCheckPos;
-                        
-                        long nCtrlHeight = (pData->nBits & MIB_RADIOCHECK) ? nCheckHeight : nRadioHeight;
-                        Rectangle aCheckRect( aTmpPos, Size( nCtrlHeight, nCtrlHeight ) );                            
-                        pWin->DrawNativeControl( CTRL_MENU_POPUP, nPart,
-                                                 Region( aCheckRect ),
-                                                 nState,
-                                                 ImplControlValue(),
-                                                 OUString() );
-                    }
-                    else if ( pData->bChecked ) // by default do nothing for unchecked items
-                    {
-                        Rectangle aRect;
-                        SymbolType eSymbol;
-                        aTmpPos.Y() = aPos.Y();
-                        aTmpPos.Y() += nExtra/2;
-                        aTmpPos.Y() += pData->aSz.Height() / 2;
-                        if ( pData->nBits & MIB_RADIOCHECK )
-                        {
-                            aTmpPos.X() = aPos.X() + nCheckPos;
-                            eSymbol = SYMBOL_RADIOCHECKMARK;
-                            aTmpPos.Y() -= nFontHeight/4;
-                            aRect = Rectangle( aTmpPos, Size( nFontHeight/2, nFontHeight/2 ) );
-                        }
-                        else
-                        {
-                            aTmpPos.X() = aPos.X() + nCheckPos;
-                            eSymbol = SYMBOL_CHECKMARK;
-                            aTmpPos.Y() -= nFontHeight/4;
-                            aRect = Rectangle( aTmpPos, Size( (nFontHeight*25)/40, nFontHeight/2 ) );
-                        }
-                        aDecoView.DrawSymbol( aRect, eSymbol, pWin->GetTextColor(), nSymbolStyle );
-                    }
-                }
-
                 // SubMenu?
                 if ( !bLayout && !bIsMenuBar && pData->pSubMenu )
                 {


Index: openoffice.org.spec
===================================================================
RCS file: /cvs/pkgs/rpms/openoffice.org/devel/openoffice.org.spec,v
retrieving revision 1.1806
retrieving revision 1.1807
diff -u -r1.1806 -r1.1807
--- openoffice.org.spec	16 Feb 2009 16:35:22 -0000	1.1806
+++ openoffice.org.spec	17 Feb 2009 08:52:50 -0000	1.1807
@@ -123,6 +123,7 @@
 Patch50: openoffice.org-3.1.0.oooXXXXX.gcc44.buildfixes.patch
 Patch51: openoffice.org-3.1.0.ooo99250.sc.autooutline-reflists.patch
 Patch52: workspace.ooo31gsl2.patch
+Patch53: workspace.vcl100.patch
 
 %define python_py_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(0)")
 %define instdir %{_libdir}
@@ -1575,6 +1576,7 @@
 %patch50 -p1 -b .oooXXXXX.gcc44.buildfixes.patch
 %patch51 -p0 -b .ooo99250.sc.autooutline-reflists.patch
 %patch52 -p0 -b .workspace.ooo31gsl2.patch
+%patch53 -p0 -b .workspace.vcl100.patch
 
 %build
 echo build start time is `date`, diskspace: `df -h . | tail -n 1`




More information about the fedora-extras-commits mailing list