[ooo-build-commit] .: 101 commits - basegfx/source canvas/source comphelper/inc comphelper/source i18npool/source l10ntools/inc l10ntools/java l10ntools/prj l10ntools/scripts l10ntools/source sot/source svtools/inc svtools/source toolkit/inc toolkit/source tools/source transex3/java unotools/inc unotools/source vcl/inc vcl/source vcl/unx vcl/win

Jan Holesovsky kendy at kemper.freedesktop.org
Wed Sep 8 08:37:58 PDT 2010


 basegfx/source/polygon/b2dtrapezoid.cxx                  |    3 
 canvas/source/vcl/canvashelper_texturefill.cxx           |    1 
 comphelper/inc/comphelper/storagehelper.hxx              |    2 
 comphelper/source/misc/officerestartmanager.cxx          |    4 
 comphelper/source/misc/storagehelper.cxx                 |   31 +
 i18npool/source/transliteration/transliterationImpl.cxx  |    1 
 i18npool/source/transliteration/transliteration_body.cxx |  275 ++++------
 l10ntools/inc/lngmerge.hxx                               |    2 
 l10ntools/java/jpropex/java/JPropEx.java                 |    7 
 l10ntools/prj/d.lst                                      |    8 
 l10ntools/scripts/localize.pl                            |    2 
 l10ntools/scripts/tool/const.py                          |   39 +
 l10ntools/scripts/tool/l10ntool.py                       |  211 +++++++
 l10ntools/scripts/tool/pseudo.py                         |  184 ++++++
 l10ntools/scripts/tool/sdf.py                            |  170 ++++++
 l10ntools/scripts/tool/xhtex.py                          |  135 +++++
 l10ntools/scripts/tool/xtxex.py                          |   94 +++
 l10ntools/scripts/xhtex                                  |   46 +
 l10ntools/scripts/xtxex                                  |   47 +
 l10ntools/source/cfglex.l                                |   17 
 l10ntools/source/cfgmerge.cxx                            |   15 
 l10ntools/source/export.cxx                              |   12 
 l10ntools/source/helpex.cxx                              |    8 
 l10ntools/source/helpmerge.cxx                           |   11 
 l10ntools/source/lngex.cxx                               |   20 
 l10ntools/source/lngmerge.cxx                            |    5 
 l10ntools/source/localize.cxx                            |   44 -
 l10ntools/source/srclex.l                                |    6 
 l10ntools/source/xrmlex.l                                |    5 
 l10ntools/source/xrmmerge.cxx                            |   11 
 sot/source/sdstor/stgio.cxx                              |    2 
 svtools/inc/svtools/svtreebx.hxx                         |    1 
 svtools/source/contnr/svtreebx.cxx                       |    5 
 svtools/source/graphic/provider.cxx                      |    8 
 svtools/source/uno/treecontrolpeer.cxx                   |   18 
 toolkit/inc/toolkit/awt/vclxwindows.hxx                  |   24 
 toolkit/inc/toolkit/controls/unocontrols.hxx             |   57 +-
 toolkit/source/awt/vclxwindows.cxx                       |  138 ++++-
 toolkit/source/controls/tree/treecontrol.cxx             |    1 
 toolkit/source/controls/unocontrols.cxx                  |  223 +++++++-
 toolkit/source/helper/unowrapper.cxx                     |   15 
 tools/source/generic/poly.cxx                            |    5 
 transex3/java/jpropex/build.xml                          |  169 ------
 transex3/java/jpropex/java/JPropEx.java                  |  400 ---------------
 transex3/java/jpropex/java/Main.java                     |   38 -
 transex3/java/jpropex/java/NoLocalizeFilter.java         |   55 --
 transex3/java/jpropex/java/OrderedHashMap.java           |   96 ---
 transex3/java/jpropex/java/SdfData.java                  |  108 ----
 transex3/java/jpropex/java/SdfEntity.java                |  254 ---------
 transex3/java/jpropex/jpropex                            |   10 
 transex3/java/jpropex/jpropex.MF                         |    1 
 transex3/java/jpropex/makefile.mk                        |   36 -
 unotools/inc/unotools/configpathes.hxx                   |    6 
 unotools/inc/unotools/ucbhelper.hxx                      |    1 
 unotools/source/config/configpathes.cxx                  |   11 
 unotools/source/ucbhelper/ucbhelper.cxx                  |   49 +
 vcl/inc/vcl/combobox.hxx                                 |    1 
 vcl/inc/vcl/gdimtf.hxx                                   |    2 
 vcl/inc/vcl/print.hxx                                    |    1 
 vcl/source/control/combobox.cxx                          |    8 
 vcl/source/gdi/gdimtf.cxx                                |   45 +
 vcl/source/gdi/metaact.cxx                               |    2 
 vcl/source/gdi/print3.cxx                                |   60 +-
 vcl/source/glyphs/graphite_layout.cxx                    |   71 ++
 vcl/source/window/seleng.cxx                             |   19 
 vcl/unx/gtk/a11y/atkutil.cxx                             |    2 
 vcl/unx/gtk/window/gtkframe.cxx                          |   64 +-
 vcl/unx/inc/plugins/gtk/gtkframe.hxx                     |    4 
 vcl/unx/source/app/wmadaptor.cxx                         |    9 
 vcl/win/source/gdi/winlayout.cxx                         |    5 
 70 files changed, 1831 insertions(+), 1609 deletions(-)

New commits:
commit 7f328a480a4522e45cbb5209136254dd80fdab4f
Merge: 1b9832b... 4bf68ac...
Author: Jan Holesovsky <kendy at suse.cz>
Date:   Wed Sep 8 11:34:12 2010 +0200

    Merge commit 'ooo/OOO330_m7'

commit 1b9832bae32bd13cbb94383c5937cd8a9a0192c3
Merge: eaeb786... 06d2710...
Author: Jan Holesovsky <kendy at suse.cz>
Date:   Tue Sep 7 09:33:08 2010 +0200

    Merge commit 'ooo/OOO330_m6'

commit 4bf68acd0615ec6b49945753104831bee9366df0
Merge: 1f6f539... b0ffb9a...
Author: Kurt Zenker <kz at openoffice.org>
Date:   Fri Sep 3 14:39:55 2010 +0200

    CWS-TOOLING: integrate CWS fs33a

commit b0ffb9a5006331750d8997020061f104ab7fb10c
Author: Frank Schoenheit [fs] <frank.schoenheit at oracle.com>
Date:   Fri Sep 3 14:50:14 2010 +0200

    fs33a: revert the original fix for HideInactiveSelection support in the tree list box, causing too much regressions. Fix it by using SetWindowBits instead of SetStyle

diff --git a/svtools/source/contnr/svtreebx.cxx b/svtools/source/contnr/svtreebx.cxx
index c86dc71..ff88a20 100644
--- a/svtools/source/contnr/svtreebx.cxx
+++ b/svtools/source/contnr/svtreebx.cxx
@@ -1513,11 +1513,6 @@ void SvTreeListBox::SetWindowBits( WinBits nWinStyle )
     pImp->SetWindowBits( nWinStyle );
     pImp->Resize();
     Invalidate();
-
-    if ( nWindowStyle != GetStyle() )
-    {
-        SetStyle( nWindowStyle );
-    }
 }
 
 void SvTreeListBox::PaintEntry( SvLBoxEntry* pEntry )
@@ -2524,15 +2519,6 @@ void SvTreeListBox::DataChanged( const DataChangedEvent& rDCEvt )
 void SvTreeListBox::StateChanged( StateChangedType i_nStateChange )
 {
     SvLBox::StateChanged( i_nStateChange );
-    if ( ( i_nStateChange & STATE_CHANGE_STYLE ) != 0 )
-    {
-        if ( GetStyle() != nWindowStyle )
-            // keep in sync with our WindowBits
-            // TODO: SetWindowBits is weird, it should be completely replaced (in all clients) with SetStyle
-            // (or are there WindowBits which have a different meaning when interpreted as style? Wouldn't
-            // be the first time, but all of those should be fixed meanwhile ...)
-            SetWindowBits( GetStyle() );
-    }
 }
 
 void SvTreeListBox::InitSettings(BOOL bFont,BOOL bForeground,BOOL bBackground)
diff --git a/svtools/source/uno/treecontrolpeer.cxx b/svtools/source/uno/treecontrolpeer.cxx
index cba391d..efe581e 100644
--- a/svtools/source/uno/treecontrolpeer.cxx
+++ b/svtools/source/uno/treecontrolpeer.cxx
@@ -1327,12 +1327,12 @@ void TreeControlPeer::setProperty( const ::rtl::OUString& PropertyName, const An
             sal_Bool bEnabled = sal_False;
             if ( aValue >>= bEnabled )
             {
-                WinBits nStyle = rTree.GetStyle();
+                WinBits nStyle = rTree.GetWindowBits();
                 if ( bEnabled )
                     nStyle |= WB_HIDESELECTION;
                 else
                     nStyle &= ~WB_HIDESELECTION;
-                rTree.SetStyle( nStyle );
+                rTree.SetWindowBits( nStyle );
             }
         }
         break;
@@ -1428,7 +1428,7 @@ Any TreeControlPeer::getProperty( const ::rtl::OUString& PropertyName ) throw(Ru
         switch(nPropId)
         {
         case BASEPROPERTY_HIDEINACTIVESELECTION:
-            return Any( ( rTree.GetStyle() & WB_HIDESELECTION ) != 0 ? sal_True : sal_False );
+            return Any( ( rTree.GetWindowBits() & WB_HIDESELECTION ) != 0 ? sal_True : sal_False );
 
         case BASEPROPERTY_TREE_SELECTIONTYPE:
         {
commit de2b714c3af13c57358fe3a1f38d1e5ad7a164e8
Author: Frank Schoenheit [fs] <frank.schoenheit at oracle.com>
Date:   Wed Sep 1 12:27:38 2010 +0200

    fs33a: +i114247# sync WindowBits and Style

diff --git a/svtools/source/contnr/svtreebx.cxx b/svtools/source/contnr/svtreebx.cxx
index 49e53ab..c86dc71 100644
--- a/svtools/source/contnr/svtreebx.cxx
+++ b/svtools/source/contnr/svtreebx.cxx
@@ -1513,6 +1513,11 @@ void SvTreeListBox::SetWindowBits( WinBits nWinStyle )
     pImp->SetWindowBits( nWinStyle );
     pImp->Resize();
     Invalidate();
+
+    if ( nWindowStyle != GetStyle() )
+    {
+        SetStyle( nWindowStyle );
+    }
 }
 
 void SvTreeListBox::PaintEntry( SvLBoxEntry* pEntry )
@@ -2521,7 +2526,12 @@ void SvTreeListBox::StateChanged( StateChangedType i_nStateChange )
     SvLBox::StateChanged( i_nStateChange );
     if ( ( i_nStateChange & STATE_CHANGE_STYLE ) != 0 )
     {
-        SetWindowBits( GetStyle() );
+        if ( GetStyle() != nWindowStyle )
+            // keep in sync with our WindowBits
+            // TODO: SetWindowBits is weird, it should be completely replaced (in all clients) with SetStyle
+            // (or are there WindowBits which have a different meaning when interpreted as style? Wouldn't
+            // be the first time, but all of those should be fixed meanwhile ...)
+            SetWindowBits( GetStyle() );
     }
 }
 
commit 1f6f539f3fa9add2db31059479f34409c7343628
Merge: 6a6bf7a... 65913d3...
Author: Kurt Zenker <kz at openoffice.org>
Date:   Tue Aug 31 15:10:03 2010 +0200

    CWS-TOOLING: integrate CWS impress197

commit 6a6bf7a0befd6216e847e557ceb80aec6639d15b
Author: Kurt Zenker <kz at openoffice.org>
Date:   Tue Aug 31 12:21:23 2010 +0200

    masterfix: #i114215# builderror in canvas/source/vcl fixed

diff --git a/canvas/source/vcl/canvashelper_texturefill.cxx b/canvas/source/vcl/canvashelper_texturefill.cxx
old mode 100755
new mode 100644
index 5be9d61..c53b15f
--- a/canvas/source/vcl/canvashelper_texturefill.cxx
+++ b/canvas/source/vcl/canvashelper_texturefill.cxx
@@ -704,6 +704,7 @@ namespace vclcanvas
             {
                 ::basegfx::B2DRectangle aRect(0.0, 0.0, 1.0, 1.0);
                 ::basegfx::B2DRectangle aTextureDeviceRect;
+                ::basegfx::B2DHomMatrix aTextureTransform;
                 ::canvas::tools::calcTransformedRectBounds( aTextureDeviceRect, 
                                                             aRect, 
                                                             aTextureTransform );
commit d4f79cfa71f641845ef3c0f51a47f4d1d9953ead
Author: Kurt Zenker <kz at openoffice.org>
Date:   Mon Aug 30 20:20:51 2010 +0200

    masterfix: #i114025# WaE fixes

diff --git a/vcl/source/gdi/gdimtf.cxx b/vcl/source/gdi/gdimtf.cxx
index 7acb3c8..22f5f37 100644
--- a/vcl/source/gdi/gdimtf.cxx
+++ b/vcl/source/gdi/gdimtf.cxx
@@ -873,8 +873,8 @@ void GDIMetaFile::Move( long nX, long nY, long nDPIX, long nDPIY )
             {
                 aOffset = aMapVDev.LogicToPixel( aBaseOffset, GetPrefMapMode() );
                 MapMode aMap( aMapVDev.GetMapMode() );
-                aOffset.Width() = aOffset.Width() * (double)aMap.GetScaleX();
-                aOffset.Height() = aOffset.Height() * (double)aMap.GetScaleY();
+                aOffset.Width() = static_cast<long>(aOffset.Width() * (double)aMap.GetScaleX());
+                aOffset.Height() = static_cast<long>(aOffset.Height() * (double)aMap.GetScaleY());
             }
             else
                 aOffset = aMapVDev.LogicToLogic( aBaseOffset, GetPrefMapMode(), aMapVDev.GetMapMode() );
commit 06d271053f9a8bb44e209f0c1569f181fe838a41
Author: obo <obo at openoffice.org>
Date:   Fri Aug 27 11:31:33 2010 +0200

    masterfix OOO330:  #i10000# unknown -B option for Python (Windows)

diff --git a/l10ntools/scripts/xhtex b/l10ntools/scripts/xhtex
index ad18d8c..ca307cf 100755
--- a/l10ntools/scripts/xhtex
+++ b/l10ntools/scripts/xhtex
@@ -31,9 +31,16 @@ if [ x${SOLARENV}x = xx ]; then
 exit 1
 fi
 
+if [ ${GUI} = "WNT" ]; then
+if [ x${SOLARVER}x = xx -o x${UPDMINOREXT}x = xx  ]; then
+    exec python $SOLARVERSION/$INPATH/bin/xhtex.py "$@"
+else
+    exec python $SOLARVERSION/$INPATH/bin$UPDMINOREXT/xhtex.py "$@"
+fi
+else
 if [ x${SOLARVER}x = xx -o x${UPDMINOREXT}x = xx  ]; then
     exec python  -B $SOLARVERSION/$INPATH/bin/xhtex.py "$@"
 else
     exec python  -B $SOLARVERSION/$INPATH/bin$UPDMINOREXT/xhtex.py "$@"
 fi
-
+fi
diff --git a/l10ntools/scripts/xtxex b/l10ntools/scripts/xtxex
index 52baab0..fb54c1a 100755
--- a/l10ntools/scripts/xtxex
+++ b/l10ntools/scripts/xtxex
@@ -31,9 +31,17 @@ if [ x${SOLARENV}x = xx ]; then
 exit 1
 fi
 
+if [ ${GUI} = "WNT" ]; then
+if [ x${SOLARVER}x = xx -o x${UPDMINOREXT}x = xx  ]; then
+    exec python $SOLARVERSION/$INPATH/bin/xtxex.py "$@"
+else
+    exec python $SOLARVERSION/$INPATH/bin$UPDMINOREXT/xtxex.py "$@"
+fi
+else
 if [ x${SOLARVER}x = xx -o x${UPDMINOREXT}x = xx  ]; then
     exec python -B  $SOLARVERSION/$INPATH/bin/xtxex.py "$@"
 else
     exec python -B $SOLARVERSION/$INPATH/bin$UPDMINOREXT/xtxex.py "$@"
 fi
+fi
 
commit 8ee844e7949ab8fa8b98b20b16b59c1fd87f4539
Merge: 0d77427... 52cc37f...
Author: Ivo Hinkelmann <ihi at openoffice.org>
Date:   Thu Aug 26 13:20:55 2010 +0200

    CWS-TOOLING: integrate CWS ooo33gsl07

commit 0d77427a63dd2c4cec551a26a8e1039bcf9daaa2
Author: Ivo Hinkelmann <ihi at openoffice.org>
Date:   Thu Aug 26 13:17:12 2010 +0200

    masterfix: #i10000# modify extract date and dummy fields for string database

diff --git a/l10ntools/java/jpropex/java/JPropEx.java b/l10ntools/java/jpropex/java/JPropEx.java
index 6bb0de9..6d389c4 100644
--- a/l10ntools/java/jpropex/java/JPropEx.java
+++ b/l10ntools/java/jpropex/java/JPropEx.java
@@ -145,8 +145,11 @@ public class JPropEx
         //String path = makeAbs( inputFileArg );
         path = path.replace( rootArg + "/" , "" );
         path = path.replace("/","\\");
-        return new SdfEntity( projectArg , path , "" /* dummy1 */ , resourceType , "", "" , "" , "" , "" /* dummy2 */ , 
-                              sourceLanguage , "",  "" , ""  , "" , "2002-02-02 02:02:02" );
+        // TODO: Make this static
+        java.text.SimpleDateFormat dateformat = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String date = dateformat.format( new Date() );
+        return new SdfEntity( projectArg , path , "0" /* dummy1 */ , resourceType , "", "" , "" , "" , "0" /* dummy2 */ , 
+                              sourceLanguage , "",  "" , ""  , "" , date );
     }
     
     private void merge()
diff --git a/l10ntools/scripts/tool/sdf.py b/l10ntools/scripts/tool/sdf.py
index dd413b1..96afbed 100644
--- a/l10ntools/scripts/tool/sdf.py
+++ b/l10ntools/scripts/tool/sdf.py
@@ -26,6 +26,7 @@
 #*************************************************************************
 
 from pseudo import PseudoSet,PseudoOrderedDict
+from time import gmtime, strftime
 
 class SdfData:
     _filename        = "";
@@ -114,7 +115,7 @@ class SdfEntity:
     const._DATE_POS            = 14
         
     def __init__(self, project="", source_file="", dummy1="0", resource_type="", gid="", lid="", helpid="", platform="", dummy2="0", langid="", 
-                       text="", helptext="", quickhelptext="", title="", date="2002-02-02 02:02:02"):
+                       text="", helptext="", quickhelptext="", title="", date=""):
         self.project        = project;
         self.source_file    = source_file;
         self.dummy1         = dummy1;
