ooo-build r12360 - in branches/ooo-build-2-4: . patches/src680
- From: thorstenb svn gnome org
- To: svn-commits-list gnome org
- Subject: ooo-build r12360 - in branches/ooo-build-2-4: . patches/src680
- Date: Mon, 28 Apr 2008 23:05:32 +0100 (BST)
Author: thorstenb
Date: Mon Apr 28 22:05:32 2008
New Revision: 12360
URL: http://svn.gnome.org/viewvc/ooo-build?rev=12360&view=rev
Log:
* patches/src680/apply: added cairo-canvas-use-window-screen.diff
* patches/src680/cairo-canvas-use-window-screen.diff: cairocanvas
now handles multi-screen displays correctly
* patches/src680/apply: moved vcl-dynamic-screens-fix.diff behind
gstreamer patches, added vcl-limited-bmp-subset-fix.diff
* patches/src680/sd-custom-animation-fixes.diff: backported
upstream dev300 fix
* patches/src680/vcl-dynamic-screens-fix.diff: backported
much nicer upstream libXrandr-based fix
* patches/src680/vcl-limited-bmp-subset-fix.diff: fixed crash
during printing
* patches/src680/quiet-build.diff: also made verbose=t enable
verbosity
Added:
branches/ooo-build-2-4/patches/src680/cairo-canvas-use-window-screen.diff
branches/ooo-build-2-4/patches/src680/vcl-limited-bmp-subset-fix.diff
Modified:
branches/ooo-build-2-4/ChangeLog
branches/ooo-build-2-4/patches/src680/apply
branches/ooo-build-2-4/patches/src680/quiet-build.diff
branches/ooo-build-2-4/patches/src680/sd-custom-animation-fixes.diff
branches/ooo-build-2-4/patches/src680/vcl-dynamic-screens-fix.diff
Modified: branches/ooo-build-2-4/patches/src680/apply
==============================================================================
--- branches/ooo-build-2-4/patches/src680/apply (original)
+++ branches/ooo-build-2-4/patches/src680/apply Mon Apr 28 22:05:32 2008
@@ -1183,9 +1183,6 @@
# enable vcl to load bitmaps when height it negative
vcl-bitmap2-negative-height.diff
-# fixes dynamic screen config bugs (xinerama & multiscreen)
-vcl-dynamic-screens-fix.diff, n#359955, rodo+thorsten
-
[ SystemBits ]
# use getopt() and readdir_r() from system glibc
#FIXME src680: system-libc.diff, i#69033, rengelha
@@ -1704,6 +1701,7 @@
cairo-makefile-mk.diff, i#70519, tml
cairo-config_office-configure-in.diff, i#70519, tml
cairo-cairo-1-4-10-diff.diff, i#70519, tml
+cairo-canvas-use-window-screen.diff, rodo
# Additional diffs for cairocanvas on Win32
cairo-canvas-win32.diff, i#70519, n#300398, tml
@@ -2263,6 +2261,13 @@
[ Fixes ]
sc-xclimpchangetrack-discard-bogus-formula-size.diff, n#355304, tml
+# fixes dynamic screen config bugs (xinerama & multiscreen)
+vcl-dynamic-screens-fix.diff, n#359955, rodo+thorsten
+
+# fixes calculating subset of bitmap correctly
+vcl-limited-bmp-subset-fix.diff, i#88818, thorsten
+
+
# Fix pasting with middle button in Calc
sc-middle-button-should-paste-text.diff, n#282767, i#86734, jholesov
Added: branches/ooo-build-2-4/patches/src680/cairo-canvas-use-window-screen.diff
==============================================================================
--- (empty file)
+++ branches/ooo-build-2-4/patches/src680/cairo-canvas-use-window-screen.diff Mon Apr 28 22:05:32 2008
@@ -0,0 +1,64 @@
+diff -rup canvas/source/cairo-orig/cairo_cairo.cxx canvas/source/cairo/cairo_cairo.cxx
+--- canvas/source/cairo-orig/cairo_cairo.cxx 2008-04-28 18:00:30.000000000 +0200
++++ canvas/source/cairo/cairo_cairo.cxx 2008-04-28 18:10:30.000000000 +0200
+@@ -353,7 +353,7 @@ namespace cairo
+
+ return new Surface( mpSysData, mpDisplay, (long) hPixmap, pFormat,
+ cairo_xlib_surface_create_with_xrender_format( (Display*) mpDisplay, hPixmap,
+- DefaultScreenOfDisplay( (Display *) mpDisplay ),
++ (Screen*) cairoHelperGetScreen( mpSysData ),
+ pFormat, width, height ) );
+ #elif defined (CAIRO_HAS_WIN32_SURFACE)
+ return new Surface( mpSysData, cairo_win32_surface_create_with_dib( nFormat, width, height ) );
+diff -rup canvas/source/cairo-orig/cairo_helper.cxx canvas/source/cairo/cairo_helper.cxx
+--- canvas/source/cairo-orig/cairo_helper.cxx 2008-04-28 18:00:30.000000000 +0200
++++ canvas/source/cairo/cairo_helper.cxx 2008-04-28 18:11:31.000000000 +0200
+@@ -38,6 +38,7 @@
+ #include "precompiled_canvas.hxx"
+
+ #include <cairo.h>
++#include <cairo_helper.hxx>
+
+ #ifdef CAIRO_HAS_XLIB_SURFACE
+ #include <vcl/sysdata.hxx>
+@@ -63,9 +64,18 @@ using namespace ::cairo;
+
+ //#define OOO_CANVAS_GLITZ 1
+
+-int cairoHelperGetDefaultScreen( void* display )
++void* cairoHelperGetScreen( const void* pSysData )
+ {
+- return DefaultScreen( ( (Display *) display ) );
++ XWindowAttributes aWA;
++
++ XGetWindowAttributes( (::cairo::Display*) cairoHelperGetDisplay( pSysData ), cairoHelperGetWindow( pSysData ), &aWA );
++
++ return aWA.screen;
++}
++
++int cairoHelperGetScreenNumber( const void* pSysData )
++{
++ return XScreenNumberOfScreen( (::cairo::Screen*) cairoHelperGetScreen( pSysData ) );
+ }
+
+ void*
+@@ -76,7 +86,7 @@ cairoHelperGetGlitzDrawable( const Syste
+ Display* display = (Display*) pSysData->pDisplay;
+ ::cairo::Window window = pSysData->aWindow;
+ VisualID vid = XVisualIDFromVisual( (Visual*) pSysData->pVisual );
+- int screen = DefaultScreen( display );
++ int screen = cairoHelperGetScreen( pSysData );
+
+ glitz_drawable_t *pDrawable = NULL;
+ glitz_format_t* pFormat = NULL;
+diff -rup canvas/source/cairo-orig/cairo_helper.hxx canvas/source/cairo/cairo_helper.hxx
+--- canvas/source/cairo-orig/cairo_helper.hxx 2008-04-28 18:00:30.000000000 +0200
++++ canvas/source/cairo/cairo_helper.hxx 2008-04-28 18:10:10.000000000 +0200
+@@ -1,4 +1,5 @@
+-int cairoHelperGetDefaultScreen( void* display );
++void* cairoHelperGetScreen( const void* pSysData );
++int cairoHelperGetScreenNumber( const void* pSysData );
+ void* cairoHelperGetGlitzDrawable( const void* pSysData, int width, int height );
+ void* cairoHelperGetGlitzSurface( const void* pSysData, void *drawable, int x, int y, int width, int height );
+ void* cairoHelperGetSurface( const void* pSysData, int x, int y, int width, int height );
+Only in canvas/source/cairo: cairo_helper.hxx.~1.2.~
Modified: branches/ooo-build-2-4/patches/src680/quiet-build.diff
==============================================================================
--- branches/ooo-build-2-4/patches/src680/quiet-build.diff (original)
+++ branches/ooo-build-2-4/patches/src680/quiet-build.diff Mon Apr 28 22:05:32 2008
@@ -40,7 +40,7 @@
DBGUTIL=
dbgutil=
-+.IF "$(VERBOSE)"==""
++.IF "$(VERBOSE)"=="" && "$(verbose)"==""
+QUIET_BUILD*=@
+.ELSE
+QUIET_BUILD*=
Modified: branches/ooo-build-2-4/patches/src680/sd-custom-animation-fixes.diff
==============================================================================
--- branches/ooo-build-2-4/patches/src680/sd-custom-animation-fixes.diff (original)
+++ branches/ooo-build-2-4/patches/src680/sd-custom-animation-fixes.diff Mon Apr 28 22:05:32 2008
@@ -1,133 +1,5 @@
---- sd/inc/CustomAnimationEffect.hxx
-+++ sd/inc/CustomAnimationEffect.hxx
-@@ -359,9 +359,9 @@ public:
-
- CustomAnimationTextGroupPtr findGroup( sal_Int32 nGroupId );
- CustomAnimationTextGroupPtr createTextGroup( CustomAnimationEffectPtr pEffect, sal_Int32 nTextGrouping, double fTextGroupingAuto, sal_Bool bAnimateForm, sal_Bool bTextReverse );
-- void setTextGrouping( CustomAnimationTextGroupPtr pTextGroup, sal_Int32 nTextGrouping );
-+ void setTextGrouping( CustomAnimationTextGroupPtr pTextGroup, sal_Int32 nTextGrouping, bool bPrevEffect );
- void setAnimateForm( CustomAnimationTextGroupPtr pTextGroup, sal_Bool bAnimateForm );
-- void setTextGroupingAuto( CustomAnimationTextGroupPtr pTextGroup, double fTextGroupingAuto );
-+ void setTextGroupingAuto( CustomAnimationTextGroupPtr pTextGroup, double fTextGroupingAuto, bool bPrevEffect );
- void setTextReverse( CustomAnimationTextGroupPtr pTextGroup, sal_Bool bAnimateForm );
-
- sal_Int32 getSequenceType() const { return mnSequenceType; }
-@@ -376,7 +376,7 @@ protected:
- virtual void implRebuild();
- virtual void reset();
-
-- void createTextGroupParagraphEffects( CustomAnimationTextGroupPtr pTextGroup, CustomAnimationEffectPtr pEffect, bool bUsed );
-+ void createTextGroupParagraphEffects( CustomAnimationTextGroupPtr pTextGroup, CustomAnimationEffectPtr pEffect, bool bPrevEffect, bool bUsed );
-
- void notify_listeners();
-
---- sd/source/core/CustomAnimationEffect.cxx
-+++ sd/source/core/CustomAnimationEffect.cxx
-@@ -2694,16 +2694,14 @@ CustomAnimationTextGroupPtr EffectSequenceHelper::createTextGroup( CustomAnimati
- CustomAnimationTextGroupPtr pTextGroup( new CustomAnimationTextGroup( xTarget, nGroupId ) );
- maGroupMap[nGroupId] = pTextGroup;
-
-- bool bUsed = false;
-+ bool bPrevEffect = false;
-
- // do we need to target the shape?
-- if( (nTextGrouping == 0) || bAnimateForm )
-+ if( bAnimateForm )
- {
-- sal_Int16 nSubItem;
-- if( nTextGrouping == 0)
-- nSubItem = bAnimateForm ? ShapeAnimationSubType::AS_WHOLE : ShapeAnimationSubType::ONLY_TEXT;
-- else
-- nSubItem = ShapeAnimationSubType::ONLY_BACKGROUND;
-+ const sal_Int16 nSubItem( nTextGrouping == 0 ?
-+ ShapeAnimationSubType::AS_WHOLE :
-+ ShapeAnimationSubType::ONLY_BACKGROUND );
-
- pEffect->setTarget( makeAny( xTarget ) );
- pEffect->setTargetSubItem( nSubItem );
-@@ -2711,7 +2709,7 @@ CustomAnimationTextGroupPtr EffectSequenceHelper::createTextGroup( CustomAnimati
- pEffect->setGroupId( nGroupId );
-
- pTextGroup->addEffect( pEffect );
-- bUsed = true;
-+ bPrevEffect = true;
- }
-
- pTextGroup->mnTextGrouping = nTextGrouping;
-@@ -2719,7 +2717,7 @@ CustomAnimationTextGroupPtr EffectSequenceHelper::createTextGroup( CustomAnimati
- pTextGroup->mbTextReverse = bTextReverse;
-
- // now add an effect for each paragraph
-- createTextGroupParagraphEffects( pTextGroup, pEffect, bUsed );
-+ createTextGroupParagraphEffects( pTextGroup, pEffect, bPrevEffect, bPrevEffect );
-
- notify_listeners();
-
-@@ -2728,7 +2726,7 @@ CustomAnimationTextGroupPtr EffectSequenceHelper::createTextGroup( CustomAnimati
-
- // --------------------------------------------------------------------
-
--void EffectSequenceHelper::createTextGroupParagraphEffects( CustomAnimationTextGroupPtr pTextGroup, CustomAnimationEffectPtr pEffect, bool bUsed )
-+void EffectSequenceHelper::createTextGroupParagraphEffects( CustomAnimationTextGroupPtr pTextGroup, CustomAnimationEffectPtr pEffect, bool bPrevEffect, bool bUsed )
- {
- Reference< XShape > xTarget( pTextGroup->maTarget );
-
-@@ -2793,7 +2791,7 @@ void EffectSequenceHelper::createTextGroupParagraphEffects( CustomAnimationTextG
- pNewEffect->setEffectSequence( this );
-
- // set correct node type
-- if( pNewEffect->getParaDepth() < nTextGrouping )
-+ if( pNewEffect->getParaDepth() < nTextGrouping || !bPrevEffect )
- {
- if( fTextGroupingAuto == -1.0 )
- {
-@@ -2825,7 +2823,7 @@ void EffectSequenceHelper::createTextGroupParagraphEffects( CustomAnimationTextG
-
- // --------------------------------------------------------------------
-
--void EffectSequenceHelper::setTextGrouping( CustomAnimationTextGroupPtr pTextGroup, sal_Int32 nTextGrouping )
-+void EffectSequenceHelper::setTextGrouping( CustomAnimationTextGroupPtr pTextGroup, sal_Int32 nTextGrouping, bool bPrevEffect )
- {
- if( pTextGroup->mnTextGrouping == nTextGrouping )
- {
-@@ -2838,7 +2836,7 @@ void EffectSequenceHelper::setTextGrouping( CustomAnimationTextGroupPtr pTextGro
- CustomAnimationEffectPtr pEffect( pTextGroup->maEffects.front() );
-
- pTextGroup->mnTextGrouping = nTextGrouping;
-- createTextGroupParagraphEffects( pTextGroup, pEffect, true );
-+ createTextGroupParagraphEffects( pTextGroup, pEffect, bPrevEffect, true );
- notify_listeners();
- }
- else if( (pTextGroup->mnTextGrouping >= 0) && (nTextGrouping == -1 ) )
-@@ -2878,7 +2876,7 @@ void EffectSequenceHelper::setTextGrouping( CustomAnimationTextGroupPtr pTextGro
- if( pEffect->getTarget().getValueType() == ::getCppuType((const ParagraphTarget*)0) )
- {
- // set correct node type
-- if( pEffect->getParaDepth() < nTextGrouping )
-+ if( pEffect->getParaDepth() < nTextGrouping || !bPrevEffect )
- {
- if( fTextGroupingAuto == -1.0 )
- {
-@@ -2976,7 +2974,7 @@ void EffectSequenceHelper::setAnimateForm( CustomAnimationTextGroupPtr pTextGrou
-
- // --------------------------------------------------------------------
-
--void EffectSequenceHelper::setTextGroupingAuto( CustomAnimationTextGroupPtr pTextGroup, double fTextGroupingAuto )
-+void EffectSequenceHelper::setTextGroupingAuto( CustomAnimationTextGroupPtr pTextGroup, double fTextGroupingAuto, bool bPrevEffect )
- {
- sal_Int32 nTextGrouping = pTextGroup->mnTextGrouping;
-
-@@ -2992,7 +2990,7 @@ void EffectSequenceHelper::setTextGroupingAuto( CustomAnimationTextGroupPtr pTex
- if( pEffect->getTarget().getValueType() == ::getCppuType((const ParagraphTarget*)0) )
- {
- // set correct node type
-- if( pEffect->getParaDepth() < nTextGrouping )
-+ if( pEffect->getParaDepth() < nTextGrouping || !bPrevEffect )
- {
- if( fTextGroupingAuto == -1.0 )
- {
---- sd/source/ui/animations/CustomAnimationCreateDialog.cxx
-+++ sd/source/ui/animations/CustomAnimationCreateDialog.cxx
+--- sd/source/ui/animations/CustomAnimationCreateDialog.cxx 12 Mar 2008 11:33:03 -0000 1.12
++++ sd/source/ui/animations/CustomAnimationCreateDialog.cxx 17 Mar 2008 12:47:29 -0000 1.11.150.2
@@ -253,6 +253,8 @@ public:
bool getIsPreview() const;
void setIsPreview( bool bIsPreview );
@@ -137,7 +9,7 @@
private:
DECL_LINK( implSelectHdl, Control* );
DECL_LINK( implDoubleClickHdl, Control* );
-@@ -544,13 +546,33 @@ void CustomAnimationCreateTabPage::setIsPreview( bool bIsPreview )
+@@ -545,13 +547,33 @@ void CustomAnimationCreateTabPage::setIs
mpCBXPReview->Check( bIsPreview ? TRUE : FALSE );
}
@@ -176,7 +48,7 @@
{
mpTabControl = new TabControl( this, SdResId( 1 ) );
mpOKButton = new OKButton(this, SdResId( 1 ) ) ;
-@@ -583,6 +605,19 @@ CustomAnimationCreateDialog::CustomAnimationCreateDialog( Window* pParent, Custo
+@@ -584,6 +606,19 @@ CustomAnimationCreateDialog::CustomAnima
mpTabControl->SetDeactivatePageHdl( LINK( this, CustomAnimationCreateDialog, implDeactivatePagekHdl ) );
setPosition();
@@ -196,11 +68,9 @@
}
CustomAnimationCreateDialog::~CustomAnimationCreateDialog()
-diff --git a/sd/source/ui/animations/CustomAnimationCreateDialog.hrc b/sd/source/ui/animations/CustomAnimationCreateDialog.hrc
-index 424a53c..d24a51a 100644
---- sd/source/ui/animations/CustomAnimationCreateDialog.hxx
-+++ sd/source/ui/animations/CustomAnimationCreateDialog.hxx
-@@ -62,7 +62,7 @@ class CustomAnimationCreateDialog : public TabDialog
+--- sd/source/ui/animations/CustomAnimationCreateDialog.hxx 1 Aug 2007 11:08:21 -0000 1.7
++++ sd/source/ui/animations/CustomAnimationCreateDialog.hxx 12 Mar 2008 12:25:14 -0000 1.7.150.1
+@@ -62,7 +62,7 @@ class CustomAnimationCreateDialog : publ
{
friend class CustomAnimationCreateTabPage;
public:
@@ -209,11 +79,9 @@
~CustomAnimationCreateDialog();
PathKind getCreatePathKind() const;
-diff --git a/sd/source/ui/animations/CustomAnimationCreateDialog.src b/sd/source/ui/animations/CustomAnimationCreateDialog.src
-index d6bfb9a..6dc89c7 100644
---- sd/source/ui/animations/CustomAnimationDialog.cxx
-+++ sd/source/ui/animations/CustomAnimationDialog.cxx
-@@ -2381,6 +2377,8 @@ private:
+--- sd/source/ui/animations/CustomAnimationDialog.cxx 7 Mar 2008 16:25:36 -0000 1.20
++++ sd/source/ui/animations/CustomAnimationDialog.cxx 17 Mar 2008 12:47:26 -0000 1.19.76.2
+@@ -2356,6 +2356,8 @@ private:
CheckBox maCBXReverse;
const STLPropertySet* mpSet;
@@ -222,7 +90,7 @@
};
CustomAnimationTextAnimTabPage::CustomAnimationTextAnimTabPage(Window* pParent, const ResId& rResId, const STLPropertySet* pSet)
-@@ -2391,7 +2389,8 @@ CustomAnimationTextAnimTabPage::CustomAnimationTextAnimTabPage(Window* pParent,
+@@ -2366,7 +2368,8 @@ CustomAnimationTextAnimTabPage::CustomAn
maMFGroupAuto( this, SdResId( MF_GROUP_AUTO ) ),
maCBXAnimateForm( this, SdResId( CBX_ANIMATE_FORM ) ),
maCBXReverse( this, SdResId( CBX_REVERSE ) ),
@@ -232,7 +100,7 @@
{
FreeResource();
-@@ -2404,6 +2403,9 @@ CustomAnimationTextAnimTabPage::CustomAnimationTextAnimTabPage(Window* pParent,
+@@ -2379,6 +2382,9 @@ CustomAnimationTextAnimTabPage::CustomAn
maLBGroupText.SelectEntryPos( (USHORT)(nTextGrouping + 1) );
}
@@ -242,7 +110,7 @@
if( pSet->getPropertyState( nHandleTextGroupingAuto ) != STLPropertyState_AMBIGUOUS )
{
double fTextGroupingAuto = 0.0;
-@@ -2516,6 +2518,16 @@ void CustomAnimationTextAnimTabPage::updateControlStates()
+@@ -2491,6 +2497,16 @@ void CustomAnimationTextAnimTabPage::upd
maCBXGroupAuto.Enable( nPos > 1 );
maMFGroupAuto.Enable( nPos > 1 );
maCBXReverse.Enable( nPos > 0 );
@@ -259,7 +127,7 @@
}
IMPL_LINK( CustomAnimationTextAnimTabPage, implSelectHdl, Control*, EMPTYARG )
-@@ -2622,6 +2634,7 @@ STLPropertySet* CustomAnimationDialog::createDefaultSet()
+@@ -2597,6 +2613,7 @@ STLPropertySet* CustomAnimationDialog::c
pSet->setPropertyDefaultValue( nHandleTrigger, aEmpty );
pSet->setPropertyDefaultValue( nHandleHasText, makeAny( sal_False ) );
@@ -267,11 +135,9 @@
pSet->setPropertyDefaultValue( nHandleTextGrouping, makeAny( (sal_Int32)-1 ) );
pSet->setPropertyDefaultValue( nHandleAnimateForm, makeAny( sal_True ) );
pSet->setPropertyDefaultValue( nHandleTextGroupingAuto, makeAny( (double)-1.0 ) );
-diff --git a/sd/source/ui/animations/CustomAnimationDialog.hrc b/sd/source/ui/animations/CustomAnimationDialog.hrc
-index 3315156..47bb690 100644
---- sd/source/ui/animations/CustomAnimationDialog.hxx
-+++ sd/source/ui/animations/CustomAnimationDialog.hxx
-@@ -98,6 +98,8 @@ const sal_Int32 nHandleSoundEndAfterSlide = 30;
+--- sd/source/ui/animations/CustomAnimationDialog.hxx 12 Dec 2006 16:51:07 -0000 1.6
++++ sd/source/ui/animations/CustomAnimationDialog.hxx 13 Mar 2008 15:03:48 -0000 1.6.282.1
+@@ -98,6 +98,8 @@ const sal_Int32 nHandleSoundEndAfterSlid
const sal_Int32 nHandleCommand = 31;
@@ -280,11 +146,9 @@
const sal_Int32 nPropertyTypeNone = 0;
const sal_Int32 nPropertyTypeDirection = 1;
const sal_Int32 nPropertyTypeSpokes = 2;
-diff --git a/sd/source/ui/animations/CustomAnimationDialog.src b/sd/source/ui/animations/CustomAnimationDialog.src
-index c52dae9..77dcf0b 100644
---- sd/source/ui/animations/CustomAnimationList.cxx
-+++ sd/source/ui/animations/CustomAnimationList.cxx
-@@ -569,14 +569,14 @@ void CustomAnimationList::KeyInput( const KeyEvent& rKEvt )
+--- sd/source/ui/animations/CustomAnimationList.cxx 6 Jul 2007 13:11:11 -0000 1.12
++++ sd/source/ui/animations/CustomAnimationList.cxx 12 Mar 2008 13:14:10 -0000 1.12.168.1
+@@ -569,14 +569,14 @@ void CustomAnimationList::KeyInput( cons
const int nKeyCode = rKEvt.GetKeyCode().GetCode();
switch( nKeyCode )
{
@@ -302,8 +166,8 @@
}
}
---- sd/source/ui/animations/CustomAnimationPane.cxx
-+++ sd/source/ui/animations/CustomAnimationPane.cxx
+--- sd/source/ui/animations/CustomAnimationPane.cxx 17 Aug 2007 15:33:28 -0000 1.29
++++ sd/source/ui/animations/CustomAnimationPane.cxx 17 Mar 2008 15:01:58 -0000 1.29.118.3
@@ -80,6 +80,8 @@
#ifndef _COM_SUN_STAR_AWT_XWINDOW_HPP_
#include <com/sun/star/awt/XWindow.hpp>
@@ -313,7 +177,7 @@
#ifndef _COMPHELPER_PROCESSFACTORY_HXX_
#include <comphelper/processfactory.hxx>
-@@ -201,23 +203,14 @@ using namespace ::com::sun::star::presentation;
+@@ -201,23 +203,14 @@ using namespace ::com::sun::star::presen
using namespace ::com::sun::star::text;
using ::rtl::OUString;
@@ -339,7 +203,7 @@
using ::com::sun::star::container::XIndexAccess;
using ::com::sun::star::container::XEnumerationAccess;
using ::com::sun::star::container::XEnumeration;
-@@ -422,6 +415,12 @@ void CustomAnimationPane::StateChanged( StateChangedType nStateChange )
+@@ -422,6 +415,12 @@ void CustomAnimationPane::StateChanged(
updateMotionPathTags();
}
@@ -352,7 +216,7 @@
void CustomAnimationPane::addListener()
{
Link aLink( LINK(this,CustomAnimationPane,EventMultiplexerListener) );
-@@ -1362,6 +1361,36 @@ bool CustomAnimationPane::setProperty1Value( sal_Int32 nType, CustomAnimationEff
+@@ -1362,6 +1361,36 @@ bool CustomAnimationPane::setProperty1Va
return bEffectChanged;
}
@@ -389,57 +253,16 @@
STLPropertySet* CustomAnimationPane::createSelectionSet()
{
-@@ -1413,6 +1442,9 @@ STLPropertySet* CustomAnimationPane::createSelectionSet()
+@@ -1413,6 +1442,8 @@ STLPropertySet* CustomAnimationPane::cre
addValue( pSet, nHandlePresetId, makeAny( pEffect->getPresetId() ) );
addValue( pSet, nHandleHasText, makeAny( (sal_Bool)pEffect->hasText() ) );
+
-+ const bool bHasVisibleShape = hasVisibleShape( pEffect->getTargetShape() );
-+ addValue( pSet, nHandleHasVisibleShape, Any( bHasVisibleShape ) );
++ addValue( pSet, nHandleHasVisibleShape, Any( hasVisibleShape( pEffect->getTargetShape() ) ) );
Any aSoundSource;
if( pEffect->getAudio().is() )
-@@ -1434,7 +1466,9 @@ STLPropertySet* CustomAnimationPane::createSelectionSet()
- pTextGroup = pEffectSequence->findGroup( nGroupId );
-
- addValue( pSet, nHandleTextGrouping, makeAny( pTextGroup.get() ? pTextGroup->getTextGrouping() : (sal_Int32)-1 ) );
-- addValue( pSet, nHandleAnimateForm, makeAny( pTextGroup.get() ? (sal_Bool)pTextGroup->getAnimateForm() : sal_True ) );
-+ // only default to separate geometry animation for shapes that
-+ // usually _have_ non-textual content
-+ addValue( pSet, nHandleAnimateForm, makeAny( pTextGroup.get() ? (sal_Bool)pTextGroup->getAnimateForm() : (sal_Bool)bHasVisibleShape ) );
- addValue( pSet, nHandleTextGroupingAuto, makeAny( pTextGroup.get() ? pTextGroup->getTextGroupingAuto() : (double)-1.0 ) );
- addValue( pSet, nHandleTextReverse, makeAny( pTextGroup.get() ? (sal_Bool)pTextGroup->getTextReverse() : sal_False ) );
-
-@@ -1740,6 +1774,10 @@ void CustomAnimationPane::changeSelection( STLPropertySet* pResultSet, STLProper
- if( bHasTextGrouping )
- pResultSet->getPropertyValue(nHandleTextGrouping) >>= nTextGrouping;
-
-+ // determine default value for animate form - if no visible
-+ // shape, default to false
-+ pResultSet->getPropertyValue(nHandleHasVisibleShape) >>= bAnimateForm;
-+
- if( bHasAnimateForm )
- pResultSet->getPropertyValue(nHandleAnimateForm) >>= bAnimateForm;
-
-@@ -1778,7 +1816,7 @@ void CustomAnimationPane::changeSelection( STLPropertySet* pResultSet, STLProper
- {
- if( (pTextGroup->getTextGrouping() != nTextGrouping) )
- {
-- pEffectSequence->setTextGrouping( pTextGroup, nTextGrouping );
-+ pEffectSequence->setTextGrouping( pTextGroup, nTextGrouping, bAnimateForm );
- bChanged = true;
- }
- }
-@@ -1796,7 +1834,7 @@ void CustomAnimationPane::changeSelection( STLPropertySet* pResultSet, STLProper
- {
- if( pTextGroup->getTextGroupingAuto() != fTextGroupingAuto )
- {
-- pEffectSequence->setTextGroupingAuto( pTextGroup, fTextGroupingAuto );
-+ pEffectSequence->setTextGroupingAuto( pTextGroup, fTextGroupingAuto, bAnimateForm );
- bChanged = true;
- }
- }
-@@ -1926,6 +1964,9 @@ void CustomAnimationPane::onChange( bool bCreate )
+@@ -1926,6 +1957,9 @@ void CustomAnimationPane::onChange( bool
// first create vector of targets for dialog preview
std::vector< Any > aTargets;
@@ -449,7 +272,7 @@
if( bCreate )
{
// gather shapes from the selection
-@@ -1992,15 +2033,22 @@ void CustomAnimationPane::onChange( bool bCreate )
+@@ -1992,15 +2026,22 @@ void CustomAnimationPane::onChange( bool
{
if( !bHasText || !(*aIter)->hasText() )
bHasText = false;
@@ -474,8 +297,8 @@
CustomAnimationPresetPtr pDescriptor = pDlg->getSelectedPreset();
if( pDescriptor.get() )
{
---- sd/source/ui/animations/CustomAnimationPane.hxx
-+++ sd/source/ui/animations/CustomAnimationPane.hxx
+--- sd/source/ui/animations/CustomAnimationPane.hxx 6 Jul 2007 13:11:36 -0000 1.6
++++ sd/source/ui/animations/CustomAnimationPane.hxx 12 Mar 2008 13:14:10 -0000 1.6.168.1
@@ -111,6 +111,7 @@ public:
// Control
virtual void Resize();
Modified: branches/ooo-build-2-4/patches/src680/vcl-dynamic-screens-fix.diff
==============================================================================
--- branches/ooo-build-2-4/patches/src680/vcl-dynamic-screens-fix.diff (original)
+++ branches/ooo-build-2-4/patches/src680/vcl-dynamic-screens-fix.diff Mon Apr 28 22:05:32 2008
@@ -1,208 +1,463 @@
---- vcl/unx/gtk/window/gtkframe.cxx 23 Jan 2008 17:17:10 -0000 1.72.8.2
-+++ vcl/unx/gtk/window/gtkframe.cxx 15 Apr 2008 20:07:09 -0000
-@@ -1180,7 +1180,7 @@ void GtkSalFrame::Center()
- GdkModifierType aMask;
- gdk_display_get_pointer( getGdkDisplay(), &pScreen, &x, &y, &aMask );
-
-- const std::vector< Rectangle >& rScreens = GetX11SalData()->GetDisplay()->GetXineramaScreens();
-+ const std::vector< Rectangle >& rScreens = GetX11SalData()->GetDisplay()->GetXineramaScreenRects();
- for( unsigned int i = 0; i < rScreens.size(); i++ )
- if( rScreens[i].IsInside( Point( x, y ) ) )
- {
-@@ -1649,7 +1649,7 @@ void GtkSalFrame::ShowFullScreen( BOOL b
- {
- GtkSalDisplay* pDisp = getDisplay();
- // xinerama ?
-- if( pDisp->IsXinerama() && pDisp->GetXineramaScreens().size() > 1 )
-+ if( pDisp->IsXinerama() && pDisp->GetXineramaScreenCount() > 1 )
- {
- if( bFullScreen )
- {
-@@ -1663,10 +1663,10 @@ void GtkSalFrame::ShowFullScreen( BOOL b
- m_nStyle |= SAL_FRAME_STYLE_PARTIAL_FULLSCREEN;
- createNewWindow( None, false, m_nScreen );
- Rectangle aNewPosSize;
-- if( nScreen < 0 || nScreen >= static_cast<int>(pDisp->GetXineramaScreens().size()) )
-+ if( nScreen < 0 || nScreen >= static_cast<int>(pDisp->GetXineramaScreenCount()) )
- aNewPosSize = Rectangle( Point( 0, 0 ), pDisp->GetScreenSize(m_nScreen) );
- else
-- aNewPosSize = pDisp->GetXineramaScreens()[ nScreen ];
-+ aNewPosSize = pDisp->GetXineramaScreenRects()[ nScreen ];
- gtk_window_resize( m_pWindow,
- maGeometry.nWidth = aNewPosSize.GetWidth(),
- maGeometry.nHeight = aNewPosSize.GetHeight() );
---- vcl/unx/inc/saldisp.hxx 26 Feb 2008 18:14:50 -0000 1.42.112.2
-+++ vcl/unx/inc/saldisp.hxx 15 Apr 2008 20:07:17 -0000
-@@ -477,6 +479,7 @@ public:
- void Remove( XEvent *pEvent );
-
- virtual void initScreen( int nScreen ) const;
-+ Size getScreenSize( int nScreen ) const;
- const ScreenData& getDataForScreen( int nScreen ) const
- {
- if( nScreen < 0 || nScreen >= static_cast<int>(m_aScreens.size()) )
-@@ -526,12 +529,13 @@ public:
- ::vcl_sal::WMAdaptor* getWMAdaptor() const { return m_pWMAdaptor; }
- DtIntegrator* getDtIntegrator() const { return m_pDtIntegrator; }
- bool IsXinerama() const { return m_bXinerama; }
-- const std::vector< Rectangle >& GetXineramaScreens() const { return m_aXineramaScreens; }
-+ const std::vector< Rectangle >& GetXineramaScreenRects();
- XLIB_Window GetRootWindow( int nScreen ) const
- { return getDataForScreen( nScreen ).m_aRoot; }
- const std::vector< ScreenData >& GetScreenData()
- { return m_aScreens; }
- int GetScreenCount() const { return static_cast<int>(m_aScreens.size()); }
-+ std::size_t GetXineramaScreenCount() const { return m_aXineramaScreens.size(); }
-
- const std::list< SalFrame* >& getFrames() const
- { return m_aFrames; }
---- vcl/unx/source/app/saldisp.cxx 23 Jan 2008 17:18:18 -0000 1.91.146.2
-+++ vcl/unx/source/app/saldisp.cxx 15 Apr 2008 20:07:25 -0000
-@@ -70,7 +70,7 @@
-
- #ifdef USE_XINERAMA
- #ifdef USE_XINERAMA_XORG
--#if defined(X86) || defined(MACOSX)
-+#if defined(X86) || defined(X86_64) || defined(MACOSX)
- #include <X11/extensions/Xinerama.h>
- #endif
- #elif defined USE_XINERAMA_XSUN
-@@ -847,6 +853,26 @@ void SalDisplay::initScreen( int nScreen
- }
+--- config_office/configure.in.before 2008-04-28 10:31:26.000000000 +0200
++++ config_office/configure.in 2008-04-28 10:32:01.000000000 +0200
+@@ -274,6 +274,9 @@
+ AC_ARG_ENABLE(xrender-link,
+ [ --enable-xrender-link link with libXrender instead of dynamically open it
+ ],,)
++AC_ARG_ENABLE(randr,
++[ --disable-randr disable RandR support in the vcl project
++],,enable_randr=yes)
+ AC_ARG_WITH(myspell-dicts,
+ [ --without-myspell-dicts Removes myspell dictionaries from openoffice.org
+ installation set, for people building for specific
+@@ -838,6 +841,7 @@
+ build_gstreamer=yes
+ test_kde=yes
+ test_cups=yes
++ test_randr=yes
+ _os=SunOS
+
+ dnl ===========================================================
+@@ -865,6 +869,7 @@
+ build_gstreamer=yes
+ test_kde=yes
+ test_cups=yes
++ test_randr=yes
+ if getconf GNU_LIBPTHREAD_VERSION |grep -q NPTL; then
+ PTHREAD_CFLAGS="-DNPTL"
+ fi
+@@ -884,6 +889,7 @@
+ test_gtk=yes
+ build_cairo=no
+ build_gstreamer=no
++ test_randr=no
+ _os=Darwin
+ if test "$enable_systray" = "yes" && test "$enable_gtk" != "no"; then
+ AC_MSG_WARN([Disabling gtk-quickstarter - not supported on Mac. Use --disable-systray])
+@@ -894,6 +900,7 @@
+ os2*)
+ test_x=no
+ test_cups=no
++ test_randr=no
+ test_gtk=no
+ _os=OS2
+ ;;
+@@ -903,6 +910,7 @@
+ build_gstreamer=yes
+ test_kde=yes
+ test_cups=yes
++ test_randr=yes
+ AC_MSG_CHECKING([the FreeBSD operating system release])
+ if test -n "$with_os_version"; then
+ OSVERSION="$with_os_version"
+@@ -926,6 +934,7 @@
+ ;;
+ osf)
+ test_cups=no
++ test_randr=no
+ _os=OSF1
+ ;;
+ netbsd)
+@@ -934,16 +943,19 @@
+ build_gstreamer=yes
+ test_kde=yes
+ test_cups=no
++ test_randr=yes
+ PTHREAD_CFLAGS="-pthread"
+ PTHREAD_LIBS="-pthread -lpthread"
+ _os=NetBSD
+ ;;
+ irix*)
+ test_cups=no
++ test_randr=no
+ _os=IRIX
+ ;;
+ aix*)
+ test_cups=no
++ test_randr=no
+ PTHREAD_LIBS=-pthread
+ echo "AIX is an alpha port --- Use at own risk" >> warn
+ _os=AIX
+@@ -1123,6 +1135,19 @@
+ AC_SUBST(ENABLE_FONTCONFIG)
+
+ dnl ===================================================================
++dnl Build options
++dnl ===================================================================
++AC_MSG_CHECKING([whether to enable RandR support])
++if test "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \) ; then
++ ENABLE_RANDR="TRUE"
++ AC_MSG_RESULT([yes])
++else
++ ENABLE_RANDR=""
++ AC_MSG_RESULT([no])
++fi
++AC_SUBST(ENABLE_RANDR)
++
++dnl ===================================================================
+ dnl Disable legacy binary file formats filters
+ dnl ===================================================================
+ AC_MSG_CHECKING([whether to enable filters for legacy binary file formats (StarOffice 5.2)])
+@@ -1915,7 +1940,15 @@
+ fi
+
+ dnl ===================================================================
++dnl Check if X11/extensions/Xrandr.h is available
++dnl ===================================================================
++if test "$test_randr" = "yes" -a "$ENABLE_RANDR" = "TRUE" ; then
++ AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
++ [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
++fi
++
++dnl ===================================================================
+ dnl Check if PAM/pam_appl.h is available on Linux or FreeBSD
+ dnl ===================================================================
+ if test "$_os" = "Linux" -o "$_os" = "FreeBSD" -o "$_os" = "GNU"; then
+
+--- vcl/unx/gtk/app/gtkdata.cxx 29 Jan 2008 16:20:56 -0000 1.36
++++ vcl/unx/gtk/app/gtkdata.cxx 7 Mar 2008 16:59:00 -0000 1.36.16.1
+@@ -191,6 +191,7 @@ GdkFilterReturn GtkSalDisplay::filterGdk
+ }
+ }
+ X11SalObject::Dispatch( pEvent );
++ pDisplay->processRandREvent( pEvent );
+ }
- // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+ return aFilterReturn;
+--- vcl/unx/inc/saldisp.hxx 27 Feb 2008 10:32:35 -0000 1.44
++++ vcl/unx/inc/saldisp.hxx 12 Mar 2008 09:39:09 -0000 1.43.16.2
+@@ -418,6 +418,9 @@ protected:
+ void DestroyFontCache();
+ virtual long Dispatch( XEvent *pEvent ) = 0;
+ void InitXinerama();
++ void InitRandR( XLIB_Window aRoot ) const;
++ void DeInitRandR();
++ int processRandREvent( XEvent* );
+
+ void doDestruct();
+ public:
+--- vcl/unx/source/app/makefile.mk 7 Mar 2008 17:12:23 -0000 1.30
++++ vcl/unx/source/app/makefile.mk 1 Apr 2008 10:31:13 -0000 1.29.16.3
+@@ -64,6 +64,7 @@ SLOFILES=\
+ $(SLO)$/saldata.obj \
+ $(SLO)$/saltimer.obj \
+ $(SLO)$/saldisp.obj \
++ $(SLO)$/randrwrapper.obj \
+ $(SLO)$/salinst.obj \
+ $(SLO)$/salsys.obj \
+ $(SLO)$/soicon.obj \
+@@ -81,6 +82,12 @@ EXCEPTIONSFILES=\
+ $(SLO)$/salsys.obj
+
+
++.IF "$(ENABLE_RANDR)" != ""
++.IF "$(OS)" != "SOLARIS"
++CDEFS+=-DUSE_RANDR
++.ENDIF
++.ENDIF
++
+ .IF "$(USE_XINERAMA)" != "NO"
+ CDEFS+=-DUSE_XINERAMA
+ .IF "$(USE_XINERAMA_VERSION)" == "Xorg"
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ vcl/unx/source/app/randrwrapper.cxx 15 Mar 2008 14:29:42 -0000 1.1.2.2
+@@ -0,0 +1,250 @@
++/*************************************************************************
++ *
++ * OpenOffice.org - a multi-platform office productivity suite
++ *
++ * $RCSfile$
++ *
++ * $Revision$
++ *
++ * last change: $Author$ $Date$
++ *
++ * The Contents of this file are made available subject to
++ * the terms of GNU Lesser General Public License Version 2.1.
++ *
++ *
++ * GNU Lesser General Public License Version 2.1
++ * =============================================
++ * Copyright 2005 by Sun Microsystems, Inc.
++ * 901 San Antonio Road, Palo Alto, CA 94303, USA
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License version 2.1, as published by the Free Software Foundation.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public
++ * License along with this library; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ *
++ ************************************************************************/
++
++#ifdef USE_RANDR
+
-+Size SalDisplay::getScreenSize( int nScreen ) const
++#include "prex.h"
++#include <X11/extensions/Xrandr.h>
++#include "postx.h"
++
++#include "osl/module.h"
++#include "rtl/ustring.hxx"
++
++namespace
++{
++class RandRWrapper
+{
-+ if( nScreen < 0 || nScreen >= static_cast<int>(m_aScreens.size()) )
-+ return Size();
-+ if( ! m_aScreens[nScreen].m_bInit )
-+ initScreen( nScreen );
-+ else
-+ {
-+ // update screen size everytime, xrandr etc. change this
-+ // without notice
-+ Screen* pScreen = ScreenOfDisplay( pDisp_, nScreen );
-+ const_cast<Size&>(m_aScreens[nScreen].m_aSize) = Size( WidthOfScreen( pScreen ),
-+ HeightOfScreen( pScreen ) );
++ oslModule m_pRandRLib;
++
++ // function pointers
++ Bool(*m_pXRRQueryExtension)(Display*,int*,int*);
++ Status(*m_pXRRQueryVersion)(Display*,int*,int*);
++ XRRScreenConfiguration*(*m_pXRRGetScreenInfo)(Display*,Drawable);
++ void(*m_pXRRFreeScreenConfigInfo)(XRRScreenConfiguration*);
++ void(*m_pXRRSelectInput)(Display*,XLIB_Window,int);
++ int(*m_pXRRUpdateConfiguration)(XEvent*);
++ XRRScreenSize*(*m_pXRRSizes)(Display*,int,int*);
++ XRRScreenSize*(*m_pXRRConfigSizes)(XRRScreenConfiguration*,int*);
++ SizeID(*m_pXRRConfigCurrentConfiguration)(XRRScreenConfiguration*,Rotation*);
++
++ bool m_bValid;
++
++ void initFromModule();
++
++ RandRWrapper(Display*);
++ ~RandRWrapper();
++public:
++ static RandRWrapper& get(Display*);
++ static void releaseWrapper();
++
++ Bool XRRQueryExtension(Display* i_pDisp, int* o_event_base, int* o_error_base )
++ {
++ Bool bRet = False;
++ if( m_bValid )
++ bRet = m_pXRRQueryExtension( i_pDisp, o_event_base, o_error_base );
++ return bRet;
++ }
++ Status XRRQueryVersion( Display* i_pDisp, int* o_major, int* o_minor )
++ {
++ return m_bValid ? m_pXRRQueryVersion( i_pDisp, o_major, o_minor ) : 0;
+ }
++ XRRScreenConfiguration* XRRGetScreenInfo( Display* i_pDisp, Drawable i_aDrawable )
++ {
++ return m_bValid ? m_pXRRGetScreenInfo( i_pDisp, i_aDrawable ) : NULL;
++ }
++ void XRRFreeScreenConfigInfo( XRRScreenConfiguration* i_pConfig )
++ {
++ if( m_bValid )
++ m_pXRRFreeScreenConfigInfo( i_pConfig );
++ }
++ void XRRSelectInput( Display* i_pDisp, XLIB_Window i_window, int i_nMask )
++ {
++ if( m_bValid )
++ m_pXRRSelectInput( i_pDisp, i_window, i_nMask );
++ }
++ int XRRUpdateConfiguration( XEvent* i_pEvent )
++ {
++ return m_bValid ? m_pXRRUpdateConfiguration( i_pEvent ) : 0;
++ }
++ XRRScreenSize* XRRSizes( Display* i_pDisp, int i_screen, int* o_nscreens )
++ {
++ return m_bValid ? m_pXRRSizes( i_pDisp, i_screen, o_nscreens ) : NULL;
++ }
++ XRRScreenSize* XRRConfigSizes( XRRScreenConfiguration* i_pConfig, int* o_nSizes )
++ {
++ return m_bValid ? m_pXRRConfigSizes( i_pConfig, o_nSizes ) : NULL;
++ }
++ SizeID XRRConfigCurrentConfiguration( XRRScreenConfiguration* i_pConfig, Rotation* o_pRot )
++ {
++ return m_bValid ? m_pXRRConfigCurrentConfiguration( i_pConfig, o_pRot ) : 0;
++ }
++};
++}
+
-+ return m_aScreens[nScreen].m_aSize;
++void RandRWrapper::initFromModule()
++{
++ m_pXRRQueryExtension = (Bool(*)(Display*,int*,int*))osl_getAsciiFunctionSymbol( m_pRandRLib, "XRRQueryExtension" );
++ m_pXRRQueryVersion = (Status(*)(Display*,int*,int*))osl_getAsciiFunctionSymbol( m_pRandRLib, "XRRQueryVersion" );
++ m_pXRRGetScreenInfo = (XRRScreenConfiguration*(*)(Display*,Drawable))osl_getAsciiFunctionSymbol( m_pRandRLib, "XRRGetScreenInfo" );
++ m_pXRRFreeScreenConfigInfo = (void(*)(XRRScreenConfiguration*))osl_getAsciiFunctionSymbol( m_pRandRLib, "XRRFreeScreenConfigInfo" );
++ m_pXRRSelectInput = (void(*)(Display*,XLIB_Window,int))osl_getAsciiFunctionSymbol( m_pRandRLib, "XRRSelectInput" );
++ m_pXRRUpdateConfiguration = (int(*)(XEvent*))osl_getAsciiFunctionSymbol( m_pRandRLib, "XRRUpdateConfiguration" );
++ m_pXRRSizes = (XRRScreenSize*(*)(Display*,int,int*))osl_getAsciiFunctionSymbol( m_pRandRLib, "XRRSizes" );
++ m_pXRRConfigSizes = (XRRScreenSize*(*)(XRRScreenConfiguration*,int*))osl_getAsciiFunctionSymbol( m_pRandRLib, "XRRConfigSizes" );
++ m_pXRRConfigCurrentConfiguration = (SizeID(*)(XRRScreenConfiguration*,Rotation*))osl_getAsciiFunctionSymbol( m_pRandRLib, "XRRConfigCurrentConfiguration" );
++
++ m_bValid = m_pXRRQueryExtension &&
++ m_pXRRQueryVersion &&
++ m_pXRRGetScreenInfo &&
++ m_pXRRFreeScreenConfigInfo &&
++ m_pXRRSelectInput &&
++ m_pXRRUpdateConfiguration &&
++ m_pXRRSizes &&
++ m_pXRRConfigSizes &&
++ m_pXRRConfigCurrentConfiguration
++ ;
+}
+
-+// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- void SalDisplay::Init()
- {
- for( size_t i = 0; i < POINTER_COUNT; i++ )
-@@ -2640,9 +2695,9 @@ void SalDisplay::GetScreenFontResolution
- return;
-
- int nThreshold;
-- if (m_aScreens[m_nDefaultScreen].m_aSize.Height() <= 600)
-+ if (GetScreenSize(m_nDefaultScreen).Height() <= 600)
- nThreshold = 96;
-- else if (m_aScreens[m_nDefaultScreen].m_aSize.Height() <= 768)
-+ else if (GetScreenSize(m_nDefaultScreen).Height() <= 768)
- nThreshold = 108;
- else
- nThreshold = 120;
-@@ -2657,6 +2712,96 @@ void SalDisplay::GetScreenFontResolution
- rDPIX = rDPIY;
- }
-
-+const std::vector< Rectangle >& SalDisplay::GetXineramaScreenRects()
-+{
-+ OSL_ASSERT(m_bXinerama);
-+
-+ /* update screen rects from xinerama - should, for whatever
-+ reason, xinerama been disabled by now, just fill in empty
-+ rects, calling code is not prepared to handle IsXinerama() ==
-+ true & this here giving empty vector
-+ */
-+
-+ // clear rects
-+ std::fill(m_aXineramaScreens.begin(),
-+ m_aXineramaScreens.end(),
-+ Rectangle());
-+
-+#ifdef USE_XINERAMA
-+#if defined(USE_XINERAMA_XSUN)
-+ if( XineramaGetState( pDisp_, m_nDefaultScreen ) )
-+ {
-+ int nFramebuffers = 1;
-+ XRectangle pFramebuffers[MAXFRAMEBUFFERS];
-+ unsigned char hints[MAXFRAMEBUFFERS];
-+ int result = XineramaGetInfo( pDisp_,
-+ m_nDefaultScreen,
-+ pFramebuffers,
-+ hints,
-+ &nFramebuffers );
-+
-+ // limit to existing number of screens
-+ nFramebuffers = std::min(int(m_aXineramaScreens).size(),nFramebuffers);
-+ if( result > 0 )
-+ {
-+ for( int i = 0; i < nFramebuffers; i++ )
-+ m_aXineramaScreens[i] = Rectangle( Point( pFramebuffers[i].x,
-+ pFramebuffers[i].y ),
-+ Size( pFramebuffers[i].width,
-+ pFramebuffers[i].height ) );
-+ }
++RandRWrapper::RandRWrapper( Display* pDisplay ) :
++ m_pRandRLib( NULL ),
++ m_pXRRQueryExtension( NULL ),
++ m_pXRRQueryVersion( NULL ),
++ m_pXRRGetScreenInfo( NULL ),
++ m_pXRRFreeScreenConfigInfo( NULL ),
++ m_pXRRSelectInput( NULL ),
++ m_pXRRUpdateConfiguration( NULL ),
++ m_pXRRSizes( NULL ),
++ m_pXRRConfigSizes( NULL ),
++ m_pXRRConfigCurrentConfiguration( NULL ),
++ m_bValid( false )
++{
++ // first try in process space (e.g. gtk links that ?)
++ initFromModule();
++ if( ! m_bValid )
++ {
++ rtl::OUString aLibName( RTL_CONSTASCII_USTRINGPARAM( "libXrandr.so.2" ) );
++ m_pRandRLib = osl_loadModule( aLibName.pData, SAL_LOADMODULE_DEFAULT );
++ initFromModule();
+ }
-+#elif defined(USE_XINERAMA_XORG)
-+#if defined(X86) || defined(X86_64) || defined(MACOSX)
-+ if( XineramaIsActive( pDisp_ ) )
++ if( m_bValid )
++ {
++ int nEventBase = 0, nErrorBase = 0;
++ if( ! m_pXRRQueryExtension( pDisplay, &nEventBase, &nErrorBase ) )
++ m_bValid = false;
++ }
++}
++
++RandRWrapper::~RandRWrapper()
++{
++ if( m_pRandRLib )
++ osl_unloadModule( m_pRandRLib );
++}
++
++static RandRWrapper* pWrapper = NULL;
++
++RandRWrapper& RandRWrapper::get( Display* i_pDisplay )
++{
++ if( ! pWrapper )
++ pWrapper = new RandRWrapper( i_pDisplay );
++ return *pWrapper;
++}
++
++void RandRWrapper::releaseWrapper()
++{
++ delete pWrapper;
++ pWrapper = NULL;
++}
++
++#endif
++
++#include "saldisp.hxx"
++
++void SalDisplay::InitRandR( XLIB_Window aRoot ) const
++{
++ #ifdef USE_RANDR
++ RandRWrapper::get( GetDisplay() ).XRRSelectInput( GetDisplay(), aRoot, RRScreenChangeNotifyMask );
++ #else
++ (void)aRoot;
++ #endif
++}
++
++void SalDisplay::DeInitRandR()
++{
++ #ifdef USE_RANDR
++ RandRWrapper::releaseWrapper();
++ #endif
++}
++
++int SalDisplay::processRandREvent( XEvent* pEvent )
++{
++ int nRet = 0;
++ #ifdef USE_RANDR
++ if( pWrapper )
+ {
-+ int nFramebuffers = 1;
-+ XineramaScreenInfo* pScreens = XineramaQueryScreens( pDisp_, &nFramebuffers );
-+ if( pScreens )
++ nRet = pWrapper->XRRUpdateConfiguration( pEvent );
++ if( nRet == 1 && pEvent->type != ConfigureNotify) // this should then be a XRRScreenChangeNotifyEvent
+ {
-+ if( nFramebuffers > 1 )
++ // update screens
++ for( size_t i = 0; i < m_aScreens.size(); i++ )
+ {
-+ // limit to existing number of screens
-+ nFramebuffers = std::min(int(m_aXineramaScreens.size()),nFramebuffers);
-+
-+ for( int i = 0, j = 0; i < nFramebuffers; i++ )
++ if( m_aScreens[i].m_bInit )
+ {
-+ // see if any frame buffers are at the same coordinates
-+ // this can happen with weird configuration e.g. on
-+ // XFree86 and Clone displays
-+ bool bDuplicate = false;
-+ for( int n = 0; n < i; n++ )
-+ {
-+ if( m_aXineramaScreens[n].Left() == pScreens[i].x_org &&
-+ m_aXineramaScreens[n].Top() == pScreens[i].y_org )
-+ {
-+ bDuplicate = true;
-+ if( m_aXineramaScreens[n].GetWidth() < pScreens[i].width ||
-+ m_aXineramaScreens[n].GetHeight() < pScreens[i].height )
-+ {
-+ m_aXineramaScreens[n].SetSize( Size( pScreens[i].width,
-+ pScreens[i].height ) );
-+ }
-+ break;
-+ }
-+ }
-+ if( ! bDuplicate )
-+ m_aXineramaScreens[j++] = Rectangle( Point( pScreens[i].x_org,
-+ pScreens[i].y_org ),
-+ Size( pScreens[i].width,
-+ pScreens[i].height ) );
++ XRRScreenConfiguration *pConfig = NULL;
++ XRRScreenSize *pSizes = NULL;
++ int nSizes = 0;
++ Rotation nRot = 0;
++ SizeID nId = 0;
++
++ pConfig = pWrapper->XRRGetScreenInfo( GetDisplay(), m_aScreens[i].m_aRoot );
++ nId = pWrapper->XRRConfigCurrentConfiguration( pConfig, &nRot );
++ pSizes = pWrapper->XRRConfigSizes( pConfig, &nSizes );
++ XRRScreenSize *pTargetSize = pSizes + nId;
++
++ m_aScreens[i].m_aSize = Size( pTargetSize->width, pTargetSize->height );
++
++ pWrapper->XRRFreeScreenConfigInfo( pConfig );
++
++ #if OSL_DEBUG_LEVEL > 1
++ fprintf( stderr, "screen %d changed to size %dx%d\n", i, pTargetSize->width, pTargetSize->height );
++ #endif
+ }
+ }
-+ XFree( pScreens );
+ }
+ }
-+#endif
-+#endif
-+#endif // USE_XINERAMA
-+
-+ return m_aXineramaScreens;
++ #else
++ (void)pEvent;
++ #endif
++ return nRet;
+}
+--- vcl/unx/source/app/saldisp.cxx 29 Jan 2008 16:22:34 -0000 1.93
++++ vcl/unx/source/app/saldisp.cxx 31 Mar 2008 16:44:44 -0000 1.93.16.2
+@@ -70,7 +70,7 @@
+
+ #ifdef USE_XINERAMA
+ #ifdef USE_XINERAMA_XORG
+-#if defined(X86) || defined(MACOSX)
++#if defined(X86) || defined(X86_64) || defined(MACOSX)
+ #include <X11/extensions/Xinerama.h>
+ #endif
+ #elif defined USE_XINERAMA_XSUN
+@@ -715,6 +715,9 @@ SalX11Display::~SalX11Display()
+ XCloseDisplay( pDisp_ );
+ pDisp_ = NULL;
+ }
++ // don't do this in doDestruct since RandR extension adds hooks into Display
++ // that is XCloseDisplay still needs the RandR library if it was used
++ DeInitRandR();
+ }
+
+ void SalDisplay::initScreen( int nScreen ) const
+@@ -743,6 +746,9 @@ void SalDisplay::initScreen( int nScreen
+ rSD.m_aRoot = RootWindow( pDisp_, nScreen );
+ rSD.m_aVisual = SalVisual( &aVI );
+ rSD.m_aColormap = SalColormap( this, aColMap, nScreen );
++
++ // we're interested in configure notification of root windows
++ InitRandR( rSD.m_aRoot );
+
+ // - - - - - - - - - - Reference Window/Default Drawable - -
+ XSetWindowAttributes aXWAttributes;
+@@ -2416,10 +2422,13 @@ long SalX11Display::Dispatch( XEvent *pE
+ return pFrame->Dispatch( pEvent );
+ }
+ }
+-
++
+ // dispatch to salobjects
+ X11SalObject::Dispatch( pEvent );
+
++ // is this perhaps a root window that changed size ?
++ processRandREvent( pEvent );
+
- void SalDisplay::InitXinerama()
- {
- if( m_aScreens.size() > 1 )
+ return 0;
+ }
+
@@ -2688,7 +2833,7 @@ void SalDisplay::InitXinerama()
}
}
@@ -212,159 +467,3 @@
if( XineramaIsActive( pDisp_ ) )
{
int nFramebuffers = 1;
---- vcl/unx/source/app/salsys.cxx 27 Jun 2007 20:47:35 -0000 1.18
-+++ vcl/unx/source/app/salsys.cxx 15 Apr 2008 20:07:26 -0000
-@@ -66,7 +66,7 @@ X11SalSystem::~X11SalSystem()
- unsigned int X11SalSystem::GetDisplayScreenCount()
- {
- SalDisplay* pSalDisp = GetX11SalData()->GetDisplay();
-- return pSalDisp->IsXinerama() ? pSalDisp->GetXineramaScreens().size() : pSalDisp->GetScreenCount();
-+ return pSalDisp->IsXinerama() ? pSalDisp->GetXineramaScreenCount() : pSalDisp->GetScreenCount();
- }
-
- bool X11SalSystem::IsMultiDisplay()
-@@ -88,14 +88,13 @@ Rectangle X11SalSystem::GetDisplayScreen
- SalDisplay* pSalDisp = GetX11SalData()->GetDisplay();
- if( pSalDisp->IsXinerama() )
- {
-- const std::vector< Rectangle >& rScreens = pSalDisp->GetXineramaScreens();
-+ const std::vector< Rectangle >& rScreens = pSalDisp->GetXineramaScreenRects();
- if( nScreen < rScreens.size() )
- aRet = rScreens[nScreen];
- }
- else
- {
-- const SalDisplay::ScreenData& rScreen = pSalDisp->getDataForScreen( nScreen );
-- aRet = Rectangle( Point( 0, 0 ), rScreen.m_aSize );
-+ aRet = Rectangle( Point( 0, 0 ), pSalDisp->GetScreenSize(nScreen) );
- }
-
- return aRet;
-@@ -113,8 +112,7 @@ rtl::OUString X11SalSystem::GetScreenNam
- SalDisplay* pSalDisp = GetX11SalData()->GetDisplay();
- if( pSalDisp->IsXinerama() )
- {
-- const std::vector< Rectangle >& rScreens = pSalDisp->GetXineramaScreens();
-- if( nScreen >= rScreens.size() )
-+ if( nScreen >= pSalDisp->GetXineramaScreenCount() )
- nScreen = 0;
- rtl::OUStringBuffer aBuf( 256 );
- aBuf.append( rtl::OStringToOUString( rtl::OString( DisplayString( pSalDisp->GetDisplay() ) ), osl_getThreadTextEncoding() ) );
---- vcl/unx/source/app/wmadaptor.cxx 23 Jan 2008 17:18:32 -0000 1.67.112.1
-+++ vcl/unx/source/app/wmadaptor.cxx 15 Apr 2008 20:07:31 -0000
-@@ -1580,7 +1580,7 @@ void WMAdaptor::maximizeFrame( X11SalFra
- if( m_pSalDisplay->IsXinerama() )
- {
- Point aMed( aTL.X() + rGeom.nWidth/2, aTL.Y() + rGeom.nHeight/2 );
-- const std::vector< Rectangle >& rScreens = m_pSalDisplay->GetXineramaScreens();
-+ const std::vector< Rectangle >& rScreens = m_pSalDisplay->GetXineramaScreenRects();
- for( unsigned int i = 0; i < rScreens.size(); i++ )
- if( rScreens[i].IsInside( aMed ) )
- {
-@@ -2202,7 +2202,7 @@ void NetWMAdaptor::showFullScreen( X11Sa
- m_pSalDisplay->GetRootWindow( pFrame->GetScreenNumber() ),
- &aRoot, &aChild,
- &root_x, &root_y, &lx, &ly, &mask );
-- const std::vector< Rectangle >& rScreens = m_pSalDisplay->GetXineramaScreens();
-+ const std::vector< Rectangle >& rScreens = m_pSalDisplay->GetXineramaScreenRects();
- Point aMousePoint( root_x, root_y );
- for( unsigned int i = 0; i < rScreens.size(); i++ )
- {
---- vcl/unx/source/gdi/salgdi3.cxx 31 Jan 2008 10:06:27 -0000 1.149.8.2
-+++ vcl/unx/source/gdi/salgdi3.cxx 15 Apr 2008 20:07:40 -0000
-@@ -905,7 +905,7 @@ bool X11SalGraphics::DrawServerAAForcedS
- // clip with screen
- int nScreenX = m_pFrame->maGeometry.nX+aXRect.x;
- int nScreenY = m_pFrame->maGeometry.nY+aXRect.y;
-- const Size& rScreenSize = GetDisplay()->getDataForScreen( m_nScreen ).m_aSize;
-+ const Size& rScreenSize = GetDisplay()->GetScreenSize( m_nScreen );
- int nScreenW = rScreenSize.Width();
- int nScreenH = rScreenSize.Height();
- if( nScreenX < 0 )
-@@ -941,7 +941,7 @@ bool X11SalGraphics::DrawServerAAForcedS
- // geometry changed in the meantime; lets get the current geometry
- // and clip against the current window size as well as the screen
- // with the current frame position
-- const Size& rScreenSize = GetDisplay()->getDataForScreen(m_nScreen).m_aSize;
-+ const Size& rScreenSize = GetDisplay()->GetScreenSize(m_nScreen);
- int nScreenW = rScreenSize.Width();
- int nScreenH = rScreenSize.Height();
- XLIB_Window aRoot = None;
---- vcl/unx/source/window/salframe.cxx 25 Jan 2008 16:37:31 -0000 1.219.110.3
-+++ vcl/unx/source/window/salframe.cxx 15 Apr 2008 20:07:50 -0000
-@@ -370,7 +370,7 @@ void X11SalFrame::Init( ULONG nSalFrameS
- {
- if( ! bUseGeometry )
- {
-- Size aScreenSize( GetDisplay()->getDataForScreen( m_nScreen ).m_aSize );
-+ Size aScreenSize( GetDisplay()->GetScreenSize( m_nScreen ) );
- w = aScreenSize.Width();
- h = aScreenSize.Height();
- if( nSalFrameStyle & SAL_FRAME_STYLE_SIZEABLE &&
-@@ -439,7 +439,7 @@ void X11SalFrame::Init( ULONG nSalFrameS
- GetDisplay()->GetRootWindow( m_nScreen ),
- &aRoot, &aChild,
- &root_x, &root_y, &lx, &ly, &mask );
-- const std::vector< Rectangle >& rScreens = GetDisplay()->GetXineramaScreens();
-+ const std::vector< Rectangle >& rScreens = GetDisplay()->GetXineramaScreenRects();
- for( unsigned int i = 0; i < rScreens.size(); i++ )
- if( rScreens[i].IsInside( Point( root_x, root_y ) ) )
- {
-@@ -1443,7 +1443,7 @@ void X11SalFrame::Center( )
- int nRealScreenWidth, nRealScreenHeight;
- int nScreenX = 0, nScreenY = 0;
-
-- const Size& aScreenSize = GetDisplay()->getDataForScreen( m_nScreen ).m_aSize;
-+ const Size& aScreenSize = GetDisplay()->GetScreenSize( m_nScreen );
- nScreenWidth = aScreenSize.Width();
- nScreenHeight = aScreenSize.Height();
- nRealScreenWidth = nScreenWidth;
-@@ -1469,7 +1469,7 @@ void X11SalFrame::Center( )
- &root_x, &root_y,
- &x, &y,
- &mask );
-- const std::vector< Rectangle >& rScreens = GetDisplay()->GetXineramaScreens();
-+ const std::vector< Rectangle >& rScreens = GetDisplay()->GetXineramaScreenRects();
- for( unsigned int i = 0; i < rScreens.size(); i++ )
- if( rScreens[i].IsInside( Point( root_x, root_y ) ) )
- {
-@@ -1689,7 +1689,7 @@ void X11SalFrame::SetWindowState( const
- bDoAdjust = true;
- }
-
-- const Size& aScreenSize = pDisplay_->getDataForScreen( m_nScreen ).m_aSize;
-+ const Size& aScreenSize = pDisplay_->GetScreenSize( m_nScreen );
- const WMAdaptor *pWM = GetDisplay()->getWMAdaptor();
-
- if( bDoAdjust && aPosSize.GetWidth() <= aScreenSize.Width()
-@@ -1883,7 +1883,7 @@ void X11SalFrame::GetPosSize( Rectangle
- {
- if( maGeometry.nWidth < 1 || maGeometry.nHeight < 1 )
- {
-- const Size& aScreenSize = pDisplay_->getDataForScreen( m_nScreen ).m_aSize;
-+ const Size& aScreenSize = pDisplay_->GetScreenSize( m_nScreen );
- long w = aScreenSize.Width() - maGeometry.nLeftDecoration - maGeometry.nRightDecoration;
- long h = aScreenSize.Height() - maGeometry.nTopDecoration - maGeometry.nBottomDecoration;
-
-@@ -2090,7 +2090,7 @@ void X11SalFrame::Restore()
-
- void X11SalFrame::ShowFullScreen( BOOL bFullScreen, sal_Int32 nScreen )
- {
-- if( GetDisplay()->IsXinerama() && GetDisplay()->GetXineramaScreens().size() > 1 )
-+ if( GetDisplay()->IsXinerama() && GetDisplay()->GetXineramaScreenCount() > 1 )
- {
- if( mbFullScreen == (bool)bFullScreen )
- return;
-@@ -2099,10 +2099,10 @@ void X11SalFrame::ShowFullScreen( BOOL b
- maRestorePosSize = Rectangle( Point( maGeometry.nX, maGeometry.nY ),
- Size( maGeometry.nWidth, maGeometry.nHeight ) );
- Rectangle aRect;
-- if( nScreen < 0 || nScreen >= static_cast<int>(GetDisplay()->GetXineramaScreens().size()) )
-+ if( nScreen < 0 || nScreen >= static_cast<int>(GetDisplay()->GetXineramaScreenCount()) )
- aRect = Rectangle( Point(0,0), GetDisplay()->GetScreenSize( m_nScreen ) );
- else
-- aRect = GetDisplay()->GetXineramaScreens()[nScreen];
-+ aRect = GetDisplay()->GetXineramaScreenRects()[nScreen];
- nStyle_ |= SAL_FRAME_STYLE_PARTIAL_FULLSCREEN;
- bool bVisible = bMapped_;
- if( bVisible )
Added: branches/ooo-build-2-4/patches/src680/vcl-limited-bmp-subset-fix.diff
==============================================================================
--- (empty file)
+++ branches/ooo-build-2-4/patches/src680/vcl-limited-bmp-subset-fix.diff Mon Apr 28 22:05:32 2008
@@ -0,0 +1,30 @@
+--- vcl/source/gdi/outdev2.cxx 18 Jan 2008 14:55:58 -0000 1.38.72.1
++++ vcl/source/gdi/outdev2.cxx 28 Apr 2008 21:45:34 -0000
+@@ -739,7 +739,7 @@ void OutputDevice::ImplDrawBitmap( const
+ }
+ if( aPosAry.mnDestX < 0 )
+ {
+- aPosAry.mnDestWidth += aPosAry.mnDestX;
++ aPosAry.mnDestWidth = Max(long(0),aPosAry.mnDestWidth+aPosAry.mnDestX);
+ aPosAry.mnSrcX -= sal::static_int_cast<long>(aPosAry.mnDestX / nScaleX);
+ aPosAry.mnDestX = 0;
+ }
+@@ -757,7 +757,7 @@ void OutputDevice::ImplDrawBitmap( const
+ }
+ if( aPosAry.mnDestY < 0 )
+ {
+- aPosAry.mnDestHeight += aPosAry.mnDestY;
++ aPosAry.mnDestHeight = Max(long(0),aPosAry.mnDestHeight+aPosAry.mnDestY);
+ aPosAry.mnSrcY -= sal::static_int_cast<long>(aPosAry.mnDestY / nScaleY);
+ aPosAry.mnDestY = 0;
+ }
+@@ -767,7 +767,8 @@ void OutputDevice::ImplDrawBitmap( const
+ }
+ }
+
+- mpGraphics->DrawBitmap( &aPosAry, *aBmp.ImplGetImpBitmap()->ImplGetSalBitmap(), this );
++ if ( aPosAry.mnSrcWidth && aPosAry.mnSrcHeight && aPosAry.mnDestWidth && aPosAry.mnDestHeight )
++ mpGraphics->DrawBitmap( &aPosAry, *aBmp.ImplGetImpBitmap()->ImplGetSalBitmap(), this );
+ }
+ }
+ }
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]