[Libreoffice-commits] core.git: Branch 'aoo/trunk' - 3 commits - cppuhelper/source vcl/aqua vcl/unx vcl/win

Herbert Dürr hdu at apache.org
Thu Mar 21 18:28:32 PDT 2013


 cppuhelper/source/primeweak.cxx              |    2 +-
 vcl/aqua/source/gdi/salnativewidgets.cxx     |    7 ++-----
 vcl/aqua/source/window/salframeview.mm       |    8 +++++++-
 vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx     |    2 +-
 vcl/unx/kde/salnativewidgets-kde.cxx         |    6 +++---
 vcl/win/source/gdi/salnativewidgets-luna.cxx |    2 +-
 6 files changed, 15 insertions(+), 12 deletions(-)

New commits:
commit d2fde1d34c3c28572b1b6b4780269c15dd4c2bef
Author: Herbert Dürr <hdu at apache.org>
Date:   Thu Mar 21 15:27:40 2013 +0000

    check native widget's control value type before converting to SpinbuttonValue or ScrollbarValue
    
    Else problems like #i112873# or even crashes can and do happen.

diff --git a/vcl/aqua/source/gdi/salnativewidgets.cxx b/vcl/aqua/source/gdi/salnativewidgets.cxx
index 634bf10..294396c 100644
--- a/vcl/aqua/source/gdi/salnativewidgets.cxx
+++ b/vcl/aqua/source/gdi/salnativewidgets.cxx
@@ -816,7 +816,7 @@ sal_Bool AquaSalGraphics::drawNativeControl(ControlType nType,
 
     case CTRL_SCROLLBAR:
         {
-            ScrollbarValue* pScrollbarVal = (ScrollbarValue *)&aValue;
+            const ScrollbarValue* pScrollbarVal = (aValue.getType() == CTRL_SCROLLBAR) ? static_cast<const ScrollbarValue*>(&aValue) : NULL;
 
             if( nPart == PART_DRAW_BACKGROUND_VERT ||
                 nPart == PART_DRAW_BACKGROUND_HORZ )
@@ -1085,16 +1085,13 @@ sal_Bool AquaSalGraphics::drawNativeControl(ControlType nType,
                 if(nState & CTRL_STATE_FOCUSED) HIThemeDrawFocusRect(&rc, true, mrContext, kHIThemeOrientationNormal);
 
                 //buttons:
-                SpinbuttonValue* pSpinButtonVal = (SpinbuttonValue *)&aValue;
+                const SpinbuttonValue* pSpinButtonVal = (aValue.getType() == CTRL_SPINBUTTONS) ? static_cast<const SpinbuttonValue*>(&aValue) : NULL;
                 ControlState nUpperState = CTRL_STATE_ENABLED;//state of the upper button
                 ControlState nLowerState = CTRL_STATE_ENABLED;//and of the lower button
                 if(pSpinButtonVal) {//pSpinButtonVal is sometimes null
                     nUpperState = (ControlState) pSpinButtonVal->mnUpperState;
                     nLowerState = (ControlState) pSpinButtonVal->mnLowerState;
-                }
 
-                if( pSpinButtonVal )
-                {
                     HIThemeButtonDrawInfo aSpinInfo;
                     aSpinInfo.kind = kThemeIncDecButton;
                     aSpinInfo.state = kThemeStateActive;
diff --git a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx
index 3e265d5..1ecc667 100644
--- a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx
+++ b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx
@@ -1375,7 +1375,7 @@ sal_Bool GtkSalGraphics::NWPaintGTKScrollbar( ControlType, ControlPart nPart,
                                           const OUString& )
 {
     OSL_ASSERT( aValue.getType() == CTRL_SCROLLBAR );
-    const ScrollbarValue* pScrollbarVal = static_cast<const ScrollbarValue *>(&aValue);
+    const ScrollbarValue* pScrollbarVal = (aValue.getType() == CTRL_SCROLLBAR) ? static_cast<const ScrollbarValue*>(&aValue) : NULL;
     GdkPixmap*      pixmap = NULL;
     Rectangle       pixmapRect, scrollbarRect;
     GtkStateType    stateType;
diff --git a/vcl/unx/kde/salnativewidgets-kde.cxx b/vcl/unx/kde/salnativewidgets-kde.cxx
index 3d81f10..dedf0b3 100644
--- a/vcl/unx/kde/salnativewidgets-kde.cxx
+++ b/vcl/unx/kde/salnativewidgets-kde.cxx
@@ -514,7 +514,7 @@ sal_Bool WidgetPainter::drawStyledWidget( QWidget *pWidget,
     }
     else if ( strcmp( "QSpinWidget", pClassName ) == 0 )
     {
-    const SpinbuttonValue *pValue = static_cast<const SpinbuttonValue *> ( &aValue );
+    const SpinbuttonValue* pValue = (aValue.getType() == CTRL_SPINBUTTONS) ? static_cast<const SpinbuttonValue*>(&aValue) : NULL;
 
     // Is any of the buttons pressed?
     QStyle::SCFlags eActive = QStyle::SC_None;
@@ -603,7 +603,7 @@ sal_Bool WidgetPainter::drawStyledWidget( QWidget *pWidget,
     }
     else if ( strcmp( "QScrollBar", pClassName ) == 0 )
     {
-    const ScrollbarValue *pValue = static_cast<const ScrollbarValue *> ( &aValue );
+    const ScrollbarValue* pScrollbarVal = (aValue.getType() == CTRL_SCROLLBAR) ? static_cast<const ScrollbarValue*>(&aValue) : NULL;
 
     QStyle::SCFlags eActive = QStyle::SC_None;
     if ( pValue )
@@ -1008,7 +1008,7 @@ QScrollBar *WidgetPainter::scrollBar( const Rectangle& rControlRegion,
     m_pScrollBar->resize( qRect.size() );
     m_pScrollBar->setOrientation( bHorizontal? Qt::Horizontal: Qt::Vertical );
 
-    const ScrollbarValue *pValue = static_cast<const ScrollbarValue *> ( &aValue );
+    const ScrollbarValue* pScrollbarVal = (aValue.getType() == CTRL_SCROLLBAR) ? static_cast<const ScrollbarValue*>(&aValue) : NULL;
     if ( pValue )
     {
     m_pScrollBar->setMinValue( pValue->mnMin );
diff --git a/vcl/win/source/gdi/salnativewidgets-luna.cxx b/vcl/win/source/gdi/salnativewidgets-luna.cxx
index c24fc76..db7dc49 100644
--- a/vcl/win/source/gdi/salnativewidgets-luna.cxx
+++ b/vcl/win/source/gdi/salnativewidgets-luna.cxx
@@ -570,7 +570,7 @@ sal_Bool ImplDrawNativeControl( HDC hDC, HTHEME hTheme, RECT rc,
     {
         if( aValue.getType() == CTRL_SPINBUTTONS )
         {
-            const SpinbuttonValue *pValue = static_cast<const SpinbuttonValue*>(&aValue);
+            const SpinbuttonValue* pValue = (aValue.getType() == CTRL_SPINBUTTONS) ? static_cast<const SpinbuttonValue*>(&aValue) : NULL;
             sal_Bool bOk = sal_False;
 
             RECT rect;
commit feb1be19817d10e0ed1a18bada9c917f2a4532db
Author: Herbert Dürr <hdu at apache.org>
Date:   Thu Mar 21 15:01:35 2013 +0000

    protect SalFrameView's isOpaque() method by an isAlive() check

diff --git a/vcl/aqua/source/window/salframeview.mm b/vcl/aqua/source/window/salframeview.mm
index d056436..b9d3a19 100644
--- a/vcl/aqua/source/window/salframeview.mm
+++ b/vcl/aqua/source/window/salframeview.mm
@@ -478,7 +478,13 @@ static AquaSalFrame* getMouseContainerFrame()
 
 -(BOOL)isOpaque
 {
-    return mpFrame ? (mpFrame->getClipPath() != 0 ? NO : YES) : YES;
+	if( !mpFrame)
+		return YES;
+	if( !AquaSalFrame::isAlive( mpFrame))
+		return YES;
+	if( !mpFrame->getClipPath())
+		return YES;
+	return NO;
 }
 
 // helper class similar to a vos::OGuard for the SalYieldMutex
commit 12d33dd664568614df83c87929cd1b39f080478f
Author: Herbert Dürr <hdu at apache.org>
Date:   Thu Mar 21 05:32:46 2013 +0000

    fix case mismatch in include path

diff --git a/cppuhelper/source/primeweak.cxx b/cppuhelper/source/primeweak.cxx
index c3bf7a9..97d3acc 100644
--- a/cppuhelper/source/primeweak.cxx
+++ b/cppuhelper/source/primeweak.cxx
@@ -47,7 +47,7 @@
 #include "cppuhelper/com/sun/star/lang/XSingleServiceFactory.hpp"
 #include "cppuhelper/com/sun/star/lang/XSingleComponentFactory.hpp"
 #include "cppuhelper/com/sun/star/lang/XMultiServiceFactory.hpp"
-#include "cppuhelper/com/sun/star/lang/XMulticomponentFactory.hpp"
+#include "cppuhelper/com/sun/star/lang/XMultiComponentFactory.hpp"
 #include "cppuhelper/com/sun/star/lang/XServiceInfo.hpp"
 #include "cppuhelper/com/sun/star/lang/XEventListener.hpp"
 #include "cppuhelper/com/sun/star/lang/XTypeProvider.hpp"


More information about the Libreoffice-commits mailing list