@@ -129,7 +130,11 @@ class SdfEntity:
         self.helptext       = helptext;
         self.quickhelptext  = quickhelptext;
         self.title          = title;
-        self.date           = date;
+        if date != "":
+            self.date = date;
+        else:
+            self.date = strftime("%Y-%m-%d %H:%M:%S",gmtime())
+
 
     def set_properties(self, line):
         splitted = line.split("\t")
commit 24d67300bfbfb9e0b21d7fe9661203bee5486a0a
Merge: 7dead72... ad3a06b...
Author: Ivo Hinkelmann <ihi at openoffice.org>
Date:   Thu Aug 26 13:07:19 2010 +0200

    CWS-TOOLING: integrate CWS fwk152

commit 7dead7277caad9323d8ca703ec58f356ae20e0fd
Author: Ivo Hinkelmann <ihi at openoffice.org>
Date:   Wed Aug 25 19:09:27 2010 +0200

    #i10000# set dummy fields to 0 for string DB

diff --git a/l10ntools/scripts/tool/sdf.py b/l10ntools/scripts/tool/sdf.py
index 2afcbaf..dd413b1 100644
--- a/l10ntools/scripts/tool/sdf.py
+++ b/l10ntools/scripts/tool/sdf.py
@@ -113,7 +113,7 @@ class SdfEntity:
     const._TITLE_POS           = 13
     const._DATE_POS            = 14
         
-    def __init__(self, project="", source_file="", dummy1="", resource_type="", gid="", lid="", helpid="", platform="", dummy2="", langid="", 
+    def __init__(self, project="", source_file="", dummy1="0", resource_type="", gid="", lid="", helpid="", platform="", dummy2="0", langid="", 
                        text="", helptext="", quickhelptext="", title="", date="2002-02-02 02:02:02"):
         self.project        = project;
         self.source_file    = source_file;
commit b7b56d2ab9270e70a04c68cae8f048831c00579d
Author: Ivo Hinkelmann <ihi at openoffice.org>
Date:   Wed Aug 25 16:36:33 2010 +0200

    #i10000# removed obsolete switch

diff --git a/l10ntools/scripts/localize.pl b/l10ntools/scripts/localize.pl
index 5ea42f1..3c53bab 100644
--- a/l10ntools/scripts/localize.pl
+++ b/l10ntools/scripts/localize.pl
@@ -492,7 +492,7 @@ sub collectfiles{
         # -e
         # if ( -x $command ){
         if( $command ){
-            if( !$bVerbose  ){ $args .= " -QQ "; }
+            if( !$bVerbose  ){ $args .= " "; }
             $args .= " -e -f $localizeSDF -l ";
             my $bFlag="";
             if( $bAll ) {$args .= " en-US";}
commit 05e0725b9617c3bb1cb03f0df0141db4c4c2f16c
Merge: fc52053... e2060d4...
Author: Frank Schoenheit [fs] <frank.schoenheit at oracle.com>
Date:   Wed Aug 25 16:07:39 2010 +0200

    fs33a: merge after pulling OOO330.m5's changes

commit 9d61d166812c88dae5f6ecf953f6a6e543d8f734
Merge: c1d27f1... f92fa87...
Author: Ivo Hinkelmann <ihi at openoffice.org>
Date:   Wed Aug 25 14:42:57 2010 +0200

    CWS-TOOLING: integrate CWS ext004

commit c1d27f1fad023c97dea944edb147b47d5297d6dd
Merge: 7141fb6... cddb741...
Author: Ivo Hinkelmann <ihi at openoffice.org>
Date:   Wed Aug 25 14:29:06 2010 +0200

    CWS-TOOLING: integrate CWS ooo33gsl06

commit 7141fb62d8d2f1a682d160d48764527fbda263fe
Merge: 4c6e315... 148e515...
Author: Ivo Hinkelmann <ihi at openoffice.org>
Date:   Wed Aug 25 14:19:19 2010 +0200

    CWS-TOOLING: integrate CWS sw33bf08

commit 4c6e3156a6d04b7d44ca56b57dc9d74b38bf2b7b
Merge: e2060d4... 121b879...
Author: Ivo Hinkelmann <ihi at openoffice.org>
Date:   Wed Aug 25 12:49:35 2010 +0200

    CWS-TOOLING: integrate CWS mib18

commit 52cc37ff83da8356c6d3f65b9d04e015c1e55d6c
Author: Philipp Lohmann [pl] <Philipp.Lohmann at Oracle.COM>
Date:   Tue Aug 24 14:49:48 2010 +0200

    ooo33gsl07: #i110881# fix fullscreen mode with compiz and metacity ... again

diff --git a/vcl/unx/gtk/window/gtkframe.cxx b/vcl/unx/gtk/window/gtkframe.cxx
index 800a274..24e68e9 100644
--- a/vcl/unx/gtk/window/gtkframe.cxx
+++ b/vcl/unx/gtk/window/gtkframe.cxx
@@ -1452,12 +1452,6 @@ void GtkSalFrame::setMinMaxSize()
                 aHints |= GDK_HINT_MAX_SIZE;
             }
         }
-        if( m_bFullscreen )
-        {
-            aGeo.max_width = m_aMaxSize.Width();
-            aGeo.max_height = m_aMaxSize.Height();
-            aHints |= GDK_HINT_MAX_SIZE;
-        }
         if( aHints )
             gtk_window_set_geometry_hints( GTK_WINDOW(m_pWindow),
                                            NULL,
@@ -1832,7 +1826,11 @@ void GtkSalFrame::ShowFullScreen( BOOL bFullScreen, sal_Int32 nScreen )
                 // workaround different legacy version window managers have different opinions about
                 // _NET_WM_STATE_FULLSCREEN (Metacity <-> KWin)
                 if( ! getDisplay()->getWMAdaptor()->isLegacyPartialFullscreen() )
+                {
+                    if( !(m_nStyle & SAL_FRAME_STYLE_SIZEABLE) )
+                        gtk_window_set_resizable( GTK_WINDOW(m_pWindow), TRUE );
                     gtk_window_fullscreen( GTK_WINDOW( m_pWindow ) );
+                }
                 if( bVisible )
                     Show( TRUE );
             }
@@ -1863,11 +1861,8 @@ void GtkSalFrame::ShowFullScreen( BOOL bFullScreen, sal_Int32 nScreen )
         {
             if( bFullScreen )
             {
-                if( getDisplay()->getWMAdaptor()->isLegacyPartialFullscreen() )
-                {
-                    if( !(m_nStyle & SAL_FRAME_STYLE_SIZEABLE) )
-                        gtk_window_set_resizable( GTK_WINDOW(m_pWindow), TRUE );
-                }
+                if( !(m_nStyle & SAL_FRAME_STYLE_SIZEABLE) )
+                    gtk_window_set_resizable( GTK_WINDOW(m_pWindow), TRUE );
                 gtk_window_fullscreen( GTK_WINDOW(m_pWindow) );
                 moveToScreen( nScreen );
                 Size aScreenSize = pDisp->GetScreenSize( m_nScreen ); 
@@ -1879,11 +1874,8 @@ void GtkSalFrame::ShowFullScreen( BOOL bFullScreen, sal_Int32 nScreen )
             else
             {
                 gtk_window_unfullscreen( GTK_WINDOW(m_pWindow) );
-                if( getDisplay()->getWMAdaptor()->isLegacyPartialFullscreen() )
-                {
-                    if( !(m_nStyle & SAL_FRAME_STYLE_SIZEABLE) )
-                        gtk_window_set_resizable( GTK_WINDOW(m_pWindow), FALSE );
-                }
+                if( !(m_nStyle & SAL_FRAME_STYLE_SIZEABLE) )
+                    gtk_window_set_resizable( GTK_WINDOW(m_pWindow), FALSE );
                 moveToScreen( nScreen );
             }
         }
@@ -2849,12 +2841,52 @@ gboolean GtkSalFrame::signalFocus( GtkWidget*, GdkEventFocus* pEvent, gpointer f
     return FALSE;
 }
 
+IMPL_LINK( GtkSalFrame, ImplDelayedFullScreenHdl, void*, EMPTYARG )
+{
+    Atom nStateAtom = getDisplay()->getWMAdaptor()->getAtom(vcl_sal::WMAdaptor::NET_WM_STATE);
+    Atom nFSAtom = getDisplay()->getWMAdaptor()->getAtom(vcl_sal::WMAdaptor::NET_WM_STATE_FULLSCREEN );
+    if( nStateAtom && nFSAtom )
+    {
+        /* #i110881# workaround a gtk issue (see https://bugzilla.redhat.com/show_bug.cgi?id=623191#c8)
+           gtk_window_fullscreen can fail due to a race condition, request an additional status change
+           to fullscreen to be safe
+        */
+        XEvent aEvent;
+        aEvent.type					= ClientMessage;
+        aEvent.xclient.display		= getDisplay()->GetDisplay();
+        aEvent.xclient.window		= GDK_WINDOW_XWINDOW(m_pWindow->window);
+        aEvent.xclient.message_type	= nStateAtom;
+        aEvent.xclient.format		= 32;
+        aEvent.xclient.data.l[0]	= 1;
+        aEvent.xclient.data.l[1]	= nFSAtom;
+        aEvent.xclient.data.l[2]	= 0;
+        aEvent.xclient.data.l[3]	= 0;
+        aEvent.xclient.data.l[4]	= 0;
+        XSendEvent( getDisplay()->GetDisplay(),
+                    getDisplay()->GetRootWindow( m_nScreen ),
+                    False,
+                    SubstructureNotifyMask | SubstructureRedirectMask,
+                    &aEvent
+                    );
+    }
+
+    return 0;
+}
+
 gboolean GtkSalFrame::signalMap( GtkWidget*, GdkEvent*, gpointer frame )
 {
     GtkSalFrame* pThis = (GtkSalFrame*)frame;
 
     GTK_YIELD_GRAB();
     
+    if( pThis->m_bFullscreen )
+    {
+        /* #i110881# workaorund a gtk issue (see https://bugzilla.redhat.com/show_bug.cgi?id=623191#c8)
+           gtk_window_fullscreen can run into a race condition with the window's showstate
+        */
+        Application::PostUserEvent( LINK( pThis, GtkSalFrame, ImplDelayedFullScreenHdl ) );
+    }
+    
     bool bSetFocus = pThis->m_bSetFocusOnMap;
     pThis->m_bSetFocusOnMap = false;
     if( ImplGetSVData()->mbIsTestTool )
diff --git a/vcl/unx/inc/plugins/gtk/gtkframe.hxx b/vcl/unx/inc/plugins/gtk/gtkframe.hxx
index 21c1ddd..508eb86 100644
--- a/vcl/unx/inc/plugins/gtk/gtkframe.hxx
+++ b/vcl/unx/inc/plugins/gtk/gtkframe.hxx
@@ -38,6 +38,8 @@
 #include <vcl/salframe.hxx>
 #include <vcl/sysdata.hxx>
 
+#include "tools/link.hxx"
+
 #include <list>
 #include <vector>
 
@@ -265,6 +267,8 @@ class GtkSalFrame : public SalFrame
     void setMinMaxSize();
     void createNewWindow( XLIB_Window aParent, bool bXEmbed, int nScreen );
     void askForXEmbedFocus( sal_Int32 nTimecode );
+    
+    DECL_LINK( ImplDelayedFullScreenHdl, void* );
 public:
     GtkSalFrame( SalFrame* pParent, ULONG nStyle );
     GtkSalFrame( SystemParentData* pSysData );
commit ec404a1834a06a0b066a384d40944efecd667421
Author: Philipp Lohmann [pl] <Philipp.Lohmann at Oracle.COM>
Date:   Mon Aug 23 16:32:34 2010 +0200

    ooo33gsl07: #i113253# use paper bin from user setup when appropriate

diff --git a/vcl/source/gdi/print3.cxx b/vcl/source/gdi/print3.cxx
index 58e5983..4a20bb6 100755
--- a/vcl/source/gdi/print3.cxx
+++ b/vcl/source/gdi/print3.cxx
@@ -173,6 +173,7 @@ public:
     // if set, pages are centered and trimmed onto the fixed page
     Size                                                        maFixedPageSize;
     sal_Int32                                                   mnDefaultPaperBin;
+    sal_Int32                                                   mnFixedPaperBin;
     
     ImplPrinterControllerData() :
         mbFirstPage( sal_True ),
@@ -180,7 +181,8 @@ public:
         mbReversePageOrder( sal_False ),
         meJobState( view::PrintableState_JOB_STARTED ),
         mpProgress( NULL ),
-        mnDefaultPaperBin( -1 )
+        mnDefaultPaperBin( -1 ),
+        mnFixedPaperBin( -1 )
     {}
     ~ImplPrinterControllerData() { delete mpProgress; }
     
@@ -726,6 +728,7 @@ void PrinterController::setPrinter( const boost::shared_ptr<Printer>& i_rPrinter
     setValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Name" ) ),
               makeAny( rtl::OUString( i_rPrinter->GetName() ) ) );
     mpImplData->mnDefaultPaperBin = mpImplData->mpPrinter->GetPaperBin();
+    mpImplData->mnFixedPaperBin = -1;
 }
 
 bool PrinterController::setupPrinter( Window* i_pParent )
@@ -733,15 +736,20 @@ bool PrinterController::setupPrinter( Window* i_pParent )
     bool bRet = false;
     if( mpImplData->mpPrinter.get() )
     {
+        // get old data
         Size aPaperSize( mpImplData->mpPrinter->PixelToLogic(
             mpImplData->mpPrinter->GetPaperSizePixel(), MapMode( MAP_100TH_MM ) ) );
+        USHORT nPaperBin = mpImplData->mpPrinter->GetPaperBin();
+
+        // call driver setup
         bRet = mpImplData->mpPrinter->Setup( i_pParent );
         if( bRet )
         {
-            // was the papersize overridden ? if so we need to take action
+            // was papersize or bin  overridden ? if so we need to take action
             Size aNewPaperSize( mpImplData->mpPrinter->PixelToLogic(
                 mpImplData->mpPrinter->GetPaperSizePixel(), MapMode( MAP_100TH_MM ) ) );
-            if( aNewPaperSize != aPaperSize )
+            USHORT nNewPaperBin = mpImplData->mpPrinter->GetPaperBin();
+            if( aNewPaperSize != aPaperSize || nNewPaperBin != nPaperBin )
             {
                 mpImplData->maFixedPageSize = aNewPaperSize;
                 mpImplData->maPageCache.invalidate();
@@ -750,6 +758,7 @@ bool PrinterController::setupPrinter( Window* i_pParent )
                 aOverrideSize.Height = aNewPaperSize.Height();
                 setValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "OverridePageSize" ) ),
                           makeAny( aOverrideSize ) );
+                mpImplData->mnFixedPaperBin = nNewPaperBin;
             }
         }
     }
@@ -1147,8 +1156,13 @@ void PrinterController::printFilteredPage( int i_nPage )
     mpImplData->mpPrinter->SetMapMode( MAP_100TH_MM );
     // aPageSize was filtered through mpImplData->getRealPaperSize already by getFilteredPageFile()
     mpImplData->mpPrinter->SetPaperSizeUser( aPageSize.aSize, ! mpImplData->isFixedPageSize() );
+    if( mpImplData->mnFixedPaperBin != -1 &&
+        mpImplData->mpPrinter->GetPaperBin() != mpImplData->mnFixedPaperBin )
+    {
+        mpImplData->mpPrinter->SetPaperBin( mpImplData->mnFixedPaperBin );
+    }
 
-    // if full paper are is meant, move the output to accomodate for pageoffset
+    // if full paper is meant to be used, move the output to accomodate for pageoffset
     if( aPageSize.bFullPaper )
     {
         Point aPageOffset( mpImplData->mpPrinter->GetPageOffset() );
commit fc52053c256f492bc92886c140a17b7a6635b043
Author: Frank Schoenheit [fs] <frank.schoenheit at oracle.com>
Date:   Mon Aug 23 15:18:37 2010 +0200

    fs33a: expose the WB_HIDESELECTION but of the tree control at its UNO API

diff --git a/svtools/inc/svtools/svtreebx.hxx b/svtools/inc/svtools/svtreebx.hxx
index 652bc7d..28bf652 100644
--- a/svtools/inc/svtools/svtreebx.hxx
+++ b/svtools/inc/svtools/svtreebx.hxx
@@ -156,6 +156,7 @@ protected:
     virtual void	CursorMoved( SvLBoxEntry* pNewCursor );
     virtual void	PreparePaint( SvLBoxEntry* );
     virtual void	DataChanged( const DataChangedEvent& rDCEvt );
+    virtual void    StateChanged( StateChangedType nStateChange );
 
     void 			InitSettings(BOOL bFont,BOOL bForeground,BOOL bBackground);
     BOOL			IsCellFocusEnabled() const;
diff --git a/svtools/source/contnr/svtreebx.cxx b/svtools/source/contnr/svtreebx.cxx
index 8dc2ea7..49e53ab 100644
--- a/svtools/source/contnr/svtreebx.cxx
+++ b/svtools/source/contnr/svtreebx.cxx
@@ -2516,6 +2516,15 @@ void SvTreeListBox::DataChanged( const DataChangedEvent& rDCEvt )
         Control::DataChanged( rDCEvt );
 }
 
+void SvTreeListBox::StateChanged( StateChangedType i_nStateChange )
+{
+    SvLBox::StateChanged( i_nStateChange );
+    if ( ( i_nStateChange & STATE_CHANGE_STYLE ) != 0 )
+    {
+        SetWindowBits( GetStyle() );
+    }
+}
+
 void SvTreeListBox::InitSettings(BOOL bFont,BOOL bForeground,BOOL bBackground)
 {
     const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
diff --git a/svtools/source/uno/treecontrolpeer.cxx b/svtools/source/uno/treecontrolpeer.cxx
index 5830714..cba391d 100644
--- a/svtools/source/uno/treecontrolpeer.cxx
+++ b/svtools/source/uno/treecontrolpeer.cxx
@@ -1322,6 +1322,21 @@ void TreeControlPeer::setProperty( const ::rtl::OUString& PropertyName, const An
 
     switch( GetPropertyId( PropertyName ) )
     {
+        case BASEPROPERTY_HIDEINACTIVESELECTION:
+        {
+            sal_Bool bEnabled = sal_False;
+            if ( aValue >>= bEnabled )
+            {
+                WinBits nStyle = rTree.GetStyle();
+                if ( bEnabled )
+                    nStyle |= WB_HIDESELECTION;
+                else
+                    nStyle &= ~WB_HIDESELECTION;
+                rTree.SetStyle( nStyle );
+            }
+        }
+        break;
+
         case BASEPROPERTY_TREE_SELECTIONTYPE:
         {
             SelectionType eSelectionType;
@@ -1412,6 +1427,9 @@ Any TreeControlPeer::getProperty( const ::rtl::OUString& PropertyName ) throw(Ru
         UnoTreeListBoxImpl& rTree = getTreeListBoxOrThrow();
         switch(nPropId)
         {
+        case BASEPROPERTY_HIDEINACTIVESELECTION:
+            return Any( ( rTree.GetStyle() & WB_HIDESELECTION ) != 0 ? sal_True : sal_False );
+
         case BASEPROPERTY_TREE_SELECTIONTYPE:
         {
             SelectionType eSelectionType;
diff --git a/toolkit/source/controls/tree/treecontrol.cxx b/toolkit/source/controls/tree/treecontrol.cxx
index a8b3207..bd495b7 100644
--- a/toolkit/source/controls/tree/treecontrol.cxx
+++ b/toolkit/source/controls/tree/treecontrol.cxx
@@ -76,6 +76,7 @@ UnoTreeModel::UnoTreeModel()
     ImplRegisterProperty( BASEPROPERTY_TREE_SHOWSROOTHANDLES );
     ImplRegisterProperty( BASEPROPERTY_TREE_ROWHEIGHT );
     ImplRegisterProperty( BASEPROPERTY_TREE_INVOKESSTOPNODEEDITING );
+    ImplRegisterProperty( BASEPROPERTY_HIDEINACTIVESELECTION );
 }
 
 UnoTreeModel::UnoTreeModel( const UnoTreeModel& rModel )
commit 75afc968ed3ae41a2d8a9ea996cbff75fdf9a68c
Author: Philipp Lohmann [pl] <Philipp.Lohmann at Oracle.COM>
Date:   Mon Aug 23 14:38:35 2010 +0200

    ooo33gsl07: #i110881# workaround compiz (mwm hints should have no effect whatsoever on fullscreen)

diff --git a/vcl/unx/source/app/wmadaptor.cxx b/vcl/unx/source/app/wmadaptor.cxx
index 3a73ca8..70802cc 100644
--- a/vcl/unx/source/app/wmadaptor.cxx
+++ b/vcl/unx/source/app/wmadaptor.cxx
@@ -2180,6 +2180,15 @@ void NetWMAdaptor::showFullScreen( X11SalFrame* pFrame, bool bFullScreen ) const
     if( m_aWMAtoms[ NET_WM_STATE_FULLSCREEN ] )
     {
         pFrame->mbFullScreen = bFullScreen;
+        if( bFullScreen )
+        {
+            if( m_aWMAtoms[ MOTIF_WM_HINTS ] )
+            {
+                XDeleteProperty( m_pDisplay,
+                                 pFrame->GetShellWindow(),
+                                m_aWMAtoms[ MOTIF_WM_HINTS ] );
+            }
+        }
         if( pFrame->bMapped_ )
         {
             // window already mapped, send WM a message
commit b1de5dcd138d4c1892f24eed96faf4e8bdce9635
Author: Philipp Lohmann [pl] <Philipp.Lohmann at Oracle.COM>
Date:   Fri Aug 20 19:47:14 2010 +0200

    ooo33gsl07: #i113898# catch a NULL ptr

diff --git a/vcl/unx/gtk/a11y/atkutil.cxx b/vcl/unx/gtk/a11y/atkutil.cxx
index 1f0eca8..0aa0633 100644
--- a/vcl/unx/gtk/a11y/atkutil.cxx
+++ b/vcl/unx/gtk/a11y/atkutil.cxx
@@ -92,7 +92,7 @@ atk_wrapper_focus_idle_handler (gpointer data)
             // also emit state-changed:focused event under the same condition.
             {
                 AtkObjectWrapper* wrapper_obj = ATK_OBJECT_WRAPPER (atk_obj);
-                if( !wrapper_obj->mpText && wrapper_obj->mpContext )
+                if( wrapper_obj && !wrapper_obj->mpText && wrapper_obj->mpContext )
                 {
                     uno::Any any = wrapper_obj->mpContext->queryInterface( accessibility::XAccessibleText::static_type(NULL) );
                     if ( typelib_TypeClass_INTERFACE == any.pType->eTypeClass &&
commit f92fa871502a8adc1345ff6cdc8e42f9588ea4de
Author: Ivo Hinkelmann <ihi at openoffice.org>
Date:   Fri Aug 20 16:30:57 2010 +0200

    ext004: just copy en-US file without modifications

diff --git a/l10ntools/scripts/tool/xtxex.py b/l10ntools/scripts/tool/xtxex.py
index 2c5f132..9691275 100644
--- a/l10ntools/scripts/tool/xtxex.py
+++ b/l10ntools/scripts/tool/xtxex.py
@@ -39,7 +39,8 @@ class Xtxex(AbstractL10nTool):
     def merge_file(self, inputfilename, outputfilename, parsed_file_ref, lang, is_forced_lang, sdfdata): 
         # Special handling for en-US files
         if lang == "en-US":             
-            mod_outputfilename = outputfilename.replace("_en-US",'')
+            mod_outputfilename = outputfilename
+            # mod here if needed
             self.copy_file(inputfilename, mod_outputfilename)
             return      
         # merge usual lang
commit e2060d42d0267729888d68448e668a7f9df83c3b
Author: Release Engineering <releng at openoffice.org>
Date:   Fri Aug 20 13:13:16 2010 +0200

    #i10000# supress bytecode generation

diff --git a/l10ntools/scripts/xhtex b/l10ntools/scripts/xhtex
index 659cd06..ad18d8c 100755
--- a/l10ntools/scripts/xhtex
+++ b/l10ntools/scripts/xhtex
@@ -32,8 +32,8 @@ exit 1
 fi
 
 if [ x${SOLARVER}x = xx -o x${UPDMINOREXT}x = xx  ]; then
-    exec python  $SOLARVERSION/$INPATH/bin/xhtex.py "$@"
+    exec python  -B $SOLARVERSION/$INPATH/bin/xhtex.py "$@"
 else
-    exec python  $SOLARVERSION/$INPATH/bin$UPDMINOREXT/xhtex.py "$@"
+    exec python  -B $SOLARVERSION/$INPATH/bin$UPDMINOREXT/xhtex.py "$@"
 fi
 
commit d6559d76b04c867fba04c1399fa746dff23b2f18
Author: Release Engineering <releng at openoffice.org>
Date:   Fri Aug 20 13:12:52 2010 +0200

    #i10000# supress bytecode generation

diff --git a/l10ntools/scripts/xtxex b/l10ntools/scripts/xtxex
index 2852950..52baab0 100755
--- a/l10ntools/scripts/xtxex
+++ b/l10ntools/scripts/xtxex
@@ -32,8 +32,8 @@ exit 1
 fi
 
 if [ x${SOLARVER}x = xx -o x${UPDMINOREXT}x = xx  ]; then
-    exec python  $SOLARVERSION/$INPATH/bin/xtxex.py "$@"
+    exec python -B  $SOLARVERSION/$INPATH/bin/xtxex.py "$@"
 else
-    exec python  $SOLARVERSION/$INPATH/bin$UPDMINOREXT/xtxex.py "$@"
+    exec python -B $SOLARVERSION/$INPATH/bin$UPDMINOREXT/xtxex.py "$@"
 fi
 
commit 874476f2c3865a51561c40d9612ae60baf09fa9f
Author: Frank Schoenheit [fs] <frank.schoenheit at oracle.com>
Date:   Thu Aug 19 17:46:08 2010 +0200

    fs33a: #i113988# properly retrieve standard images

diff --git a/svtools/source/graphic/provider.cxx b/svtools/source/graphic/provider.cxx
index eb59c04..3311ddd 100644
--- a/svtools/source/graphic/provider.cxx
+++ b/svtools/source/graphic/provider.cxx
@@ -231,19 +231,19 @@ uno::Reference< ::graphic::XGraphic > GraphicProvider::implLoadStandardImage( co
     if( ( 0 == rResourceURL.getToken( 0, '/', nIndex ).compareToAscii( "private:standardimage" ) ) )
     {
         rtl::OUString sImageName( rResourceURL.copy( nIndex ) );
-        if ( sImageName.compareToAscii( "info" ) )
+        if ( sImageName.equalsAscii( "info" ) )
         {
             xRet = InfoBox::GetStandardImage().GetXGraphic();
         }
-        else if ( sImageName.compareToAscii( "warning" ) )
+        else if ( sImageName.equalsAscii( "warning" ) )
         {
             xRet = WarningBox::GetStandardImage().GetXGraphic();
         }
-        else if ( sImageName.compareToAscii( "error" ) )
+        else if ( sImageName.equalsAscii( "error" ) )
         {
             xRet = ErrorBox::GetStandardImage().GetXGraphic();
         }
-        else if ( sImageName.compareToAscii( "query" ) )
+        else if ( sImageName.equalsAscii( "query" ) )
         {
             xRet = QueryBox::GetStandardImage().GetXGraphic();
         }
commit cddb741a6e756148bf1a6641aaa63b51d0ff7b55
Merge: d0fa316... d551942...
Author: Herbert Duerr [hdu] <duerr at sun.com>
Date:   Thu Aug 19 14:31:35 2010 +0200

    fast-forward merging of heads

commit d551942e83dc6d401208445e50fa9fedfe6ee2d9
Author: Christian Lippka <christian.lippka at sun.com>
Date:   Wed Aug 18 17:59:09 2010 +0200

    #i113857# disable right mouse button to trigger a range selection

diff --git a/vcl/source/window/seleng.cxx b/vcl/source/window/seleng.cxx
index 8c59779..6368acd 100644
--- a/vcl/source/window/seleng.cxx
+++ b/vcl/source/window/seleng.cxx
@@ -218,8 +218,15 @@ BOOL SelectionEngine::SelMouseButtonDown( const MouseEvent& rMEvt )
     Point aPos = rMEvt.GetPosPixel();
     aLastMove = rMEvt;
 
-    pWin->CaptureMouse();
-    nFlags |= SELENG_IN_SEL;
+    if( !rMEvt.IsRight() )
+    {
+        pWin->CaptureMouse();
+        nFlags |= SELENG_IN_SEL;
+    }
+    else
+    {
+        nModifier = 0;
+    }
 
     switch ( nModifier )
     {
@@ -327,7 +334,7 @@ BOOL SelectionEngine::SelMouseButtonDown( const MouseEvent& rMEvt )
 |*
 *************************************************************************/
 
-BOOL SelectionEngine::SelMouseButtonUp( const MouseEvent& /* rMEvt */ )
+BOOL SelectionEngine::SelMouseButtonUp( const MouseEvent& rMEvt )
 {
     aWTimer.Stop();
     //DbgOut("Up");
@@ -336,7 +343,11 @@ BOOL SelectionEngine::SelMouseButtonUp( const MouseEvent& /* rMEvt */ )
         nFlags &= ~(SELENG_CMDEVT | SELENG_WAIT_UPEVT | SELENG_IN_SEL);
         return FALSE;
     }
-    pWin->ReleaseMouse();
+
+    if( !rMEvt.IsRight() )
+    {
+       pWin->ReleaseMouse();
+    }
 
     if( (nFlags & SELENG_WAIT_UPEVT) && !(nFlags & SELENG_CMDEVT) &&
         eSelMode != SINGLE_SELECTION)
commit 5eb8c5eee80e82dcf8e7369463940ecab8d2d6c3
Merge: 3f59a6a... 6c56d7b...
Author: Kurt Zenker <kz at openoffice.org>
Date:   Wed Aug 18 16:59:10 2010 +0200

    CWS-TOOLING: integrate CWS txtl10n

commit 3f59a6af5940320b20e7ba86de74c75aaa379f72
Merge: e2ac629... e3e2a2c...
Author: Kurt Zenker <kz at openoffice.org>
Date:   Wed Aug 18 14:15:04 2010 +0200

    CWS-TOOLING: integrate CWS graphite04

commit e2ac629a815044ecb7f5e53dab5436c9792c6a6a
Merge: 92d15b0... 44417ff...
Author: Kurt Zenker <kz at openoffice.org>
Date:   Wed Aug 18 13:23:34 2010 +0200

    CWS-TOOLING: integrate CWS ooo33gsl05

commit 92d15b0246d60a89a84970557cb04db98d2436c2
Merge: 0b1999e... cc4d2e8...
Author: Kurt Zenker <kz at openoffice.org>
Date:   Wed Aug 18 12:43:13 2010 +0200

    CWS-TOOLING: integrate CWS mav56

commit 0b1999e55938fc466d6ab8c543857629273fad7c
Merge: c8dc8eb... 8fc80ea...
Author: Kurt Zenker <kz at openoffice.org>
Date:   Wed Aug 18 12:39:06 2010 +0200

    CWS-TOOLING: integrate CWS fwk151

commit c8dc8eb8f62944c76f0c0ad9a5e7fba432742e94
Merge: d0fa316... bb902b6...
Author: Kurt Zenker <kz at openoffice.org>
Date:   Wed Aug 18 12:00:05 2010 +0200

    CWS-TOOLING: integrate CWS jl154

commit 148e51518f3876d02987548b1a5a53fd62808225
Author: Thomas Lange [tl] <tl at openoffice.org>
Date:   Tue Aug 17 16:46:36 2010 +0200

    cws sw33bf08: #i113584#, #i113587# transliteration fixed

diff --git a/i18npool/source/transliteration/transliterationImpl.cxx b/i18npool/source/transliteration/transliterationImpl.cxx
index 5a1dae5..b0745a6 100644
--- a/i18npool/source/transliteration/transliterationImpl.cxx
+++ b/i18npool/source/transliteration/transliterationImpl.cxx
@@ -295,7 +295,6 @@ OUString SAL_CALL
 TransliterationImpl::transliterate( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, 
                     Sequence< sal_Int32 >& offset ) throw(RuntimeException)
 {
-
     if (numCascade == 0)
         return inStr;
 
diff --git a/i18npool/source/transliteration/transliteration_body.cxx b/i18npool/source/transliteration/transliteration_body.cxx
index 60aec23..4257b38 100755
--- a/i18npool/source/transliteration/transliteration_body.cxx
+++ b/i18npool/source/transliteration/transliteration_body.cxx
@@ -35,6 +35,7 @@
 #include <comphelper/processfactory.hxx>
 #include <osl/diagnose.h>
 
+#include <string.h>
 
 #include "characterclassificationImpl.hxx"
 #include "breakiteratorImpl.hxx"
@@ -96,7 +97,7 @@ static sal_uInt8 lcl_getMappingTypeForToggleCase( sal_uInt8 nMappingType, sal_Un
             nRes = MappingTypeLowerToUpper;
         else 
         {
-            OSL_ENSURE( nType & 0x01 /* upper case */, "uppercase character expected! 'Toggle case' failed?" );
+            // should also work properly for non-upper characters like white spacs, numbers, ...
             nRes = MappingTypeUpperToLower;
         }
     }
@@ -330,185 +331,143 @@ Transliteration_titlecase::Transliteration_titlecase()
     implementationName = "com.sun.star.i18n.Transliteration.Transliteration_titlecase";
 }
 
-rtl::OUString SAL_CALL Transliteration_titlecase::transliterate( 
-    const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, 
-    Sequence< sal_Int32 >& /*offset*/ ) 
-    throw(RuntimeException)
+#if 0
+struct LigatureData
 {
-    Reference< XMultiServiceFactory > xMSF = ::comphelper::getProcessServiceFactory();
-    CharacterClassificationImpl aCharClassImpl( xMSF );
-
-    // possible problem: the locale is not exactly specific for each word in the text...
-    OUString aRes( aCharClassImpl.toTitle( inStr, startPos, nCount, aLocale ) );
-    return aRes;
+    sal_uInt32  cChar;
+    sal_Char *  pUtf8Text;
+};
+
+// available Unicode ligatures:
+// http://www.unicode.org/charts
+// http://www.unicode.org/charts/PDF/UFB00.pdf
+static LigatureData aLigatures[] =
+{
+    { 0x0FB00,     "ff" },
+    { 0x0FB01,     "fi" },
+    { 0x0FB02,     "fl" },
+    { 0x0FB03,     "ffi" },
+    { 0x0FB04,     "ffl" },
+    { 0x0FB05,     "ft" },
+    { 0x0FB06,     "st" },
+
+    { 0x0FB13,     "\xD5\xB4\xD5\xB6" },     // Armenian small men now
+    { 0x0FB14,     "\xD5\xB4\xD5\xA5" },     // Armenian small men ech
+    { 0x0FB15,     "\xD5\xB4\xD5\xAB" },     // Armenian small men ini
+    { 0x0FB16,     "\xD5\xBE\xD5\xB6" },     // Armenian small vew now
+    { 0x0FB17,     "\xD5\xB4\xD5\xAD" },     // Armenian small men xeh
+    { 0x00000,     "" }
+};
+
+static inline bool lcl_IsLigature( sal_uInt32 cChar )
+{
+    return (0x0FB00 <= cChar && cChar <= 0x0FB06) || (0x0FB13 <= cChar && cChar <= 0x0FB17);
 }
 
-Transliteration_sentencecase::Transliteration_sentencecase()
+static rtl::OUString lcl_ResolveLigature( sal_uInt32 cChar )
 {
-    nMappingType = MappingTypeToTitle;  // though only to be applied to the first word...
-    transliterationName = "sentence(generic)";
-    implementationName = "com.sun.star.i18n.Transliteration.Transliteration_sentencecase";
+    rtl::OUString aRes;
+    if (lcl_IsLigature( cChar ))
+    {
+        LigatureData *pFound = NULL;
+        LigatureData *pData = aLigatures;
+        while (!pFound && pData->cChar != 0)
+        {
+            if (pData->cChar == cChar)
+                pFound = pData;
+            ++pData;
+        }
+        if (pFound)
+            aRes = rtl::OUString( pFound->pUtf8Text, strlen( pFound->pUtf8Text ), RTL_TEXTENCODING_UTF8 );
+    }
+    else
+        aRes = rtl::OUString( &cChar, 1 );
+    return aRes;
 }
+#endif // if 0
 
-rtl::OUString SAL_CALL Transliteration_sentencecase::transliterate( 
+static rtl::OUString transliterate_titlecase_Impl(
     const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, 
-    Sequence< sal_Int32 >& offset )
+    const Locale &rLocale,
+    Sequence< sal_Int32 >& offset ) 
     throw(RuntimeException)
 {
-    // inspired from Transliteration_body::transliterate
-    sal_Int32 nOffCount = 0, i;
-    bool bPoint = true;
-    if (useOffset) 
+    const OUString aText( inStr.copy( startPos, nCount ) );
+
+    OUString aRes;
+    if (aText.getLength() > 0)
     {
-        for( i = 0; i < nCount; ++i ) {
-            sal_Unicode c = inStr.getStr()[ i + startPos ];
-            if( sal_Unicode('.') == c || sal_Unicode('!') == c || sal_Unicode('?') == c ) {
-                bPoint = true;
-                nOffCount++;
-            }
-            else if( unicode::isAlpha( c ) || unicode::isDigit( c ) )
-            {
-                const Mapping* map = 0;
-                if( bPoint && unicode::isLower( c ))
-                {
-                    map = &casefolding::getValue(&c, 0, 1, aLocale, MappingTypeLowerToUpper);
-                    bPoint = false;
-                }
-                else if (!bPoint && unicode::isUpper( c ))
-                {
-                    map = &casefolding::getValue(&c, 0, 1, aLocale, MappingTypeUpperToLower);
-                }
-
-                if(map == 0)
-                {
-                    nOffCount++;
-                } 
-                else
-                {
-                    nOffCount += map->nmap;
-                }
-            }
-            else
-            {
-                nOffCount++;
-            }
+        Reference< XMultiServiceFactory > xMSF = ::comphelper::getProcessServiceFactory();
+        CharacterClassificationImpl aCharClassImpl( xMSF );
+
+        // because aCharClassImpl.toTitle does not handle ligatures or ß but will raise 
+        // an exception we need to handle the first chara manually...
+
+        // we don't want to change surrogates by accident, thuse we use proper code point iteration
+        sal_Int32 nPos = 0;
+        sal_uInt32 cFirstChar = aText.iterateCodePoints( &nPos );
+        OUString aResolvedLigature( &cFirstChar, 1 ); //lcl_ResolveLigature( cFirstChar ) );
+        // toUpper can be used to properly resolve ligatures and characters like ß
+        aResolvedLigature = aCharClassImpl.toUpper( aResolvedLigature, 0, aResolvedLigature.getLength(), rLocale );
+        // since toTitle will leave all-uppercase text unchanged we first need to
+        // use toLower to bring possible 2nd and following charas in lowercase
+        aResolvedLigature = aCharClassImpl.toLower( aResolvedLigature, 0, aResolvedLigature.getLength(), rLocale );
+        sal_Int32 nResolvedLen = aResolvedLigature.getLength();
+
+        // now we can properly use toTitle to get the expected result for the resolved string.
+        // The rest of the text should just become lowercase.
+        aRes = aCharClassImpl.toTitle( aResolvedLigature, 0, nResolvedLen, rLocale );
+        aRes += aCharClassImpl.toLower( aText, 1, aText.getLength() - 1, rLocale );
+        offset.realloc( aRes.getLength() );
+
+        sal_Int32 *pOffset = offset.getArray();
+        sal_Int32 nLen = offset.getLength();
+        for (sal_Int32 i = 0; i < nLen; ++i)
+        {
+            sal_Int32 nIdx = 0;
+            if (i >= nResolvedLen)
+                nIdx = i - nResolvedLen + 1;
+            pOffset[i] = nIdx;
         }
     }
+#if OSL_DEBUG_LEVEL > 1
+    const sal_Int32 *pCOffset = offset.getConstArray();
+    (void) pCOffset;
+#endif
 
-    bPoint = true;
-    rtl::OUStringBuffer result;
+    return aRes;
+}
 
-    if (useOffset)
-    {
-        result.ensureCapacity(nOffCount);
-        if ( nOffCount != offset.getLength() )
-            offset.realloc( nOffCount );
-    }
 
+// this function expects to be called on a word-by-word basis,
+// namely that startPos points to the first char of the word
+rtl::OUString SAL_CALL Transliteration_titlecase::transliterate( 
+    const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, 
+    Sequence< sal_Int32 >& offset ) 
+    throw(RuntimeException)
+{
+    return transliterate_titlecase_Impl( inStr, startPos, nCount, aLocale, offset );
+}
 
-    sal_Int32 j = 0;
-    sal_Int32 * pArr = offset.getArray();
-    for(  i = 0; i < nCount; ++i ) {
-        sal_Unicode c = inStr.getStr()[ i + startPos ];
-        if( sal_Unicode('.') == c || sal_Unicode('!') == c || sal_Unicode('?') == c ) {
-            bPoint = true;
-            result.append(c);
-            pArr[j++] = i + startPos;
-        }
-        else if( unicode::isAlpha( c ) || unicode::isDigit( c ) )
-        {
-            const Mapping* map = 0;
-            if( bPoint && unicode::isLower( c ))
-            {
-                map = &casefolding::getValue(&c, 0, 1, aLocale, MappingTypeLowerToUpper);
-            }
-            else if (!bPoint && unicode::isUpper( c ))
-            {
-                map = &casefolding::getValue(&c, 0, 1, aLocale, MappingTypeUpperToLower);
-            }
 
-            if(map == 0)
-            {
-                result.append( c );
-                pArr[j++] = i + startPos;
-            } 
-            else
-            {
-                for (sal_Int32 k = 0; k < map->nmap; k++)
-                {
-                    result.append( map->map[k] );
-                    pArr[j++] = i + startPos;
-                }
-            }
-            bPoint = false;
-        }
-        else
-        {
-            result.append( c );
-            pArr[j++] = i + startPos;
-        }
-    }
-    return result.makeStringAndClear();
+Transliteration_sentencecase::Transliteration_sentencecase()
+{
+    nMappingType = MappingTypeToTitle;  // though only to be applied to the first word...
+    transliterationName = "sentence(generic)";
+    implementationName = "com.sun.star.i18n.Transliteration.Transliteration_sentencecase";
 }
 
-#if 0
-// TL: alternative implemntation try. But breakiterator has its problem too since 
-// beginOfSentence does not work as expected with '.'. See comment below.
-// For the time being I will leave this code here as a from-scratch sample if the
-// breakiterator works better at some point...
+
+// this function expects to be called on a sentence-by-sentence basis,
+// namely that startPos points to the first word (NOT first char!) in the sentence
 rtl::OUString SAL_CALL Transliteration_sentencecase::transliterate( 
-    const OUString& inStr, sal_Int32 nStartPos, sal_Int32 nCount, 
-    Sequence< sal_Int32 >& /*offset*/ ) 
+    const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, 
+    Sequence< sal_Int32 >& offset )
     throw(RuntimeException)
 {
-    OUString aRes( inStr.copy( nStartPos, nCount ) );
-
-    if (nStartPos >= 0 && nStartPos < inStr.getLength() && nCount > 0)
-    {
-        Reference< XMultiServiceFactory > xMSF = ::comphelper::getProcessServiceFactory();
-        BreakIteratorImpl brk( xMSF );
-    
-        sal_Int32 nSentenceStart = -1, nOldSentenceStart = -1;
-        sal_Int32 nPos = nStartPos + nCount - 1;
-        while (nPos >= nStartPos && nPos != -1)
-        {
-            // possible problem: the locale is not exactly specific for each sentence in the text,
-            // but it is the only one we have...
-            nOldSentenceStart = nSentenceStart;
-            nSentenceStart = brk.beginOfSentence( inStr, nPos, aLocale );
-
-            // since the breakiterator completely ignores '.' characvters as end-of-sentence when
-            // the next word is lower case we need to take care of that ourself. The drawback:
-            // la mid-sentence abbreviation like e.g. will now be identified as end-of-sentence. :-( 
-            // Well, at least the other product does it in the same way...
-            sal_Int32 nFullStopPos = inStr.lastIndexOf( (sal_Unicode)'.', nPos );
-            nPos = nSentenceStart;
-            if (nFullStopPos > 0 && nFullStopPos > nSentenceStart)
-            {
-                Boundary aBd2 = brk.nextWord( inStr, nFullStopPos, aLocale, WordType::DICTIONARY_WORD );
-                nSentenceStart = aBd2.startPos;
-                nPos = nFullStopPos;
-            }
-
-            if (nSentenceStart < nOldSentenceStart || nOldSentenceStart == -1)
-            {
-                // the sentence start might be a quotation mark or some kind of bracket, thus
-                // we need the first dictionary word starting or following this position
-    //            Boundary aBd1 = brk.nextWord( inStr, nSentenceStart, aLocale, WordType::DICTIONARY_WORD );
-                Boundary aBd2 = brk.getWordBoundary( inStr, nSentenceStart, aLocale, WordType::DICTIONARY_WORD, true );
-    //            OUString aWord1( inStr.copy( aBd1.startPos, aBd1.endPos - aBd1.startPos + 1 ) );
-                OUString aWord2( inStr.copy( aBd2.startPos, aBd2.endPos - aBd2.startPos + 1 ) );
-            }
-            else
-                break;  // prevent endless loop
-
-            // continue with previous sentence
-            if (nPos != -1)
-                --nPos;
-        }    
-    }
-    return aRes;
+    return transliterate_titlecase_Impl( inStr, startPos, nCount, aLocale, offset );
 }
-#endif
+
 
 } } } }
+
commit 6a421e2af3e030074ac25e29dd14e491e3aac21b
Merge: e95d209... d0fa316...
Author: Frank Schoenheit [fs] <frank.schoenheit at oracle.com>
Date:   Fri Aug 13 12:04:35 2010 +0200

    fs33a: merge after pulling OOO330.m4's change sets

commit 121b87931236e1f71623ad39f8edf9c88775fa77
Merge: c0d5723... d0fa316...
Author: Daniel Rentz <dr at openoffice.org>
Date:   Fri Aug 13 11:29:46 2010 +0200

    mib18: rebase to OOO330m4

commit 44417ffdf0f2380173eea808d00cafa047b9ecdc
Author: Philipp Lohmann [pl] <Philipp.Lohmann at Oracle.COM>
Date:   Fri Aug 13 11:25:17 2010 +0200

    ooo33gsl05: fix a typo

diff --git a/vcl/inc/vcl/gdimtf.hxx b/vcl/inc/vcl/gdimtf.hxx
index e281e24..8fa5c17 100644
--- a/vcl/inc/vcl/gdimtf.hxx
+++ b/vcl/inc/vcl/gdimtf.hxx
@@ -159,7 +159,7 @@ public:
     BOOL            Mirror( ULONG nMirrorFlags );
     void            Move( long nX, long nY );
     // additional Move method getting specifics how to handle MapMode( MAP_PIXEL )
-    void            Move( long nX, long nY, long nDPIX, long nDPIX );
+    void            Move( long nX, long nY, long nDPIX, long nDPIY );
     void            Scale( double fScaleX, double fScaleY );
     void            Scale( const Fraction& rScaleX, const Fraction& rScaleY );
     void            Rotate( long nAngle10 );
commit ce185aaab5a56e3fd00c0065e16dd79de5bc8abd
Author: Herbert Duerr [hdu] <duerr at sun.com>
Date:   Fri Aug 13 09:07:29 2010 +0200

    #i113776# avoid default adaptive subdivision for now

diff --git a/basegfx/source/polygon/b2dtrapezoid.cxx b/basegfx/source/polygon/b2dtrapezoid.cxx
index 2987c7c..e2651f1 100644
--- a/basegfx/source/polygon/b2dtrapezoid.cxx
+++ b/basegfx/source/polygon/b2dtrapezoid.cxx
@@ -1161,7 +1161,8 @@ namespace basegfx
 
             if(aSource.areControlPointsUsed())
             {
-                aSource = aSource.getDefaultAdaptiveSubdivision();
+            const double fPrecisionFactor = 0.25;
+                aSource = adaptiveSubdivideByDistance( aSource, fLineWidth * fPrecisionFactor );
             }
 
             const sal_uInt32 nPointCount(aSource.count());
commit bb902b67cf279b8b185200a9d83d7ba160ebfffb
Merge: 235a440... fff4be8...
Author: Joerg Skottke [jsk] <jsk at openoffice.org>
Date:   Fri Aug 13 07:28:35 2010 +0200

    jl154: Local merge

commit ad0a5ff9fa25c1f14677e92d6897c4301aac14c1
Merge: 4a1daa7... d0fa316...
Author: Philipp Lohmann [pl] <Philipp.Lohmann at Oracle.COM>
Date:   Thu Aug 12 16:23:40 2010 +0200

    merge with OOO330m4

commit 4a1daa71ee512b8f2b4624c9a680f681d34317f5
Author: Philipp Lohmann [pl] <Philipp.Lohmann at Oracle.COM>
Date:   Thu Aug 12 16:01:40 2010 +0200

    ooo33gsl05: #i113025# fix GDIMetaFile handlng of MapMode MAP_PIXEL

diff --git a/vcl/inc/vcl/gdimtf.hxx b/vcl/inc/vcl/gdimtf.hxx
index 9a7bc5f..e281e24 100644
--- a/vcl/inc/vcl/gdimtf.hxx
+++ b/vcl/inc/vcl/gdimtf.hxx
@@ -158,6 +158,8 @@ public:
     sal_Bool		IsEqual( const GDIMetaFile& rMtf ) const;
     BOOL            Mirror( ULONG nMirrorFlags );
     void            Move( long nX, long nY );
+    // additional Move method getting specifics how to handle MapMode( MAP_PIXEL )
+    void            Move( long nX, long nY, long nDPIX, long nDPIX );
     void            Scale( double fScaleX, double fScaleY );
     void            Scale( const Fraction& rScaleX, const Fraction& rScaleY );
     void            Rotate( long nAngle10 );
diff --git a/vcl/source/gdi/gdimtf.cxx b/vcl/source/gdi/gdimtf.cxx
index 635c146..7acb3c8 100644
--- a/vcl/source/gdi/gdimtf.cxx
+++ b/vcl/source/gdi/gdimtf.cxx
@@ -815,7 +815,7 @@ void GDIMetaFile::Move( long nX, long nY )
 
     aMapVDev.EnableOutput( FALSE );
     aMapVDev.SetMapMode( GetPrefMapMode() );
-
+    
     for( MetaAction* pAct = (MetaAction*) First(); pAct; pAct = (MetaAction*) Next() )
     {
         const long  nType = pAct->GetType();
@@ -841,6 +841,49 @@ void GDIMetaFile::Move( long nX, long nY )
     }
 }
 
+void GDIMetaFile::Move( long nX, long nY, long nDPIX, long nDPIY )
+{
+    const Size      aBaseOffset( nX, nY );
+    Size            aOffset( aBaseOffset );
+    VirtualDevice   aMapVDev;
+
+    aMapVDev.EnableOutput( FALSE );
+    aMapVDev.SetReferenceDevice( nDPIX, nDPIY );
+    aMapVDev.SetMapMode( GetPrefMapMode() );
+    
+    for( MetaAction* pAct = (MetaAction*) First(); pAct; pAct = (MetaAction*) Next() )
+    {
+        const long  nType = pAct->GetType();
+        MetaAction* pModAct;
+
+        if( pAct->GetRefCount() > 1 )
+        {
+            Replace( pModAct = pAct->Clone(), GetCurPos() );
+            pAct->Delete();
+        }
+        else
+            pModAct = pAct;
+
+        if( ( META_MAPMODE_ACTION == nType ) || 
+            ( META_PUSH_ACTION == nType ) ||
+            ( META_POP_ACTION == nType ) )
+        {
+            pModAct->Execute( &aMapVDev );
+            if( aMapVDev.GetMapMode().GetMapUnit() == MAP_PIXEL )
+            {
+                aOffset = aMapVDev.LogicToPixel( aBaseOffset, GetPrefMapMode() );
+                MapMode aMap( aMapVDev.GetMapMode() );
+                aOffset.Width() = aOffset.Width() * (double)aMap.GetScaleX();
+                aOffset.Height() = aOffset.Height() * (double)aMap.GetScaleY();
+            }
+            else
+                aOffset = aMapVDev.LogicToLogic( aBaseOffset, GetPrefMapMode(), aMapVDev.GetMapMode() );
+        }
+
+        pModAct->Move( aOffset.Width(), aOffset.Height() );
+    }
+}
+
 // ------------------------------------------------------------------------
 
 void GDIMetaFile::Scale( double fScaleX, double fScaleY )
diff --git a/vcl/source/gdi/metaact.cxx b/vcl/source/gdi/metaact.cxx
index 9bc3db2..99db8a8 100644
--- a/vcl/source/gdi/metaact.cxx
+++ b/vcl/source/gdi/metaact.cxx
@@ -4078,7 +4078,7 @@ void MetaCommentAction::Move( long nXMove, long nYMove )
                     aMemStm >> aFill;
                     PolyPolygon aPath;
                     aFill.getPath( aPath );
-                    aPath.Scale( nXMove, nYMove );
+                    aPath.Move( nXMove, nYMove );
                     aFill.setPath( aPath );
                     aDest << aFill;
                 }
diff --git a/vcl/source/gdi/print3.cxx b/vcl/source/gdi/print3.cxx
index 45b51ec..58e5983 100755
--- a/vcl/source/gdi/print3.cxx
+++ b/vcl/source/gdi/print3.cxx
@@ -958,7 +958,7 @@ PrinterController::PageSize PrinterController::getFilteredPageFile( int i_nFilte
             o_rMtf.WindStart();
             long nDX = (aPaperSize.Width() - aPageSize.aSize.Width()) / 2;
             long nDY = (aPaperSize.Height() - aPageSize.aSize.Height()) / 2;
-            o_rMtf.Move( nDX, nDY );
+            o_rMtf.Move( nDX, nDY, mpImplData->mpPrinter->ImplGetDPIX(), mpImplData->mpPrinter->ImplGetDPIY() );
             o_rMtf.WindStart();
             o_rMtf.SetPrefSize( aPaperSize );
             aPageSize.aSize = aPaperSize;
@@ -1033,7 +1033,7 @@ PrinterController::PageSize PrinterController::getFilteredPageFile( int i_nFilte
                 long nOffY = (aSubPageSize.Height() - long(double(aPageSize.aSize.Height()) * fScale)) / 2;
                 long nX = rMPS.nLeftMargin + nOffX + nAdvX * nCellX;
                 long nY = rMPS.nTopMargin + nOffY + nAdvY * nCellY;
-                aPageFile.Move( nX, nY );
+                aPageFile.Move( nX, nY, mpImplData->mpPrinter->ImplGetDPIX(), mpImplData->mpPrinter->ImplGetDPIY() );
                 aPageFile.WindStart();
                 // calculate border rectangle
                 Rectangle aSubPageRect( Point( nX, nY ),
@@ -1153,7 +1153,7 @@ void PrinterController::printFilteredPage( int i_nPage )
     {
         Point aPageOffset( mpImplData->mpPrinter->GetPageOffset() );
         aPageFile.WindStart();
-        aPageFile.Move( -aPageOffset.X(), -aPageOffset.Y() );
+        aPageFile.Move( -aPageOffset.X(), -aPageOffset.Y(), mpImplData->mpPrinter->ImplGetDPIX(), mpImplData->mpPrinter->ImplGetDPIY() );
     }
     
     GDIMetaFile aCleanedFile;
commit 3cef44dceef901fee54734075d78165a8c88113c
Author: Philipp Lohmann [pl] <Philipp.Lohmann at Oracle.COM>
Date:   Thu Aug 12 13:32:56 2010 +0200

    ooo33gsl05: #i113821# ensure last page renders when aborting job

diff --git a/vcl/inc/vcl/print.hxx b/vcl/inc/vcl/print.hxx
index 9b671f9..7079b64 100644
--- a/vcl/inc/vcl/print.hxx
+++ b/vcl/inc/vcl/print.hxx
@@ -520,6 +520,7 @@ public:
     SAL_DLLPRIVATE void setPrinter( const boost::shared_ptr<Printer>& );
     SAL_DLLPRIVATE void setOptionChangeHdl( const Link& );
     SAL_DLLPRIVATE void createProgressDialog();
+    SAL_DLLPRIVATE bool isProgressCanceled() const;
     SAL_DLLPRIVATE void setMultipage( const MultiPageSetup& );
     SAL_DLLPRIVATE const MultiPageSetup& getMultipage() const;
     SAL_DLLPRIVATE void setLastPage( sal_Bool i_bLastPage );
diff --git a/vcl/source/gdi/print3.cxx b/vcl/source/gdi/print3.cxx
index b98b256..45b51ec 100755
--- a/vcl/source/gdi/print3.cxx
+++ b/vcl/source/gdi/print3.cxx
@@ -444,8 +444,7 @@ void Printer::ImplPrintJob( const boost::shared_ptr<PrinterController>& i_pContr
             if( ! aDlg.Execute() )
             {
                 GDIMetaFile aPageFile;
-                i_pController->setLastPage( sal_True );
-                i_pController->getFilteredPageFile( 0, aPageFile );
+                i_pController->abortJob();
                 return;
             }
             if( aDlg.isPrintToFile() )
@@ -453,9 +452,7 @@ void Printer::ImplPrintJob( const boost::shared_ptr<PrinterController>& i_pContr
                 rtl::OUString aFile = queryFile( pController->getPrinter().get() );
                 if( ! aFile.getLength() )
                 {
-                    GDIMetaFile aPageFile;
-                    i_pController->setLastPage( sal_True );
-                    i_pController->getFilteredPageFile( 0, aPageFile );
+                    i_pController->abortJob();
                     return;
                 }
                 pController->setValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "LocalFileName" ) ),
@@ -612,7 +609,7 @@ bool Printer::StartJob( const rtl::OUString& i_rJobName, boost::shared_ptr<vcl::
         
         for( int nJobIteration = 0; nJobIteration < nJobs; nJobIteration++ )
         {
-            bool bError = false;
+            bool bError = false, bAborted = false;
             if( mpPrinter->StartJob( pPrintFile,
                                      i_rJobName,
                                      Application::GetDisplayName(),
@@ -624,11 +621,11 @@ bool Printer::StartJob( const rtl::OUString& i_rJobName, boost::shared_ptr<vcl::
                 mbJobActive             = TRUE;
                 i_pController->createProgressDialog();
                 int nPages = i_pController->getFilteredPageCount();
-                for( int nOuterIteration = 0; nOuterIteration < nOuterRepeatCount; nOuterIteration++ )
+                for( int nOuterIteration = 0; nOuterIteration < nOuterRepeatCount && ! bAborted; nOuterIteration++ )
                 {
-                    for( int nPage = 0; nPage < nPages; nPage++ )
+                    for( int nPage = 0; nPage < nPages && ! bAborted; nPage++ )
                     {
-                        for( int nInnerIteration = 0; nInnerIteration < nInnerRepeatCount; nInnerIteration++ )
+                        for( int nInnerIteration = 0; nInnerIteration < nInnerRepeatCount && ! bAborted; nInnerIteration++ )
                         {
                             if( nPage == nPages-1 &&
                                 nOuterIteration == nOuterRepeatCount-1 &&
@@ -638,6 +635,11 @@ bool Printer::StartJob( const rtl::OUString& i_rJobName, boost::shared_ptr<vcl::
                                 i_pController->setLastPage( sal_True );
                             }
                             i_pController->printFilteredPage( nPage );
+                            if( i_pController->isProgressCanceled() )
+                            {
+                                i_pController->abortJob();
+                                bAborted = true;
+                            }
                         }
                     }
                     // FIXME: duplex ?
@@ -1183,6 +1185,13 @@ void PrinterController::jobFinished( view::PrintableState )
 void PrinterController::abortJob()
 {
     setJobState( view::PrintableState_JOB_ABORTED );
+    // applications (well, sw) depend on a page request with "IsLastPage" = true
+    // to free resources, else they (well, sw) will crash eventually
+    setLastPage( sal_True );
+    delete mpImplData->mpProgress;
+    mpImplData->mpProgress = NULL;
+    GDIMetaFile aMtf;
+    getPageFile( 0, aMtf, false );
 }
 
 void PrinterController::setLastPage( sal_Bool i_bLastPage )
@@ -1515,6 +1524,11 @@ void PrinterController::createProgressDialog()
         mpImplData->mpProgress->reset();
 }
 
+bool PrinterController::isProgressCanceled() const
+{
+    return mpImplData->mpProgress && mpImplData->mpProgress->isCanceled();
+}
+
 void PrinterController::setMultipage( const MultiPageSetup& i_rMPS )
 {
     mpImplData->maMultiPage = i_rMPS;
commit 881771a0b46600ce7fc537f8697e17d5187cc04c
Merge: 590cbc8... a728239...
Author: Philipp Lohmann [pl] <Philipp.Lohmann at Oracle.COM>
Date:   Thu Aug 12 13:10:39 2010 +0200

    merge with ooo33gsl04

commit fff4be8b2ea3f89b77d65e8cb13389ff4466980a
Merge: 590cbc8... 235a440...
Author: Joerg Skottke [jsk] <jsk at openoffice.org>
Date:   Wed Aug 11 08:57:13 2010 +0200

    jl154: Local merge

commit e95d2093942bd783336c08249f0cc8ebd29bdb2b
Merge: 67ceba0... 590cbc8...
Author: Frank Schoenheit [fs] <frank.schoenheit at oracle.com>
Date:   Tue Aug 10 14:53:21 2010 +0200

    merging in latest changes from OOO330(m3)

diff --cc comphelper/inc/comphelper/docpasswordrequest.hxx
index 692d69c,5a99964..5a99964
mode 100644,100755..100644
--- a/comphelper/inc/comphelper/docpasswordrequest.hxx
+++ b/comphelper/inc/comphelper/docpasswordrequest.hxx
diff --cc svtools/inc/svtools/xwindowitem.hxx
index 0000000,2e39971..2e39971
mode 000000,100755..100644
--- a/svtools/inc/svtools/xwindowitem.hxx
+++ b/svtools/inc/svtools/xwindowitem.hxx
diff --cc svtools/source/dialogs/makefile.mk
index 16528ee,99c4b59..99c4b59
mode 100644,100755..100644
--- a/svtools/source/dialogs/makefile.mk
+++ b/svtools/source/dialogs/makefile.mk
diff --cc svtools/source/misc/makefile.mk
index 65e4374,32781db..32781db
mode 100644,100755..100644
--- a/svtools/source/misc/makefile.mk
+++ b/svtools/source/misc/makefile.mk
diff --cc svtools/source/misc/xwindowitem.cxx
index 0000000,8caf833..8caf833
mode 000000,100755..100644
--- a/svtools/source/misc/xwindowitem.cxx
+++ b/svtools/source/misc/xwindowitem.cxx
diff --cc vcl/inc/vcl/abstdlg.hxx
index b4ac06a,222d595..222d595
mode 100644,100755..100644
--- a/vcl/inc/vcl/abstdlg.hxx
+++ b/vcl/inc/vcl/abstdlg.hxx
diff --cc vcl/source/gdi/makefile.mk
index 4300806,77df209..77df209
mode 100755,100644..100755
--- a/vcl/source/gdi/makefile.mk
+++ b/vcl/source/gdi/makefile.mk
commit 67ceba07198128db6b42cdfd3a8c878a2af4fdee
Merge: 19e6551... a90fcce...
Author: Frank Schoenheit [fs] <frank.schoenheit at oracle.com>
Date:   Tue Aug 10 14:21:53 2010 +0200

    merging in latest changes from CWS unoawt2

commit cc4d2e80d521077ccd0fb730a89f812b570d2fe6
Author: Mikhail Voytenko <mav at openoffice.org>
Date:   Tue Aug 10 11:05:20 2010 +0200

    mav56: #163253# tread invalid path segments correctly

diff --git a/comphelper/inc/comphelper/storagehelper.hxx b/comphelper/inc/comphelper/storagehelper.hxx
index ff2be96..9123ff0 100644
--- a/comphelper/inc/comphelper/storagehelper.hxx
+++ b/comphelper/inc/comphelper/storagehelper.hxx
@@ -161,6 +161,8 @@ public:
 
     static sal_Bool IsValidZipEntryFileName( const ::rtl::OUString& aName, sal_Bool bSlashAllowed );
     static sal_Bool IsValidZipEntryFileName( const sal_Unicode *pChar, sal_Int32 nLength, sal_Bool bSlashAllowed );
+
+    static sal_Bool PathHasSegment( const ::rtl::OUString& aPath, const ::rtl::OUString& aSegment );
 };
 
 }
diff --git a/comphelper/source/misc/storagehelper.cxx b/comphelper/source/misc/storagehelper.cxx
index 2da56a0..176693e 100644
--- a/comphelper/source/misc/storagehelper.cxx
+++ b/comphelper/source/misc/storagehelper.cxx
@@ -452,5 +452,36 @@ sal_Bool OStorageHelper::IsValidZipEntryFileName(
     return sal_True;
 }
 
+// ----------------------------------------------------------------------
+sal_Bool OStorageHelper::PathHasSegment( const ::rtl::OUString& aPath, const ::rtl::OUString& aSegment )
+{
+    sal_Bool bResult = sal_False;
+    const sal_Int32 nPathLen = aPath.getLength();
+    const sal_Int32 nSegLen = aSegment.getLength();
+
+    if ( nSegLen && nPathLen >= nSegLen )
+    {
+        ::rtl::OUString aEndSegment( RTL_CONSTASCII_USTRINGPARAM( "/" ) );
+        aEndSegment += aSegment;
+
+        ::rtl::OUString aInternalSegment( aEndSegment );
+        aInternalSegment += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "/" ) );
+
+        if ( aPath.indexOf( aInternalSegment ) >= 0 )
+            bResult = sal_True;
+
+        if ( !bResult && !aPath.compareTo( aSegment, nSegLen ) )
+        {
+            if ( nPathLen == nSegLen || aPath.getStr()[nSegLen] == (sal_Unicode)'/' )
+                bResult = sal_True;
+        }
+
+        if ( !bResult && nPathLen > nSegLen && aPath.copy( nPathLen - nSegLen - 1, nSegLen + 1 ).equals( aEndSegment ) )
+            bResult = sal_True;
+    }
+
+    return bResult;
+}
+
 }
 
commit 65913d33daa99c701d289698201ba7884d475748
Author: sj <sj at openoffice.org>
Date:   Mon Aug 9 14:11:58 2010 +0200

    impress197: #163250# fixed string handling, improved polygon splitting

diff --git a/tools/source/generic/poly.cxx b/tools/source/generic/poly.cxx
index 392849a..9cdf591 100644
--- a/tools/source/generic/poly.cxx
+++ b/tools/source/generic/poly.cxx
@@ -243,6 +243,11 @@ void ImplPolygon::ImplSetSize( USHORT nNewSize, BOOL bResize )
 void ImplPolygon::ImplSplit( USHORT nPos, USHORT nSpace, ImplPolygon* pInitPoly )
 {
     const ULONG 	nSpaceSize = nSpace * sizeof( Point );
+
+    //Can't fit this in :-(, throw ?
+    if (mnPoints + nSpace > USHRT_MAX)
+        return;
+
     const USHORT	nNewSize = mnPoints + nSpace;
 
     if( nPos >= mnPoints )
commit e3e2a2ca3ed94c8088a2102c7b44ea5ef22d1d53
Author: Herbert Duerr [hdu] <duerr at sun.com>
Date:   Mon Aug 9 12:27:56 2010 +0200

    #i113731# fix compile warning on an pre-4.0-release gcc version

diff --git a/vcl/source/glyphs/graphite_layout.cxx b/vcl/source/glyphs/graphite_layout.cxx
index ee00f3a..300f23a 100644
--- a/vcl/source/glyphs/graphite_layout.cxx
+++ b/vcl/source/glyphs/graphite_layout.cxx
@@ -1103,7 +1103,7 @@ void GraphiteLayout::ApplyDXArray(ImplLayoutArgs &args, std::vector<int> & rDelt
     {
         nXOffset = args.mpDXArray[nChars - 1] - mvCharDxs[nChars - 1];
     }
-    int nPrevClusterGlyph = (bRtl)? mvGlyphs.size() : -1;
+    int nPrevClusterGlyph = (bRtl)? (signed)mvGlyphs.size() : -1;
     int nPrevClusterLastChar = -1;
     for (size_t i = 0; i < nChars; i++)
     {
commit ad3a06b88f0256ed3ed270074132ba51956d95f5
Author: Mikhail Voytenko <mav at openoffice.org>
Date:   Mon Aug 9 10:47:38 2010 +0200

    fwk152: #i108004# check the URLs correctly

diff --git a/unotools/inc/unotools/ucbhelper.hxx b/unotools/inc/unotools/ucbhelper.hxx
index f478d4a..686e954 100644
--- a/unotools/inc/unotools/ucbhelper.hxx
+++ b/unotools/inc/unotools/ucbhelper.hxx
@@ -80,6 +80,7 @@ namespace utl
         static sal_Bool             FindInPath( const String& rPath, const String& rName, String& rFile, char cDelim = ';', BOOL bAllowWildCards = TRUE );
         static sal_Bool             Find( const String& rFolder, const String& rName, String& rFile, BOOL bAllowWildCards = FALSE );
         static sal_Bool				IsSubPath( const ::rtl::OUString& rPath, const ::rtl::OUString& rChildCandidate, const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContentProvider >& xContentProvider = ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContentProvider >() );
+        static sal_Bool             EqualURLs( const ::rtl::OUString& aFirstURL, const ::rtl::OUString& aSecondURL );
     };
 }
 
diff --git a/unotools/source/ucbhelper/ucbhelper.cxx b/unotools/source/ucbhelper/ucbhelper.cxx
index 317bcc0..e201065 100644
--- a/unotools/source/ucbhelper/ucbhelper.cxx
+++ b/unotools/source/ucbhelper/ucbhelper.cxx
@@ -872,5 +872,54 @@ sal_Bool UCBContentHelper::IsSubPath( const ::rtl::OUString& rPath, const ::rtl:
     return bResult;
 }
 
+// -----------------------------------------------------------------------
+sal_Bool UCBContentHelper::EqualURLs( const ::rtl::OUString& aFirstURL, const ::rtl::OUString& aSecondURL )
+{
+    sal_Bool bResult = sal_False;
+
+    if ( aFirstURL.getLength() && aSecondURL.getLength() )
+    {
+        INetURLObject aFirst( aFirstURL );
+        INetURLObject aSecond( aSecondURL );
+
+        if ( aFirst.GetProtocol() != INET_PROT_NOT_VALID && aSecond.GetProtocol() != INET_PROT_NOT_VALID )
+        {
+            try
+            {
+                ::ucbhelper::ContentBroker* pBroker = ::ucbhelper::ContentBroker::get();
+                if ( !pBroker )
+                    throw uno::RuntimeException();
+
+                uno::Reference< ::com::sun::star::ucb::XContentIdentifierFactory > xIdFac
+                    = pBroker->getContentIdentifierFactoryInterface();
+                if ( !xIdFac.is() )
+                    throw uno::RuntimeException();
+
+                uno::Reference< ::com::sun::star::ucb::XContentIdentifier > xIdFirst
+                    = xIdFac->createContentIdentifier( aFirst.GetMainURL( INetURLObject::NO_DECODE ) );
+                uno::Reference< ::com::sun::star::ucb::XContentIdentifier > xIdSecond
+                    = xIdFac->createContentIdentifier( aSecond.GetMainURL( INetURLObject::NO_DECODE ) );
+
+                if ( xIdFirst.is() && xIdSecond.is() )
+                {
+                    uno::Reference< ::com::sun::star::ucb::XContentProvider > xProvider =
+                                                            pBroker->getContentProviderInterface();
+                    if ( !xProvider.is() )
+                        throw uno::RuntimeException();
+                    bResult = !xProvider->compareContentIds( xIdFirst, xIdSecond );
+                }
+            }
+            catch( uno::Exception& )
+            {
+                OSL_ENSURE( sal_False, "Can't compare URL's, treat as different!\n" );
+            }
+        }
+    }
+
+    return bResult;
+}
+
+
+
 } // namespace utl
 
commit c0d572366b519adde7e105174cec1944b243ba00
Author: Mikhail Voytenko <mav at openoffice.org>
Date:   Wed Aug 4 12:21:22 2010 +0200

    mib18: #163185# avoid crash when document is closed and a modal dialog is active

diff --git a/toolkit/source/awt/vclxwindows.cxx b/toolkit/source/awt/vclxwindows.cxx
index 5c7c319..cf45761 100644
--- a/toolkit/source/awt/vclxwindows.cxx
+++ b/toolkit/source/awt/vclxwindows.cxx
@@ -2363,15 +2363,23 @@ sal_Int16 VCLXDialog::execute() throw(::com::sun::star::uno::RuntimeException)
         Dialog* pDlg = (Dialog*) GetWindow();
         Window* pParent = pDlg->GetWindow( WINDOW_PARENTOVERLAP );
         Window* pOldParent = NULL;
+        Window* pSetParent = NULL;
         if ( pParent && !pParent->IsReallyVisible() )
         {
             pOldParent = pDlg->GetParent();
             Window* pFrame = pDlg->GetWindow( WINDOW_FRAME );
             if( pFrame != pDlg )
+            {
                 pDlg->SetParent( pFrame );
+                pSetParent = pFrame;
+            }
         }
+
         nRet = pDlg->Execute();
-        if ( pOldParent )
+
+        // set the parent back only in case no new parent was set from outside
+        // in other words, revert only own changes
+        if ( pOldParent && pDlg->GetParent() == pSetParent )
             pDlg->SetParent( pOldParent );
     }
     return nRet;
diff --git a/toolkit/source/helper/unowrapper.cxx b/toolkit/source/helper/unowrapper.cxx
index 93e3bee..827f4f7 100644
--- a/toolkit/source/helper/unowrapper.cxx
+++ b/toolkit/source/helper/unowrapper.cxx
@@ -318,12 +318,17 @@ void UnoWrapper::WindowDestroyed( Window* pWindow )
         Window* pTopWindowChild = pWindow->GetWindow( WINDOW_FIRSTTOPWINDOWCHILD );
         while ( pTopWindowChild )
         {
-            OSL_ENSURE( pTopWindowChild->GetParent() == pWindow, "UnoWrapper::WindowDestroyed: inconsistency in the SystemWindow relationship!" );
+            OSL_ENSURE( pTopWindowChild->GetParent() == pWindow,
+                        "UnoWrapper::WindowDestroyed: inconsistency in the SystemWindow relationship!" );
 
-            uno::Reference< lang::XComponent > xComp( pTopWindowChild->GetComponentInterface( FALSE ), uno::UNO_QUERY );
-            pTopWindowChild = pTopWindowChild->GetWindow( WINDOW_NEXTTOPWINDOWSIBLING );
-            if  ( xComp.is() )
-                xComp->dispose();
+            Window* pNextTopChild = pTopWindowChild->GetWindow( WINDOW_NEXTTOPWINDOWSIBLING );
+
+            //the window still could be on the stack, so we have to
+            // use lazy delete ( it will automatically
+            // disconnect from the currently destroyed parent window )
+            pTopWindowChild->doLazyDelete();
+
+            pTopWindowChild = pNextTopChild;
         }
     }
 }
commit 4da3b8789f65c01ee8b1aa610e6d7fe372e983b7
Author: Michael Stahl <mst at openoffice.org>
Date:   Tue Aug 3 18:06:21 2010 +0200

    sw33bf08: #i113623#: stgio.cxx: fix operator delete mismatch

diff --git a/sot/source/sdstor/stgio.cxx b/sot/source/sdstor/stgio.cxx
index d9d5e94..67c5d75 100644
--- a/sot/source/sdstor/stgio.cxx
+++ b/sot/source/sdstor/stgio.cxx
@@ -158,7 +158,7 @@ class EasyFat
 
 public:
     EasyFat( StgIo & rIo, StgStrm *pFatStream, INT32 nPSize );
-    ~EasyFat() { delete pFat; delete pFree; }
+    ~EasyFat() { delete[] pFat; delete[] pFree; }
     INT32 GetPageSize() { return nPageSize; }
     INT32 Count() { return nPages; }
     INT32 operator[]( INT32 nOffset ) { return pFat[ nOffset ]; }
commit 235a4402d956c52a2f8e8f6bed82ab7eff9170fe
Merge: 977745f... c3e26f8...
Author: Joachim Lingner <jl at openoffice.org>
Date:   Mon Aug 2 15:39:29 2010 +0200

    jl154 merging with OOO330m2

diff --cc vcl/source/gdi/makefile.mk
index 55d09d2,77df209..77df209
mode 100644,100644..100755
--- a/vcl/source/gdi/makefile.mk
+++ b/vcl/source/gdi/makefile.mk
commit 866fd517608220b892d215d12f1ea28e0a2f8ebc
Author: Herbert Duerr [hdu] <duerr at sun.com>
Date:   Mon Aug 2 09:02:35 2010 +0200

    #i113563# fix compile with system-graphite (thanks cmc)

diff --git a/vcl/source/glyphs/graphite_layout.cxx b/vcl/source/glyphs/graphite_layout.cxx
index 6e69b03..ee00f3a 100644
--- a/vcl/source/glyphs/graphite_layout.cxx
+++ b/vcl/source/glyphs/graphite_layout.cxx
@@ -677,7 +677,7 @@ public:
         return hash;
     };
 protected:
-    virtual void UniqueCacheInfo(std::wstring & stuFace, bool & fBold, bool & fItalic)
+    virtual void UniqueCacheInfo( ext_std::wstring& stuFace, bool& fBold, bool& fItalic )
     {
 #ifdef WIN32
         dynamic_cast<GraphiteWinFont&>(mrRealFont).UniqueCacheInfo(stuFace, fBold, fItalic);
commit da5fd52c6a206565fd671a5e0e03511b1519c926
Author: Herbert Duerr [hdu] <duerr at sun.com>
Date:   Wed Jul 28 14:49:14 2010 +0200

    #i113301# avoid problems with hyphenation within graphite ligature (thanks kstribley)

diff --git a/vcl/source/glyphs/graphite_layout.cxx b/vcl/source/glyphs/graphite_layout.cxx
index e3e964b..6e69b03 100644
--- a/vcl/source/glyphs/graphite_layout.cxx
+++ b/vcl/source/glyphs/graphite_layout.cxx
@@ -594,21 +594,39 @@ bool GraphiteLayout::LayoutText(ImplLayoutArgs & rArgs)
 {
 #ifdef GRCACHE
     GrSegRecord * pSegRecord = NULL;
-    gr::Segment * pSegment = CreateSegment(rArgs, &pSegRecord);
-    if (!pSegment)
-       return false;
-
+    gr::Segment * pSegment = NULL;
+    // Graphite can in rare cases crash with a zero length
+    if (rArgs.mnMinCharPos < rArgs.mnEndCharPos)
+    {
+        pSegment = CreateSegment(rArgs, &pSegRecord);
+        if (!pSegment)
+            return false;
+    }
+    else
+    {
+        clear();
+        return true;
+    }
     // layout the glyphs as required by OpenOffice
     bool success = LayoutGlyphs(rArgs, pSegment, pSegRecord);
 
     if (pSegRecord) pSegRecord->unlock();
     else delete pSegment;
 #else
-    gr::Segment * pSegment = CreateSegment(rArgs);
-    if (!pSegment)
-        return false;
-    bool success = LayoutGlyphs(rArgs, pSegment);
-    delete pSegment;
+    gr::Segment * pSegment = NULL;
+    bool success = true;
+    if (rArgs.mnMinCharPos < rArgs.mnEndCharPos)
+    {
+        pSegment = CreateSegment(rArgs);
+        if (!pSegment)
+            return false;
+        success = LayoutGlyphs(rArgs, pSegment);
+        if (pSegment) delete pSegment;
+    }
+    else
+    {
+        clear();
+    }
 #endif
     return success;
 }
@@ -722,7 +740,7 @@ gr::Segment * GraphiteLayout::CreateSegment(ImplLayoutArgs& rArgs)
             (GraphiteCacheHandler::instance).getCache(aFontHash);
         if (pCache)
         {
-            *pSegRecord = pCache->getSegment(rArgs, bRtl, nSegCharLimit);
+            *pSegRecord = pCache->getSegment(rArgs, bRtl, limit);
             if (*pSegRecord)
             {
                 pSegment = (*pSegRecord)->getSegment();
@@ -736,7 +754,34 @@ gr::Segment * GraphiteLayout::CreateSegment(ImplLayoutArgs& rArgs)
                     (*pSegRecord)->clearVectors();
                 }
                 mpTextSrc->switchLayoutArgs(rArgs);
-                return pSegment;
+                if (limit > rArgs.mnMinCharPos && limit == rArgs.mnEndCharPos
+                    && pSegment->stopCharacter() != limit)
+                {
+                    // check that the last character is not part of a ligature
+                    glyph_set_range_t aGlyphSet = pSegment->charToGlyphs(limit - 1);
+                    if (aGlyphSet.first == aGlyphSet.second)
+                    {
+                        // no glyphs associated with this glyph - occurs mid ligature
+                        pSegment = NULL;
+                        *pSegRecord = NULL;
+                    }
+                    else
+                    {
+                        while (aGlyphSet.first != aGlyphSet.second)
+                        {
+                            int lastChar = static_cast<int>((*aGlyphSet.first).lastChar());
+                            if (lastChar >= limit)
+                            {
+                                pSegment = NULL;
+                                *pSegRecord = NULL;
+                                break;
+                            }
+                            aGlyphSet.first++;
+                        }
+                    }
+                }
+                if (pSegment)
+                    return pSegment;
             }
         }
 #endif
diff --git a/vcl/win/source/gdi/winlayout.cxx b/vcl/win/source/gdi/winlayout.cxx
index 0ae9b8b..c6b6eb8 100755
--- a/vcl/win/source/gdi/winlayout.cxx
+++ b/vcl/win/source/gdi/winlayout.cxx
@@ -2894,6 +2894,11 @@ void GraphiteWinLayout::RestoreDC(gr::Segment & segment) const
 
 bool GraphiteWinLayout::LayoutText( ImplLayoutArgs & args)
 {
+    if (args.mnMinCharPos >= args.mnEndCharPos)
+    {
+        maImpl.clear();
+        return true;
+    }
     HFONT hUnRotatedFont;
     if (args.mnOrientation)
     {
commit 8fc80ea840ec20632b3055ab72350b7bff6a3fde
Author: Carsten Driesner <cd at openoffice.org>
Date:   Tue Jul 27 18:11:00 2010 +0200

    fwk151: Fixed problems that configuration changes notifications were not correctly sent/processed

diff --git a/unotools/inc/unotools/configpathes.hxx b/unotools/inc/unotools/configpathes.hxx
index 440f06c..d58049f 100644
--- a/unotools/inc/unotools/configpathes.hxx
+++ b/unotools/inc/unotools/configpathes.hxx
@@ -76,6 +76,9 @@ namespace utl
             If this is not a valid configuration path, it is interpreted as 
             a single name of a node.
 
+        @param _sOutPath
+            If non-null, contains the remainder of the path upon return.
+
         @returns
             The plain (non-escaped) name of the node that is the first step
             when traversing <var>_sInPath</var>.<BR/>
@@ -83,7 +86,8 @@ namespace utl
             configuration path, it is returned unaltered.
 
     */
-    UNOTOOLS_DLLPUBLIC ::rtl::OUString extractFirstFromConfigurationPath(::rtl::OUString const& _sInPath);
+    UNOTOOLS_DLLPUBLIC ::rtl::OUString extractFirstFromConfigurationPath(
+        ::rtl::OUString const& _sInPath, ::rtl::OUString* _sOutPath = 0);
 
 //----------------------------------------------------------------------------
     /** check whether a path is to a nested node with respect to a parent path.
diff --git a/unotools/source/config/configpathes.cxx b/unotools/source/config/configpathes.cxx
index 153c822..538b0a7 100644
--- a/unotools/source/config/configpathes.cxx
+++ b/unotools/source/config/configpathes.cxx
@@ -154,7 +154,7 @@ sal_Bool splitLastFromConfigurationPath(OUString const& _sInPath,
 }
 
 //----------------------------------------------------------------------------
-OUString extractFirstFromConfigurationPath(OUString const& _sInPath)
+OUString extractFirstFromConfigurationPath(OUString const& _sInPath, OUString* _sOutPath)
 {
     sal_Int32 nSep      = _sInPath.indexOf('/');
     sal_Int32 nBracket  = _sInPath.indexOf('[');
@@ -179,8 +179,7 @@ OUString extractFirstFromConfigurationPath(OUString const& _sInPath)
                 nBracket = nEnd;
             }
             OSL_ENSURE(nEnd > nStart && _sInPath[nBracket] == ']', "Invalid config path: improper mismatch of quote or bracket");
-            OSL_DEBUG_ONLY(nSep = nBracket+1);
-            OSL_ENSURE(nSep == _sInPath.getLength() || _sInPath[nSep] == '/', "Invalid config path: brackets not followed by slash");
+            OSL_ENSURE((nBracket+1 == _sInPath.getLength() && nSep == -1) || (_sInPath[nBracket+1] == '/' && nSep == nBracket+1), "Invalid config path: brackets not followed by slash");
         }
         else // ... but our initial element name is in simple form
             nStart = 0;
@@ -188,6 +187,12 @@ OUString extractFirstFromConfigurationPath(OUString const& _sInPath)
 
     OUString sResult = (nEnd >= 0) ? _sInPath.copy(nStart, nEnd-nStart) : _sInPath;
     lcl_resolveCharEntities(sResult);
+
+    if (_sOutPath != 0)
+    {
+        *_sOutPath = (nSep >= 0) ? _sInPath.copy(nSep + 1) : OUString();
+    }
+
     return sResult;
 }
 
commit 2f0d8a0ab77dca9d133dd30d7aa197f9fd023eae
Merge: 0df00c1... c3e26f8...
Author: Daniel Rentz <dr at openoffice.org>
Date:   Tue Jul 27 18:05:46 2010 +0200

    mib17: rebase to OOO330_m2

diff --cc vcl/source/gdi/makefile.mk
index f069828,77df209..77df209
mode 100644,100644..100755
--- a/vcl/source/gdi/makefile.mk
+++ b/vcl/source/gdi/makefile.mk
commit 0df00c17e14d1e01dbb483fa330591ba8c3a3229
Merge: 6e44518... 476fcc6...
Author: Daniel Rentz <dr at openoffice.org>
Date:   Tue Jul 27 17:12:01 2010 +0200

    mib17: rebase to DEV300_m84

commit 6c56d7b2470c3a0e3e1ce65d0608369c493e0f4b
Merge: aed54d0... c3e26f8...
Author: Ivo Hinkelmann <ihi at openoffice.org>
Date:   Tue Jul 27 16:50:00 2010 +0200

    merged OOO330 m2

diff --cc vcl/source/gdi/makefile.mk
index f069828,77df209..77df209
mode 100644,100644..100755
--- a/vcl/source/gdi/makefile.mk
+++ b/vcl/source/gdi/makefile.mk
commit aed54d08061d13bf20c60e024dddc8692576706a
Author: Ivo Hinkelmann <ihi at openoffice.org>
Date:   Thu Jul 22 17:53:11 2010 +0200

    txtl10n: cleanup / remove all -QQ and quiet parts

diff --git a/l10ntools/inc/lngmerge.hxx b/l10ntools/inc/lngmerge.hxx
index e3655c5..d93d60e 100644
--- a/l10ntools/inc/lngmerge.hxx
+++ b/l10ntools/inc/lngmerge.hxx
@@ -58,7 +58,7 @@ private:
                     const ByteString &rPrj , 
                     const ByteString &rRoot , const ByteString &sActFileName , const ByteString &sID );
 public:
-    LngParser( const ByteString &rLngFile, BOOL bUTF8, BOOL bULFFormat, bool bQuiet_in );
+    LngParser( const ByteString &rLngFile, BOOL bUTF8, BOOL bULFFormat );
     ~LngParser();
 
     BOOL CreateSDF( const ByteString &rSDFFile, const ByteString &rPrj, const ByteString &rRoot );
diff --git a/l10ntools/source/cfglex.l b/l10ntools/source/cfglex.l
index d1b076d..3fc3aa5 100644
--- a/l10ntools/source/cfglex.l
+++ b/l10ntools/source/cfglex.l
@@ -177,7 +177,6 @@ main( int argc, char* argv[])
 		fprintf( stdout, " FileIn:   Source files (*.src)\n" );
 		fprintf( stdout, " FileOut:  Destination file (*.*)\n" );
 		fprintf( stdout, " DataBase: Mergedata (*.sdf)\n" );
-		fprintf( stdout, " -QQ: quiet output\n" );
         fprintf( stdout, " -e: Disable writing errorlog\n" );
 		fprintf( stdout, " -b: Break when Token \"HelpText\" found in source\n" );
 		fprintf( stdout, " -u: [english] and [german] are allowed, Id is Taken from DataBase \n" );
diff --git a/l10ntools/source/cfgmerge.cxx b/l10ntools/source/cfgmerge.cxx
index 75887ae..06a4da8 100644
--- a/l10ntools/source/cfgmerge.cxx
+++ b/l10ntools/source/cfgmerge.cxx
@@ -59,7 +59,6 @@ BOOL bMergeMode;
 BOOL bErrorLog;
 BOOL bForce;
 BOOL bUTF8;
-bool bQuiet;
 ByteString sPrj;
 ByteString sPrjRoot;
 ByteString sInputFileName;
@@ -83,7 +82,6 @@ extern char *GetOutputFile( int argc, char* argv[])
     bErrorLog       = TRUE;
     bForce          = FALSE;
     bUTF8           = TRUE;
-    bQuiet          = false;
     sPrj            = "";
     sPrjRoot        = "";
     sInputFileName  = "";
@@ -128,9 +126,6 @@ extern char *GetOutputFile( int argc, char* argv[])
             nState = STATE_FORCE;
             bForce = TRUE;
         }
-        else if ( sSwitch == "-QQ" ) {
-            bQuiet = true;
-        }
         else if ( sSwitch == "-L" ) {
             nState = STATE_LANGUAGES;
         }
@@ -184,10 +179,6 @@ extern char *GetOutputFile( int argc, char* argv[])
     // command line is not valid
     return NULL;
 }
-int isQuiet(){
-    if( bQuiet )    return 1;
-    else            return 0;
-}
 /*****************************************************************************/
 int InitCfgExport( char *pOutput , char* pFilename )
 /*****************************************************************************/
diff --git a/l10ntools/source/export.cxx b/l10ntools/source/export.cxx
index 413c132..f7273a0 100644
--- a/l10ntools/source/export.cxx
+++ b/l10ntools/source/export.cxx
@@ -62,7 +62,6 @@ BOOL bErrorLog;
 BOOL bBreakWhenHelpText;
 BOOL bUnmerge;
 BOOL bUTF8;
-bool bQuiet;
 ByteString sPrj;
 ByteString sPrjRoot;
 ByteString sActFileName;
@@ -98,7 +97,6 @@ extern char *GetOutputFile( int argc, char* argv[])
     Export::sForcedLanguages = "";
     sTempFile = "";
     pTempFile = NULL;
-    bQuiet = false;
     USHORT nState = STATE_NON;
     BOOL bInput = FALSE;
 
@@ -115,9 +113,6 @@ extern char *GetOutputFile( int argc, char* argv[])
         else if (sSwitch == "-p"  || sSwitch == "-P" ) {
             nState = STATE_PRJ; // next token specifies the cur. project
         }
-        else if (sSwitch == "-qq"  || sSwitch == "-QQ" ) {
-            bQuiet = true;  
-        }
 
         else if (sSwitch == "-r"  || sSwitch == "-R" ) {
             nState = STATE_ROOT; // next token specifies path to project root
@@ -196,12 +191,6 @@ extern char *GetOutputFile( int argc, char* argv[])
     return NULL;
 }
 /*****************************************************************************/
-int isQuiet(){
-/*****************************************************************************/
-   if( bQuiet ) return 1;
-   else         return 0;
-}
-/*****************************************************************************/
 int InitExport( char *pOutput , char* pFilename )
 /*****************************************************************************/
 {
diff --git a/l10ntools/source/helpex.cxx b/l10ntools/source/helpex.cxx
index 677b596..702062d 100644
--- a/l10ntools/source/helpex.cxx
+++ b/l10ntools/source/helpex.cxx
@@ -61,7 +61,6 @@ ByteString sOutputFile;
 ByteString sOutputFileX;
 ByteString sOutputFileY;
 ByteString sSDFFile;
-bool bQuiet;
 
 /*****************************************************************************/
 BOOL ParseCommandLine( int argc, char* argv[])
@@ -73,7 +72,6 @@ BOOL ParseCommandLine( int argc, char* argv[])
     bUTF8 = TRUE;
     sPrj = "";
     sPrjRoot = "";
-    bQuiet = false;
     Export::sLanguages = "";
     Export::sForcedLanguages = "";
 
@@ -111,9 +109,6 @@ BOOL ParseCommandLine( int argc, char* argv[])
             nState = STATE_ERRORLOG;
             bErrorLog = FALSE;
         }
-        else if ( ByteString( argv[ i ] ).ToUpperAscii() == "-QQ" ) {
-            bQuiet = true;
-        }
         else if ( ByteString( argv[ i ]).ToUpperAscii() == "-UTF8" ) {
             nState = STATE_UTF8;
             bUTF8 = TRUE;
@@ -188,13 +183,12 @@ BOOL ParseCommandLine( int argc, char* argv[])
 void Help()
 /*****************************************************************************/
 {
-    fprintf( stdout, "Syntax: HELPEX[-p Prj][-r PrjRoot]-i FileIn ( -o FileOut | -x path -y relfile )[-m DataBase][-e][-b][-u][-L l1,l2,...][-QQ] -LF l1,l2 \n" );
+    fprintf( stdout, "Syntax: HELPEX[-p Prj][-r PrjRoot]-i FileIn ( -o FileOut | -x path -y relfile )[-m DataBase][-e][-b][-u][-L l1,l2,...] -LF l1,l2 \n" );
     fprintf( stdout, " Prj:      Project\n" );
     fprintf( stdout, " PrjRoot:  Path to project root (..\\.. etc.)\n" );
     fprintf( stdout, " FileIn:   Source file (*.lng)\n" );
     fprintf( stdout, " FileOut:  Destination file (*.*)\n" );
     fprintf( stdout, " DataBase: Mergedata (*.sdf)\n" );
-    fprintf( stdout, " -QQ: quiet output\n" );
     fprintf( stdout, " -L: Restrict the handled languages. l1,l2,... are elements of (en-US,fr,de...)\n" );
     fprintf( stdout, "     A fallback language can be defined like this: l1=f1.\n" );
     fprintf( stdout, "     f1, f2,... are also elements of (en-US,fr,de...)\n" );
diff --git a/l10ntools/source/lngex.cxx b/l10ntools/source/lngex.cxx
index bac9963..c14131a 100644
--- a/l10ntools/source/lngex.cxx
+++ b/l10ntools/source/lngex.cxx
@@ -53,7 +53,6 @@ BOOL bMergeMode;
 BOOL bErrorLog;
 BOOL bUTF8;
 BOOL bULF; // ULF = Unicode Language File
-bool bQuiet;
 ByteString sPrj;
 ByteString sPrjRoot;
 ByteString sOutputFile;
@@ -68,7 +67,6 @@ BOOL ParseCommandLine( int argc, char* argv[])
     bErrorLog = TRUE;
     bUTF8 = TRUE;
     bULF = FALSE;
-    bQuiet = false;
     sPrj = "";
     sPrjRoot = "";
     Export::sLanguages = "";
@@ -92,9 +90,6 @@ BOOL ParseCommandLine( int argc, char* argv[])
         else if ( sSwitch == "-R" ) {
             nState = STATE_ROOT; // next token specifies path to project root
         }
-        else if ( sSwitch == "-QQ" ) {
-            bQuiet = true;
-        }
         else if ( sSwitch == "-M" ) {
             nState = STATE_MERGESRC; // next token specifies the merge database
         }
@@ -176,9 +171,6 @@ void Help()
     fprintf( stdout, " FileIn:   Source file (*.lng)\n" );
     fprintf( stdout, " FileOut:  Destination file (*.*)\n" );
     fprintf( stdout, " DataBase: Mergedata (*.sdf)\n" );
-    fprintf( stdout, " -QQ: quite output\n" );
-    //fprintf( stdout, " -NOUTF8: disable UTF8 as language independent encoding\n" );
-    //fprintf( stdout, " -ULF: enables Unicode Language File format, leads to UTF8 encoded version of lng files" );
     fprintf( stdout, " -L: Restrict the handled languages. l1,l2,... are elements of (de,en-US...)\n" );
     fprintf( stdout, "     A fallback language can be defined like this: l1=f1.\n" );
     fprintf( stdout, "     f1, f2,... are also elements of (de,en-US...)\n" );
@@ -202,7 +194,7 @@ int _cdecl main( int argc, char *argv[] )
         fflush( stdout ); 
 
     if ( sOutputFile.Len()) {
-        LngParser aParser( sInputFile, bUTF8, bULF , bQuiet );
+        LngParser aParser( sInputFile, bUTF8, bULF );
         if ( bMergeMode )
             aParser.Merge( sMergeSrc, sOutputFile , sPrj );
         else
diff --git a/l10ntools/source/lngmerge.cxx b/l10ntools/source/lngmerge.cxx
index 90dd3e1..1032c12 100644
--- a/l10ntools/source/lngmerge.cxx
+++ b/l10ntools/source/lngmerge.cxx
@@ -38,15 +38,14 @@ using namespace std;
 // class LngParser
 //
 /*****************************************************************************/
-LngParser::LngParser( const ByteString &rLngFile, BOOL bUTF8, BOOL bULFFormat , bool bQuiet_in )
+LngParser::LngParser( const ByteString &rLngFile, BOOL bUTF8, BOOL bULFFormat )
 /*****************************************************************************/
                 :
                 nError( LNG_OK ),
                 pLines( NULL ),
                 sSource( rLngFile ),
                 bDBIsUTF8( bUTF8 ),
-                bULF( bULFFormat ),
-                bQuiet( bQuiet_in )
+                bULF( bULFFormat )
 {
     pLines = new LngLineList( 100, 100 );
     DirEntry aEntry( String( sSource, RTL_TEXTENCODING_ASCII_US ));
diff --git a/l10ntools/source/localize.cxx b/l10ntools/source/localize.cxx
index 3b2c531..db1fb6d 100644
--- a/l10ntools/source/localize.cxx
+++ b/l10ntools/source/localize.cxx
@@ -134,7 +134,6 @@ private:
     ByteString sLanguageRestriction;
    
     ByteString sOutputFile;
-    bool bQuiet2;
 
     int nFileCnt;
     
@@ -167,7 +166,7 @@ private:
     );
 
 public:
-    SourceTreeLocalizer( const ByteString &rRoot, const ByteString &rVersion , bool bLocal , bool bQuiet2_in , bool skip_links );
+    SourceTreeLocalizer( const ByteString &rRoot, const ByteString &rVersion , bool bLocal , bool skip_links );
     ~SourceTreeLocalizer();
     
     ByteString getSourceLanguages( ByteString sLanguageRestriction , ByteString sCommand );
@@ -183,11 +182,10 @@ public:
 
 /*****************************************************************************/
 SourceTreeLocalizer::SourceTreeLocalizer(
-    const ByteString &rRoot, const ByteString &rVersion, bool bLocal_in , bool bQuiet2_in , bool skip_links )
+    const ByteString &rRoot, const ByteString &rVersion, bool bLocal_in , bool skip_links )
 /*****************************************************************************/
                 : SourceTreeIterator( rRoot, rVersion , bLocal_in ),
                 nMode( LOCALIZE_NONE ),
-                bQuiet2( bQuiet2_in ),
                 nFileCnt( 0 )
 {
         bSkipLinks  = skip_links ;
@@ -323,9 +321,6 @@ void SourceTreeLocalizer::WorkOnFile(
         sCommand += getSourceLanguages( sLanguageRestriction , sCommand );
         }
             
-        if( bQuiet2 ){
-                //sCommand +=" -QQ ";
-            }
             //printf("DBG: %s\n",sCommand.GetBuffer());
             if (system(sCommand.GetBuffer()) == -1)
                 fprintf(stderr, "%s failed\n", sCommand.GetBuffer());
@@ -485,7 +480,6 @@ void SourceTreeLocalizer::OnExecuteDirectory( const rtl::OUString &aDirectory )
 {
     ByteString rDirectory( rtl::OUStringToOString( aDirectory , RTL_TEXTENCODING_UTF8 , aDirectory.getLength() ) ) ;
     if ( nMode == LOCALIZE_NONE ){
-        if( !bQuiet2 ) fprintf( stdout, "%s\n", rDirectory.GetBuffer());
     }
     else
         WorkOnDirectory( rDirectory );
@@ -541,7 +535,6 @@ BOOL SourceTreeLocalizer::MergeSingleFile(
     ByteString sFile( aEntry.GetFull(), RTL_TEXTENCODING_ASCII_US );
 
     ByteString sBCur( aEntry.GetFull(), RTL_TEXTENCODING_ASCII_US );
-    if( !bQuiet2 ) fprintf( stdout, "##### %s #####\n", sBCur.GetBuffer());
 
     ULONG nIndex = 0;
     ByteString sExtension( aEntry.GetExtension(), RTL_TEXTENCODING_ASCII_US );
@@ -589,9 +582,6 @@ BOOL SourceTreeLocalizer::MergeSingleFile(
             sCommand += " -l ";
             sCommand += sLanguageRestriction;
         }
-        if( bQuiet2 ){
-            sCommand +=" -QQ ";
-        }
 
         DirEntry aPath( aEntry.GetPath());
         DirEntry aOldCWD;
@@ -601,7 +591,6 @@ BOOL SourceTreeLocalizer::MergeSingleFile(
             fprintf(stderr, "%s failed\n", sCommand.GetBuffer());
         nFileCnt++;
         printf(".");
-        //if( bQuiet2 ){ printf("."); }
         SvFileStream aInStream( aOut.GetFull(), STREAM_READ );
         if ( !aInStream.IsOpen()) {
             fprintf( stderr, 
@@ -792,12 +781,11 @@ void Help()
     fprintf( stdout,
         "As part of the L10N framework, localize extracts and merges translations\n"
         "out of and into the whole source tree.\n\n"
-        "Syntax: localize -e -l en-US -f FileName [-QQ]\n"
+        "Syntax: localize -e -l en-US -f FileName \n"
         "Parameter:\n"
         "\t-e: Extract mode\n"
         "\tFileName: Output file when extract mode, input file when merge mode\n"
         "\tl1...ln: supported languages (\"all\" for all languages).\n"
-        "\tQQ: quiet output)"
     );
 
     fprintf( stdout,
@@ -840,15 +828,12 @@ int _cdecl main( int argc, char *argv[] )
 
     BOOL bExport    = FALSE;
     BOOL bMerge     = FALSE;
-    bool bQuiet     = false;
-    bool bQuiet2    = false; 
     bool bSkipLinks = false;
     
     ByteString sLanguages;
     ByteString sFileName;
     ByteString sOutput;
 
-    bQuiet2 = true; 
     bExport = TRUE;
 
     for( int i = 1; i < argc; i++ ) {
@@ -861,17 +846,12 @@ int _cdecl main( int argc, char *argv[] )
                 return Error();
             bExport = TRUE;
         }
-        else if( sSwitch.Equals( "-Q" )) {
-            bQuiet = true;
-        }
         else if ( sSwitch.Equals( "-I" ) )
             nState = STATE_ISOCODE;
         else if ( sSwitch.Equals( "-L" ) )
             nState = STATE_LANGUAGES;
         else if ( sSwitch.Equals( "-F" ) )
             nState = STATE_FILENAME;
-        else if ( sSwitch.Equals( "-QQ" ))
-            bQuiet2 = true;
         else if ( ByteString( argv[ i ]).ToUpperAscii().Equals( "-O" ) )
             nState = STATE_OUTPUT;
         else {
@@ -954,10 +934,10 @@ int _cdecl main( int argc, char *argv[] )
         else
             curRepository = string( Export::GetEnv("SOURCE_ROOT_DIR") ) + "/" + *iter;
         cout << "Localizing repository " << curRepository << "\n";

... etc. - the rest is truncated


More information about the ooo-build-commit mailing list