cli_ure/source/native/native_bootstrap.cxx | 100 +------------- cli_ure/version/version.txt | 24 +-- cppuhelper/source/findsofficepath.c | 19 ++ odk/examples/CLI/CSharp/Spreadsheet/Makefile | 4 odk/source/unoapploader/unx/unoapploader.c | 5 odk/source/unoapploader/win/unoapploader.c | 130 ------------------- solenv/bin/modules/installer/download.pm | 2 solenv/bin/modules/installer/windows/sign.pm | 4 svx/inc/svx/sdr/properties/customshapeproperties.hxx | 4 svx/inc/svx/svdoashp.hxx | 4 svx/inc/svx/svdotext.hxx | 7 - svx/source/sdr/properties/customshapeproperties.cxx | 100 +++++++------- svx/source/svdraw/svdoashp.cxx | 102 ++++++++------ svx/source/svdraw/svdotext.cxx | 69 +++++----- svx/source/svdraw/svdotxdr.cxx | 20 -- svx/source/svdraw/svdotxtr.cxx | 43 ++++-- unoil/climaker/version.txt | 6 vcl/source/gdi/pngread.cxx | 4 xmloff/inc/xmloff/xmlmultiimagehelper.hxx | 2 xmloff/source/text/XMLTextFrameContext.cxx | 126 ++++++++++++------ 20 files changed, 331 insertions(+), 444 deletions(-)
New commits: commit 1bb48c93699ef4cbcaff9bb6a8dd33a45d238ba1 Author: Jürgen Schmidt <j...@apache.org> Date: Fri Sep 20 08:05:42 2013 +0000 #122869# fix problem to find office installation diff --git a/cli_ure/source/native/native_bootstrap.cxx b/cli_ure/source/native/native_bootstrap.cxx index 3255d91..8dfa92a 100644 --- a/cli_ure/source/native/native_bootstrap.cxx +++ b/cli_ure/source/native/native_bootstrap.cxx @@ -56,9 +56,6 @@ namespace cli_ure { // in main\scp2\source\ooo\registryitem_ooo.scp #define INSTALL_PATH L"Software\\OpenOffice\\UNO\\InstallPath" #define INSTALL_PATH_64 L"Software\\Wow6432Node\\OpenOffice\\UNO\\InstallPath" -#define BASIS_LINK L"\\basis-link" -#define URE_LINK L"\\ure-link" -#define URE_BIN L"\\bin" #define UNO_PATH L"UNO_PATH" namespace @@ -110,23 +107,6 @@ WCHAR* getPathFromRegistryKey( HKEY hroot, LPCWSTR subKeyName ) return data; } -/* If the path does not end with '\' the las segment will be removed. - path: C:\a\b - -> C:\a - @param io_path - in/out parameter. The string is not reallocated. Simply a '\0' - will be inserted to shorten the string. -*/ -void oneDirUp(LPTSTR io_path) -{ - WCHAR * pEnd = io_path + lstrlen(io_path) - 1; - while (pEnd > io_path //prevent crashing if provided string does not contain a backslash - && *pEnd != L'\\') - pEnd --; - *pEnd = L'\0'; -} - - /* Returns the path to the program folder of the brand layer, for example c:/openoffice.org 3/program This path is either obtained from the environment variable UNO_PATH @@ -142,8 +122,8 @@ WCHAR * getInstallPath() DWORD cChars = GetEnvironmentVariable(UNO_PATH, NULL, 0); if (cChars > 0) { - szInstallPath = new WCHAR[cChars]; - cChars = GetEnvironmentVariable(UNO_PATH, szInstallPath, cChars); + szInstallPath = new WCHAR[cChars+1]; + cChars = GetEnvironmentVariable(UNO_PATH, szInstallPath, cChars+1); //If PATH is not set then it is no error if (cChars == 0) { @@ -158,14 +138,14 @@ WCHAR * getInstallPath() if ( szInstallPath == NULL ) { /* read the key's default value from HKEY_LOCAL_USER */ - szInstallPath = getPathFromRegistryKey( HKEY_LOCAL_MACHINE, INSTALL_PATH_64 ); + szInstallPath = getPathFromRegistryKey( HKEY_CURRENT_USER, INSTALL_PATH_64 ); } - else if ( szInstallPath == NULL ) + if ( szInstallPath == NULL ) { /* read the key's default value from HKEY_LOCAL_MACHINE */ szInstallPath = getPathFromRegistryKey( HKEY_LOCAL_MACHINE, INSTALL_PATH ); } - else if ( szInstallPath == NULL ) + if ( szInstallPath == NULL ) { /* read the key's default value from HKEY_LOCAL_MACHINE */ szInstallPath = getPathFromRegistryKey( HKEY_LOCAL_MACHINE, INSTALL_PATH_64 ); @@ -174,67 +154,6 @@ WCHAR * getInstallPath() return szInstallPath; } -/* Returns the path to the URE/bin path, where cppuhelper lib resides. - The returned string must be freed with delete[] -*/ -WCHAR* getUnoPath() -{ - WCHAR * szLinkPath = NULL; - WCHAR * szUrePath = NULL; - WCHAR * szUreBin = NULL; //the return value - - WCHAR * szInstallPath = getInstallPath(); - if (szInstallPath) - { - //build the path tho the basis-link file - oneDirUp(szInstallPath); - int sizeLinkPath = lstrlen(szInstallPath) + lstrlen(INSTALL_PATH) + 1; - if (sizeLinkPath < MAX_PATH) - sizeLinkPath = MAX_PATH; - szLinkPath = new WCHAR[sizeLinkPath]; - szLinkPath[0] = L'\0'; - lstrcat(szLinkPath, szInstallPath); - lstrcat(szLinkPath, BASIS_LINK); - - //get the path to the actual Basis folder - if (cli_ure::resolveLink(szLinkPath)) - { - //build the path to the ure-link file - int sizeUrePath = lstrlen(szLinkPath) + lstrlen(URE_LINK) + 1; - if (sizeUrePath < MAX_PATH) - sizeUrePath = MAX_PATH; - szUrePath = new WCHAR[sizeUrePath]; - szUrePath[0] = L'\0'; - lstrcat(szUrePath, szLinkPath); - lstrcat(szUrePath, URE_LINK); - - //get the path to the actual Ure folder - if (cli_ure::resolveLink(szUrePath)) - { - //build the path to the URE/bin directory - szUreBin = new WCHAR[lstrlen(szUrePath) + lstrlen(URE_BIN) + 1]; - szUreBin[0] = L'\0'; - lstrcat(szUreBin, szUrePath); - lstrcat(szUreBin, URE_BIN); - } - } - } -#if OSL_DEBUG_LEVEL >=2 - if (szUreBin) - { - fwprintf(stdout,L"[cli_cppuhelper]: Path to URE libraries:\n %s \n", szUreBin); - } - else - { - fwprintf(stdout,L"[cli_cppuhelper]: Failed to determine location of URE.\n"); - } -#endif - delete[] szInstallPath; - delete[] szLinkPath; - delete[] szUrePath; - return szUreBin; -} - /*We extend the path to contain the Ure/bin folder, so that components can use osl_loadModule with arguments, such as @@ -280,7 +199,6 @@ HMODULE loadFromPath(LPCWSTR sLibName) if (sLibName == NULL) return NULL; -// WCHAR * szUreBinPath = getUnoPath(); WCHAR * szUreBinPath = getInstallPath(); if (!szUreBinPath) return NULL; @@ -344,10 +262,10 @@ namespace util Bootstrapping requires the existence of many libraries which are contained in an URE installation. To find and load these libraries the Windows - registry keys HKEY_CURRENT_USER\Software\OpenOffice\Layer\URE\1 - and HKEY_LOCAL_MACHINE\Software\OpenOffice\Layer\URE\1 are examined. - These contain a named value UREINSTALLLOCATION which holds a path to the URE - installation folder. + registry keys HKEY_CURRENT_USER\Software\OpenOffice\UNO\InstallPath + and HKEY_LOCAL_MACHINE\Software\OpenOffice\UNO\InstallPath are examined. + The default value contain the path to the office prgoram dir. No seaparate URE + anymore. */ public __sealed __gc class Bootstrap { diff --git a/cli_ure/version/version.txt b/cli_ure/version/version.txt index 9c46b25..11d0038 100644 --- a/cli_ure/version/version.txt +++ b/cli_ure/version/version.txt @@ -19,23 +19,23 @@ # #************************************************************** -CLI_URETYPES_NEW_VERSION=1.0.8.0 -CLI_URETYPES_OLD_VERSION=1.0.0.0-1.0.7.0 -CLI_URETYPES_POLICY_VERSION=8.0.0.0 +CLI_URETYPES_NEW_VERSION=1.0.9.0 +CLI_URETYPES_OLD_VERSION=1.0.0.0-1.0.8.0 +CLI_URETYPES_POLICY_VERSION=9.0.0.0 CLI_URETYPES_POLICY_ASSEMBLY=policy.1.0.cli_uretypes -CLI_BASETYPES_NEW_VERSION=1.0.19.0 -CLI_BASETYPES_OLD_VERSION=1.0.0.0-1.0.18.0 -CLI_BASETYPES_POLICY_VERSION=19.0.0.0 +CLI_BASETYPES_NEW_VERSION=1.0.20.0 +CLI_BASETYPES_OLD_VERSION=1.0.0.0-1.0.19.0 +CLI_BASETYPES_POLICY_VERSION=20.0.0.0 CLI_BASETYPES_POLICY_ASSEMBLY=policy.1.0.cli_basetypes -CLI_URE_NEW_VERSION=1.0.22.0 -CLI_URE_OLD_VERSION=1.0.0.0-1.0.21.0 -CLI_URE_POLICY_VERSION=22.0.0.0 +CLI_URE_NEW_VERSION=1.0.23.0 +CLI_URE_OLD_VERSION=1.0.0.0-1.0.22.0 +CLI_URE_POLICY_VERSION=23.0.0.0 CLI_URE_POLICY_ASSEMBLY=policy.1.0.cli_ure -CLI_CPPUHELPER_NEW_VERSION=1.0.22.0 -CLI_CPPUHELPER_OLD_VERSION=1.0.0.0-1.0.21.0 -CLI_CPPUHELPER_POLICY_VERSION=22.0.0.0 +CLI_CPPUHELPER_NEW_VERSION=1.0.23.0 +CLI_CPPUHELPER_OLD_VERSION=1.0.0.0-1.0.22.0 +CLI_CPPUHELPER_POLICY_VERSION=23.0.0.0 CLI_CPPUHELPER_POLICY_ASSEMBLY=policy.1.0.cli_cppuhelper diff --git a/odk/examples/CLI/CSharp/Spreadsheet/Makefile b/odk/examples/CLI/CSharp/Spreadsheet/Makefile index 9a597e2..bb03ccd 100644 --- a/odk/examples/CLI/CSharp/Spreadsheet/Makefile +++ b/odk/examples/CLI/CSharp/Spreadsheet/Makefile @@ -52,7 +52,7 @@ include $(SETTINGS)/stdtarget.mk # build executables -#csc -lib:"d:\StarOffice 8" does not work. csc does not understand the quotes. +#csc -lib:"d:\OpenOffice 4" does not work. csc does not understand the quotes. #but they are needed if the path contains a space. Therefore we use full path #with the -reference switch $(SPREADSHEET_OUT)/%.exe : %.cs SpreadsheetDocHelper.cs @@ -75,7 +75,7 @@ ViewSample : $(SPREADSHEET_OUT)/ViewSample.exe .PHONY : Info ifeq "$(OS)" "WIN" -Info : SpreadsheetSample GenerateTableSample ViewSample +Info : SpreadsheetSample GeneralTableSample ViewSample @echo ------------------------------------------------------------------------------- @echo Please use one of the following commands to execute the examples! @echo - diff --git a/unoil/climaker/version.txt b/unoil/climaker/version.txt index e401869..b4f6c18 100644 --- a/unoil/climaker/version.txt +++ b/unoil/climaker/version.txt @@ -19,8 +19,8 @@ # #************************************************************** -CLI_OOOTYPES_NEW_VERSION=1.0.8.0 -CLI_OOOTYPES_OLD_VERSION=1.0.0.0-1.0.7.0 -CLI_OOOTYPES_POLICY_VERSION=8.0.0.0 +CLI_OOOTYPES_NEW_VERSION=1.0.9.0 +CLI_OOOTYPES_OLD_VERSION=1.0.0.0-1.0.8.0 +CLI_OOOTYPES_POLICY_VERSION=9.0.0.0 CLI_OOOTYPES_POLICY_ASSEMBLY=policy.1.0.cli_oootypes commit 473a118a62842270b85713d0ab0dc247b5778439 Author: Armin Le Grand <a...@apache.org> Date: Thu Sep 19 11:34:41 2013 +0000 i115391 corected from isLocked to IsPasteResize which was used in modifiers for CustomShape and TextShape diff --git a/svx/source/svdraw/svdotext.cxx b/svx/source/svdraw/svdotext.cxx index 7e9346c..76f2e38 100644 --- a/svx/source/svdraw/svdotext.cxx +++ b/svx/source/svdraw/svdotext.cxx @@ -648,7 +648,7 @@ FASTBOOL SdrTextObj::NbcSetAutoGrowHeight(bool bAuto) // states of IsAutoGrowWidth/Height to correctly set TextMinFrameWidth/Height void SdrTextObj::AdaptTextMinSize() { - if(bTextFrame && (!pModel || !pModel->isLocked())) + if(bTextFrame && (!pModel || !pModel->IsPasteResize())) { const bool bW(IsAutoGrowWidth()); const bool bH(IsAutoGrowHeight()); commit 832e39ab057d07425a179e5eb8534581cfefe8b4 Author: Armin Le Grand <a...@apache.org> Date: Thu Sep 19 11:21:03 2013 +0000 i115391 corected from SetObejctItem to usage of local SfxItemSet diff --git a/svx/source/svdraw/svdotext.cxx b/svx/source/svdraw/svdotext.cxx index 716c7a7..7e9346c 100644 --- a/svx/source/svdraw/svdotext.cxx +++ b/svx/source/svdraw/svdotext.cxx @@ -681,7 +681,7 @@ void SdrTextObj::AdaptTextMinSize() if(IsVerticalWriting() && bDisableAutoWidthOnDragging) { bDisableAutoWidthOnDragging = false; - SetObjectItem(SdrTextAutoGrowHeightItem(false)); + aSet.Put(SdrTextAutoGrowHeightItem(false)); } } commit 14f325fd3b64ab3ff9ead9ce0e28a9b5755189df Author: Jürgen Schmidt <j...@apache.org> Date: Thu Sep 19 10:24:42 2013 +0000 #123283# improve finding default office path for Mac (no /usr/bin/soffice link), on Windows drop unoinfo and use the path from the registry directly diff --git a/cppuhelper/source/findsofficepath.c b/cppuhelper/source/findsofficepath.c index b0481ea..341a06b 100644 --- a/cppuhelper/source/findsofficepath.c +++ b/cppuhelper/source/findsofficepath.c @@ -117,7 +117,7 @@ static char* platformSpecific() #include <unistd.h> #include <limits.h> - +#include <stdio.h> /* * Gets the installation path from the PATH environment variable. * @@ -145,7 +145,21 @@ static char* platformSpecific() char buffer[PATH_MAX]; int pos; - /* get the value of the PATH environment variable */ +#ifdef MACOSX + /* On MacOS we have no soffice link under /usr/bin but the default office location is known + and we check this only + */ + const char* MACDEFAULTOFFICEPATH = "/Applications/OpenOffice.app/Contents/MacOS"; + const char* MACDEFAULTSOFFICE = "/Applications/OpenOffice.app/Contents/MacOS/soffice"; + + if ( !access( MACDEFAULTSOFFICE, F_OK ) ) + { + path = (char*) malloc( MACDEFAULTOFFICEPATH + 1 ); + strcpy( path, MACDEFAULTOFFICEPATH); + } + return path; +#else +/* get the value of the PATH environment variable */ env = getenv( PATHVARNAME ); str = (char*) malloc( strlen( env ) + 1 ); strcpy( str, env ); @@ -190,6 +204,7 @@ static char* platformSpecific() free( str ); return path; +#endif } #endif diff --git a/odk/source/unoapploader/unx/unoapploader.c b/odk/source/unoapploader/unx/unoapploader.c index 4e5240f..44b7970 100644 --- a/odk/source/unoapploader/unx/unoapploader.c +++ b/odk/source/unoapploader/unx/unoapploader.c @@ -206,8 +206,6 @@ int main( int argc, char *argv[] ) strcat( envstr, value ); } putenv( envstr ); - fprintf( stderr, "DYLD_LIBRARY_PATH=%s\n", envstr ); - } else { @@ -242,8 +240,7 @@ char const* getPath() if ( path == NULL ) { - fprintf( stderr, "Warning: getting path from PATH environment " - "variable failed!\n" ); + fprintf( stderr, "Warning: getting path from PATH environment variable failed!\n" ); fflush( stderr ); } diff --git a/odk/source/unoapploader/win/unoapploader.c b/odk/source/unoapploader/win/unoapploader.c index 2f6605c..abcd0e7 100644 --- a/odk/source/unoapploader/win/unoapploader.c +++ b/odk/source/unoapploader/win/unoapploader.c @@ -72,7 +72,6 @@ int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, const char* PATHSEPARATOR = ";"; char const* path = NULL; - char path2[MAX_PATH]; char* value = NULL; char* envstr = NULL; char* cmdline = NULL; @@ -90,130 +89,11 @@ int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, if ( path != NULL ) { - wchar_t cmd[ - MY_LENGTH(L"\"") + MAX_PATH + - MY_LENGTH(L"\\unoinfo.exe\" c++")]; - /* hopefully does not overflow */ - int pathsize; - SECURITY_ATTRIBUTES sec; - HANDLE temp; - HANDLE stdoutRead; - HANDLE stdoutWrite; - STARTUPINFOW startinfo; - PROCESS_INFORMATION procinfo; - int ret; - cmd[0] = L'"'; - pathsize = MultiByteToWideChar(CP_ACP, 0, path, -1, cmd + 1, MAX_PATH); - if (pathsize == 0) { - writeError("Error: MultiByteToWideChar failed!\n"); - closeErrorFile(); - return 1; - } - if (wcschr(cmd + 1, L'"') != NULL) { - writeError("Error: bad characters in UNO installation path!\n"); - closeErrorFile(); - return 1; - } - wcscpy( - cmd + pathsize, - (L"\\unoinfo.exe\" c++" + - (pathsize == 1 || cmd[pathsize - 1] != L'\\' ? 0 : 1))); - sec.nLength = sizeof (SECURITY_ATTRIBUTES); - sec.lpSecurityDescriptor = NULL; - sec.bInheritHandle = TRUE; - if (CreatePipe(&temp, &stdoutWrite, &sec, 0) == 0 || - DuplicateHandle( - GetCurrentProcess(), temp, GetCurrentProcess(), &stdoutRead, 0, - FALSE, DUPLICATE_CLOSE_SOURCE | DUPLICATE_SAME_ACCESS) == 0) - { - writeError("Error: CreatePipe/DuplicateHandle failed!\n"); - closeErrorFile(); - return 1; - } - memset(&startinfo, 0, sizeof (STARTUPINFOW)); - startinfo.cb = sizeof (STARTUPINFOW); - startinfo.lpDesktop = L""; - startinfo.dwFlags = STARTF_USESTDHANDLES; - startinfo.hStdOutput = stdoutWrite; - ret = CreateProcessW( - NULL, cmd, NULL, NULL, TRUE, 0, NULL, NULL, &startinfo, &procinfo); - if (ret != 0) { - char * buf = NULL; - size_t n = 1000; - size_t k = 0; - DWORD exitcode; - int path2size; - CloseHandle(stdoutWrite); - CloseHandle(procinfo.hThread); - for (;;) { - DWORD m; - buf = realloc(buf, n); - if (buf == NULL) { - writeError( - "Error: out of memory reading unoinfo output!\n"); - closeErrorFile(); - return 1; - } - if (!ReadFile(stdoutRead, buf + k, n - k, &m, NULL)) - { - DWORD err = GetLastError(); - if (err == ERROR_HANDLE_EOF || err == ERROR_BROKEN_PIPE) { - break; - } - writeError("Error: cannot read unoinfo output!\n"); - closeErrorFile(); - return 1; - } - if (m == 0) { - break; - } - k += m; - if (k >= n) { - if (n >= SAL_MAX_SIZE / 2) { - writeError( - "Error: out of memory reading unoinfo output!\n"); - closeErrorFile(); - return 1; - } - n *= 2; - } - } - if ((k & 1) == 1) { - writeError("Error: bad unoinfo output!\n"); - closeErrorFile(); - return 1; - } - CloseHandle(stdoutRead); - if (!GetExitCodeProcess(procinfo.hProcess, &exitcode) || - exitcode != 0) - { - writeError("Error: executing unoinfo failed!\n"); - closeErrorFile(); - return 1; - } - if (k == 0) { - path2size = 0; - } else { - path2size = WideCharToMultiByte( - CP_ACP, 0, (wchar_t *) buf, k / 2, path2, MAX_PATH - 1, - NULL, NULL); - if (path2size == 0) { - writeError("Error: converting unoinfo output failed!\n"); - closeErrorFile(); - return 1; - } - } - path2[path2size] = '\0'; - path = path2; - } else { - if (GetLastError() != ERROR_FILE_NOT_FOUND) { - writeError("Error: calling unoinfo failed!\n"); - closeErrorFile(); - return 1; - } - CloseHandle(stdoutRead); - CloseHandle(stdoutWrite); - } + /* The former code to call unoinfo first is removed because we can use the office path + from the registry or from the UNO_PATH variable directly. + Further cleanup can remove unoinfo from the installation when all places where it is + used are checked. + */ /* get the value of the PATH environment variable */ value = getenv( ENVVARNAME ); commit 39fe8aa1f225ac52342fc6d63df8636db902b340 Author: Armin Le Grand <a...@apache.org> Date: Thu Sep 19 10:11:03 2013 +0000 i115391 better support for MinTextSize settings for TextShapes and CustomShapes diff --git a/svx/inc/svx/sdr/properties/customshapeproperties.hxx b/svx/inc/svx/sdr/properties/customshapeproperties.hxx index 6786e1f..e4f3caa 100644 --- a/svx/inc/svx/sdr/properties/customshapeproperties.hxx +++ b/svx/inc/svx/sdr/properties/customshapeproperties.hxx @@ -49,6 +49,10 @@ namespace sdr // react on Item change virtual void ItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem); + // Called after ItemChange() is done for all items. Allows local reactions on + // specific item changes + virtual void PostItemChange(const sal_uInt16 nWhich); + // clear single item virtual void ClearObjectItem(const sal_uInt16 nWhich = 0); diff --git a/svx/inc/svx/svdoashp.hxx b/svx/inc/svx/svdoashp.hxx index 13422b4..bd4dd2b 100644 --- a/svx/inc/svx/svdoashp.hxx +++ b/svx/inc/svx/svdoashp.hxx @@ -131,6 +131,10 @@ public: static basegfx::B2DPolyPolygon GetLineGeometry( const SdrObjCustomShape* pCustomShape, const sal_Bool bBezierAllowed ); protected: + // #115391# new method for SdrObjCustomShape and SdrTextObj to correctly handle and set + // SdrTextMinFrameWidthItem and SdrTextMinFrameHeightItem based on all settings, necessities + // and object sizes + virtual void AdaptTextMinSize(); String aName; diff --git a/svx/inc/svx/svdotext.hxx b/svx/inc/svx/svdotext.hxx index 0a3c70f..c5645f9 100644 --- a/svx/inc/svx/svdotext.hxx +++ b/svx/inc/svx/svdotext.hxx @@ -289,13 +289,16 @@ protected: virtual void RestGeoData(const SdrObjGeoData& rGeo); FASTBOOL NbcSetEckenradius(long nRad); FASTBOOL NbcSetAutoGrowHeight(bool bAuto); - FASTBOOL NbcSetMinTextFrameHeight(long nHgt); FASTBOOL NbcSetMaxTextFrameHeight(long nHgt); FASTBOOL NbcSetAutoGrowWidth(bool bAuto); - FASTBOOL NbcSetMinTextFrameWidth(long nWdt); FASTBOOL NbcSetMaxTextFrameWidth(long nWdt); FASTBOOL NbcSetFitToSize(SdrFitToSizeType eFit); + // #115391# new method for SdrObjCustomShape and SdrTextObj to correctly handle and set + // SdrTextMinFrameWidthItem and SdrTextMinFrameHeightItem based on all settings, necessities + // and object sizes + virtual void AdaptTextMinSize(); + // Konstruktoren fuer beschriftete Zeichenobjekte SdrTextObj(); SdrTextObj(const Rectangle& rNewRect); diff --git a/svx/source/sdr/properties/customshapeproperties.cxx b/svx/source/sdr/properties/customshapeproperties.cxx index 4eb6dc0..be8fe35 100644 --- a/svx/source/sdr/properties/customshapeproperties.cxx +++ b/svx/source/sdr/properties/customshapeproperties.cxx @@ -41,13 +41,19 @@ namespace sdr { void CustomShapeProperties::UpdateTextFrameStatus() { - SdrTextObj& rObj = (SdrTextObj&)GetSdrObject(); - SdrTextAutoGrowHeightItem& rAutoGrowHeightItem = - (SdrTextAutoGrowHeightItem&)rObj.GetMergedItem( SDRATTR_TEXT_AUTOGROWHEIGHT ); - rObj.bTextFrame = rAutoGrowHeightItem.GetValue() != 0; + SdrObjCustomShape& rObj = static_cast< SdrObjCustomShape& >(GetSdrObject()); + const bool bOld(rObj.bTextFrame); - if ( rObj.bTextFrame ) - rObj.NbcAdjustTextFrameWidthAndHeight(); + rObj.bTextFrame = 0 != static_cast< const SdrTextAutoGrowHeightItem& >(GetObjectItemSet().Get(SDRATTR_TEXT_AUTOGROWHEIGHT)).GetValue(); + + if(rObj.bTextFrame != bOld) + { + rObj.InvalidateRenderGeometry(); + + // #115391# Potential recursuin, since it calls SetObjectItemSet again, but rObj.bTextFrame + // will not change again, thus it will be only one level and terminate + rObj.AdaptTextMinSize(); + } } SfxItemSet& CustomShapeProperties::CreateObjectSpecificItemSet(SfxItemPool& rPool) @@ -74,6 +80,7 @@ namespace sdr // end 0, 0)); } + sal_Bool CustomShapeProperties::AllowItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem ) const { sal_Bool bAllowItemChange = sal_True; @@ -86,6 +93,7 @@ namespace sdr bAllowItemChange = TextProperties::AllowItemChange( nWhich, pNewItem ); return bAllowItemChange; } + void CustomShapeProperties::ClearObjectItem(const sal_uInt16 nWhich) { if ( !nWhich ) @@ -103,6 +111,7 @@ namespace sdr else TextProperties::ClearObjectItem( nWhich ); } + void CustomShapeProperties::ClearObjectItemDirect(const sal_uInt16 nWhich) { if ( !nWhich ) @@ -118,66 +127,63 @@ namespace sdr else TextProperties::ClearObjectItemDirect( nWhich ); } + void CustomShapeProperties::ItemSetChanged(const SfxItemSet& rSet) { - SdrObjCustomShape& rObj = (SdrObjCustomShape&)GetSdrObject(); + // call parent + TextProperties::ItemSetChanged(rSet); + + // update bTextFrame and RenderGeometry + UpdateTextFrameStatus(); + } - if( SFX_ITEM_SET == rSet.GetItemState( SDRATTR_TEXT_AUTOGROWHEIGHT ) ) + void CustomShapeProperties::PostItemChange(const sal_uInt16 nWhich) + { + switch(nWhich) { - rObj.bTextFrame = ((SdrTextAutoGrowHeightItem&)rSet.Get( SDRATTR_TEXT_AUTOGROWHEIGHT )).GetValue() != 0; + case SDRATTR_TEXT_AUTOGROWHEIGHT: + { + // #115391# update bTextFrame and RenderGeometry using AdaptTextMinSize() + UpdateTextFrameStatus(); + break; + } + default: + { + break; + } } // call parent - TextProperties::ItemSetChanged(rSet); - - // local changes, removing cached objects - rObj.InvalidateRenderGeometry(); + TextProperties::PostItemChange(nWhich); } + void CustomShapeProperties::ItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem) { - SdrObjCustomShape& rObj = (SdrObjCustomShape&)GetSdrObject(); - //OutlinerParaObject* pParaObj = rObj.GetOutlinerParaObject(); - - if( pNewItem && ( SDRATTR_TEXT_AUTOGROWHEIGHT == nWhich ) ) - { - rObj.bTextFrame = ((SdrTextAutoGrowHeightItem*)pNewItem)->GetValue() != 0; - } // call parent TextProperties::ItemChange( nWhich, pNewItem ); - rObj.InvalidateRenderGeometry(); + // update bTextFrame and RenderGeometry + UpdateTextFrameStatus(); } + void CustomShapeProperties::SetStyleSheet(SfxStyleSheet* pNewStyleSheet, sal_Bool bDontRemoveHardAttr) { + // call parent TextProperties::SetStyleSheet( pNewStyleSheet, bDontRemoveHardAttr ); + + // update bTextFrame and RenderGeometry UpdateTextFrameStatus(); } + void CustomShapeProperties::ForceDefaultAttributes() { + // update bTextFrame and RenderGeometry UpdateTextFrameStatus(); -/* SJ: Following is no good if creating customshapes, leading to objects that are white after loading via xml - - SdrTextObj& rObj = (SdrTextObj&)GetSdrObject(); - sal_Bool bTextFrame(rObj.IsTextFrame()); - - // force ItemSet - GetObjectItemSet(); - - if(bTextFrame) - { - mpItemSet->Put(XLineStyleItem(XLINE_NONE)); - mpItemSet->Put(XFillColorItem(String(), Color(COL_WHITE))); - mpItemSet->Put(XFillStyleItem(XFILL_NONE)); - } - else - { - mpItemSet->Put(SvxAdjustItem(SVX_ADJUST_CENTER)); - mpItemSet->Put(SdrTextHorzAdjustItem(SDRTEXTHORZADJUST_CENTER)); - mpItemSet->Put(SdrTextVertAdjustItem(SDRTEXTVERTADJUST_CENTER)); - } -*/ + // SJ: Following is no good if creating customshapes, leading to objects that are white after loading via xml + // This means: Do *not* call parent here is by purpose... } + CustomShapeProperties::CustomShapeProperties(SdrObject& rObj) : TextProperties(rObj) { @@ -196,14 +202,15 @@ namespace sdr { return *(new CustomShapeProperties(*this, rObj)); } + void CustomShapeProperties::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) { TextProperties::Notify( rBC, rHint ); sal_Bool bRemoveRenderGeometry = sal_False; - const SfxStyleSheetHint *pStyleHint = PTR_CAST( SfxStyleSheetHint, &rHint ); const SfxSimpleHint *pSimpleHint = PTR_CAST( SfxSimpleHint, &rHint ); + if ( pStyleHint && pStyleHint->GetStyleSheet() == GetStyleSheet() ) { switch( pStyleHint->GetHint() ) @@ -218,15 +225,12 @@ namespace sdr { bRemoveRenderGeometry = sal_True; } + if ( bRemoveRenderGeometry ) { + // update bTextFrame and RenderGeometry UpdateTextFrameStatus(); - - // local changes, removing cached objects - SdrObjCustomShape& rObj = (SdrObjCustomShape&)GetSdrObject(); - rObj.InvalidateRenderGeometry(); } - } } // end of namespace properties } // end of namespace sdr diff --git a/svx/source/svdraw/svdoashp.cxx b/svx/source/svdraw/svdoashp.cxx index 4a74a9b..7c6904e 100644 --- a/svx/source/svdraw/svdoashp.cxx +++ b/svx/source/svdraw/svdoashp.cxx @@ -1719,27 +1719,61 @@ const Rectangle& SdrObjCustomShape::GetLogicRect() const { return SdrTextObj::GetLogicRect(); } -void SdrObjCustomShape::NbcSetSnapRect( const Rectangle& rRect ) + +// #115391# This implementation is based on the TextFrame size of the CustomShape and the +// state of the ResizeShapeToFitText flag to correctly set TextMinFrameWidth/Height +void SdrObjCustomShape::AdaptTextMinSize() { - aRect=rRect; - ImpJustifyRect(aRect); - InvalidateRenderGeometry(); - Rectangle aTextBound( aRect ); - if ( GetTextBounds( aTextBound ) ) + if(!pModel || !pModel->IsPasteResize()) { - if ( pModel==NULL || !pModel->IsPasteResize() ) + const bool bResizeShapeToFitText(0 != static_cast< const SdrTextAutoGrowHeightItem& >(GetObjectItem(SDRATTR_TEXT_AUTOGROWHEIGHT)).GetValue()); + SfxItemSet aSet(GetObjectItemSet()); + bool bChanged(false); + + if(bResizeShapeToFitText) { - long nHDist=GetTextLeftDistance()+GetTextRightDistance(); - long nVDist=GetTextUpperDistance()+GetTextLowerDistance(); - long nTWdt=aTextBound.GetWidth ()-1-nHDist; if (nTWdt<0) nTWdt=0; - long nTHgt=aTextBound.GetHeight()-1-nVDist; if (nTHgt<0) nTHgt=0; - if ( IsAutoGrowWidth() ) - NbcSetMinTextFrameWidth( nTWdt ); - if ( IsAutoGrowHeight() ) - NbcSetMinTextFrameHeight( nTHgt ); + // always reset MinWidthHeight to zero to only rely on text size and frame size + // to allow resizing being completely dependent on text size only + aSet.Put(SdrTextMinFrameWidthItem(0)); + aSet.Put(SdrTextMinFrameHeightItem(0)); + bChanged = true; + } + else + { + // recreate from CustomShape-specific TextBounds + Rectangle aTextBound(aRect); + + if(GetTextBounds(aTextBound)) + { + const long nHDist(GetTextLeftDistance() + GetTextRightDistance()); + const long nVDist(GetTextUpperDistance() + GetTextLowerDistance()); + const long nTWdt(std::max(long(0), (long)(aTextBound.GetWidth() - 1 - nHDist))); + const long nTHgt(std::max(long(0), (long)(aTextBound.GetHeight() - 1 - nVDist))); + SfxItemSet aSet(GetObjectItemSet()); + + aSet.Put(SdrTextMinFrameWidthItem(nTWdt)); + aSet.Put(SdrTextMinFrameHeightItem(nTHgt)); + bChanged = true; + } + } + + if(bChanged) + { + SetObjectItemSet(aSet); NbcAdjustTextFrameWidthAndHeight(); } } +} + +void SdrObjCustomShape::NbcSetSnapRect( const Rectangle& rRect ) +{ + aRect=rRect; + ImpJustifyRect(aRect); + InvalidateRenderGeometry(); + + // #115391# + AdaptTextMinSize(); + ImpCheckShear(); SetRectsDirty(); SetChanged(); @@ -1758,20 +1792,10 @@ void SdrObjCustomShape::NbcSetLogicRect( const Rectangle& rRect ) aRect = rRect; ImpJustifyRect( aRect ); InvalidateRenderGeometry(); - Rectangle aTextBound( aRect ); - if ( GetTextBounds( aTextBound ) ) - { - long nHDist=GetTextLeftDistance()+GetTextRightDistance(); - long nVDist=GetTextUpperDistance()+GetTextLowerDistance(); - long nTWdt=aTextBound.GetWidth()-1-nHDist; if (nTWdt<0) nTWdt=0; - long nTHgt=aTextBound.GetHeight()-1-nVDist; if (nTHgt<0) nTHgt=0; - if ( IsAutoGrowWidth() ) - NbcSetMinTextFrameWidth( nTWdt ); - if ( IsAutoGrowHeight() ) - NbcSetMinTextFrameHeight( nTHgt ); - NbcAdjustTextFrameWidthAndHeight(); - } + // #115391# + AdaptTextMinSize(); + SetRectsDirty(); SetChanged(); } @@ -2487,25 +2511,9 @@ FASTBOOL SdrObjCustomShape::EndCreate( SdrDragStat& rStat, SdrCreateCmd eCmd ) { DragCreateObject( rStat ); - if ( bTextFrame ) - { - if ( IsAutoGrowHeight() ) - { - // MinTextHeight - long nHgt=aRect.GetHeight()-1; - if (nHgt==1) nHgt=0; - NbcSetMinTextFrameHeight( nHgt ); - } - if ( IsAutoGrowWidth() ) - { - // MinTextWidth - long nWdt=aRect.GetWidth()-1; - if (nWdt==1) nWdt=0; - NbcSetMinTextFrameWidth( nWdt ); - } - // Textrahmen neu berechnen - NbcAdjustTextFrameWidthAndHeight(); - } + // #115391# + AdaptTextMinSize(); + SetRectsDirty(); return ( eCmd == SDRCREATE_FORCEEND || rStat.GetPointAnz() >= 2 ); } diff --git a/svx/source/svdraw/svdotext.cxx b/svx/source/svdraw/svdotext.cxx index 315979b..716c7a7 100644 --- a/svx/source/svdraw/svdotext.cxx +++ b/svx/source/svdraw/svdotext.cxx @@ -644,23 +644,51 @@ FASTBOOL SdrTextObj::NbcSetAutoGrowHeight(bool bAuto) return sal_False; } -FASTBOOL SdrTextObj::NbcSetMinTextFrameHeight(long nHgt) +// #115391# This implementation is based on the object size (aRect) and the +// states of IsAutoGrowWidth/Height to correctly set TextMinFrameWidth/Height +void SdrTextObj::AdaptTextMinSize() { - if( bTextFrame && ( !pModel || !pModel->isLocked() ) ) // SJ: #i44922# + if(bTextFrame && (!pModel || !pModel->isLocked())) { - SetObjectItem(SdrTextMinFrameHeightItem(nHgt)); + const bool bW(IsAutoGrowWidth()); + const bool bH(IsAutoGrowHeight()); - // #84974# use bDisableAutoWidthOnDragging as - // bDisableAutoHeightOnDragging if vertical. - if(IsVerticalWriting() && bDisableAutoWidthOnDragging) + if(bW || bH) { - bDisableAutoWidthOnDragging = sal_False; - SetObjectItem(SdrTextAutoGrowHeightItem(sal_False)); - } + SfxItemSet aSet(GetObjectItemSet()); - return sal_True; + if(bW) + { + const long nDist(GetTextLeftDistance() + GetTextRightDistance()); + const long nW(std::max(long(0), (long)(aRect.GetWidth() - 1 - nDist))); + + aSet.Put(SdrTextMinFrameWidthItem(nW)); + + if(!IsVerticalWriting() && bDisableAutoWidthOnDragging) + { + bDisableAutoWidthOnDragging = true; + aSet.Put(SdrTextAutoGrowWidthItem(false)); + } + } + + if(bH) + { + const long nDist(GetTextUpperDistance() + GetTextLowerDistance()); + const long nH(std::max(long(0), (long)(aRect.GetHeight() - 1 - nDist))); + + aSet.Put(SdrTextMinFrameHeightItem(nH)); + + if(IsVerticalWriting() && bDisableAutoWidthOnDragging) + { + bDisableAutoWidthOnDragging = false; + SetObjectItem(SdrTextAutoGrowHeightItem(false)); + } + } + + SetObjectItemSet(aSet); + NbcAdjustTextFrameWidthAndHeight(); + } } - return sal_False; } FASTBOOL SdrTextObj::NbcSetMaxTextFrameHeight(long nHgt) @@ -683,25 +711,6 @@ FASTBOOL SdrTextObj::NbcSetAutoGrowWidth(bool bAuto) return sal_False; } -FASTBOOL SdrTextObj::NbcSetMinTextFrameWidth(long nWdt) -{ - if( bTextFrame && ( !pModel || !pModel->isLocked() ) ) // SJ: #i44922# - { - SetObjectItem(SdrTextMinFrameWidthItem(nWdt)); - - // #84974# use bDisableAutoWidthOnDragging only - // when not vertical. - if(!IsVerticalWriting() && bDisableAutoWidthOnDragging) - { - bDisableAutoWidthOnDragging = sal_False; - SetObjectItem(SdrTextAutoGrowWidthItem(sal_False)); - } - - return sal_True; - } - return sal_False; -} - FASTBOOL SdrTextObj::NbcSetMaxTextFrameWidth(long nWdt) { if(bTextFrame) diff --git a/svx/source/svdraw/svdotxdr.cxx b/svx/source/svdraw/svdotxdr.cxx index ccb6bd0..bc91211 100644 --- a/svx/source/svdraw/svdotxdr.cxx +++ b/svx/source/svdraw/svdotxdr.cxx @@ -229,22 +229,10 @@ FASTBOOL SdrTextObj::EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd) { rStat.TakeCreateRect(aRect); ImpJustifyRect(aRect); - if (bTextFrame) { - if (IsAutoGrowHeight()) { - // MinTextHeight - long nHgt=aRect.GetHeight()-1; - if (nHgt==1) nHgt=0; - NbcSetMinTextFrameHeight(nHgt); - } - if (IsAutoGrowWidth()) { - // MinTextWidth - long nWdt=aRect.GetWidth()-1; - if (nWdt==1) nWdt=0; - NbcSetMinTextFrameWidth(nWdt); - } - // Textrahmen neu berechnen - NbcAdjustTextFrameWidthAndHeight(); - } + + // #115391# + AdaptTextMinSize(); + SetRectsDirty(); if (HAS_BASE(SdrRectObj,this)) { ((SdrRectObj*)this)->SetXPolyDirty(); diff --git a/svx/source/svdraw/svdotxtr.cxx b/svx/source/svdraw/svdotxtr.cxx index e23bc2f..140b039 100644 --- a/svx/source/svdraw/svdotxtr.cxx +++ b/svx/source/svdraw/svdotxtr.cxx @@ -77,14 +77,20 @@ void SdrTextObj::NbcSetSnapRect(const Rectangle& rRect) long nTHgt1=rRect.GetHeight()-1-nVDist; if (nTHgt1<0) nTHgt1=0; aRect=rRect; ImpJustifyRect(aRect); - if (bTextFrame && (pModel==NULL || !pModel->IsPasteResize())) { // #51139# - if (nTWdt0!=nTWdt1 && IsAutoGrowWidth() ) NbcSetMinTextFrameWidth(nTWdt1); - if (nTHgt0!=nTHgt1 && IsAutoGrowHeight()) NbcSetMinTextFrameHeight(nTHgt1); - if (GetFitToSize()==SDRTEXTFIT_RESIZEATTR) { + + // #115391# + AdaptTextMinSize(); + + if (bTextFrame && (pModel==NULL || !pModel->IsPasteResize())) + { + if(SDRTEXTFIT_RESIZEATTR == GetFitToSize()) + { NbcResizeTextAttributes(Fraction(nTWdt1,nTWdt0),Fraction(nTHgt1,nTHgt0)); } + NbcAdjustTextFrameWidthAndHeight(); } + ImpCheckShear(); SetRectsDirty(); } @@ -105,14 +111,20 @@ void SdrTextObj::NbcSetLogicRect(const Rectangle& rRect) long nTHgt1=rRect.GetHeight()-1-nVDist; if (nTHgt1<0) nTHgt1=0; aRect=rRect; ImpJustifyRect(aRect); - if (bTextFrame) { - if (nTWdt0!=nTWdt1 && IsAutoGrowWidth() ) NbcSetMinTextFrameWidth(nTWdt1); - if (nTHgt0!=nTHgt1 && IsAutoGrowHeight()) NbcSetMinTextFrameHeight(nTHgt1); - if (GetFitToSize()==SDRTEXTFIT_RESIZEATTR) { + + // #115391# + AdaptTextMinSize(); + + if(bTextFrame) + { + if(SDRTEXTFIT_RESIZEATTR == GetFitToSize()) + { NbcResizeTextAttributes(Fraction(nTWdt1,nTWdt0),Fraction(nTHgt1,nTHgt0)); } + NbcAdjustTextFrameWidthAndHeight(); } + SetRectsDirty(); } @@ -219,16 +231,23 @@ void SdrTextObj::NbcResize(const Point& rRef, const Fraction& xFact, const Fract } ImpJustifyRect(aRect); + long nTWdt1=aRect.GetWidth ()-1-nHDist; if (nTWdt1<0) nTWdt1=0; long nTHgt1=aRect.GetHeight()-1-nVDist; if (nTHgt1<0) nTHgt1=0; - if (bTextFrame && (pModel==NULL || !pModel->IsPasteResize())) { // #51139# - if (nTWdt0!=nTWdt1 && IsAutoGrowWidth() ) NbcSetMinTextFrameWidth(nTWdt1); - if (nTHgt0!=nTHgt1 && IsAutoGrowHeight()) NbcSetMinTextFrameHeight(nTHgt1); - if (GetFitToSize()==SDRTEXTFIT_RESIZEATTR) { + + // #115391# + AdaptTextMinSize(); + + if(bTextFrame && (!pModel || !pModel->IsPasteResize())) + { + if(SDRTEXTFIT_RESIZEATTR == GetFitToSize()) + { NbcResizeTextAttributes(Fraction(nTWdt1,nTWdt0),Fraction(nTHgt1,nTHgt0)); } + NbcAdjustTextFrameWidthAndHeight(); } + ImpCheckShear(); SetRectsDirty(); } commit 112710dafb2bec3f02e5c578372cf18c561dd880 Author: Armin Le Grand <a...@apache.org> Date: Tue Sep 17 09:58:39 2013 +0000 i123261 corrected name clashes on writer graphic import with multi image support diff --git a/xmloff/inc/xmloff/xmlmultiimagehelper.hxx b/xmloff/inc/xmloff/xmlmultiimagehelper.hxx index ea5edc9..6058afd 100644 --- a/xmloff/inc/xmloff/xmlmultiimagehelper.hxx +++ b/xmloff/inc/xmloff/xmlmultiimagehelper.hxx @@ -40,7 +40,7 @@ protected: public: multiImageImportHelper(); - ~multiImageImportHelper(); + virtual ~multiImageImportHelper(); /// solve multiple imported images. The most valuable one is choosen, /// see imlementation for evtl. changing weights and/or adding filetypes. diff --git a/xmloff/source/text/XMLTextFrameContext.cxx b/xmloff/source/text/XMLTextFrameContext.cxx index c5e9f72..549dda7 100644 --- a/xmloff/source/text/XMLTextFrameContext.cxx +++ b/xmloff/source/text/XMLTextFrameContext.cxx @@ -425,6 +425,7 @@ class XMLTextFrameContext_Impl : public SvXMLImportContext sal_Bool bSyncHeight : 1; sal_Bool bCreateFailed : 1; sal_Bool bOwnBase64Stream : 1; + bool mbSetNameForFrame : 1; // #123261# remember if to set the NameForFrame void Create( sal_Bool bHRefOrBase64 ); @@ -436,14 +437,14 @@ public: const OUString& GetHRef() const { return sHRef; } XMLTextFrameContext_Impl( SvXMLImport& rImport, - sal_uInt16 nPrfx, - const ::rtl::OUString& rLName, - const ::com::sun::star::uno::Reference< - ::com::sun::star::xml::sax::XAttributeList > & rAttrList, - ::com::sun::star::text::TextContentAnchorType eAnchorType, - sal_uInt16 nType, - const ::com::sun::star::uno::Reference< - ::com::sun::star::xml::sax::XAttributeList > & rFrameAttrList ); + sal_uInt16 nPrfx, + const ::rtl::OUString& rLName, + const ::com::sun::star::uno::Reference< + ::com::sun::star::xml::sax::XAttributeList > & rAttrList, + ::com::sun::star::text::TextContentAnchorType eAnchorType, + sal_uInt16 nType, + const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > & rFrameAttrList, + bool bSetNameForFrame); // #123261# control if to set the NameForFrame virtual ~XMLTextFrameContext_Impl(); virtual void EndElement(); @@ -468,10 +469,40 @@ public: const ::com::sun::star::uno::Reference < ::com::sun::star::beans::XPropertySet >& GetPropSet() const { return xPropSet; } + + // #123261# helper to set the NameForFrame + void SetNameForFrameFromPropSet(); }; TYPEINIT1( XMLTextFrameContext_Impl, SvXMLImportContext ); +void XMLTextFrameContext_Impl::SetNameForFrameFromPropSet() +{ + // set name + UniReference < XMLTextImportHelper > xTextImportHelper = GetImport().GetTextImport(); + Reference < XNamed > xNamed( xPropSet, UNO_QUERY ); + + if( xNamed.is() && xTextImportHelper.is() ) + { + OUString sOrigName( xNamed->getName() ); + if( !sOrigName.getLength() || + (sName.getLength() && sOrigName != sName) ) + { + OUString sOldName( sName ); + sal_Int32 i = 0; + while( xTextImportHelper->HasFrameByName( sName ) ) + { + sName = sOldName; + sName += OUString::valueOf( ++i ); + } + xNamed->setName( sName ); + if( sName != sOldName ) + xTextImportHelper->GetRenameMap().Add( XML_TEXT_RENAME_TYPE_FRAME, + sOldName, sName ); + } + } +} + void XMLTextFrameContext_Impl::Create( sal_Bool /*bHRefOrBase64*/ ) { UniReference < XMLTextImportHelper > xTextImportHelper = @@ -581,26 +612,12 @@ void XMLTextFrameContext_Impl::Create( sal_Bool /*bHRefOrBase64*/ ) Reference< XPropertySetInfo > xPropSetInfo = xPropSet->getPropertySetInfo(); - // set name - Reference < XNamed > xNamed( xPropSet, UNO_QUERY ); - if( xNamed.is() ) + // #123261# set name, but only if wanted, e.g. for MultiImageSupport, it will be set after + // it is decided which image will be used. This is done e.g. to avoid double stuff and effects + // for the target to avoid double names + if(mbSetNameForFrame) { - OUString sOrigName( xNamed->getName() ); - if( !sOrigName.getLength() || - (sName.getLength() && sOrigName != sName) ) - { - OUString sOldName( sName ); - sal_Int32 i = 0; - while( xTextImportHelper->HasFrameByName( sName ) ) - { - sName = sOldName; - sName += OUString::valueOf( ++i ); - } - xNamed->setName( sName ); - if( sName != sOldName ) - xTextImportHelper->GetRenameMap().Add( XML_TEXT_RENAME_TYPE_FRAME, - sOldName, sName ); - } + SetNameForFrameFromPropSet(); } // frame style @@ -805,12 +822,13 @@ sal_Bool XMLTextFrameContext_Impl::CreateIfNotThere() } XMLTextFrameContext_Impl::XMLTextFrameContext_Impl( - SvXMLImport& rImport, - sal_uInt16 nPrfx, const OUString& rLName, - const Reference< XAttributeList > & rAttrList, - TextContentAnchorType eATyp, - sal_uInt16 nNewType, - const Reference< XAttributeList > & rFrameAttrList ) + SvXMLImport& rImport, + sal_uInt16 nPrfx, const OUString& rLName, + const Reference< XAttributeList > & rAttrList, + TextContentAnchorType eATyp, + sal_uInt16 nNewType, + const Reference< XAttributeList > & rFrameAttrList, + bool bSetNameForFrame) : SvXMLImportContext( rImport, nPrfx, rLName ) , mbListContextPushed( false ) , sWidth(RTL_CONSTASCII_USTRINGPARAM("Width")) @@ -841,6 +859,7 @@ XMLTextFrameContext_Impl::XMLTextFrameContext_Impl( , sGraphicServiceName(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.GraphicObject")) , nType( nNewType ) , eAnchorType( eATyp ) +, mbSetNameForFrame(bSetNameForFrame) { nX = 0; nY = 0; @@ -1441,10 +1460,22 @@ void XMLTextFrameContext::EndElement() { /// solve if multiple image child contexts were imported /// the winner is returned, if something has yet to be done with it - /*const SvXMLImportContext* pWinner =*/ solveMultipleImages(); + const SvXMLImportContext* pWinner = solveMultipleImages(); + + // #123261# see if the winner is a XMLTextFrameContext_Impl + const XMLTextFrameContext_Impl* pImplWinner = dynamic_cast< const XMLTextFrameContext_Impl* >(pWinner); + + if(pImplWinner) + { + // #123261# if yes, set name now, after the winner is identified (setting at each + // candidate may run into problems due to colliding with efforts in the target to + // avoid double names, so only set one name at one image and not at each) + const_cast< XMLTextFrameContext_Impl* >(pImplWinner)->SetNameForFrameFromPropSet(); + } SvXMLImportContext *pContext = &m_xImplContext; - XMLTextFrameContext_Impl *pImpl = PTR_CAST( XMLTextFrameContext_Impl, pContext ); + XMLTextFrameContext_Impl *pImpl = dynamic_cast< XMLTextFrameContext_Impl* >(pContext); + if( pImpl ) { pImpl->CreateIfNotThere(); @@ -1554,12 +1585,15 @@ SvXMLImportContext *XMLTextFrameContext::CreateChildContext( if( !pContext ) { - - pContext = new XMLTextFrameContext_Impl( GetImport(), p_nPrefix, - rLocalName, xAttrList, - m_eDefaultAnchorType, - nFrameType, - m_xAttrList ); + pContext = new XMLTextFrameContext_Impl( + GetImport(), + p_nPrefix, + rLocalName, + xAttrList, + m_eDefaultAnchorType, + nFrameType, + m_xAttrList, + !getSupportsMultipleContents()); } m_xImplContext = pContext; @@ -1575,8 +1609,14 @@ SvXMLImportContext *XMLTextFrameContext::CreateChildContext( { // read another image pContext = new XMLTextFrameContext_Impl( - GetImport(), p_nPrefix, rLocalName, xAttrList, - m_eDefaultAnchorType, XML_TEXT_FRAME_GRAPHIC, m_xAttrList); + GetImport(), + p_nPrefix, + rLocalName, + xAttrList, + m_eDefaultAnchorType, + XML_TEXT_FRAME_GRAPHIC, + m_xAttrList, + false); m_xImplContext = pContext; addContent(*m_xImplContext); commit 00d4805c000539e457aadfa2f81607826c21a284 Author: Pavel JanÃk <pavelja...@apache.org> Date: Thu Sep 12 11:52:51 2013 +0000 WaE: Remove "comparison between signed and unsigned integer expressions" warning. diff --git a/vcl/source/gdi/pngread.cxx b/vcl/source/gdi/pngread.cxx index 43d3545..9753177 100644 --- a/vcl/source/gdi/pngread.cxx +++ b/vcl/source/gdi/pngread.cxx @@ -1421,7 +1421,7 @@ void PNGReaderImpl::ImplDrawScanline( sal_uInt32 nXStart, sal_uInt32 nXAdd ) sal_uInt8* pScanline(mpScanline); sal_uInt8* pScanlineAlpha(mpScanlineAlpha); - for(sal_uInt32 nX(0); nX < maOrigSize.Width(); nX++, pTmp += 4) + for(sal_Int32 nX(0); nX < maOrigSize.Width(); nX++, pTmp += 4) { // prepare content line as BGR by reordering when copying // do not forget to invert alpha (source is alpha, target is opacity) @@ -1556,7 +1556,7 @@ void PNGReaderImpl::ImplDrawScanline( sal_uInt32 nXStart, sal_uInt32 nXAdd ) #endif sal_uInt8* pScanline(mpScanline); - for(sal_uInt32 nX(0); nX < maOrigSize.Width(); nX++, pTmp += 3) + for(sal_Int32 nX(0); nX < maOrigSize.Width(); nX++, pTmp += 3) { // prepare content line as BGR by reordering when copying if(bCustomColorTable) commit d7f99e13a1c5425e82e11eb1b49da1ac6b6cc45c Author: Herbert Dürr <h...@apache.org> Date: Thu Sep 12 09:12:21 2013 +0000 #i123242# adjust URL for Windows file signing to AOO diff --git a/solenv/bin/modules/installer/windows/sign.pm b/solenv/bin/modules/installer/windows/sign.pm index e12c746..b1ec229 100644 --- a/solenv/bin/modules/installer/windows/sign.pm +++ b/solenv/bin/modules/installer/windows/sign.pm @@ -654,9 +654,7 @@ sub sign_files my $productname = ""; if ( $followmeinfohash->{'allvariableshash'}->{'PRODUCTNAME'} ) { $productname = "/d " . "\"$followmeinfohash->{'allvariableshash'}->{'PRODUCTNAME'}\""; } - my $url = ""; - if (( ! exists($followmeinfohash->{'allvariableshash'}->{'OPENSOURCE'}) ) || ( $followmeinfohash->{'allvariableshash'}->{'OPENSOURCE'} == 0 )) { $url = "/du " . "\"http://www.sun.com\""; } - else { $url = "/du " . "\"http://www.openoffice.org\""; } + my $url = "/du " . "\"http://www.openoffice.org\""; my $timestampurl = "http://timestamp.verisign.com/scripts/timestamp.dll"; my $pfxfilepath = $installer::globals::pfxfile; commit e4afc9a0ce0865a23faa3b01e408692eed15e30a Author: Herbert Dürr <h...@apache.org> Date: Thu Sep 12 09:10:54 2013 +0000 #i123242# adjust URL in the generated NSIS template to AOO diff --git a/solenv/bin/modules/installer/download.pm b/solenv/bin/modules/installer/download.pm index 1d7d64d..f92843f 100644 --- a/solenv/bin/modules/installer/download.pm +++ b/solenv/bin/modules/installer/download.pm @@ -1107,7 +1107,7 @@ sub put_website_into_template { my ($templatefile) = @_; - my $website = "http\:\/\/www\.sun\.com\/staroffice"; + my $website = "http\:\/\/www\.openoffice\.org"; replace_one_variable($templatefile, "WEBSITEPLACEHOLDER", $website); }
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits