diff --git a/android/source/src/main/play/listings/en-US/graphics/icon.png b/android/source/src/main/play/listings/en-US/graphics/icon.png deleted file mode 120000 index f3e316efb456..000000000000 --- a/android/source/src/main/play/listings/en-US/graphics/icon.png +++ /dev/null @@ -1 +0,0 @@ -../../../../../../ic_launcher-web.png \ No newline at end of file diff --git a/android/source/src/main/play/listings/en-US/graphics/icon/icon.png b/android/source/src/main/play/listings/en-US/graphics/icon/icon.png new file mode 120000 index 000000000000..f78b23fa9ae5 --- /dev/null +++ b/android/source/src/main/play/listings/en-US/graphics/icon/icon.png @@ -0,0 +1 @@ +../../../../../../../ic_launcher-web.png \ No newline at end of file diff --git a/avmedia/source/gtk/gtkplayer.cxx b/avmedia/source/gtk/gtkplayer.cxx index 4dca3e202a24..617991fecce2 100644 --- a/avmedia/source/gtk/gtkplayer.cxx +++ b/avmedia/source/gtk/gtkplayer.cxx @@ -343,11 +343,7 @@ uno::Reference<::media::XPlayerWindow> return nullptr; m_pVideo = gtk_picture_new_for_paintable(GDK_PAINTABLE(m_pStream)); -#if GTK_CHECK_VERSION(4, 7, 2) gtk_picture_set_content_fit(GTK_PICTURE(m_pVideo), GTK_CONTENT_FIT_FILL); -#else - gtk_picture_set_keep_aspect_ratio(GTK_PICTURE(m_pVideo), false); -#endif gtk_widget_set_can_target(m_pVideo, false); gtk_widget_set_vexpand(m_pVideo, true); gtk_widget_set_hexpand(m_pVideo, true); diff --git a/basctl/uiconfig/basicide/ui/deletelangdialog.ui b/basctl/uiconfig/basicide/ui/deletelangdialog.ui index c403c0270e55..4bc232a8f60a 100644 --- a/basctl/uiconfig/basicide/ui/deletelangdialog.ui +++ b/basctl/uiconfig/basicide/ui/deletelangdialog.ui @@ -32,4 +32,4 @@ - \ No newline at end of file + diff --git a/basctl/uiconfig/basicide/ui/dialogpage.ui b/basctl/uiconfig/basicide/ui/dialogpage.ui index d4e66ea56396..5957ae76b587 100644 --- a/basctl/uiconfig/basicide/ui/dialogpage.ui +++ b/basctl/uiconfig/basicide/ui/dialogpage.ui @@ -271,4 +271,4 @@ - \ No newline at end of file + diff --git a/basctl/uiconfig/basicide/ui/sortmenu.ui b/basctl/uiconfig/basicide/ui/sortmenu.ui index dc0d23ca7413..bd40fcb8f123 100644 --- a/basctl/uiconfig/basicide/ui/sortmenu.ui +++ b/basctl/uiconfig/basicide/ui/sortmenu.ui @@ -39,4 +39,4 @@ - \ No newline at end of file + diff --git a/basic/source/classes/sbunoobj.cxx b/basic/source/classes/sbunoobj.cxx index 419b2bb31a84..463d11b95fbf 100644 --- a/basic/source/classes/sbunoobj.cxx +++ b/basic/source/classes/sbunoobj.cxx @@ -1697,8 +1697,9 @@ bool checkUnoObjectType(SbUnoObject& rUnoObj, const OUString& rClass) OUString aInterfaceName = xClass->getName(); if ( aInterfaceName == "com.sun.star.bridge.oleautomation.XAutomationObject" ) { - // there is a hack in the extensions/source/ole/oleobj.cxx to return the typename of the automation object, lets check if it - // matches + // there is a hack in the extensions/source/ole/oleobj.cxx + // to return the typename of the automation object, let's + // check if it matches Reference< XInvocation > xInv( aToInspectObj, UNO_QUERY ); if ( xInv.is() ) { diff --git a/basic/source/classes/sbxmod.cxx b/basic/source/classes/sbxmod.cxx index f3551bc1b425..95d751bb0202 100644 --- a/basic/source/classes/sbxmod.cxx +++ b/basic/source/classes/sbxmod.cxx @@ -1744,7 +1744,7 @@ bool SbModule::HasExeCode() { // And empty Image always has the Global Chain set up static const unsigned char pEmptyImage[] = { 0x45, 0x0 , 0x0, 0x0, 0x0 }; - // lets be stricter for the moment than VBA + // let's be stricter for the moment than VBA if (!IsCompiled()) { diff --git a/basic/source/runtime/runtime.cxx b/basic/source/runtime/runtime.cxx index 90b40cb8adc8..b692c66de698 100644 --- a/basic/source/runtime/runtime.cxx +++ b/basic/source/runtime/runtime.cxx @@ -1641,7 +1641,7 @@ static bool checkUnoStructCopy( bool bVBA, SbxVariableRef const & refVal, SbxVar // There are some circumstances when calling GetObject // will trigger an error, we need to squash those here. // Alternatively it is possible that the same scenario - // could overwrite and existing error. Lets prevent that + // could overwrite and existing error. Let's prevent that SbxObjectRef xVarObj = static_cast(refVar->GetObject()); if ( eOldErr != ERRCODE_NONE ) SbxBase::SetError( eOldErr ); @@ -3698,7 +3698,7 @@ SbxVariable* SbiRuntime::FindElement( SbxObject* pObj, sal_uInt32 nOp1, sal_uInt } // consider index-access for UnoObjects // definitely we want this for VBA where properties are often - // collections ( which need index access ), but lets only do + // collections ( which need index access ), but let's only do // this if we actually have params following else if( bVBAEnabled && dynamic_cast( pElem) != nullptr && pElem->GetParameters() ) { diff --git a/bin/convwatch.py b/bin/convwatch.py index 93082186f319..25920b7343c8 100644 --- a/bin/convwatch.py +++ b/bin/convwatch.py @@ -355,7 +355,7 @@ def runLoadPrintFileTests(opts, dirs, suffix, reference): def mkImages(file, resolution): argv = [ "gs", "-r" + resolution, "-sOutputFile=" + file + ".%04d.jpeg", "-dNOPROMPT", "-dNOPAUSE", "-dBATCH", "-sDEVICE=jpeg", file ] - ret = subprocess.check_call(argv) + subprocess.check_call(argv) def mkAllImages(dirs, suffix, resolution, reference, failed): if reference: diff --git a/bin/find-german-comments b/bin/find-german-comments index 251f4f77f270..de1ed9481fca 100755 --- a/bin/find-german-comments +++ b/bin/find-german-comments @@ -61,7 +61,6 @@ class Parser: """ Extracts the source code comments. """ - linenum = 0 if self.args.verbose: print("processing file '%s'...\n" % filename) sock = open(filename) @@ -95,7 +94,6 @@ class Parser: elif "/*" in i and "*/" not in i and not in_comment: # start of a real multiline comment in_comment = True - linenum = count s = re.sub(r".*/\*+", "", i.strip(self.strip)) if len(s): buf.append(s.strip(self.strip)) @@ -156,7 +154,7 @@ class Parser: if len(path) >= START: return 1 diff = START - len(path) - if diff % 4 is not 0: + if (diff % 4) != 0: padding = 1 else: padding = 0 @@ -216,7 +214,7 @@ class Parser: done = False while not done: nextElem = os.path.split(lastElem)[0] - if nextElem is not '': + if nextElem != '': lastElem = nextElem else: done = True @@ -378,10 +376,10 @@ class Parser: if not baseDir in directory_allowlist: sys.stderr.write("\n - Error: Missing path %s -\n\n" % baseDir) sys.exit(1) - elif directory_allowlist[baseDir] is 0: + elif directory_allowlist[baseDir] == 0: self.check_file(path.strip()) num_checked = num_checked + 1 - elif directory_allowlist[baseDir] is 1: + elif directory_allowlist[baseDir] == 1: sys.stderr.write("Skipping excluded directory %s\n" % baseDir) directory_allowlist[baseDir] = 2 elif not globalscan: diff --git a/bin/gbuild-to-ide b/bin/gbuild-to-ide index ef1e27dd6748..b3f8b9fbd371 100755 --- a/bin/gbuild-to-ide +++ b/bin/gbuild-to-ide @@ -866,6 +866,12 @@ class VisualStudioIntegrationGenerator(IdeIntegrationGenerator): def __init__(self, gbuildparser, ide): IdeIntegrationGenerator.__init__(self, gbuildparser, ide) self.toolset = os.environ['VCTOOLSET'] + if os.environ['CPUNAME'] == 'X86_64': + self.platform = 'x64' + elif os.environ['CPUNAME'] == 'AARCH64': + self.platform = 'ARM' + else: # 'INTEL' + self.platform = 'Win32' self.solution_directory = self.gbuildparser.builddir self.configurations = { 'Build': { @@ -995,7 +1001,7 @@ class VisualStudioIntegrationGenerator(IdeIntegrationGenerator): f.write('EndProject\n') # end Folders to group tests/libraries/executables f.write('Global\n') - platform = 'Win32' + platform = self.platform f.write('\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n') for cfg in self.configurations: f.write('\t\t%(cfg)s|%(platform)s = %(cfg)s|%(platform)s\n' % {'cfg': cfg, 'platform': platform}) @@ -1071,7 +1077,7 @@ class VisualStudioIntegrationGenerator(IdeIntegrationGenerator): ET.register_namespace('', self.ns) proj_node = ET.Element('{%s}Project' % self.ns, DefaultTargets='Build', ToolsVersion='4.0') proj_confs_node = ET.SubElement(proj_node, '{%s}ItemGroup' % self.ns, Label='ProjectConfigurations') - platform = 'Win32' + platform = self.platform for configuration in self.configurations: proj_conf_node = ET.SubElement(proj_confs_node, '{%s}ProjectConfiguration' % self.ns, diff --git a/bin/refcount_leak.py b/bin/refcount_leak.py index de98d065a2ac..d0b8cd502f7c 100755 --- a/bin/refcount_leak.py +++ b/bin/refcount_leak.py @@ -95,7 +95,7 @@ def getFunction(frame): start = frame.index(" in ") + len(" in ") try: end = frame.index(" at ", start) - except ValueError as e: + except ValueError: # argh... stack frames may be split across multiple lines if # a parameter has a fancy pretty printer return frame[start:] diff --git a/bin/update_pch_bisect b/bin/update_pch_bisect index 271cbc88ff1b..71072303efdc 100755 --- a/bin/update_pch_bisect +++ b/bin/update_pch_bisect @@ -54,8 +54,7 @@ def run(command): def update_pch(filename, lines, marks): with open(filename, 'w') as f: - for i in xrange(len(marks)): - mark = marks[i] + for i, mark in enumerate(marks): if mark <= TEST_ON: f.write(lines[i]) else: @@ -132,8 +131,7 @@ def get_marks(lines): marks = [] min = -1 max = -1 - for i in xrange(len(lines)): - line = lines[i] + for i, line in enumerate(lines): if line.startswith('#include'): marks.append(TEST_ON) min = i if min < 0 else min @@ -205,8 +203,8 @@ def main(): # Simplify further, as sometimes we can have # false positives due to the benign nature # of includes that are not absolutely required. - for i in xrange(len(marks)): - if marks[i] == GOOD: + for i, mark in enumerate(marks): + if mark == GOOD: marks[i] = TEST_OFF update_pch(filename, lines, marks) if not run(command): @@ -214,14 +212,14 @@ def main(): marks[i] = GOOD else: marks[i] = BAD - elif marks[i] == TEST_OFF: + elif mark == TEST_OFF: marks[i] = TEST_ON update_pch(filename, lines, marks) log('') - for i in xrange(len(marks)): - if marks[i] == (BAD if FIND_CONFLICTS else GOOD): + for i, mark in enumerate(marks): + if mark == (BAD if FIND_CONFLICTS else GOOD): print("'{}',".format(get_filename(lines[i].strip('\n')))) return 0 @@ -258,8 +256,7 @@ class TestBisectConflict(unittest.TestCase): def _update_func(self, lines, marks): self.lines = [] - for i in xrange(len(marks)): - mark = marks[i] + for i, mark in enumerate(marks): if mark <= TEST_ON: self.lines.append(lines[i]) else: @@ -282,7 +279,7 @@ class TestBisectConflict(unittest.TestCase): def test_conflict(self): lines = self.TEST.split('\n') - for pos in xrange(len(lines) + 1): + for pos in range(len(lines) + 1): lines = self.TEST.split('\n') lines.insert(pos, self.BAD_LINE) (marks, min, max) = get_marks(lines) @@ -290,11 +287,11 @@ class TestBisectConflict(unittest.TestCase): marks = bisect(lines, marks, min, max, lambda l, m: self._update_func(l, m), lambda: self._test_func()) - for i in xrange(len(marks)): + for i, mark in enumerate(marks): if i == pos: - self.assertEqual(BAD, marks[i]) + self.assertEqual(BAD, mark) else: - self.assertNotEqual(BAD, marks[i]) + self.assertNotEqual(BAD, mark) class TestBisectRequired(unittest.TestCase): TEST = """#include @@ -310,8 +307,7 @@ class TestBisectRequired(unittest.TestCase): def _update_func(self, lines, marks): self.lines = [] - for i in xrange(len(marks)): - mark = marks[i] + for i, mark in enumerate(marks): if mark <= TEST_ON: self.lines.append(lines[i]) else: @@ -335,7 +331,7 @@ class TestBisectRequired(unittest.TestCase): def test_required(self): lines = self.TEST.split('\n') - for pos in xrange(len(lines) + 1): + for pos in range(len(lines) + 1): lines = self.TEST.split('\n') lines.insert(pos, self.REQ_LINE) (marks, min, max) = get_marks(lines) @@ -343,11 +339,11 @@ class TestBisectRequired(unittest.TestCase): marks = bisect(lines, marks, min, max, lambda l, m: self._update_func(l, m), lambda: self._test_func()) - for i in xrange(len(marks)): + for i, mark in enumerate(marks): if i == pos: - self.assertEqual(GOOD, marks[i]) + self.assertEqual(GOOD, mark) else: - self.assertNotEqual(GOOD, marks[i]) + self.assertNotEqual(GOOD, mark) unittest.main() diff --git a/chart2/uiconfig/ui/3dviewdialog.ui b/chart2/uiconfig/ui/3dviewdialog.ui index 2f09169344a6..4f414bb7f996 100644 --- a/chart2/uiconfig/ui/3dviewdialog.ui +++ b/chart2/uiconfig/ui/3dviewdialog.ui @@ -95,4 +95,4 @@ help - \ No newline at end of file + diff --git a/chart2/uiconfig/ui/chardialog.ui b/chart2/uiconfig/ui/chardialog.ui index 44492c12e44f..171c171e2dc3 100644 --- a/chart2/uiconfig/ui/chardialog.ui +++ b/chart2/uiconfig/ui/chardialog.ui @@ -175,4 +175,4 @@ help - \ No newline at end of file + diff --git a/cli_ure/source/uno_bridge/cli_proxy.cxx b/cli_ure/source/uno_bridge/cli_proxy.cxx index 35d9a02cbd44..e37a33a1069b 100644 --- a/cli_ure/source/uno_bridge/cli_proxy.cxx +++ b/cli_ure/source/uno_bridge/cli_proxy.cxx @@ -711,7 +711,7 @@ void CliProxy::makeMethodInfos() { sr::InterfaceMapping mapInherited = objType->GetInterfaceMap( arInheritedIfaces[nArLength - 1]); - int numMethods = mapInherited.TargetMethods->Length; + numMethods = mapInherited.TargetMethods->Length; m_arInterfaceMethodCount[nArLength - 1] = numMethods; for (int i = 0; i < numMethods; i++, index++) { @@ -1029,11 +1029,11 @@ void SAL_CALL cli_proxy_dispatch( OSL_ENSURE(usOid.equals( proxy->m_usOid ), "### different oids!"); #endif - uno_Interface* pUnoI = bridge->map_cli2uno( + uno_Interface* pUnoI2 = bridge->map_cli2uno( proxy->m_cliI, demanded_td.get() ); uno_any_construct( - (uno_Any *)uno_ret, &pUnoI, demanded_td.get(), 0 ); - (*pUnoI->release)( pUnoI ); + (uno_Any *)uno_ret, &pUnoI2, demanded_td.get(), 0 ); + (*pUnoI2->release)( pUnoI2 ); } else // object does not support demanded interface { diff --git a/cli_ure/source/uno_bridge/cli_uno.cxx b/cli_ure/source/uno_bridge/cli_uno.cxx index 6af17e065505..bb396eb6df0f 100644 --- a/cli_ure/source/uno_bridge/cli_uno.cxx +++ b/cli_ure/source/uno_bridge/cli_uno.cxx @@ -106,10 +106,10 @@ System::Object^ Bridge::call_uno(uno_Interface * pUnoI, // cleanup uno in args for (sal_Int32 n = 0; n < nPos; ++n) { - typelib_MethodParameter const & param = pParams[n]; - if (param.bIn) + typelib_MethodParameter const & param2 = pParams[n]; + if (param2.bIn) { - uno_type_destructData(uno_args[n], param.pTypeRef, 0); + uno_type_destructData(uno_args[n], param2.pTypeRef, 0); } } throw; @@ -253,9 +253,9 @@ void Bridge::call_cli( // cleanup uno pure out for ( sal_Int32 n = 0; n < nPos; ++n ) { - typelib_MethodParameter const & param = params[ n ]; - if (! param.bIn) - uno_type_destructData( uno_args[ n ], param.pTypeRef, 0 ); + typelib_MethodParameter const & param2 = params[ n ]; + if (! param2.bIn) + uno_type_destructData( uno_args[ n ], param2.pTypeRef, 0 ); } throw; } diff --git a/codemaker/source/netmaker/netproduce.hxx b/codemaker/source/netmaker/netproduce.hxx index c7c47c4b390c..4b90fff427f3 100644 --- a/codemaker/source/netmaker/netproduce.hxx +++ b/codemaker/source/netmaker/netproduce.hxx @@ -23,6 +23,8 @@ class NetProducer public: NetProducer() : m_manager(new TypeManager()) + , m_verbose(false) + , m_dryRun(false) { } diff --git a/compilerplugins/clang/cstylecast.cxx b/compilerplugins/clang/cstylecast.cxx index a516144a6141..f548b1fd8123 100644 --- a/compilerplugins/clang/cstylecast.cxx +++ b/compilerplugins/clang/cstylecast.cxx @@ -139,7 +139,7 @@ bool isLiteralLike(Expr const * expr) { } bool canBeUsedForFunctionalCast(TypeSourceInfo const * info) { - // Must be or , lets approximate that here: + // Must be or , let's approximate that here: assert(info != nullptr); auto const type = info->getType(); if (type.hasLocalQualifiers()) { diff --git a/compilerplugins/clang/dbgunhandledexception.cxx b/compilerplugins/clang/dbgunhandledexception.cxx index e6c1f157cc9d..699297b5a248 100644 --- a/compilerplugins/clang/dbgunhandledexception.cxx +++ b/compilerplugins/clang/dbgunhandledexception.cxx @@ -16,6 +16,7 @@ #include #include #include +#include namespace loplugin { diff --git a/compilerplugins/clang/elidestringvar.cxx b/compilerplugins/clang/elidestringvar.cxx index c14eaf027b0f..097120463ea0 100644 --- a/compilerplugins/clang/elidestringvar.cxx +++ b/compilerplugins/clang/elidestringvar.cxx @@ -12,6 +12,7 @@ #include #include #include +#include #include "check.hxx" #include "compat.hxx" diff --git a/compilerplugins/clang/refcounting.cxx b/compilerplugins/clang/refcounting.cxx index 801173ce6488..2bee2f80cf65 100644 --- a/compilerplugins/clang/refcounting.cxx +++ b/compilerplugins/clang/refcounting.cxx @@ -336,6 +336,8 @@ bool containsSalhelperReferenceObjectSubclass(const clang::Type* pType0) { auto const dc = loplugin::DeclCheck(pTemplate); if (dc.Class("Reference").Namespace("rtl").GlobalNamespace() || (dc.Class("OStoreHandle").AnonymousNamespace().Namespace("store") + .GlobalNamespace()) + || (dc.Class("DeleteRtlReferenceOnDeinit").Namespace("vcl") .GlobalNamespace())) { return false; diff --git a/compilerplugins/clang/store/checkunusedparams.cxx b/compilerplugins/clang/store/checkunusedparams.cxx index 2f45049632d3..33916b4810bb 100644 --- a/compilerplugins/clang/store/checkunusedparams.cxx +++ b/compilerplugins/clang/store/checkunusedparams.cxx @@ -147,7 +147,7 @@ void CheckUnusedParams::checkForFunctionDecl(Expr const * expr, bool bCheckOnly) static int noFieldsInRecord(RecordType const * recordType) { auto recordDecl = recordType->getDecl(); - // if it's complicated, lets just assume it has fields + // if it's complicated, let's just assume it has fields if (isa(recordDecl)) return 1; return std::distance(recordDecl->field_begin(), recordDecl->field_end()); diff --git a/compilerplugins/clang/unsignedcompare.cxx b/compilerplugins/clang/unsignedcompare.cxx index 5b55edea2843..9b1ed684a90f 100644 --- a/compilerplugins/clang/unsignedcompare.cxx +++ b/compilerplugins/clang/unsignedcompare.cxx @@ -122,7 +122,7 @@ public: // actually meant to e.g. clamp from a large signed type to a small unsigned type. The // assumption is that this will only be likely the case for BO_EQ (==) and BO_NE (!=) // comparisons, so filter these out here (not sure what case BO_Cmp (<=>) will turn out to - // be, so lets keep it here at least for now): + // be, so let's keep it here at least for now): switch (expr->getOpcode()) { case BO_Cmp: diff --git a/configure.ac b/configure.ac index 50f26eba6611..38dd927c6c47 100644 --- a/configure.ac +++ b/configure.ac @@ -12125,7 +12125,7 @@ if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.' fi : ${with_system_cairo:=yes} - PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk) + PKG_CHECK_MODULES(GTK4, gtk4 >= 4.10 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk) GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g") GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED" FilterLibs "${GTK4_LIBS}" @@ -13312,7 +13312,7 @@ AC_SUBST(SYSTEM_RHINO) AC_SUBST(RHINO_JAR) # This is only used in Qt5/Qt6/KF5/KF6 checks to determine if /usr/lib64 -# paths should be added to library search path. So lets put all 64-bit +# paths should be added to library search path. So let's put all 64-bit # platforms there. supports_multilib= case "$host_cpu" in diff --git a/connectivity/source/parse/sqlnode.cxx b/connectivity/source/parse/sqlnode.cxx index ca4521b05e7d..89d3d30779e6 100644 --- a/connectivity/source/parse/sqlnode.cxx +++ b/connectivity/source/parse/sqlnode.cxx @@ -387,7 +387,7 @@ void OSQLParseNode::impl_parseNodeToString_throw(OUStringBuffer& rString, const return; } - // Lets see how many nodes this subtree has + // Let's see how many nodes this subtree has sal_uInt32 nCount = count(); bool bHandled = false; diff --git a/cppu/source/threadpool/threadpool.cxx b/cppu/source/threadpool/threadpool.cxx index 5a6127dabcf7..7084978a93d0 100644 --- a/cppu/source/threadpool/threadpool.cxx +++ b/cppu/source/threadpool/threadpool.cxx @@ -106,7 +106,7 @@ namespace cppu_threadpool } /****************** - * This methods lets the thread wait a certain amount of time. If within this timespan + * This method lets the thread wait a certain amount of time. If within this timespan * a new request comes in, this thread is reused. This is done only to improve performance, * it is not required for threadpool functionality. ******************/ diff --git a/cui/source/dialogs/AdditionsDialog.cxx b/cui/source/dialogs/AdditionsDialog.cxx index 61bee50455b3..3f57676a13ec 100644 --- a/cui/source/dialogs/AdditionsDialog.cxx +++ b/cui/source/dialogs/AdditionsDialog.cxx @@ -71,11 +71,12 @@ using namespace ::com::sun::star::beans; namespace { // Gets the content of the given URL and returns as a standard string -std::string ucbGet(const OUString& rURL) +std::string ucbGet(const OUString& rURL, const css::uno::Reference& xParentWin) { try { - auto const s = utl::UcbStreamHelper::CreateStream(rURL, StreamMode::STD_READ); + auto const s + = utl::UcbStreamHelper::CreateStream(rURL, StreamMode::STD_READ, xParentWin, false); if (!s) { SAL_WARN("cui.dialogs", "CreateStream <" << rURL << "> failed"); @@ -404,7 +405,10 @@ void SearchAndParseThread::execute() if (m_bIsFirstLoading) { - std::string sResponse = !m_bUITest ? ucbGet(m_pAdditionsDialog->m_sURL) : ""; + const auto pDialog = m_pAdditionsDialog->getDialog(); + std::string sResponse = !m_bUITest ? ucbGet(m_pAdditionsDialog->m_sURL, + pDialog ? pDialog->GetXWindow() : nullptr) + : ""; parseResponse(sResponse, m_pAdditionsDialog->m_aAllExtensionsVector); std::sort(m_pAdditionsDialog->m_aAllExtensionsVector.begin(), m_pAdditionsDialog->m_aAllExtensionsVector.end(), diff --git a/cui/source/tabpages/autocdlg.cxx b/cui/source/tabpages/autocdlg.cxx index 87e803f677b4..393f9f79d872 100644 --- a/cui/source/tabpages/autocdlg.cxx +++ b/cui/source/tabpages/autocdlg.cxx @@ -1145,7 +1145,9 @@ IMPL_LINK(OfaAutocorrReplacePage, ModifyHdl, weld::Entry&, rEdt, void) else { aTestStr = pCharClass->lowercase( aTestStr ); - if( aTestStr.startsWith(aWordStr) && !bTmpSelEntry ) + if( !bTmpSelEntry && ( aTestStr.startsWith(aWordStr) + // find also with ".*" and between :colons: + || aTestStr.replaceAll(".*","").replaceAll(":", "").startsWith(aWordStr) ) ) { m_xReplaceTLB->scroll_to_row(rIter); bTmpSelEntry = true; diff --git a/cui/uiconfig/ui/asiantypography.ui b/cui/uiconfig/ui/asiantypography.ui index 3e926f1d647e..317301518115 100644 --- a/cui/uiconfig/ui/asiantypography.ui +++ b/cui/uiconfig/ui/asiantypography.ui @@ -77,4 +77,4 @@ - \ No newline at end of file + diff --git a/cui/uiconfig/ui/borderareatransparencydialog.ui b/cui/uiconfig/ui/borderareatransparencydialog.ui index 62f746348451..03d493c8631c 100644 --- a/cui/uiconfig/ui/borderareatransparencydialog.ui +++ b/cui/uiconfig/ui/borderareatransparencydialog.ui @@ -177,4 +177,4 @@ reset - \ No newline at end of file + diff --git a/cui/uiconfig/ui/borderbackgrounddialog.ui b/cui/uiconfig/ui/borderbackgrounddialog.ui index fb9a2e46cccb..ec761999f19b 100644 --- a/cui/uiconfig/ui/borderbackgrounddialog.ui +++ b/cui/uiconfig/ui/borderbackgrounddialog.ui @@ -1,34 +1,31 @@ - + - False - 6 + False + 6 Border / Background False True - dialog - - - + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -41,8 +38,8 @@ _Cancel True - True - True + True + True True @@ -55,8 +52,8 @@ _Help True - True - True + True + True True @@ -70,8 +67,8 @@ _Reset True - True - True + True + True True @@ -84,23 +81,23 @@ False True - end + end 0 True - True + True True True True - True + True True - False + False @@ -109,18 +106,18 @@ True - False + False Borders - False + False True - False + False @@ -132,12 +129,12 @@ True - False + False Background 1 - False + False diff --git a/cui/uiconfig/ui/eventassigndialog.ui b/cui/uiconfig/ui/eventassigndialog.ui index 2ce22196d113..b2f79cc0dc10 100644 --- a/cui/uiconfig/ui/eventassigndialog.ui +++ b/cui/uiconfig/ui/eventassigndialog.ui @@ -1,30 +1,30 @@ - + - False - 6 + False + 6 Assign Macro False - normal + normal - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -37,8 +37,8 @@ _Cancel True - True - True + True + True True @@ -51,8 +51,8 @@ _Help True - True - True + True + True True @@ -66,7 +66,7 @@ False True - end + end 0 diff --git a/cui/uiconfig/ui/querydeletedictionarydialog.ui b/cui/uiconfig/ui/querydeletedictionarydialog.ui index 38185b2eb7d6..aaba7043233c 100644 --- a/cui/uiconfig/ui/querydeletedictionarydialog.ui +++ b/cui/uiconfig/ui/querydeletedictionarydialog.ui @@ -1,31 +1,31 @@ - + - False + False Delete Dictionary? False True - dialog - True - warning + dialog + True + warning yes-no Do you really want to delete the dictionary? - This action cannot be undone. + This action cannot be undone. - False + False vertical 12 - False + False False True - end + end 0 diff --git a/cui/uiconfig/ui/querydeletelineenddialog.ui b/cui/uiconfig/ui/querydeletelineenddialog.ui index 6917fc62422a..7150df60c0b0 100644 --- a/cui/uiconfig/ui/querydeletelineenddialog.ui +++ b/cui/uiconfig/ui/querydeletelineenddialog.ui @@ -1,31 +1,31 @@ - + - False + False Delete Arrow Style? False True - dialog - True - question + dialog + True + question yes-no Do you really want to delete the arrow style? - This action cannot be undone. + This action cannot be undone. - False + False vertical 12 - False + False False True - end + end 0 diff --git a/dbaccess/source/core/inc/ModelImpl.hxx b/dbaccess/source/core/inc/ModelImpl.hxx index b59371125cbc..2ddd1889dc2f 100644 --- a/dbaccess/source/core/inc/ModelImpl.hxx +++ b/dbaccess/source/core/inc/ModelImpl.hxx @@ -431,7 +431,7 @@ public: css::uno::Reference< css::script::XStorageBasedLibraryContainer > getLibraryContainer( bool _bScript ); - /** lets our library containers store themself into the given root storage + /** lets our library containers store themselves into the given root storage */ void storeLibraryContainersTo( const css::uno::Reference< css::embed::XStorage >& _rxToRootStorage ); diff --git a/dbaccess/uiconfig/ui/admindialog.ui b/dbaccess/uiconfig/ui/admindialog.ui index 73ea4ef05248..ecbb0525f5a2 100644 --- a/dbaccess/uiconfig/ui/admindialog.ui +++ b/dbaccess/uiconfig/ui/admindialog.ui @@ -132,4 +132,4 @@ help - \ No newline at end of file + diff --git a/dbaccess/uiconfig/ui/autocharsetpage.ui b/dbaccess/uiconfig/ui/autocharsetpage.ui index 85a00baff32b..c52a83366590 100644 --- a/dbaccess/uiconfig/ui/autocharsetpage.ui +++ b/dbaccess/uiconfig/ui/autocharsetpage.ui @@ -1,37 +1,37 @@ - + True - False + False True True - 6 + 6 vertical 12 True - False + False True - 0 - none + 0 + none True - False - True - 12 + False 12 6 + True + 12 True - False + False _Character set: - True - charset + True + charset False @@ -42,7 +42,7 @@ True - True + True True @@ -56,7 +56,7 @@ True - False + False Data Conversion diff --git a/dbaccess/uiconfig/ui/deleteallrowsdialog.ui b/dbaccess/uiconfig/ui/deleteallrowsdialog.ui index 027200020003..10183f8cefc3 100644 --- a/dbaccess/uiconfig/ui/deleteallrowsdialog.ui +++ b/dbaccess/uiconfig/ui/deleteallrowsdialog.ui @@ -78,4 +78,4 @@ cancel - \ No newline at end of file + diff --git a/dbaccess/uiconfig/ui/designsavemodifieddialog.ui b/dbaccess/uiconfig/ui/designsavemodifieddialog.ui index 57e781bb643d..446e31cc1a17 100644 --- a/dbaccess/uiconfig/ui/designsavemodifieddialog.ui +++ b/dbaccess/uiconfig/ui/designsavemodifieddialog.ui @@ -1,30 +1,30 @@ - + - False + False False True - dialog - True - question + dialog + True + question Do you want to save the changes? - The relation design has been changed. + The relation design has been changed. - False + False vertical 12 - False + False _No True - True - True + True + True True @@ -37,10 +37,10 @@ _Yes True - True - True - True - True + True + True + True + True True @@ -53,8 +53,8 @@ _Cancel True - True - True + True + True True @@ -67,7 +67,7 @@ False True - end + end 0 diff --git a/dbaccess/uiconfig/ui/generalpagedialog.ui b/dbaccess/uiconfig/ui/generalpagedialog.ui index 04fd637bfbcd..8e785fad89aa 100644 --- a/dbaccess/uiconfig/ui/generalpagedialog.ui +++ b/dbaccess/uiconfig/ui/generalpagedialog.ui @@ -83,4 +83,4 @@ The new settings you make will overwrite your existing settings. - \ No newline at end of file + diff --git a/dbaccess/uiconfig/ui/savemodifieddialog.ui b/dbaccess/uiconfig/ui/savemodifieddialog.ui index b90b4dd9a2d9..6152b8eb6f47 100644 --- a/dbaccess/uiconfig/ui/savemodifieddialog.ui +++ b/dbaccess/uiconfig/ui/savemodifieddialog.ui @@ -1,30 +1,30 @@ - + - False + False False True - dialog - True - question + dialog + True + question Do you want to save the changes? - The current record has been changed. + The current record has been changed. - False + False vertical 12 - False + False _No True - True - True + True + True True @@ -37,10 +37,10 @@ _Yes True - True - True - True - True + True + True + True + True True @@ -53,8 +53,8 @@ _Cancel True - True - True + True + True True @@ -67,7 +67,7 @@ False True - end + end 0 diff --git a/dbaccess/uiconfig/ui/tabledesignsavemodifieddialog.ui b/dbaccess/uiconfig/ui/tabledesignsavemodifieddialog.ui index ea0fdd5b01d5..240189bea5ba 100644 --- a/dbaccess/uiconfig/ui/tabledesignsavemodifieddialog.ui +++ b/dbaccess/uiconfig/ui/tabledesignsavemodifieddialog.ui @@ -1,30 +1,30 @@ - + - False + False False True - dialog - True - question + dialog + True + question Do you want to save the changes? - The table has been changed. + The table has been changed. - False + False vertical 12 - False + False _No True - True - True + True + True True @@ -37,10 +37,10 @@ _Yes True - True - True - True - True + True + True + True + True True @@ -53,8 +53,8 @@ _Cancel True - True - True + True + True True @@ -67,7 +67,7 @@ False True - end + end 0 diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx index d30bd0e582f3..2a52f9843f75 100644 --- a/desktop/source/app/app.cxx +++ b/desktop/source/app/app.cxx @@ -454,7 +454,7 @@ void Desktop::Init() // We need to have service factory before going further, but see fdo#37195. // Doing this will mmap common.rdb, making it not overwritable on windows, - // so this can't happen before the synchronization above. Lets rework this + // so this can't happen before the synchronization above. Let's rework this // so that the above is called *from* CreateApplicationServiceManager or // something to enforce this gotcha try diff --git a/desktop/uiconfig/ui/installforalldialog.ui b/desktop/uiconfig/ui/installforalldialog.ui index d2f645220f13..7247a971080a 100644 --- a/desktop/uiconfig/ui/installforalldialog.ui +++ b/desktop/uiconfig/ui/installforalldialog.ui @@ -1,31 +1,31 @@ - + - False + False False True - dialog - True - question + dialog + True + question For whom do you want to install the extension? - Make sure that no further users are working with the same %PRODUCTNAME, when installing an extension for all users in a multi user environment. + Make sure that no further users are working with the same %PRODUCTNAME, when installing an extension for all users in a multi user environment. - False + False vertical 24 - False + False _For all users True - True - True - True + True + True + True False @@ -37,11 +37,11 @@ _Only for me True - True - True - True - True - True + True + True + True + True + True False @@ -53,8 +53,8 @@ _Cancel True - True - True + True + True True @@ -67,7 +67,7 @@ False True - end + end 0 diff --git a/dictionaries b/dictionaries index a2bf59878dd7..fc2dc383a40e 160000 --- a/dictionaries +++ b/dictionaries @@ -1 +1 @@ -Subproject commit a2bf59878dd76685803ec260e15d875746ad6e25 +Subproject commit fc2dc383a40e56c0118866c9110954bebc6ea41d diff --git a/download.lst b/download.lst index c54b7cd5488a..5109548968b7 100644 --- a/download.lst +++ b/download.lst @@ -427,9 +427,9 @@ XMLSEC_TARBALL := xmlsec1-1.3.4.tar.gz # three static lines # so that git cherry-pick # will not run into conflicts -LIBXML_SHA256SUM := 43ad877b018bc63deb2468d71f95219c2fac196876ef36d1bee51d226173ec93 -LIBXML_VERSION_MICRO := 8 -LIBXML_TARBALL := libxml2-2.12.$(LIBXML_VERSION_MICRO).tar.xz +LIBXML_SHA256SUM := 25239263dc37f5f55a5393eff27b35f0b7d9ea4b2a7653310598ea8299e3b741 +LIBXML_VERSION_MICRO := 1 +LIBXML_TARBALL := libxml2-2.13.$(LIBXML_VERSION_MICRO).tar.xz # three static lines # so that git cherry-pick # will not run into conflicts @@ -541,8 +541,8 @@ LIBPNG_TARBALL := libpng-1.6.43.tar.xz # three static lines # so that git cherry-pick # will not run into conflicts -LIBTIFF_SHA256SUM := e178649607d1e22b51cf361dd20a3753f244f022eefab1f2f218fc62ebaf87d2 -LIBTIFF_TARBALL := tiff-4.6.0.tar.xz +LIBTIFF_SHA256SUM := d6da35c9986a4ec845eb96258b3693f8df515f7eb4c1e597ceb03e22788f305b +LIBTIFF_TARBALL := tiff-4.6.0t.tar.xz # three static lines # so that git cherry-pick # will not run into conflicts diff --git a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx index 394b18ca7162..f09131b04c30 100644 --- a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx +++ b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx @@ -1091,8 +1091,7 @@ void VclPixelProcessor2D::processPatternFillPrimitive2D( mpOutputDevice->IntersectClipRegion(vcl::Region(aMask)); Wallpaper aWallpaper(aTileImage); aWallpaper.SetColor(COL_TRANSPARENT); - Point aPaperPt(aMaskRect.getX() % aTileImage.GetSizePixel().Width(), - aMaskRect.getY() % aTileImage.GetSizePixel().Height()); + Point aPaperPt(aMaskRect.getX() % nTileWidth, aMaskRect.getY() % nTileHeight); tools::Rectangle aPaperRect(aPaperPt, aTileImage.GetSizePixel()); aWallpaper.SetRect(aPaperRect); mpOutputDevice->DrawWallpaper(aMaskRect, aWallpaper); @@ -1121,8 +1120,7 @@ void VclPixelProcessor2D::processPatternFillPrimitive2D( { Wallpaper aWallpaper(aTileImage); aWallpaper.SetColor(COL_TRANSPARENT); - Point aPaperPt(aMaskRect.getX() % aTileImage.GetSizePixel().Width(), - aMaskRect.getY() % aTileImage.GetSizePixel().Height()); + Point aPaperPt(aMaskRect.getX() % nTileWidth, aMaskRect.getY() % nTileHeight); tools::Rectangle aPaperRect(aPaperPt, aTileImage.GetSizePixel()); aWallpaper.SetRect(aPaperRect); mpOutputDevice->DrawWallpaper(aMaskRect, aWallpaper); diff --git a/drawinglayer/source/processor2d/vclprocessor2d.cxx b/drawinglayer/source/processor2d/vclprocessor2d.cxx index 45825a2a477b..7c21e4ea1f1c 100644 --- a/drawinglayer/source/processor2d/vclprocessor2d.cxx +++ b/drawinglayer/source/processor2d/vclprocessor2d.cxx @@ -701,8 +701,31 @@ bool VclProcessor2D::RenderFillGraphicPrimitive2DImpl( // check if offset is used const sal_Int32 nOffsetX(basegfx::fround(rFillGraphicAttribute.getOffsetX() * nBWidth)); + const sal_Int32 nOffsetY(basegfx::fround(rFillGraphicAttribute.getOffsetY() * nBHeight)); - if (nOffsetX) + if (nOffsetX == 0 && nOffsetY == 0) + { + if (!bPreScaled) + aBitmapEx.Scale(aNeededBitmapSizePixel); + + // if the tile is a single pixel big, just flood fill with that pixel color + if (aNeededBitmapSizePixel.getWidth() == 1 && aNeededBitmapSizePixel.getHeight() == 1) + { + Color col = aBitmapEx.GetPixelColor(0, 0); + mpOutputDevice->SetLineColor(col); + mpOutputDevice->SetFillColor(col); + mpOutputDevice->DrawRect(aVisiblePixel); + } + else + { + // TODO vcl does not have an optimised path here, it should be passing some kind of fill/tile + // operation down to the cairo/skia layers + Wallpaper aWallpaper(aBitmapEx); + aWallpaper.SetColor(COL_TRANSPARENT); + mpOutputDevice->DrawWallpaper(aVisiblePixel, aWallpaper); + } + } + else if (nOffsetX) { // offset in X, so iterate over Y first and draw lines for (sal_Int32 nYPos(nBTop); nYPos < nOTop + nOHeight; nYPos += nBHeight, nPosY++) @@ -727,11 +750,8 @@ bool VclProcessor2D::RenderFillGraphicPrimitive2DImpl( } } } - else + else // nOffsetY is used { - // check if offset is used - const sal_Int32 nOffsetY(basegfx::fround(rFillGraphicAttribute.getOffsetY() * nBHeight)); - // possible offset in Y, so iterate over X first and draw columns for (sal_Int32 nXPos(nBLeft); nXPos < nOLeft + nOWidth; nXPos += nBWidth, nPosX++) { diff --git a/editeng/source/editeng/impedit2.cxx b/editeng/source/editeng/impedit2.cxx index fbf28b41c4dd..d0a49d86ac67 100644 --- a/editeng/source/editeng/impedit2.cxx +++ b/editeng/source/editeng/impedit2.cxx @@ -3684,30 +3684,34 @@ sal_Int32 ImpEditEngine::GetLineNumberAtIndex( sal_Int32 nPara, sal_Int32 nIndex { if (!IsFormatted()) FormatDoc(); - sal_Int32 nLineNo = -1; const ContentNode* pNode = GetEditDoc().GetObject( nPara ); OSL_ENSURE( pNode, "GetLineNumberAtIndex: invalid paragraph index" ); - if (pNode) + if (!pNode) + return -1; + // we explicitly allow for the index to point at the character right behind the text + const bool bValidIndex = /*0 <= nIndex &&*/ nIndex <= pNode->Len(); + OSL_ENSURE( bValidIndex, "GetLineNumberAtIndex: invalid index" ); + const ParaPortion* pPPortion = maParaPortionList.SafeGetObject(nPara); + if (!pPPortion) { - // we explicitly allow for the index to point at the character right behind the text - const bool bValidIndex = /*0 <= nIndex &&*/ nIndex <= pNode->Len(); - OSL_ENSURE( bValidIndex, "GetLineNumberAtIndex: invalid index" ); - const ParaPortion* pPPortion = maParaPortionList.SafeGetObject(nPara); - const EditLineList& rLineList = pPPortion->GetLines(); - const sal_Int32 nLineCount = rLineList.Count(); - if (nIndex == pNode->Len()) - nLineNo = nLineCount > 0 ? nLineCount - 1 : 0; - else if (bValidIndex) // nIndex < pNode->Len() + SAL_WARN( "editeng", "ImpEditEngine::GetLineNumberAtIndex missing ParaPortion"); + return -1; + } + const EditLineList& rLineList = pPPortion->GetLines(); + const sal_Int32 nLineCount = rLineList.Count(); + sal_Int32 nLineNo = -1; + if (nIndex == pNode->Len()) + nLineNo = nLineCount > 0 ? nLineCount - 1 : 0; + else if (bValidIndex) // nIndex < pNode->Len() + { + sal_Int32 nStart = -1, nEnd = -1; + for (sal_Int32 i = 0; i < nLineCount && nLineNo == -1; ++i) { - sal_Int32 nStart = -1, nEnd = -1; - for (sal_Int32 i = 0; i < nLineCount && nLineNo == -1; ++i) - { - const EditLine& rLine = rLineList[i]; - nStart = rLine.GetStart(); - nEnd = rLine.GetEnd(); - if (nStart >= 0 && nStart <= nIndex && nEnd >= 0 && nIndex < nEnd) - nLineNo = i; - } + const EditLine& rLine = rLineList[i]; + nStart = rLine.GetStart(); + nEnd = rLine.GetEnd(); + if (nStart >= 0 && nStart <= nIndex && nEnd >= 0 && nIndex < nEnd) + nLineNo = i; } } return nLineNo; diff --git a/editeng/source/editeng/impedit3.cxx b/editeng/source/editeng/impedit3.cxx index 7c1ccc19cfa8..66ecfb814774 100644 --- a/editeng/source/editeng/impedit3.cxx +++ b/editeng/source/editeng/impedit3.cxx @@ -646,7 +646,7 @@ void ImpEditEngine::CheckPageOverflow() if (nParaCount == 1) { const ParaPortion* pPPortion = GetParaPortions().SafeGetObject(0); - bOnlyOneEmptyPara = pPPortion->GetLines().Count() == 1 + bOnlyOneEmptyPara = pPPortion && pPPortion->GetLines().Count() == 1 && pPPortion->GetLines()[0].GetLen() == 0; } @@ -3246,7 +3246,7 @@ void ImpEditEngine::RecalcFormatterFontMetrics( FormatterFontMetric& rCurMetrics // Fonts without leading cause problems if ( ( nIntLeading == 0 ) && (mpRefDev->GetOutDevType() == OUTDEV_PRINTER)) { - // Lets see what Leading one gets on the screen + // Let's see what Leading one gets on the screen VclPtr pVDev = GetVirtualDevice(mpRefDev->GetMapMode(), mpRefDev->GetDrawMode()); rFont.SetPhysFont(*pVDev); aMetric = pVDev->GetFontMetric(); diff --git a/editeng/source/items/paraitem.cxx b/editeng/source/items/paraitem.cxx index 07a927947bdd..a63f73c25335 100644 --- a/editeng/source/items/paraitem.cxx +++ b/editeng/source/items/paraitem.cxx @@ -802,6 +802,7 @@ SvxTabStop::SvxTabStop() eAdjustment = SvxTabAdjust::Left; m_cDecimal = cDfltDecimalChar; cFill = cDfltFillChar; + fillDecimal(); } @@ -812,9 +813,10 @@ SvxTabStop::SvxTabStop( const sal_Int32 nPos, const SvxTabAdjust eAdjst, eAdjustment = eAdjst; m_cDecimal = cDec; cFill = cFil; + fillDecimal(); } -void SvxTabStop::fillDecimal() const +void SvxTabStop::fillDecimal() { if ( cDfltDecimalChar == m_cDecimal ) m_cDecimal = SvtSysLocale().GetLocaleData().getNumDecimalSep()[0]; diff --git a/editeng/source/items/svxfont.cxx b/editeng/source/items/svxfont.cxx index 2df18feb449f..3bd2c8086c07 100644 --- a/editeng/source/items/svxfont.cxx +++ b/editeng/source/items/svxfont.cxx @@ -670,6 +670,12 @@ SvxFont& SvxFont::operator=( const SvxFont& rFont ) return *this; } +bool SvxFont::SvxFontSubsetEquals(const SvxFont& rFont) const +{ + return nEsc == rFont.GetEscapement() && nPropr == rFont.GetPropr() + && eCaseMap == rFont.GetCaseMap(); +} + namespace { class SvxDoGetCapitalSize : public SvxDoCapitals diff --git a/editeng/source/items/textitem.cxx b/editeng/source/items/textitem.cxx index f187637866e5..638948e747de 100644 --- a/editeng/source/items/textitem.cxx +++ b/editeng/source/items/textitem.cxx @@ -159,61 +159,24 @@ bool SvxFontListItem::GetPresentation // class SvxFontItem ----------------------------------------------------- -typedef std::unordered_map SvxFontItemMap; - namespace { - class SvxFontItemInstanceManager : public ItemInstanceManager + class SvxFontItemInstanceManager : public TypeSpecificItemInstanceManager { - SvxFontItemMap maRegistered; - - public: - SvxFontItemInstanceManager() - : ItemInstanceManager(typeid(SvxFontItem).hash_code()) + protected: + virtual size_t hashCode(const SfxPoolItem& rItem) const override { + const SvxFontItem& rFontItem(static_cast(rItem)); + std::size_t seed(0); + o3tl::hash_combine(seed, rItem.Which()); + o3tl::hash_combine(seed, rFontItem.GetFamilyName().hashCode()); + o3tl::hash_combine(seed, rFontItem.GetStyleName().hashCode()); + o3tl::hash_combine(seed, rFontItem.GetFamily()); + o3tl::hash_combine(seed, rFontItem.GetPitch()); + o3tl::hash_combine(seed, rFontItem.GetCharSet()); + return seed; } - - private: - static size_t hashCode(const SfxPoolItem&); - - // standard interface, accessed exclusively - // by implCreateItemEntry/implCleanupItemEntry - virtual const SfxPoolItem* find(const SfxPoolItem&) const override; - virtual void add(const SfxPoolItem&) override; - virtual void remove(const SfxPoolItem&) override; }; - - size_t SvxFontItemInstanceManager::hashCode(const SfxPoolItem& rItem) - { - const SvxFontItem& rFontItem(static_cast(rItem)); - std::size_t seed(0); - o3tl::hash_combine(seed, rItem.Which()); - o3tl::hash_combine(seed, rFontItem.GetFamilyName().hashCode()); - o3tl::hash_combine(seed, rFontItem.GetStyleName().hashCode()); - o3tl::hash_combine(seed, rFontItem.GetFamily()); - o3tl::hash_combine(seed, rFontItem.GetPitch()); - o3tl::hash_combine(seed, rFontItem.GetCharSet()); - return seed; - } - - const SfxPoolItem* SvxFontItemInstanceManager::find(const SfxPoolItem& rItem) const - { - SvxFontItemMap::const_iterator aHit(maRegistered.find(hashCode(rItem))); - if (aHit != maRegistered.end()) - return aHit->second; - return nullptr; - } - - void SvxFontItemInstanceManager::add(const SfxPoolItem& rItem) - { - maRegistered.insert({hashCode(rItem), &rItem}); - } - - void SvxFontItemInstanceManager::remove(const SfxPoolItem& rItem) - { - maRegistered.erase(hashCode(rItem)); - } - } ItemInstanceManager* SvxFontItem::getItemInstanceManager() const @@ -446,56 +409,20 @@ void SvxFontItem::dumpAsXml(xmlTextWriterPtr pWriter) const // class SvxPostureItem -------------------------------------------------- -typedef std::unordered_map SvxPostureItemMap; - namespace { - class SvxPostureItemInstanceManager : public ItemInstanceManager + class SvxPostureItemInstanceManager : public TypeSpecificItemInstanceManager { - SvxPostureItemMap maRegistered; - - public: - SvxPostureItemInstanceManager() - : ItemInstanceManager(typeid(SvxPostureItem).hash_code()) + protected: + virtual size_t hashCode(const SfxPoolItem& rItem) const override { + auto const & rPostureItem = static_cast(rItem); + std::size_t seed(0); + o3tl::hash_combine(seed, rPostureItem.Which()); + o3tl::hash_combine(seed, rPostureItem. GetEnumValue()); + return seed; } - - private: - static size_t hashCode(const SfxPoolItem&); - - // standard interface, accessed exclusively - // by implCreateItemEntry/implCleanupItemEntry - virtual const SfxPoolItem* find(const SfxPoolItem&) const override; - virtual void add(const SfxPoolItem&) override; - virtual void remove(const SfxPoolItem&) override; }; - - size_t SvxPostureItemInstanceManager::hashCode(const SfxPoolItem& rItem) - { - auto const & rPostureItem = static_cast(rItem); - std::size_t seed(0); - o3tl::hash_combine(seed, rPostureItem.Which()); - o3tl::hash_combine(seed, rPostureItem. GetEnumValue()); - return seed; - } - - const SfxPoolItem* SvxPostureItemInstanceManager::find(const SfxPoolItem& rItem) const - { - auto aHit(maRegistered.find(hashCode(rItem))); - if (aHit != maRegistered.end()) - return aHit->second; - return nullptr; - } - - void SvxPostureItemInstanceManager::add(const SfxPoolItem& rItem) - { - maRegistered.insert({hashCode(rItem), &rItem}); - } - - void SvxPostureItemInstanceManager::remove(const SfxPoolItem& rItem) - { - maRegistered.erase(hashCode(rItem)); - } } ItemInstanceManager* SvxPostureItem::getItemInstanceManager() const @@ -750,58 +677,22 @@ void SvxWeightItem::dumpAsXml(xmlTextWriterPtr pWriter) const // class SvxFontHeightItem ----------------------------------------------- -typedef std::unordered_map SvxFontHeightItemMap; - namespace { - class SvxFontHeightItemInstanceManager : public ItemInstanceManager + class SvxFontHeightItemInstanceManager : public TypeSpecificItemInstanceManager { - SvxFontHeightItemMap maRegistered; - - public: - SvxFontHeightItemInstanceManager() - : ItemInstanceManager(typeid(SvxFontHeightItem).hash_code()) + protected: + virtual size_t hashCode(const SfxPoolItem& rItem) const override { + auto const & rFontHeightItem = static_cast(rItem); + std::size_t seed(0); + o3tl::hash_combine(seed, rFontHeightItem.Which()); + o3tl::hash_combine(seed, rFontHeightItem.GetHeight()); + o3tl::hash_combine(seed, rFontHeightItem.GetProp()); + o3tl::hash_combine(seed, rFontHeightItem.GetPropUnit()); + return seed; } - - private: - static size_t hashCode(const SfxPoolItem&); - - // standard interface, accessed exclusively - // by implCreateItemEntry/implCleanupItemEntry - virtual const SfxPoolItem* find(const SfxPoolItem&) const override; - virtual void add(const SfxPoolItem&) override; - virtual void remove(const SfxPoolItem&) override; }; - - size_t SvxFontHeightItemInstanceManager::hashCode(const SfxPoolItem& rItem) - { - auto const & rFontHeightItem = static_cast(rItem); - std::size_t seed(0); - o3tl::hash_combine(seed, rFontHeightItem.Which()); - o3tl::hash_combine(seed, rFontHeightItem.GetHeight()); - o3tl::hash_combine(seed, rFontHeightItem.GetProp()); - o3tl::hash_combine(seed, rFontHeightItem.GetPropUnit()); - return seed; - } - - const SfxPoolItem* SvxFontHeightItemInstanceManager::find(const SfxPoolItem& rItem) const - { - auto aHit(maRegistered.find(hashCode(rItem))); - if (aHit != maRegistered.end()) - return aHit->second; - return nullptr; - } - - void SvxFontHeightItemInstanceManager::add(const SfxPoolItem& rItem) - { - maRegistered.insert({hashCode(rItem), &rItem}); - } - - void SvxFontHeightItemInstanceManager::remove(const SfxPoolItem& rItem) - { - maRegistered.erase(hashCode(rItem)); - } } ItemInstanceManager* SvxFontHeightItem::getItemInstanceManager() const @@ -948,7 +839,7 @@ static sal_uInt32 lcl_GetRealHeight_Impl(sal_uInt32 nHeight, sal_uInt16 nProp, M short nTemp = static_cast(nProp); nDiff = nTemp * 20; if(!bCoreInTwip) - nDiff = static_cast(convertTwipToMm100(static_cast(nDiff))); + nDiff = static_cast(convertTwipToMm100(nDiff)); break; } case MapUnit::Map100thMM: @@ -1106,9 +997,8 @@ bool SvxFontHeightItem::HasMetrics() const void SvxFontHeightItem::SetHeight( sal_uInt32 nNewHeight, const sal_uInt16 nNewProp, MapUnit eUnit ) { - DBG_ASSERT( GetRefCount() == 0, "SetValue() with pooled item" ); - ASSERT_CHANGE_REFCOUNTED_ITEM; + if( MapUnit::MapRelative != eUnit ) nHeight = nNewHeight + ::ItemToControl( short(nNewProp), eUnit, FieldUnit::TWIP ); @@ -1124,9 +1014,8 @@ void SvxFontHeightItem::SetHeight( sal_uInt32 nNewHeight, const sal_uInt16 nNewP void SvxFontHeightItem::SetHeight( sal_uInt32 nNewHeight, sal_uInt16 nNewProp, MapUnit eMetric, MapUnit eCoreMetric ) { - DBG_ASSERT( GetRefCount() == 0, "SetValue() with pooled item" ); - ASSERT_CHANGE_REFCOUNTED_ITEM; + if( MapUnit::MapRelative != eMetric ) nHeight = nNewHeight + ::ControlToItem( ::ItemToControl(static_cast(nNewProp), eMetric, @@ -3078,56 +2967,20 @@ void GetDefaultFonts( SvxFontItem& rLatin, SvxFontItem& rAsian, SvxFontItem& rCo // class SvxRsidItem ----------------------------------------------------- -typedef std::unordered_map SvxRsidItemMap; - namespace { - class SvxRsidItemInstanceManager : public ItemInstanceManager + class SvxRsidItemInstanceManager : public TypeSpecificItemInstanceManager { - SvxRsidItemMap maRegistered; - - public: - SvxRsidItemInstanceManager() - : ItemInstanceManager(typeid(SvxRsidItem).hash_code()) + protected: + virtual size_t hashCode(const SfxPoolItem& rItem) const override { + auto const & rRsidItem = static_cast(rItem); + std::size_t seed(0); + o3tl::hash_combine(seed, rRsidItem.Which()); + o3tl::hash_combine(seed, rRsidItem.GetValue()); + return seed; } - - private: - static size_t hashCode(const SfxPoolItem&); - - // standard interface, accessed exclusively - // by implCreateItemEntry/implCleanupItemEntry - virtual const SfxPoolItem* find(const SfxPoolItem&) const override; - virtual void add(const SfxPoolItem&) override; - virtual void remove(const SfxPoolItem&) override; }; - - size_t SvxRsidItemInstanceManager::hashCode(const SfxPoolItem& rItem) - { - auto const & rRsidItem = static_cast(rItem); - std::size_t seed(0); - o3tl::hash_combine(seed, rRsidItem.Which()); - o3tl::hash_combine(seed, rRsidItem.GetValue()); - return seed; - } - - const SfxPoolItem* SvxRsidItemInstanceManager::find(const SfxPoolItem& rItem) const - { - auto aHit(maRegistered.find(hashCode(rItem))); - if (aHit != maRegistered.end()) - return aHit->second; - return nullptr; - } - - void SvxRsidItemInstanceManager::add(const SfxPoolItem& rItem) - { - maRegistered.insert({hashCode(rItem), &rItem}); - } - - void SvxRsidItemInstanceManager::remove(const SfxPoolItem& rItem) - { - maRegistered.erase(hashCode(rItem)); - } } ItemInstanceManager* SvxRsidItem::getItemInstanceManager() const diff --git a/editeng/source/misc/svxacorr.cxx b/editeng/source/misc/svxacorr.cxx index 6730a2c82d16..677919211c88 100644 --- a/editeng/source/misc/svxacorr.cxx +++ b/editeng/source/misc/svxacorr.cxx @@ -2060,7 +2060,6 @@ SvxAutoCorrect::SearchWordsInList( rLang = aLanguageTag; return pRet; } - return std::nullopt; } // If it still could not be found here, then keep on searching diff --git a/extensions/source/ole/oleobjw.hxx b/extensions/source/ole/oleobjw.hxx index d1a1d0ed81fc..4455aced456b 100644 --- a/extensions/source/ole/oleobjw.hxx +++ b/extensions/source/ole/oleobjw.hxx @@ -210,7 +210,7 @@ protected: // the IDispatch* are wrapped by objects of this class. Assuming that the functions // implemented by the IDispatch object returns another UNO interface then // it has to be wrapped to this type. But this is only possible if an object of this - // wrapper class knows what type it is represting. The member m_TypeDescription holds this + // wrapper class knows what type it is representing. The member m_TypeDescription holds this // information. // m_TypeDescription is only useful when an object wraps an IDispatch object that implements // a UNO interface. The value is set during a call to XInitialization::initialize. diff --git a/extensions/uiconfig/spropctrlr/ui/browserline.ui b/extensions/uiconfig/spropctrlr/ui/browserline.ui index 096bce45563e..31df14938c4b 100644 --- a/extensions/uiconfig/spropctrlr/ui/browserline.ui +++ b/extensions/uiconfig/spropctrlr/ui/browserline.ui @@ -48,4 +48,4 @@ - \ No newline at end of file + diff --git a/extensions/uiconfig/spropctrlr/ui/browserpage.ui b/extensions/uiconfig/spropctrlr/ui/browserpage.ui index 171c837276c4..f61d4d219824 100644 --- a/extensions/uiconfig/spropctrlr/ui/browserpage.ui +++ b/extensions/uiconfig/spropctrlr/ui/browserpage.ui @@ -1,40 +1,40 @@ - + - + True - False + False True True - 6 + 6 True - True + True True True - never + never True - False + False True - False + False True True vertical True - False + False start True True - 6 + 6 vertical 6 True @@ -54,30 +54,30 @@ - 0 - 0 + 0 + 0 True - False - 0 - none + False + 0 + none True - True - False - False + True 12 6 + False + False True - False + False Help @@ -86,8 +86,8 @@ - 0 - 1 + 0 + 1 diff --git a/external/libcmis/exceptions.patch.1 b/external/libcmis/exceptions.patch.1 index 29a66f229c4c..3b4090aa54f7 100644 --- a/external/libcmis/exceptions.patch.1 +++ b/external/libcmis/exceptions.patch.1 @@ -1,12 +1,11 @@ --- libcmis/src/libcmis/http-session.cxx.orig 2024-06-21 12:22:36.083125022 +0200 +++ libcmis/src/libcmis/http-session.cxx 2024-06-21 13:08:37.403016695 +0200 -@@ -653,7 +653,8 @@ +@@ -653,7 +653,7 @@ m_authProvided = authProvider->authenticationQuery( m_username, m_password ); if ( !m_authProvided ) { - throw CurlException( "User cancelled authentication request" ); -+ // report this as 401 so it becomes permissionDenied -+ throw CurlException("User cancelled authentication request", CURLE_OK, "", 401); ++ throw CurlException("User cancelled authentication request", CURLE_OK); } } } @@ -62,7 +61,7 @@ void HttpSession::initProtocols( ) { -@@ -981,11 +972,43 @@ +@@ -981,11 +972,45 @@ break; default: msg = what(); @@ -106,6 +105,8 @@ + default: + if ( !isCancelled( ) ) + msg += ": " + m_url; ++ else if (msg == "User cancelled authentication request") ++ type = "permissionDenied"; + break; + } } diff --git a/external/libxml2/ExternalPackage_libxml2.mk b/external/libxml2/ExternalPackage_libxml2.mk index 799044575f9a..17190c77fd18 100644 --- a/external/libxml2/ExternalPackage_libxml2.mk +++ b/external/libxml2/ExternalPackage_libxml2.mk @@ -21,7 +21,7 @@ else # COM=MSC $(eval $(call gb_ExternalPackage_add_file,libxml2,$(LIBO_URE_LIB_FOLDER)/libxml2.dll,win32/bin.msvc/libxml2.dll)) endif else # OS!=WNT -$(eval $(call gb_ExternalPackage_add_file,libxml2,$(LIBO_URE_LIB_FOLDER)/libxml2.so.2,.libs/libxml2.so.2.12.$(LIBXML_VERSION_MICRO))) +$(eval $(call gb_ExternalPackage_add_file,libxml2,$(LIBO_URE_LIB_FOLDER)/libxml2.so.2,.libs/libxml2.so.2.13.$(LIBXML_VERSION_MICRO))) endif endif # DISABLE_DYNLOADING diff --git a/external/libxml2/libxml2-XMLCALL-redefine.patch.0 b/external/libxml2/libxml2-XMLCALL-redefine.patch.0 index d9ca23be7ce4..57d23d885943 100644 --- a/external/libxml2/libxml2-XMLCALL-redefine.patch.0 +++ b/external/libxml2/libxml2-XMLCALL-redefine.patch.0 @@ -1,11 +1,11 @@ --- include/libxml/xmlexports.h 2023-05-24 12:48:46.179570708 +0100 +++ include/libxml/xmlexports.h 2023-05-24 12:48:56.563577488 +0100 -@@ -38,8 +38,6 @@ +@@ -31,8 +31,6 @@ + #define XMLPUBVAR XMLPUBLIC extern - /** DOC_DISABLE */ /* Compatibility */ -#define XMLCALL -#define XMLCDECL - #if !defined(LIBXML_DLL_IMPORT) - #define LIBXML_DLL_IMPORT XMLPUBVAR + #ifndef LIBXML_DLL_IMPORT + #define LIBXML_DLL_IMPORT XMLPUBVAR #endif diff --git a/external/libxml2/libxml2-icu-sym.patch.0 b/external/libxml2/libxml2-icu-sym.patch.0 index 07676228da19..d89a1c4c544b 100644 --- a/external/libxml2/libxml2-icu-sym.patch.0 +++ b/external/libxml2/libxml2-icu-sym.patch.0 @@ -3,14 +3,14 @@ Find bundled ICU in workdir and use debug .libs when needed diff -up win32/Makefile.msvc.dt win32/Makefile.msvc --- win32/Makefile.msvc.dt 2014-07-18 19:00:23.372103963 +0200 +++ win32/Makefile.msvc 2014-07-18 19:01:39.347982929 +0200 -@@ -46,6 +46,7 @@ CPPFLAGS = $(CPPFLAGS) /D "_REENTRANT" +@@ -42,6 +42,7 @@ CC = cl.exe CFLAGS = /nologo /D "_WINDOWS" /D "_MBCS" /D "NOLIBTOOL" /W3 /wd4244 /wd4267 $(CRUNTIME) CFLAGS = $(CFLAGS) /I$(XML_SRCDIR) /I$(XML_SRCDIR)\include /I$(INCPREFIX) +CFLAGS = $(CFLAGS) /I$(WORKDIR)/UnpackedTarball/icu/source/i18n /I$(WORKDIR)/UnpackedTarball/icu/source/common - !if "$(WITH_THREADS)" != "no" - CFLAGS = $(CFLAGS) /D "_REENTRANT" - !endif + !if "$(WITH_THREADS)" == "ctls" + CFLAGS = $(CFLAGS) /D "XML_THREAD_LOCAL=__declspec(thread)" + !else if "$(WITH_THREADS)" == "posix" @@ -62,7 +63,9 @@ # The linker and its options. LD = link.exe diff --git a/external/libxml2/libxml2-icu.patch.0 b/external/libxml2/libxml2-icu.patch.0 index 84197763f878..85ce8b3aba2b 100644 --- a/external/libxml2/libxml2-icu.patch.0 +++ b/external/libxml2/libxml2-icu.patch.0 @@ -3,14 +3,14 @@ Find bundled ICU in workdir and use debug .libs when needed diff -up win32/Makefile.msvc.dt win32/Makefile.msvc --- win32/Makefile.msvc.dt 2014-07-18 19:00:23.372103963 +0200 +++ win32/Makefile.msvc 2014-07-18 19:01:39.347982929 +0200 -@@ -45,6 +45,7 @@ CPPFLAGS = $(CPPFLAGS) /D "_REENTRANT" +@@ -42,6 +42,7 @@ CC = cl.exe CFLAGS = /nologo /D "_WINDOWS" /D "_MBCS" /D "NOLIBTOOL" /W3 /wd4244 /wd4267 $(CRUNTIME) CFLAGS = $(CFLAGS) /I$(XML_SRCDIR) /I$(XML_SRCDIR)\include /I$(INCPREFIX) +CFLAGS = $(CFLAGS) /I$(WORKDIR)/UnpackedTarball/icu/source/i18n /I$(WORKDIR)/UnpackedTarball/icu/source/common - !if "$(WITH_THREADS)" != "no" - CFLAGS = $(CFLAGS) /D "_REENTRANT" - !endif + !if "$(WITH_THREADS)" == "ctls" + CFLAGS = $(CFLAGS) /D "XML_THREAD_LOCAL=__declspec(thread)" + !else if "$(WITH_THREADS)" == "posix" @@ -67,6 +68,7 @@ CFLAGS = $(CFLAGS) $(SOLARINC) # The linker and its options. LD = link.exe diff --git a/external/redland/ExternalProject_raptor.mk b/external/redland/ExternalProject_raptor.mk index 8ac05880766b..5bfab78deba8 100644 --- a/external/redland/ExternalProject_raptor.mk +++ b/external/redland/ExternalProject_raptor.mk @@ -30,7 +30,7 @@ $(call gb_ExternalProject_get_state_target,raptor,build): CPPFLAGS="$(if $(SYSBASE),-I$(SYSBASE)/usr/include) $(gb_EMSCRIPTEN_CPPFLAGS)" \ $(gb_RUN_CONFIGURE) ./configure --disable-gtk-doc \ --enable-parsers="rdfxml ntriples turtle trig guess rss-tag-soup" \ - --with-www=xml \ + --without-www \ --without-xslt-config \ $(gb_CONFIGURE_PLATFORMS) \ $(if $(CROSS_COMPILING),$(if $(filter INTEL ARM,$(CPUNAME)),ac_cv_c_bigendian=no)) \ diff --git a/extras/CustomTarget_templates.mk b/extras/CustomTarget_templates.mk index b17ce37df9eb..9754985f1a59 100644 --- a/extras/CustomTarget_templates.mk +++ b/extras/CustomTarget_templates.mk @@ -9,40 +9,17 @@ $(eval $(call gb_CustomTarget_CustomTarget,extras/source/templates)) -# # for OTT templates: mimetype, styles.xml, META-INF/manifest.xml and -# Thumbnails/thumbnail.png files are automatically added for each template -# # for OTG templates: mimetype, content.xml, styles.xml, META-INF/manifest.xml and -# Thumbnails/thumbnail.png files are automatically added for each template -# list of meta.xml files (one per template) + other files (content.xml, manifest.rdf, settings.xml, pictures...) -extras_TEMPLATES_XMLFILES := \ - officorr/Modern_business_letter_sans_serif/meta.xml \ - officorr/Modern_business_letter_serif/meta.xml \ - offimisc/Businesscard-with-logo/meta.xml \ - personal/CV/meta.xml \ - personal/Resume1page/meta.xml \ - styles/Default/meta.xml \ - styles/Modern/meta.xml \ - styles/Simple/meta.xml \ - officorr/Modern_business_letter_sans_serif/content.xml \ - officorr/Modern_business_letter_serif/content.xml \ - offimisc/Businesscard-with-logo/content.xml \ - personal/CV/content.xml \ - personal/Resume1page/content.xml \ - officorr/Modern_business_letter_sans_serif/manifest.rdf \ - officorr/Modern_business_letter_serif/manifest.rdf \ - offimisc/Businesscard-with-logo/manifest.rdf \ - personal/CV/manifest.rdf \ - personal/Resume1page/manifest.rdf \ - offimisc/Businesscard-with-logo/settings.xml \ - offimisc/Businesscard-with-logo/Pictures/10000201000001F4000000A0108F3F06.png \ - draw/bpmn/meta.xml \ - l10n/zh_CN_ott_normal/meta.xml \ - l10n/zh_CN_ott_normal/content.xml \ - l10n/ja_ott_normal/meta.xml \ - l10n/ja_ott_normal/content.xml \ +include $(SRCDIR)/extras/template_files.mk -# param: style-base (e.g. Modern) -extras_TEMPLATES_XMLFILES_RELATIVE = $(subst $(1)/,,$(filter $(1)/%,$(extras_TEMPLATES_XMLFILES))) +define run_zip_template_recipe = +$(call gb_Output_announce,$(subst $(gb_CustomTarget_workdir)/extras/source/,,$@),$(true),ZIP,2) +$(call gb_Trace_StartRange,$(subst $(gb_CustomTarget_workdir)/extras/source/,,$@),ZIP) +cd $(dir $<) && \ +$(call gb_Helper_wsl_path,\ +$(WSL) zip -q0X --filesync --must-match $@ mimetype && \ +$(WSL) zip -qrX --must-match $@ $(subst $(dir $<),,$^)) +$(call gb_Trace_EndRange,$(subst $(gb_CustomTarget_workdir)/extras/source/,,$@),ZIP) +endef .SECONDEXPANSION: # secondexpansion since the patterns not just cover a filename portion, but also include a @@ -64,48 +41,22 @@ $(gb_CustomTarget_workdir)/extras/source/templates/%.xml : $(SRCDIR)/extras/sour $(call gb_ExternalExecutable_get_command,xsltproc) --nonet -o $@ $(SRCDIR)/extras/util/compact.xsl $< $(call gb_Trace_EndRange,templates/$*.xml,XSL) -# zip files to OTT +$(gb_CustomTarget_workdir)/extras/source/templates/%.odt \ +$(gb_CustomTarget_workdir)/extras/source/templates/%.otg \ +$(gb_CustomTarget_workdir)/extras/source/templates/%.oth \ +$(gb_CustomTarget_workdir)/extras/source/templates/%.otp \ +$(gb_CustomTarget_workdir)/extras/source/templates/%.ots \ $(gb_CustomTarget_workdir)/extras/source/templates/%.ott : \ $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/$$*/,\ - mimetype $$(call extras_TEMPLATES_XMLFILES_RELATIVE,$$*) ) \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/$$*/,\ - styles.xml $$(call extras_TEMPLATES_XMLFILES_RELATIVE,$$*) ) \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/$$*/,\ - META-INF/manifest.xml $$(call extras_TEMPLATES_XMLFILES_RELATIVE,$$*) ) \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/$$*/,\ - Thumbnails/thumbnail.png $$(call extras_TEMPLATES_XMLFILES_RELATIVE,$$*) ) - $(call gb_Output_announce,templates/$*.ott,$(true),ZIP,2) - $(call gb_Trace_StartRange,templates/$*.ott,ZIP) - $(call gb_Helper_abbreviate_dirs,\ - cd $(dir $<) && \ - $(call gb_Helper_wsl_path,\ - $(WSL) zip -q0X --filesync --must-match $@ mimetype && \ - $(WSL) zip -qrX --must-match $@ styles.xml META-INF/manifest.xml Thumbnails/thumbnail.png && \ - $(WSL) zip -qrX --must-match $@ $(call extras_TEMPLATES_XMLFILES_RELATIVE,$*)) \ - ) - $(call gb_Trace_EndRange,templates/$*.ott,ZIP) + mimetype META-INF/manifest.xml content.xml meta.xml styles.xml \ + $$(call extra_files_TEMPLATES_RELATIVE,$$*)) + $(run_zip_template_recipe) -# zip files to OTG -$(gb_CustomTarget_workdir)/extras/source/templates/%.otg : \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/$$*/,\ - mimetype $$(call extras_TEMPLATES_XMLFILES_RELATIVE,$$*) ) \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/$$*/,\ - content.xml $$(call extras_TEMPLATES_XMLFILES_RELATIVE,$$*) ) \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/$$*/,\ - styles.xml $$(call extras_TEMPLATES_XMLFILES_RELATIVE,$$*) ) \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/$$*/,\ - META-INF/manifest.xml $$(call extras_TEMPLATES_XMLFILES_RELATIVE,$$*) ) \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/$$*/,\ - Thumbnails/thumbnail.png $$(call extras_TEMPLATES_XMLFILES_RELATIVE,$$*) ) - $(call gb_Output_announce,templates/$*.otg,$(true),ZIP,2) - $(call gb_Trace_StartRange,templates/$*.otg,ZIP) - $(call gb_Helper_abbreviate_dirs,\ - cd $(dir $<) && \ - $(call gb_Helper_wsl_path,\ - $(WSL) zip -q0X --filesync --must-match $@ mimetype && \ - $(WSL) zip -qrX --must-match $@ content.xml styles.xml META-INF/manifest.xml Thumbnails/thumbnail.png && \ - $(WSL) zip -qrX --must-match $@ $(call extras_TEMPLATES_XMLFILES_RELATIVE,$*)) \ - ) - $(call gb_Trace_EndRange,templates/$*.otg,ZIP) +# special case for styles/Default,Modern,Simple - no content.xml for those +$(gb_CustomTarget_workdir)/extras/source/templates/styles/%.ott : \ + $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/styles/$$*/,\ + mimetype META-INF/manifest.xml meta.xml styles.xml \ + $$(call extra_files_TEMPLATES_RELATIVE,styles/$$*)) + $(run_zip_template_recipe) # vim: set noet sw=4 ts=4: diff --git a/extras/CustomTarget_tplpresnt.mk b/extras/CustomTarget_tplpresnt.mk deleted file mode 100644 index 6be2550b0098..000000000000 --- a/extras/CustomTarget_tplpresnt.mk +++ /dev/null @@ -1,143 +0,0 @@ -# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- -# -# This file is part of the LibreOffice project. -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. -# - -$(eval $(call gb_CustomTarget_CustomTarget,extras/source/templates/presnt)) - -# # for OTP templates: mimetype, content.xml, styles.xml, META-INF/manifest.xml and -# Thumbnails/thumbnail.png files are automatically added for each template -# list of meta.xml files (one per template) + other files (content.xml, manifest.rdf, settings.xml, pictures...) -extras_PRESENTATIONS_XMLFILES := \ - Beehive/meta.xml \ - Blue_Curve/meta.xml \ - Blueprint_Plans/meta.xml \ - Candy/meta.xml \ - DNA/meta.xml \ - Focus/meta.xml \ - Forestbird/meta.xml \ - Grey_Elegant/meta.xml \ - Growing_Liberty/meta.xml \ - Freshes/meta.xml \ - Inspiration/meta.xml \ - Lights/meta.xml \ - Metropolis/meta.xml \ - Midnightblue/meta.xml \ - Nature_Illustration/meta.xml \ - Pencil/meta.xml \ - Piano/meta.xml \ - Portfolio/meta.xml \ - Progress/meta.xml \ - Sunset/meta.xml \ - Vintage/meta.xml \ - Vivid/meta.xml \ - Yellow_Idea/meta.xml \ - Freshes/Object_1/content.xml \ - Freshes/Object_2/content.xml \ - Blueprint_Plans/Pictures/10000000000000580000001F99D2A38C014B254B.png \ - Blueprint_Plans/Pictures/100000000000033C0000026D847ACE982C6E20B6.png \ - Blueprint_Plans/Pictures/10000000000004220000031A5C2E04AB7C51FB60.png \ - Blueprint_Plans/Pictures/1000020100000500000002D03918081590A75FCF.png \ - Blueprint_Plans/Pictures/1000020100000500000002D0F25E20EA381A5EBD.png \ - Candy/Pictures/10000000000004A800000500DD5BB9FFED422172.png \ - Candy/Pictures/10000000000005000000050014DEA376B6E67205.png \ - Candy/Pictures/1000000000000780000004383B6CE268A9802A07.png \ - Candy/Pictures/10000000000007800000043870026B1FACED0D1B.png \ - Freshes/Pictures/10000000000001980000067FB46981E5FBCD5A53.jpg \ - Freshes/Pictures/10000000000002C5000003C02FC12A07C25F42DF.jpg \ - Freshes/Pictures/10000000000002D50000067FACCA26111F046EB5.jpg \ - Freshes/Pictures/100000000000030F0000036F55A62FC34FCAB38E.jpg \ - Freshes/Pictures/100000000000049100000359E7B1AC100BA62FBB.jpg \ - Freshes/Pictures/10000000000006D7000003A637B7BBC50EDF4D24.jpg \ - Freshes/Pictures/1000000000000B8B0000067F7C4C059ECC323C6F.jpg \ - Grey_Elegant/Pictures/1000000000000007000000075D9D31963C8C0E25.jpg \ - Grey_Elegant/Pictures/1000000000000007000000076677E5BE1EDAF335.jpg \ - Grey_Elegant/Pictures/10000000000001920000019230489F7A89351262.jpg \ - Grey_Elegant/Pictures/10000109000002950000029599843C084F54196C.svg \ - Grey_Elegant/Pictures/100001E0000002950000029531405702AAD800D0.svg \ - Grey_Elegant/Pictures/10000201000000190000001945D72F17575B71B4.png \ - Grey_Elegant/Pictures/1000020100000019000000194F0EE08BB7018624.png \ - Grey_Elegant/Pictures/10000201000000190000001967D610D5BD5B9486.png \ - Grey_Elegant/Pictures/100002010000001900000019B19ADF33FD67D860.png \ - Grey_Elegant/Pictures/100002010000001900000019CA03B954885E470D.png \ - Grey_Elegant/Pictures/10000201000003300000026455AC9786240DB2F8.png \ - Grey_Elegant/Pictures/100002510000029500000295D9236A158400ED63.svg \ - Grey_Elegant/Pictures/100002800000029500000295458C6106AED5C839.svg \ - Grey_Elegant/Pictures/100002CA0000029500000295A190AE1D987B676B.svg \ - Grey_Elegant/Pictures/1000DC810000A57800007C20AABC768B7E7ACB30.svg \ - Growing_Liberty/Pictures/10000000000007800000043801760C0AF0E62E0B.jpg \ - Growing_Liberty/Pictures/10000000000007800000043827B5F54D1F4F498F.jpg \ - Growing_Liberty/Pictures/100002010000016A0000029374C9F2B8F26392AD.png \ - Growing_Liberty/Pictures/10000201000001F000000351DA39462E363D7ED3.png \ - Growing_Liberty/Pictures/10000201000001F10000029333ED1BC48076B5C4.png \ - Growing_Liberty/Pictures/10000201000001F3000003548E51808DE171DA02.png \ - Growing_Liberty/Pictures/10000C1C0000034200004A6A2C92F38BC117DD3C.svg \ - Growing_Liberty/Pictures/10000C340000844B000003422549B923A55839CC.svg \ - Growing_Liberty/Pictures/10000C8F0000034200004A6ABD021DA9BD39254C.svg \ - Growing_Liberty/Pictures/10000CA90000844B000003426738F0E80CCFF9F3.svg \ - Metropolis/Pictures/10000201000003AF000002126A94207C4902B60B.png \ - Metropolis/Pictures/100021B200008D2E00004F60B312A649B9EEC188.svg \ - Nature_Illustration/Pictures/10000000000004210000031931EA92AB7FB2FD6C.jpg \ - Nature_Illustration/Pictures/100000000000042100000319892187DC121460D8.jpg \ - Pencil/Pictures/1000020100000088000000870A26C51C993940C3.png \ - Pencil/Pictures/100002010000037D0000001C2F14EFE8274AD9FC.png \ - Pencil/Pictures/1000020100000402000000A2F7F509AE74DE6C69.png \ - Piano/Pictures/100000000000035400000120266623530F1969D0.png \ - Piano/Pictures/100002010000033A0000006EDD62437E1CC42053.png \ - Vintage/Pictures/10000000000000580000001F99D2A38C014B254B.png \ - Vintage/Pictures/10000201000004B000000337490AE22881331C9B.png \ - Vintage/Pictures/10000201000004B00000033776CA70A4BFE2196B.png \ - Vintage/Pictures/10000201000004B0000003379D1127938561C230.png \ - Vintage/Pictures/10000201000004B000000337D99A2303560BD59C.png \ - -# param: style-base (e.g. Modern) -extras_PRESNT_XMLFILES_RELATIVE = $(subst $(1)/,,$(filter $(1)/%,$(extras_PRESENTATIONS_XMLFILES))) - -.SECONDEXPANSION: -# secondexpansion since the patterns not just cover a filename portion, but also include a -# directory portion withdifferent number of elements -# copy regular files (mimetype, *.jpg, *.png, *.rdf, *.svg, *.svm, …) -$(gb_CustomTarget_workdir)/extras/source/templates/presnt/% : $(SRCDIR)/extras/source/templates/presnt/% \ - | $$(dir $(gb_CustomTarget_workdir)/extras/source/templates/presnt/$$*).dir - $(call gb_Output_announce,templates/presnt/$*,$(true),CPY,1) - $(call gb_Trace_StartRange,templates/presnt/$*,CPY) - cp $< $@ - $(call gb_Trace_EndRange,templates/presnt/$*,CPY) - -# test and copy xml files -$(gb_CustomTarget_workdir)/extras/source/templates/presnt/%.xml : $(SRCDIR)/extras/source/templates/presnt/%.xml \ - | $(call gb_ExternalExecutable_get_dependencies,xsltproc) \ - $$(dir $(gb_CustomTarget_workdir)/extras/source/templates/presnt/$$*.xml).dir - $(call gb_Output_announce,templates/presnt/$*.xml,$(true),XSL,1) - $(call gb_Trace_StartRange,templates/presnt/$*.xml,XSL) - $(call gb_ExternalExecutable_get_command,xsltproc) --nonet -o $@ $(SRCDIR)/extras/util/compact.xsl $< - $(call gb_Trace_EndRange,templates/presnt/$*.xml,XSL) - -# zip files to OTP -$(gb_CustomTarget_workdir)/extras/source/templates/presnt/%.otp : \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/presnt/$$*/,\ - mimetype $$(call extras_PRESNT_XMLFILES_RELATIVE,$$*) ) \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/presnt/$$*/,\ - content.xml $$(call extras_PRESNT_XMLFILES_RELATIVE,$$*) ) \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/presnt/$$*/,\ - styles.xml $$(call extras_PRESNT_XMLFILES_RELATIVE,$$*) ) \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/presnt/$$*/,\ - META-INF/manifest.xml $$(call extras_PRESNT_XMLFILES_RELATIVE,$$*) ) \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/presnt/$$*/,\ - Thumbnails/thumbnail.png $$(call extras_PRESNT_XMLFILES_RELATIVE,$$*) ) - $(call gb_Output_announce,templates/presnt/$*.otp,$(true),ZIP,2) - $(call gb_Trace_StartRange,templates/presnt/$*.otp,ZIP) - $(call gb_Helper_abbreviate_dirs,\ - cd $(dir $<) && \ - $(call gb_Helper_wsl_path,\ - $(WSL) zip -q0X --filesync --must-match $@ mimetype && \ - $(WSL) zip -qrX --must-match $@ content.xml styles.xml META-INF/manifest.xml Thumbnails/thumbnail.png && \ - $(WSL) zip -qrX --must-match $@ $(call extras_PRESNT_XMLFILES_RELATIVE,$*)) \ - ) - $(call gb_Trace_EndRange,templates/presnt/$*.otp,ZIP) - -# vim: set noet sw=4 ts=4: diff --git a/extras/CustomTarget_tplwizard.mk b/extras/CustomTarget_tplwizard.mk deleted file mode 100644 index 3e54d0b5e99c..000000000000 --- a/extras/CustomTarget_tplwizard.mk +++ /dev/null @@ -1,241 +0,0 @@ -# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- -# -# This file is part of the LibreOffice project. -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. -# - -$(eval $(call gb_CustomTarget_CustomTarget,extras/source/templates/wizard)) - -# mimetype, content.xml, settings.xml, styles.xml and META-INF/manifest.xml -# files are automatically added for each template -# list of meta.xml files (one per template) + other files (manifest.rdf, pictures...) -extras_WIZARD_XMLFILES := \ - agenda/10grey/meta.xml \ - agenda/1simple/meta.xml \ - agenda/2elegant/meta.xml \ - agenda/3modern/meta.xml \ - agenda/4classic/meta.xml \ - agenda/5blue/meta.xml \ - agenda/6orange/meta.xml \ - agenda/7red/meta.xml \ - agenda/8green/meta.xml \ - agenda/9colorful/meta.xml \ - agenda/aw-10grey/meta.xml \ - agenda/aw-1simple/meta.xml \ - agenda/aw-2elegant/meta.xml \ - agenda/aw-3modern/meta.xml \ - agenda/aw-4classic/meta.xml \ - agenda/aw-5blue/meta.xml \ - agenda/aw-6orange/meta.xml \ - agenda/aw-7red/meta.xml \ - agenda/aw-8green/meta.xml \ - agenda/aw-9colorful/meta.xml \ - agenda/10grey/manifest.rdf \ - agenda/1simple/manifest.rdf \ - agenda/2elegant/manifest.rdf \ - agenda/3modern/manifest.rdf \ - agenda/4classic/manifest.rdf \ - agenda/5blue/manifest.rdf \ - agenda/6orange/manifest.rdf \ - agenda/7red/manifest.rdf \ - agenda/8green/manifest.rdf \ - agenda/9colorful/manifest.rdf \ - agenda/aw-10grey/manifest.rdf \ - agenda/aw-1simple/manifest.rdf \ - agenda/aw-2elegant/manifest.rdf \ - agenda/aw-3modern/manifest.rdf \ - agenda/aw-4classic/manifest.rdf \ - agenda/aw-5blue/manifest.rdf \ - agenda/aw-6orange/manifest.rdf \ - agenda/aw-7red/manifest.rdf \ - agenda/aw-8green/manifest.rdf \ - agenda/aw-9colorful/manifest.rdf \ - agenda/2elegant/Pictures/1000000000000280000000052876A81A.gif \ - agenda/2elegant/Pictures/100002000000008F0000000A83659D51.gif \ - agenda/aw-2elegant/Pictures/1000000000000280000000052876A81A.gif \ - agenda/aw-2elegant/Pictures/100002000000008F0000000A83659D51.gif \ - fax/bus-classic_f/meta.xml \ - fax/bus-classic-pri_f/meta.xml \ - fax/bus-modern_f/meta.xml \ - fax/bus-modern-pri_f/meta.xml \ - fax/pri-bottle_f/meta.xml \ - fax/pri-fax_f/meta.xml \ - fax/pri-lines_f/meta.xml \ - fax/pri-marine_f/meta.xml \ - fax/bus-classic_f/manifest.rdf \ - fax/bus-classic-pri_f/manifest.rdf \ - fax/bus-modern_f/manifest.rdf \ - fax/bus-modern-pri_f/manifest.rdf \ - fax/bus-classic_f/Pictures/200000520000271100001F73A977C564.wmf \ - fax/bus-modern_f/Pictures/2000004E0000271100001F73772F7F48.wmf \ - fax/pri-bottle_f/Pictures/200002EB000022DA000024E1F891208C.wmf \ - fax/pri-fax_f/Pictures/2000032600002711000026A54A905481.wmf \ - fax/pri-marine_f/Pictures/2000004B0000227F0000227886F3FC0F.wmf \ - letter/bus-elegant_l/meta.xml \ - letter/bus-modern_l/meta.xml \ - letter/bus-office_l/meta.xml \ - letter/off-elegant_l/meta.xml \ - letter/off-modern_l/meta.xml \ - letter/off-office_l/meta.xml \ - letter/pri-bottle_l/meta.xml \ - letter/pri-mail_l/meta.xml \ - letter/pri-marine_l/meta.xml \ - letter/pri-redline_l/meta.xml \ - letter/bus-elegant_l/manifest.rdf \ - letter/bus-modern_l/manifest.rdf \ - letter/bus-office_l/manifest.rdf \ - letter/off-elegant_l/manifest.rdf \ - letter/off-modern_l/manifest.rdf \ - letter/off-office_l/manifest.rdf \ - letter/bus-elegant_l/Pictures/10000000000001B8000000824B7EA208.png \ - letter/bus-modern_l/Pictures/10000000000001B8000000824B7EA208.png \ - letter/bus-office_l/Pictures/10000000000001B8000000824B7EA208.png \ - letter/off-elegant_l/Pictures/2000000D00000434000006FD6841386B.svm \ - letter/off-modern_l/Pictures/10000000000000110000001142D1547F.png \ - letter/pri-bottle_l/Pictures/200002EB000022DA000024E1F891208C.wmf \ - letter/pri-mail_l/Pictures/200000430000271100001205CAE80946.wmf \ - letter/pri-marine_l/Pictures/2000004B0000227F0000227886F3FC0F.wmf \ - report/cnt-01/meta.xml \ - report/cnt-011/meta.xml \ - report/cnt-012/meta.xml \ - report/cnt-02/meta.xml \ - report/cnt-021/meta.xml \ - report/cnt-022/meta.xml \ - report/cnt-03/meta.xml \ - report/cnt-031/meta.xml \ - report/cnt-032/meta.xml \ - report/cnt-04/meta.xml \ - report/cnt-041/meta.xml \ - report/cnt-042/meta.xml \ - report/cnt-05/meta.xml \ - report/cnt-051/meta.xml \ - report/cnt-052/meta.xml \ - report/cnt-06/meta.xml \ - report/cnt-061/meta.xml \ - report/cnt-062/meta.xml \ - report/cnt-default/meta.xml \ - report/stl-01/meta.xml \ - report/stl-02/meta.xml \ - report/stl-03/meta.xml \ - report/stl-04/meta.xml \ - report/stl-05/meta.xml \ - report/stl-06/meta.xml \ - report/stl-07/meta.xml \ - report/stl-08/meta.xml \ - report/stl-09/meta.xml \ - report/stl-default/meta.xml \ - report/stl-01/manifest.rdf \ - report/stl-02/manifest.rdf \ - report/stl-03/manifest.rdf \ - report/stl-04/manifest.rdf \ - report/stl-05/manifest.rdf \ - report/stl-06/manifest.rdf \ - report/stl-07/manifest.rdf \ - report/stl-08/manifest.rdf \ - report/stl-09/manifest.rdf \ - report/stl-default/manifest.rdf \ - report/stl-01/Pictures/100002000000001400000014E87B6AC5.gif \ - report/stl-01/Pictures/2000018100001CB100002711BFED37A8.wmf \ - report/stl-02/Pictures/2000009E0000380100002657BA019D86.wmf \ - report/stl-03/Pictures/2000024900002711000021F4DCB2DF4A.wmf \ - report/stl-04/Pictures/10000000000000400000004077CDC8F9.png \ - report/stl-04/Pictures/10000000000001C6000000E44DCA6C94.jpg \ - report/stl-05/Pictures/2000036D000027110000145EB7E93049.wmf \ - report/stl-06/Pictures/100000000000005A000000268DE98CCE.gif \ - report/stl-06/Pictures/100000000000021B000001E8BE936AB6.gif \ - report/stl-08/Pictures/100000000000005E0000005E97FB9EF6.jpg \ - report/stl-09/Pictures/10000000000000050000004D32652675.jpg \ - report/stl-09/Pictures/100002000000001400000014E87B6AC5.gif \ - report/stl-09/Pictures/2000025100001D92000017719EB70CFB.wmf \ - styles/black_white/meta.xml \ - styles/blackberry/meta.xml \ - styles/default/meta.xml \ - styles/diner/meta.xml \ - styles/fall/meta.xml \ - styles/glacier/meta.xml \ - styles/green_grapes/meta.xml \ - styles/jeans/meta.xml \ - styles/marine/meta.xml \ - styles/millennium/meta.xml \ - styles/nature/meta.xml \ - styles/neon/meta.xml \ - styles/night/meta.xml \ - styles/nostalgic/meta.xml \ - styles/pastell/meta.xml \ - styles/pool/meta.xml \ - styles/pumpkin/meta.xml \ - styles/xos/meta.xml \ - -# param: style-base (e.g. agenda/10grey) -extras_WIZARD_XMLFILES_RELATIVE = $(subst $(1)/,,$(filter $(1)/%,$(extras_WIZARD_XMLFILES))) - -.SECONDEXPANSION: -# secondexpansion since the patterns not just cover a filename portion, but also include a -# directory portion with different number of elements -# copy regular files (mimetype, *.jpg, *.png, *.rdf, *.svg, *.svm, …) -$(gb_CustomTarget_workdir)/extras/source/templates/wizard/% : $(SRCDIR)/extras/source/templates/wizard/% \ - | $$(dir $(gb_CustomTarget_workdir)/extras/source/templates/wizard/$$*).dir - $(call gb_Output_announce,templates/wizard/$*,$(true),CPY,1) - $(call gb_Trace_StartRange,templates/wizard/$*,CPY) - cp $< $@ - $(call gb_Trace_EndRange,templates/wizard/$*,CPY) - -# test and copy xml files -$(gb_CustomTarget_workdir)/extras/source/templates/wizard/%.xml : $(SRCDIR)/extras/source/templates/wizard/%.xml \ - | $(call gb_ExternalExecutable_get_dependencies,xsltproc) \ - $$(dir $(gb_CustomTarget_workdir)/extras/source/templates/wizard/$$*.xml).dir - $(call gb_Output_announce,templates/wizard/$*.xml,$(true),XSL,1) - $(call gb_Trace_StartRange,templates/wizard/$*.xml,XSL) - $(call gb_ExternalExecutable_get_command,xsltproc) --nonet -o $@ $(SRCDIR)/extras/util/compact.xsl $< - $(call gb_Trace_EndRange,templates/wizard/$*.xml,XSL) - -# zip files to OTT -$(gb_CustomTarget_workdir)/extras/source/templates/wizard/%.ott : \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/wizard/$$*/,\ - mimetype $$(call extras_WIZARD_XMLFILES_RELATIVE,$$*) ) \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/wizard/$$*/,\ - content.xml $$(call extras_WIZARD_XMLFILES_RELATIVE,$$*) ) \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/wizard/$$*/,\ - settings.xml $$(call extras_WIZARD_XMLFILES_RELATIVE,$$*) ) \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/wizard/$$*/,\ - styles.xml $$(call extras_WIZARD_XMLFILES_RELATIVE,$$*) ) \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/wizard/$$*/,\ - META-INF/manifest.xml $$(call extras_WIZARD_XMLFILES_RELATIVE,$$*) ) - $(call gb_Output_announce,templates/wizard/$*.ott,$(true),ZIP,2) - $(call gb_Trace_StartRange,templates/wizard/$*.ott,ZIP) - $(call gb_Helper_abbreviate_dirs,\ - cd $(dir $<) && \ - $(call gb_Helper_wsl_path,\ - $(WSL) zip -q0X --filesync --must-match $@ mimetype && \ - $(WSL) zip -qrX --must-match $@ content.xml settings.xml styles.xml META-INF/manifest.xml && \ - $(WSL) zip -qrX --must-match $@ $(call extras_WIZARD_XMLFILES_RELATIVE,$*)) \ - ) - $(call gb_Trace_EndRange,templates/wizard/$*.ott,ZIP) - -# zip files to OTS -$(gb_CustomTarget_workdir)/extras/source/templates/wizard/%.ots : \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/wizard/$$*/,\ - mimetype $$(call extras_WIZARD_XMLFILES_RELATIVE,$$*) ) \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/wizard/$$*/,\ - content.xml $$(call extras_WIZARD_XMLFILES_RELATIVE,$$*) ) \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/wizard/$$*/,\ - settings.xml $$(call extras_WIZARD_XMLFILES_RELATIVE,$$*) ) \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/wizard/$$*/,\ - styles.xml $$(call extras_WIZARD_XMLFILES_RELATIVE,$$*) ) \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/wizard/$$*/,\ - META-INF/manifest.xml $$(call extras_WIZARD_XMLFILES_RELATIVE,$$*) ) - $(call gb_Output_announce,templates/wizard/$*.ots,$(true),ZIP,2) - $(call gb_Trace_StartRange,templates/wizard/$*.ots,ZIP) - $(call gb_Helper_abbreviate_dirs,\ - cd $(dir $<) && \ - $(call gb_Helper_wsl_path,\ - $(WSL) zip -q0X --filesync --must-match $@ mimetype && \ - $(WSL) zip -qrX --must-match $@ content.xml settings.xml styles.xml META-INF/manifest.xml && \ - $(WSL) zip -qrX --must-match $@ $(call extras_WIZARD_XMLFILES_RELATIVE,$*)) \ - ) - $(call gb_Trace_EndRange,templates/wizard/$*.ots,ZIP) - -# vim: set noet sw=4 ts=4: diff --git a/extras/CustomTarget_tplwizdesktop.mk b/extras/CustomTarget_tplwizdesktop.mk deleted file mode 100644 index cb51cf5400ca..000000000000 --- a/extras/CustomTarget_tplwizdesktop.mk +++ /dev/null @@ -1,89 +0,0 @@ -# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- -# -# This file is part of the LibreOffice project. -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. -# - -$(eval $(call gb_CustomTarget_CustomTarget,extras/source/templates/wizard)) - -# mimetype, content.xml, meta.xml, styles.xml and META-INF/manifest.xml -# files are automatically added for each template -# list of meta.xml files (one per template) + other files (manifest.rdf, pictures...) -extras_WIZDESKTOP_XMLFILES := \ - desktop/html/meta.xml \ - desktop/idxexample/meta.xml \ - desktop/idxexample/Pictures/2000008600001923000012C24E0D0895.wmf \ - -# param: style-base (e.g. agenda/10grey) -extras_WIZDESKTOP_XMLFILES_RELATIVE = $(subst $(1)/,,$(filter $(1)/%,$(extras_WIZDESKTOP_XMLFILES))) - -.SECONDEXPANSION: -# secondexpansion since the patterns not just cover a filename portion, but also include a -# directory portion with different number of elements -# copy regular files (mimetype, *.jpg, *.png, *.rdf, *.svg, *.svm, …) -$(gb_CustomTarget_workdir)/extras/source/templates/wizard/% : $(SRCDIR)/extras/source/templates/wizard/% \ - | $$(dir $(gb_CustomTarget_workdir)/extras/source/templates/wizard/$$*).dir - $(call gb_Output_announce,templates/wizard/$*,$(true),CPY,1) - $(call gb_Trace_StartRange,templates/wizard/$*,CPY) - cp $< $@ - $(call gb_Trace_EndRange,templates/wizard/$*,CPY) - -# test and copy xml files -$(gb_CustomTarget_workdir)/extras/source/templates/wizard/%.xml : $(SRCDIR)/extras/source/templates/wizard/%.xml \ - | $(call gb_ExternalExecutable_get_dependencies,xsltproc) \ - $$(dir $(gb_CustomTarget_workdir)/extras/source/templates/wizard/$$*.xml).dir - $(call gb_Output_announce,templates/wizard/$*.xml,$(true),XSL,1) - $(call gb_Trace_StartRange,templates/wizard/$*.xml,XSL) - $(call gb_ExternalExecutable_get_command,xsltproc) --nonet -o $@ $(SRCDIR)/extras/util/compact.xsl $< - $(call gb_Trace_EndRange,templates/wizard/$*.xml,XSL) - -# zip files to OTH -$(gb_CustomTarget_workdir)/extras/source/templates/wizard/%.oth : \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/wizard/$$*/,\ - mimetype $$(call extras_WIZDESKTOP_XMLFILES_RELATIVE,$$*) ) \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/wizard/$$*/,\ - content.xml $$(call extras_WIZDESKTOP_XMLFILES_RELATIVE,$$*) ) \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/wizard/$$*/,\ - styles.xml $$(call extras_WIZDESKTOP_XMLFILES_RELATIVE,$$*) ) \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/wizard/$$*/,\ - settings.xml $$(call extras_WIZDESKTOP_XMLFILES_RELATIVE,$$*) ) \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/wizard/$$*/,\ - META-INF/manifest.xml $$(call extras_WIZDESKTOP_XMLFILES_RELATIVE,$$*) ) - $(call gb_Output_announce,templates/wizard/$*.oth,$(true),ZIP,2) - $(call gb_Trace_StartRange,templates/wizard/$*.oth,ZIP) - $(call gb_Helper_abbreviate_dirs,\ - cd $(dir $<) && \ - $(call gb_Helper_wsl_path,\ - $(WSL) zip -q0X --filesync --must-match $@ mimetype && \ - $(WSL) zip -qrX --must-match $@ content.xml settings.xml styles.xml META-INF/manifest.xml && \ - $(WSL) zip -qrX --must-match $@ $(call extras_WIZDESKTOP_XMLFILES_RELATIVE,$*)) \ - ) - $(call gb_Trace_EndRange,templates/wizard/$*.oth,ZIP) - -# zip files to ODT -$(gb_CustomTarget_workdir)/extras/source/templates/wizard/%.odt : \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/wizard/$$*/,\ - mimetype $$(call extras_WIZDESKTOP_XMLFILES_RELATIVE,$$*) ) \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/wizard/$$*/,\ - content.xml $$(call extras_WIZDESKTOP_XMLFILES_RELATIVE,$$*) ) \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/wizard/$$*/,\ - settings.xml $$(call extras_WIZDESKTOP_XMLFILES_RELATIVE,$$*) ) \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/wizard/$$*/,\ - styles.xml $$(call extras_WIZDESKTOP_XMLFILES_RELATIVE,$$*) ) \ - $$(addprefix $(gb_CustomTarget_workdir)/extras/source/templates/wizard/$$*/,\ - META-INF/manifest.xml $$(call extras_WIZDESKTOP_XMLFILES_RELATIVE,$$*) ) - $(call gb_Output_announce,templates/wizard/$*.odt,$(true),ZIP,2) - $(call gb_Trace_StartRange,templates/wizard/$*.odt,ZIP) - $(call gb_Helper_abbreviate_dirs,\ - cd $(dir $<) && \ - $(call gb_Helper_wsl_path,\ - $(WSL) zip -q0X --filesync --must-match $@ mimetype && \ - $(WSL) zip -qrX --must-match $@ content.xml settings.xml styles.xml META-INF/manifest.xml && \ - $(WSL) zip -qrX --must-match $@ $(call extras_WIZDESKTOP_XMLFILES_RELATIVE,$*)) \ - ) - $(call gb_Trace_EndRange,templates/wizard/$*.odt,ZIP) - -# vim: set noet sw=4 ts=4: diff --git a/extras/Module_extras.mk b/extras/Module_extras.mk index 38632ca5b2a3..0c04202e8a20 100644 --- a/extras/Module_extras.mk +++ b/extras/Module_extras.mk @@ -15,9 +15,6 @@ $(eval $(call gb_Module_add_targets,extras,\ CustomTarget_glade \ CustomTarget_gallsystem \ CustomTarget_templates \ - CustomTarget_tplpresnt \ - CustomTarget_tplwizard \ - CustomTarget_tplwizdesktop \ Package_autocorr \ Package_autotextuser \ Package_cfgsrvnolang \ diff --git a/extras/README.md b/extras/README.md index 4c5fbdd2da2b..11a4ee3ef160 100644 --- a/extras/README.md +++ b/extras/README.md @@ -35,8 +35,8 @@ Contains templates, clipart galleries, palettes, symbol font, autocorrections, a + choose a template category `` + unzip `Foo.ot?` (? = p, t, s or g) in `extras/source/templates//Foo` (no space allowed in any file names) + add `/Foo.ot? /` in `Package_templates.mk` (or `Package_tplpresnt.mk` if it's a presentation) - + in `CustomTarget_templates.mk` (or `CustomTarget_tplpresnt.mk` if it's a presentation): - + add `/Foo/meta.xml /` and all files which are not automatically added in `extras_TEMPLATES_XMLFILES` (or `extras_PRESENTATIONS_XMLFILES` for presentation) + + in `template_files.mk`: + + add e.g. `/Foo/settings.xml` (and all other files which are not automatically added) to `extra_files_COMMON` (or `extra_files_PRESENTATIONS` in case of a presentation template) + for translation of template name + define a new STR_TEMPLATE_NAMExx in include/sfx2/strings.hrc + define a new STR_TEMPLATE_NAMExx_DEF in sfx2/inc/strings.hxx diff --git a/extras/source/autocorr/lang/el/DocumentList.xml b/extras/source/autocorr/lang/el/DocumentList.xml index 1cc23c2b3132..3668f00dd9d0 100644 --- a/extras/source/autocorr/lang/el/DocumentList.xml +++ b/extras/source/autocorr/lang/el/DocumentList.xml @@ -1,5 +1,7 @@ + + diff --git a/extras/source/autocorr/lang/nl-BE/DocumentList.xml b/extras/source/autocorr/lang/nl-BE/DocumentList.xml index aad43a2ac536..76521b3fc5b1 100644 --- a/extras/source/autocorr/lang/nl-BE/DocumentList.xml +++ b/extras/source/autocorr/lang/nl-BE/DocumentList.xml @@ -10,6 +10,10 @@ + + + + diff --git a/extras/source/autocorr/lang/nl/DocumentList.xml b/extras/source/autocorr/lang/nl/DocumentList.xml index b96d88166d7b..cea1f26bccca 100644 --- a/extras/source/autocorr/lang/nl/DocumentList.xml +++ b/extras/source/autocorr/lang/nl/DocumentList.xml @@ -10,6 +10,10 @@ + + + + diff --git a/extras/template_files.mk b/extras/template_files.mk new file mode 100644 index 000000000000..57e006f6e774 --- /dev/null +++ b/extras/template_files.mk @@ -0,0 +1,307 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +# this file lists the contents/parts that make up the individual templates that are created during +# the build. +# +# The Package_*.mk files list the files that should be built and delivered to the installation tree, +# and CustomTarget_templates.mk has the actual recipes to assemble and package the template files. +# +# The split used here follows the split from the Package_*mk files, but that split is arbitrary/ +# artificial, they are ultimately combined into a single variable. +# A split only matters on the Package level, but even there only the wizard/desktop files are +# "special" (they are always created/packaged, while the rests is optional/behind a WITH_TEMPLATES +# conditional) + +# Specify filenames relative to SRC_ROOT/extras/source/templates +# mimetype, META-INF/manifest.xml, content.xml, meta.xml and styles.xml are always assumed to be +# present and can be omitted + +extra_files_COMMON := \ + draw/bpmn/Thumbnails/thumbnail.png \ + l10n/ja_ott_normal/manifest.rdf \ + l10n/ja_ott_normal/settings.xml \ + l10n/ja_ott_normal/Thumbnails/thumbnail.png \ + l10n/zh_CN_ott_normal/Thumbnails/thumbnail.png \ + officorr/Modern_business_letter_sans_serif/manifest.rdf \ + officorr/Modern_business_letter_sans_serif/Thumbnails/thumbnail.png \ + officorr/Modern_business_letter_serif/manifest.rdf \ + officorr/Modern_business_letter_serif/Thumbnails/thumbnail.png \ + offimisc/Businesscard-with-logo/manifest.rdf \ + offimisc/Businesscard-with-logo/Pictures/10000201000001F4000000A0108F3F06.png \ + offimisc/Businesscard-with-logo/settings.xml \ + offimisc/Businesscard-with-logo/Thumbnails/thumbnail.png \ + personal/CV/manifest.rdf \ + personal/CV/Thumbnails/thumbnail.png \ + personal/Resume1page/manifest.rdf \ + personal/Resume1page/Thumbnails/thumbnail.png \ + styles/Default/Thumbnails/thumbnail.png \ + styles/Modern/Thumbnails/thumbnail.png \ + styles/Simple/Thumbnails/thumbnail.png \ + + +extra_files_PRESENTATIONS := \ + presnt/Beehive/Thumbnails/thumbnail.png \ + presnt/Blue_Curve/Thumbnails/thumbnail.png \ + presnt/Blueprint_Plans/Pictures/10000000000000580000001F99D2A38C014B254B.png \ + presnt/Blueprint_Plans/Pictures/100000000000033C0000026D847ACE982C6E20B6.png \ + presnt/Blueprint_Plans/Pictures/10000000000004220000031A5C2E04AB7C51FB60.png \ + presnt/Blueprint_Plans/Pictures/1000020100000500000002D03918081590A75FCF.png \ + presnt/Blueprint_Plans/Pictures/1000020100000500000002D0F25E20EA381A5EBD.png \ + presnt/Blueprint_Plans/Thumbnails/thumbnail.png \ + presnt/Candy/Pictures/10000000000004A800000500DD5BB9FFED422172.png \ + presnt/Candy/Pictures/10000000000005000000050014DEA376B6E67205.png \ + presnt/Candy/Pictures/1000000000000780000004383B6CE268A9802A07.png \ + presnt/Candy/Pictures/10000000000007800000043870026B1FACED0D1B.png \ + presnt/Candy/Thumbnails/thumbnail.png \ + presnt/DNA/Thumbnails/thumbnail.png \ + presnt/Focus/Thumbnails/thumbnail.png \ + presnt/Forestbird/Thumbnails/thumbnail.png \ + presnt/Freshes/Object_1/content.xml \ + presnt/Freshes/Object_2/content.xml \ + presnt/Freshes/Pictures/10000000000001980000067FB46981E5FBCD5A53.jpg \ + presnt/Freshes/Pictures/10000000000002C5000003C02FC12A07C25F42DF.jpg \ + presnt/Freshes/Pictures/10000000000002D50000067FACCA26111F046EB5.jpg \ + presnt/Freshes/Pictures/100000000000030F0000036F55A62FC34FCAB38E.jpg \ + presnt/Freshes/Pictures/100000000000049100000359E7B1AC100BA62FBB.jpg \ + presnt/Freshes/Pictures/10000000000006D7000003A637B7BBC50EDF4D24.jpg \ + presnt/Freshes/Pictures/1000000000000B8B0000067F7C4C059ECC323C6F.jpg \ + presnt/Freshes/Thumbnails/thumbnail.png \ + presnt/Grey_Elegant/Pictures/1000000000000007000000075D9D31963C8C0E25.jpg \ + presnt/Grey_Elegant/Pictures/1000000000000007000000076677E5BE1EDAF335.jpg \ + presnt/Grey_Elegant/Pictures/10000000000001920000019230489F7A89351262.jpg \ + presnt/Grey_Elegant/Pictures/10000109000002950000029599843C084F54196C.svg \ + presnt/Grey_Elegant/Pictures/100001E0000002950000029531405702AAD800D0.svg \ + presnt/Grey_Elegant/Pictures/10000201000000190000001945D72F17575B71B4.png \ + presnt/Grey_Elegant/Pictures/1000020100000019000000194F0EE08BB7018624.png \ + presnt/Grey_Elegant/Pictures/10000201000000190000001967D610D5BD5B9486.png \ + presnt/Grey_Elegant/Pictures/100002010000001900000019B19ADF33FD67D860.png \ + presnt/Grey_Elegant/Pictures/100002010000001900000019CA03B954885E470D.png \ + presnt/Grey_Elegant/Pictures/10000201000003300000026455AC9786240DB2F8.png \ + presnt/Grey_Elegant/Pictures/100002510000029500000295D9236A158400ED63.svg \ + presnt/Grey_Elegant/Pictures/100002800000029500000295458C6106AED5C839.svg \ + presnt/Grey_Elegant/Pictures/100002CA0000029500000295A190AE1D987B676B.svg \ + presnt/Grey_Elegant/Pictures/1000DC810000A57800007C20AABC768B7E7ACB30.svg \ + presnt/Grey_Elegant/Thumbnails/thumbnail.png \ + presnt/Growing_Liberty/Pictures/10000000000007800000043801760C0AF0E62E0B.jpg \ + presnt/Growing_Liberty/Pictures/10000000000007800000043827B5F54D1F4F498F.jpg \ + presnt/Growing_Liberty/Pictures/100002010000016A0000029374C9F2B8F26392AD.png \ + presnt/Growing_Liberty/Pictures/10000201000001F000000351DA39462E363D7ED3.png \ + presnt/Growing_Liberty/Pictures/10000201000001F10000029333ED1BC48076B5C4.png \ + presnt/Growing_Liberty/Pictures/10000201000001F3000003548E51808DE171DA02.png \ + presnt/Growing_Liberty/Pictures/10000C1C0000034200004A6A2C92F38BC117DD3C.svg \ + presnt/Growing_Liberty/Pictures/10000C340000844B000003422549B923A55839CC.svg \ + presnt/Growing_Liberty/Pictures/10000C8F0000034200004A6ABD021DA9BD39254C.svg \ + presnt/Growing_Liberty/Pictures/10000CA90000844B000003426738F0E80CCFF9F3.svg \ + presnt/Growing_Liberty/Thumbnails/thumbnail.png \ + presnt/Inspiration/Thumbnails/thumbnail.png \ + presnt/Lights/Thumbnails/thumbnail.png \ + presnt/Metropolis/Pictures/10000201000003AF000002126A94207C4902B60B.png \ + presnt/Metropolis/Pictures/100021B200008D2E00004F60B312A649B9EEC188.svg \ + presnt/Metropolis/Thumbnails/thumbnail.png \ + presnt/Midnightblue/Thumbnails/thumbnail.png \ + presnt/Nature_Illustration/Pictures/10000000000004210000031931EA92AB7FB2FD6C.jpg \ + presnt/Nature_Illustration/Pictures/100000000000042100000319892187DC121460D8.jpg \ + presnt/Nature_Illustration/Thumbnails/thumbnail.png \ + presnt/Pencil/Pictures/1000020100000088000000870A26C51C993940C3.png \ + presnt/Pencil/Pictures/100002010000037D0000001C2F14EFE8274AD9FC.png \ + presnt/Pencil/Pictures/1000020100000402000000A2F7F509AE74DE6C69.png \ + presnt/Pencil/Thumbnails/thumbnail.png \ + presnt/Piano/Pictures/100000000000035400000120266623530F1969D0.png \ + presnt/Piano/Pictures/100002010000033A0000006EDD62437E1CC42053.png \ + presnt/Piano/Thumbnails/thumbnail.png \ + presnt/Portfolio/Thumbnails/thumbnail.png \ + presnt/Progress/Thumbnails/thumbnail.png \ + presnt/Sunset/Thumbnails/thumbnail.png \ + presnt/Vintage/Pictures/10000000000000580000001F99D2A38C014B254B.png \ + presnt/Vintage/Pictures/10000201000004B000000337490AE22881331C9B.png \ + presnt/Vintage/Pictures/10000201000004B00000033776CA70A4BFE2196B.png \ + presnt/Vintage/Pictures/10000201000004B0000003379D1127938561C230.png \ + presnt/Vintage/Pictures/10000201000004B000000337D99A2303560BD59C.png \ + presnt/Vintage/Thumbnails/thumbnail.png \ + presnt/Vivid/Thumbnails/thumbnail.png \ + presnt/Yellow_Idea/Thumbnails/thumbnail.png \ + + +extra_files_WIZARD := \ + wizard/agenda/10grey/manifest.rdf \ + wizard/agenda/10grey/settings.xml \ + wizard/agenda/1simple/manifest.rdf \ + wizard/agenda/1simple/settings.xml \ + wizard/agenda/2elegant/manifest.rdf \ + wizard/agenda/2elegant/Pictures/1000000000000280000000052876A81A.gif \ + wizard/agenda/2elegant/Pictures/100002000000008F0000000A83659D51.gif \ + wizard/agenda/2elegant/settings.xml \ + wizard/agenda/3modern/manifest.rdf \ + wizard/agenda/3modern/settings.xml \ + wizard/agenda/4classic/manifest.rdf \ + wizard/agenda/4classic/settings.xml \ + wizard/agenda/5blue/manifest.rdf \ + wizard/agenda/5blue/settings.xml \ + wizard/agenda/6orange/manifest.rdf \ + wizard/agenda/6orange/settings.xml \ + wizard/agenda/7red/manifest.rdf \ + wizard/agenda/7red/settings.xml \ + wizard/agenda/8green/manifest.rdf \ + wizard/agenda/8green/settings.xml \ + wizard/agenda/9colorful/manifest.rdf \ + wizard/agenda/9colorful/settings.xml \ + wizard/agenda/aw-10grey/manifest.rdf \ + wizard/agenda/aw-10grey/settings.xml \ + wizard/agenda/aw-1simple/manifest.rdf \ + wizard/agenda/aw-1simple/settings.xml \ + wizard/agenda/aw-2elegant/manifest.rdf \ + wizard/agenda/aw-2elegant/Pictures/1000000000000280000000052876A81A.gif \ + wizard/agenda/aw-2elegant/Pictures/100002000000008F0000000A83659D51.gif \ + wizard/agenda/aw-2elegant/settings.xml \ + wizard/agenda/aw-3modern/manifest.rdf \ + wizard/agenda/aw-3modern/settings.xml \ + wizard/agenda/aw-4classic/manifest.rdf \ + wizard/agenda/aw-4classic/settings.xml \ + wizard/agenda/aw-5blue/manifest.rdf \ + wizard/agenda/aw-5blue/settings.xml \ + wizard/agenda/aw-6orange/manifest.rdf \ + wizard/agenda/aw-6orange/settings.xml \ + wizard/agenda/aw-7red/manifest.rdf \ + wizard/agenda/aw-7red/settings.xml \ + wizard/agenda/aw-8green/manifest.rdf \ + wizard/agenda/aw-8green/settings.xml \ + wizard/agenda/aw-9colorful/manifest.rdf \ + wizard/agenda/aw-9colorful/settings.xml \ + wizard/desktop/html/settings.xml \ + wizard/desktop/idxexample/settings.xml \ + wizard/fax/bus-classic_f/manifest.rdf \ + wizard/fax/bus-classic_f/Pictures/200000520000271100001F73A977C564.wmf \ + wizard/fax/bus-classic_f/settings.xml \ + wizard/fax/bus-classic-pri_f/manifest.rdf \ + wizard/fax/bus-classic-pri_f/settings.xml \ + wizard/fax/bus-modern_f/manifest.rdf \ + wizard/fax/bus-modern_f/Pictures/2000004E0000271100001F73772F7F48.wmf \ + wizard/fax/bus-modern_f/settings.xml \ + wizard/fax/bus-modern-pri_f/manifest.rdf \ + wizard/fax/bus-modern-pri_f/settings.xml \ + wizard/fax/pri-bottle_f/Pictures/200002EB000022DA000024E1F891208C.wmf \ + wizard/fax/pri-bottle_f/settings.xml \ + wizard/fax/pri-fax_f/Pictures/2000032600002711000026A54A905481.wmf \ + wizard/fax/pri-fax_f/settings.xml \ + wizard/fax/pri-lines_f/settings.xml \ + wizard/fax/pri-marine_f/Pictures/2000004B0000227F0000227886F3FC0F.wmf \ + wizard/fax/pri-marine_f/settings.xml \ + wizard/letter/bus-elegant_l/manifest.rdf \ + wizard/letter/bus-elegant_l/Pictures/10000000000001B8000000824B7EA208.png \ + wizard/letter/bus-elegant_l/settings.xml \ + wizard/letter/bus-modern_l/manifest.rdf \ + wizard/letter/bus-modern_l/Pictures/10000000000001B8000000824B7EA208.png \ + wizard/letter/bus-modern_l/settings.xml \ + wizard/letter/bus-office_l/manifest.rdf \ + wizard/letter/bus-office_l/Pictures/10000000000001B8000000824B7EA208.png \ + wizard/letter/bus-office_l/settings.xml \ + wizard/letter/off-elegant_l/manifest.rdf \ + wizard/letter/off-elegant_l/Pictures/2000000D00000434000006FD6841386B.svm \ + wizard/letter/off-elegant_l/settings.xml \ + wizard/letter/off-modern_l/manifest.rdf \ + wizard/letter/off-modern_l/Pictures/10000000000000110000001142D1547F.png \ + wizard/letter/off-modern_l/settings.xml \ + wizard/letter/off-office_l/manifest.rdf \ + wizard/letter/off-office_l/settings.xml \ + wizard/letter/pri-bottle_l/Pictures/200002EB000022DA000024E1F891208C.wmf \ + wizard/letter/pri-bottle_l/settings.xml \ + wizard/letter/pri-mail_l/Pictures/200000430000271100001205CAE80946.wmf \ + wizard/letter/pri-mail_l/settings.xml \ + wizard/letter/pri-marine_l/Pictures/2000004B0000227F0000227886F3FC0F.wmf \ + wizard/letter/pri-marine_l/settings.xml \ + wizard/letter/pri-redline_l/settings.xml \ + wizard/report/cnt-01/settings.xml \ + wizard/report/cnt-011/settings.xml \ + wizard/report/cnt-012/settings.xml \ + wizard/report/cnt-02/settings.xml \ + wizard/report/cnt-021/settings.xml \ + wizard/report/cnt-022/settings.xml \ + wizard/report/cnt-03/settings.xml \ + wizard/report/cnt-031/settings.xml \ + wizard/report/cnt-032/settings.xml \ + wizard/report/cnt-04/settings.xml \ + wizard/report/cnt-041/settings.xml \ + wizard/report/cnt-042/settings.xml \ + wizard/report/cnt-05/settings.xml \ + wizard/report/cnt-051/settings.xml \ + wizard/report/cnt-052/settings.xml \ + wizard/report/cnt-06/settings.xml \ + wizard/report/cnt-061/settings.xml \ + wizard/report/cnt-062/settings.xml \ + wizard/report/cnt-default/settings.xml \ + wizard/report/stl-01/manifest.rdf \ + wizard/report/stl-01/Pictures/100002000000001400000014E87B6AC5.gif \ + wizard/report/stl-01/Pictures/2000018100001CB100002711BFED37A8.wmf \ + wizard/report/stl-01/settings.xml \ + wizard/report/stl-02/manifest.rdf \ + wizard/report/stl-02/Pictures/2000009E0000380100002657BA019D86.wmf \ + wizard/report/stl-02/settings.xml \ + wizard/report/stl-03/manifest.rdf \ + wizard/report/stl-03/Pictures/2000024900002711000021F4DCB2DF4A.wmf \ + wizard/report/stl-03/settings.xml \ + wizard/report/stl-04/manifest.rdf \ + wizard/report/stl-04/Pictures/10000000000000400000004077CDC8F9.png \ + wizard/report/stl-04/Pictures/10000000000001C6000000E44DCA6C94.jpg \ + wizard/report/stl-04/settings.xml \ + wizard/report/stl-05/manifest.rdf \ + wizard/report/stl-05/Pictures/2000036D000027110000145EB7E93049.wmf \ + wizard/report/stl-05/settings.xml \ + wizard/report/stl-06/manifest.rdf \ + wizard/report/stl-06/Pictures/100000000000005A000000268DE98CCE.gif \ + wizard/report/stl-06/Pictures/100000000000021B000001E8BE936AB6.gif \ + wizard/report/stl-06/settings.xml \ + wizard/report/stl-07/manifest.rdf \ + wizard/report/stl-07/settings.xml \ + wizard/report/stl-08/manifest.rdf \ + wizard/report/stl-08/Pictures/100000000000005E0000005E97FB9EF6.jpg \ + wizard/report/stl-08/settings.xml \ + wizard/report/stl-09/manifest.rdf \ + wizard/report/stl-09/Pictures/10000000000000050000004D32652675.jpg \ + wizard/report/stl-09/Pictures/100002000000001400000014E87B6AC5.gif \ + wizard/report/stl-09/Pictures/2000025100001D92000017719EB70CFB.wmf \ + wizard/report/stl-09/settings.xml \ + wizard/report/stl-default/manifest.rdf \ + wizard/report/stl-default/settings.xml \ + wizard/styles/black_white/settings.xml \ + wizard/styles/blackberry/settings.xml \ + wizard/styles/default/settings.xml \ + wizard/styles/diner/settings.xml \ + wizard/styles/fall/settings.xml \ + wizard/styles/glacier/settings.xml \ + wizard/styles/green_grapes/settings.xml \ + wizard/styles/jeans/settings.xml \ + wizard/styles/marine/settings.xml \ + wizard/styles/millennium/settings.xml \ + wizard/styles/nature/settings.xml \ + wizard/styles/neon/settings.xml \ + wizard/styles/night/settings.xml \ + wizard/styles/nostalgic/settings.xml \ + wizard/styles/pastell/settings.xml \ + wizard/styles/pool/settings.xml \ + wizard/styles/pumpkin/settings.xml \ + wizard/styles/xos/settings.xml \ + + +extra_files_WIZDESKTOP := \ + wizard/desktop/html/settings.xml \ + wizard/desktop/idxexample/Pictures/2000008600001923000012C24E0D0895.wmf \ + wizard/desktop/idxexample/settings.xml \ + + +extra_files_TEMPLATES := \ + $(extra_files_COMMON) \ + $(extra_files_PRESENTATIONS) \ + $(extra_files_WIZARD) \ + $(extra_files_WIZDESKTOP) \ + + +extra_files_TEMPLATES_RELATIVE = $(subst $(1)/,,$(filter $(1)/%,$(extra_files_TEMPLATES))) + +# vim: set noet sw=4 ts=4: diff --git a/filter/source/graphicfilter/icgm/cgm.cxx b/filter/source/graphicfilter/icgm/cgm.cxx index d1baf965da78..eeeb763ede49 100644 --- a/filter/source/graphicfilter/icgm/cgm.cxx +++ b/filter/source/graphicfilter/icgm/cgm.cxx @@ -227,7 +227,7 @@ double CGM::ImplGetFloat( RealPrecision eRealPrecision, sal_uInt32 nRealSize ) else { sal_Int32* pLong = static_cast(pPtr); - nRetValue = static_cast(abs( pLong[ nSwitch ] )); + nRetValue = fabs(static_cast(pLong[nSwitch])); nRetValue *= 65536; nVal = static_cast( pLong[ nSwitch ^ 1 ] ); nVal >>= 16; diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx index 4089fcfba91d..28819f802134 100644 --- a/filter/source/msfilter/msdffimp.cxx +++ b/filter/source/msfilter/msdffimp.cxx @@ -3894,7 +3894,7 @@ rtl::Reference SvxMSDffManager::ImportGraphic( SvStream& rSt, SfxItem if ( !bGrfRead ) { /* - Still no luck, lets look at the end of this record for a FBSE pool, + Still no luck, let's look at the end of this record for a FBSE pool, this fallback is a specific case for how word does it sometimes */ bool bOk = rObjData.rSpHd.SeekToEndOfRecord( rSt ); diff --git a/filter/source/msfilter/mstoolbar.cxx b/filter/source/msfilter/mstoolbar.cxx index 8b7396da2465..9db38c4bd030 100644 --- a/filter/source/msfilter/mstoolbar.cxx +++ b/filter/source/msfilter/mstoolbar.cxx @@ -279,7 +279,7 @@ void TBCData::ImportToolBarControl( CustomToolBarImportHelper& helper, std::vect TBCBSpecific* pSpecificInfo = dynamic_cast< TBCBSpecific* >( controlSpecificInfo.get() ); if ( pSpecificInfo ) { - // if we have an icon then lets set it for the command + // if we have an icon then let's set it for the command OUString sCommand; for (auto const& property : props) { diff --git a/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx b/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx index d5bff6dccf78..a6e793a3a855 100644 --- a/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx +++ b/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx @@ -595,7 +595,7 @@ bool XMLFilterSettingsDialog::insertOrEdit( filter_info_impl* pNewInfo, const fi if( !bOk ) { - // we failed to add the type, so lets remove the filter + // we failed to add the type, so let's remove the filter try { mxFilterContainer->removeByName( pFilterEntry->maFilterName ); @@ -622,7 +622,7 @@ bool XMLFilterSettingsDialog::insertOrEdit( filter_info_impl* pNewInfo, const fi if( !bOk ) { - // we failed to add the filter, so lets remove the type + // we failed to add the filter, so let's remove the type try { mxTypeDetection->removeByName( pFilterEntry->maType ); diff --git a/filter/uiconfig/ui/pdflinkspage.ui b/filter/uiconfig/ui/pdflinkspage.ui index 7e9ce16b77bf..f1229cc9681e 100644 --- a/filter/uiconfig/ui/pdflinkspage.ui +++ b/filter/uiconfig/ui/pdflinkspage.ui @@ -1,5 +1,5 @@ - + @@ -30,9 +30,9 @@ True True False + Enable the checkbox to export bookmarks in your document as named destinations in the PDF document. True True - Enable the checkbox to export bookmarks in your document as named destinations in the PDF document. Enable the checkbox to export bookmarks in your document as named destinations in the PDF document. The destinations correspond to the location of your bookmarks. Use these destinations to create URL links that point to these locations in the PDF document. diff --git a/filter/uiconfig/ui/pdfoptionsdialog.ui b/filter/uiconfig/ui/pdfoptionsdialog.ui index e47f774afbf5..63444c040824 100644 --- a/filter/uiconfig/ui/pdfoptionsdialog.ui +++ b/filter/uiconfig/ui/pdfoptionsdialog.ui @@ -1,33 +1,30 @@ - + - False - 6 + False + 6 PDF Options False True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _Reset - True - True + True + True True @@ -40,11 +37,11 @@ E_xport True - True - True - True - True - True + True + True + True + True + True False @@ -56,8 +53,8 @@ _Cancel True - True - True + True + True True @@ -70,8 +67,8 @@ _Help True - True - True + True + True True @@ -85,47 +82,23 @@ False True - end + end 0 True - True + True True True True - True + True True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -134,42 +107,18 @@ True - False + False General - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -181,43 +130,19 @@ True - False + False Initial View 1 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -229,43 +154,19 @@ True - False + False User Interface 2 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -277,43 +178,19 @@ True - False + False Links 3 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -325,43 +202,19 @@ True - False + False Security 4 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -373,12 +226,12 @@ True - False + False Digital Signatures 5 - False + False diff --git a/filter/uiconfig/ui/pdfsecuritypage.ui b/filter/uiconfig/ui/pdfsecuritypage.ui index 324513f1a78f..12a297ad7814 100644 --- a/filter/uiconfig/ui/pdfsecuritypage.ui +++ b/filter/uiconfig/ui/pdfsecuritypage.ui @@ -1,36 +1,36 @@ - + True - False + False True True - 6 + 6 12 True - False - 0 - none + False + 0 + none True - False - vertical - 12 + False 12 6 + vertical + 12 Set _Passwords… True - True - True + True + True start - True + True Click to open a dialog where you enter the passwords. @@ -44,32 +44,32 @@ - + - False - True + False + True True - False + False Open password set 0 - 0 - 0 + 0 + 0 True - False + False PDF document will be encrypted 0 - 0 - 1 + 0 + 1 @@ -80,32 +80,32 @@ - + True - False + False True - False + False No open password set 0 - 0 - 0 + 0 + 0 True - False + False PDF document will not be encrypted 0 - 0 - 1 + 0 + 1 @@ -118,19 +118,19 @@ - False - True + False + True True - False + False PDF document will not be encrypted due to PDF/A export. True 0 - 0 - 0 + 0 + 0 @@ -141,32 +141,32 @@ - + - False - True + False + True True - False + False Permission password set 0 - 0 - 0 + 0 + 0 True - False + False PDF document will be restricted 0 - 0 - 1 + 0 + 1 @@ -177,32 +177,32 @@ - + True - False + False True - False + False No permission password set 0 - 0 - 0 + 0 + 0 True - False + False PDF document will be unrestricted 0 - 0 - 1 + 0 + 1 @@ -215,19 +215,19 @@ - False - True + False + True True - False + False PDF document will not be restricted due to PDF/A export. True 0 - 0 - 0 + 0 + 0 @@ -239,8 +239,8 @@ - False - True + False + True Set Passwords 0 @@ -255,7 +255,7 @@ True - False + False File Encryption and Permission @@ -272,31 +272,31 @@ True - False + False vertical 12 True - False - 0 - none + False + 0 + none - + True - False - 6 + False 12 6 + 6 _Not permitted True - True - False - True - True + True + False + True + True printhigh @@ -305,18 +305,18 @@ - 0 - 0 + 0 + 0 _Low resolution (150 dpi) True - True - False - True - True + True + False + True + True printhigh @@ -325,19 +325,19 @@ - 0 - 1 + 0 + 1 _High resolution True - True - False - True + True + False + True True - True + True The document can be printed in high resolution. @@ -345,8 +345,8 @@ - 0 - 2 + 0 + 2 @@ -354,7 +354,7 @@ True - False + False Printing @@ -371,25 +371,25 @@ True - False - 0 - none + False + 0 + none - + True - False - 6 + False 12 6 + 6 No_t permitted True - True - False - True - True + True + False + True + True changeany @@ -398,18 +398,18 @@ - 0 - 0 + 0 + 0 _Inserting, deleting, and rotating pages True - True - False - True - True + True + False + True + True changeany @@ -418,18 +418,18 @@ - 0 - 1 + 0 + 1 _Filling in form fields True - True - False - True - True + True + False + True + True changeany @@ -438,18 +438,18 @@ - 0 - 2 + 0 + 2 _Commenting, filling in form fields True - True - False - True - True + True + False + True + True changeany @@ -458,19 +458,19 @@ - 0 - 3 + 0 + 3 _Any except extracting pages True - True - False - True + True + False + True True - True + True All changes are permitted, except extracting pages. @@ -478,8 +478,8 @@ - 0 - 4 + 0 + 4 @@ -487,7 +487,7 @@ True - False + False Changes @@ -504,26 +504,26 @@ True - False - 0 - none + False + 0 + none - + True - False - 6 + False 12 6 + 6 Ena_ble copying of content True - True - False - True + True + False + True True - True + True Select to enable copying of content to the clipboard. @@ -531,19 +531,19 @@ - 0 - 0 + 0 + 0 Enable text access for acce_ssibility tools True - True - False - True + True + False + True True - True + True Select to enable text access for accessibility tools. @@ -551,8 +551,8 @@ - 0 - 1 + 0 + 1 @@ -560,7 +560,7 @@ True - False + False Content diff --git a/filter/uiconfig/ui/pdfuserinterfacepage.ui b/filter/uiconfig/ui/pdfuserinterfacepage.ui index 8a26abc85ac4..15e0e4507d9d 100644 --- a/filter/uiconfig/ui/pdfuserinterfacepage.ui +++ b/filter/uiconfig/ui/pdfuserinterfacepage.ui @@ -1,51 +1,51 @@ - + 1 10 1 - 1 - 10 + 1 + 10 True - False + False True True - 6 + 6 vertical 6 - + True - False - 12 - 12 + False + 12 + 12 True - False - 0 - none + False + 0 + none - + True - False - 6 + False 12 6 + 6 _Center window on screen True - True - False - True - True + True + False + True + True Select to generate a PDF file that is shown in a reader window centered on screen. @@ -53,18 +53,18 @@ - 0 - 1 + 0 + 1 _Resize window to initial page True - True - False - True - True + True + False + True + True Select to generate a PDF file that is shown in a window displaying the whole initial page. @@ -72,18 +72,18 @@ - 0 - 0 + 0 + 0 _Open in full screen mode True - True - False - True - True + True + False + True + True Select to generate a PDF file that is shown in a full screen reader window in front of all other windows. @@ -91,18 +91,18 @@ - 0 - 2 + 0 + 2 _Display document title True - True - False - True - True + True + False + True + True Select to generate a PDF file that is shown with the document title in the reader's title bar. @@ -110,8 +110,8 @@ - 0 - 3 + 0 + 3 @@ -119,7 +119,7 @@ True - False + False Window Options @@ -128,32 +128,32 @@ - 0 - 0 + 0 + 0 True - False - 0 - none + False + 0 + none - + True - False - 6 + False 12 6 + 6 Hide _toolbar True - True - False - True - True + True + False + True + True Select to hide the reader's toolbar when the document is active. @@ -161,18 +161,18 @@ - 0 - 1 + 0 + 1 Hide _menubar True - True - False - True - True + True + False + True + True Select to hide the reader's menu bar when the document is active. @@ -180,18 +180,18 @@ - 0 - 0 + 0 + 0 Hide _window controls True - True - False - True - True + True + False + True + True Select to hide the reader's controls when the document is active. @@ -199,8 +199,8 @@ - 0 - 2 + 0 + 2 @@ -208,7 +208,7 @@ True - False + False User Interface Options @@ -217,31 +217,31 @@ - 1 - 0 + 1 + 0 True - False - 0 - none + False + 0 + none True - False + False 12 6 _Use transition effects True - True - False - True - True + True + False + True + True Select to export Impress slide transition effects to respective PDF effects. @@ -249,8 +249,8 @@ - 0 - 0 + 0 + 0 @@ -258,7 +258,7 @@ True - False + False Transitions @@ -267,34 +267,34 @@ - 0 - 1 + 0 + 1 True - False - 0 - none + False + 0 + none - + True - False - 6 - 12 + False 12 6 + 6 + 12 Show _All True - True - False - True + True + False + True True - True + True Select to show all bookmark levels when the reader opens the PDF file. @@ -302,18 +302,18 @@ - 0 - 0 + 0 + 0 _Visible levels: True - True - False - True - True + True + False + True + True allbookmarks @@ -325,19 +325,19 @@ - 0 - 1 + 0 + 1 True - True + True + True adjustment1 - True Select to show bookmark levels down to the selected level when the reader opens the PDF file. @@ -345,8 +345,8 @@ - 1 - 1 + 1 + 1 @@ -357,7 +357,7 @@ True - False + False Collapse Outlines @@ -366,8 +366,8 @@ - 1 - 1 + 1 + 1 diff --git a/filter/uiconfig/ui/testxmlfilter.ui b/filter/uiconfig/ui/testxmlfilter.ui index b9a5b7188266..a1ccf4c88862 100644 --- a/filter/uiconfig/ui/testxmlfilter.ui +++ b/filter/uiconfig/ui/testxmlfilter.ui @@ -1,33 +1,33 @@ - + - False - 6 + False + 6 Test XML Filter: %s False True - 0 - 0 - dialog + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _Close True - True - True - True - True + True + True + True + True True @@ -40,8 +40,8 @@ _Help True - True - True + True + True True @@ -55,63 +55,63 @@ False True - end + end 0 True - False + False vertical 12 True - False - 0 - none + False + 0 + none - + True - False - 6 - 12 + False 12 6 + 6 + 12 True - False + False True XSLT for export 0 - 0 - 0 + 0 + 0 True - False + False True Transform document 0 - 0 - 1 + 0 + 1 Browse... True - True - True + True + True Locate the file that you want to apply the XML export filter to. The XML code of the transformed file is opened in your default XML editor after transformation. @@ -119,16 +119,16 @@ - 1 - 1 + 1 + 1 Current Document True - True - True + True + True The front-most open file that matches the XML filter criteria will be used to test the filter. The current XML export filter transforms the file and the resulting XML code is displayed in the XML Filter output window. @@ -136,14 +136,14 @@ - 1 - 2 + 1 + 2 True - False + False 0 @@ -152,15 +152,15 @@ - 1 - 0 + 1 + 0 True - False - 52 + False + 52 1 @@ -169,8 +169,8 @@ - 0 - 3 + 0 + 3 2 @@ -182,7 +182,7 @@ True - False + False Export @@ -199,37 +199,37 @@ True - False - 0 - none + False + 0 + none - + True - False - 6 - 12 + False 12 6 + 6 + 12 True - False + False True XSLT for import 0 - 0 - 0 + 0 + 0 Browse... True - True - True + True + True Opens a file selection dialog. The selected file is opened using the current XML import filter. @@ -237,16 +237,16 @@ - 1 - 3 + 1 + 3 Recent File True - True - True + True + True Re-opens the document that was last opened with this dialog. @@ -254,27 +254,27 @@ - 1 - 4 + 1 + 4 True - False + False True Template for import 0 - 0 - 1 + 0 + 1 True - False + False 0 @@ -283,18 +283,18 @@ - 1 - 0 + 1 + 0 Display source True - True - False - True - True + True + False + True + True Opens the XML source of the selected document in your default XML editor after importing. @@ -302,27 +302,27 @@ - 1 - 2 + 1 + 2 True - False + False True Transform file 0 - 0 - 2 + 0 + 2 True - False + False 0 @@ -331,15 +331,15 @@ - 1 - 1 + 1 + 1 True - False - 52 + False + 52 1 @@ -348,8 +348,8 @@ - 0 - 5 + 0 + 5 2 @@ -364,7 +364,7 @@ True - False + False Import @@ -391,9 +391,6 @@ close help - - - Tests the XSLT stylesheets used by the selected XML filter. diff --git a/filter/uiconfig/ui/xmlfiltersettings.ui b/filter/uiconfig/ui/xmlfiltersettings.ui index 0a769078ee6d..42341d55cf9a 100644 --- a/filter/uiconfig/ui/xmlfiltersettings.ui +++ b/filter/uiconfig/ui/xmlfiltersettings.ui @@ -291,4 +291,4 @@ - \ No newline at end of file + diff --git a/filter/uiconfig/ui/xmlfiltertabpagetransformation.ui b/filter/uiconfig/ui/xmlfiltertabpagetransformation.ui index 7f5bbbc0930c..f816f90e7d93 100644 --- a/filter/uiconfig/ui/xmlfiltertabpagetransformation.ui +++ b/filter/uiconfig/ui/xmlfiltertabpagetransformation.ui @@ -1,43 +1,43 @@ - + True - False - 6 + False + 6 vertical 12 - + True - False + False True True - 6 - 12 + 6 + 12 True - False + False _DocType: - True - doc + True + doc 1 - 0 - 0 + 0 + 0 True - True + True True - True - 32 + True + 32 True @@ -46,31 +46,31 @@ - 1 - 0 + 1 + 0 True - False + False _XSLT for export: - True - xsltexport + True + xsltexport 1 - 0 - 1 + 0 + 1 Brows_e... True - True - True - True + True + True + True Opens a file selection dialog. @@ -78,31 +78,31 @@ - 2 - 1 + 2 + 1 True - False + False XSLT _for import: - True - xsltimport + True + xsltimport 1 - 0 - 2 + 0 + 2 B_rowse... True - True - True - True + True + True + True Opens a file selection dialog. @@ -110,30 +110,30 @@ - 2 - 2 + 2 + 2 True - False + False Template for _import: - True - tempimport + True + tempimport 1 - 0 - 3 + 0 + 3 Browse... True - True - True + True + True Opens a file selection dialog. @@ -141,20 +141,20 @@ - 2 - 3 + 2 + 3 True - False + False True - True + True + True True - True @@ -164,20 +164,20 @@ - 1 - 1 + 1 + 1 True - False + False True - True + True + True True - True @@ -187,20 +187,20 @@ - 1 - 2 + 1 + 2 True - False + False True - True + True + True True - True @@ -210,8 +210,8 @@ - 1 - 3 + 1 + 3 @@ -228,10 +228,10 @@ The filter needs XSLT 2.0 processor True - True - False - True - True + True + False + True + True False diff --git a/forms/source/component/imgprod.cxx b/forms/source/component/imgprod.cxx index bec815b91343..47f9f13e3425 100644 --- a/forms/source/component/imgprod.cxx +++ b/forms/source/component/imgprod.cxx @@ -125,7 +125,7 @@ void ImageProducer::setImage( css::uno::Reference< css::io::XInputStream > const void ImageProducer::NewDataAvailable() { - if( ( GraphicType::NONE == moGraphic->GetType() ) || moGraphic->GetReaderContext() ) + if (GraphicType::NONE == moGraphic->GetType()) startProduction(); } @@ -138,11 +138,11 @@ void ImageProducer::startProduction() bool bNotifyEmptyGraphics = false; // valid stream or filled graphic? => update consumers - if( mpStm || ( moGraphic->GetType() != GraphicType::NONE ) ) + if (mpStm || moGraphic->GetType() != GraphicType::NONE) { // if we already have a graphic, we don't have to import again; // graphic is cleared if a new Stream is set - if( ( moGraphic->GetType() == GraphicType::NONE ) || moGraphic->GetReaderContext() ) + if (moGraphic->GetType() == GraphicType::NONE) { if ( ImplImportGraphic( *moGraphic ) ) maDoneHdl.Call( &*moGraphic ); diff --git a/fpicker/uiconfig/ui/breadcrumb.ui b/fpicker/uiconfig/ui/breadcrumb.ui index c3c6af46eb1a..4d6198f54645 100644 --- a/fpicker/uiconfig/ui/breadcrumb.ui +++ b/fpicker/uiconfig/ui/breadcrumb.ui @@ -30,4 +30,4 @@ - \ No newline at end of file + diff --git a/helpcontent2 b/helpcontent2 index 47eaabaeb6b9..5e39c70b9355 160000 --- a/helpcontent2 +++ b/helpcontent2 @@ -1 +1 @@ -Subproject commit 47eaabaeb6b90551dccb72ad5ba9f241ad7608cf +Subproject commit 5e39c70b93559a266ba9f68344fe8c4c3f2feacf diff --git a/i18npool/qa/cppunit/test_breakiterator.cxx b/i18npool/qa/cppunit/test_breakiterator.cxx index e790c17e1155..7e9f47ad22f1 100644 --- a/i18npool/qa/cppunit/test_breakiterator.cxx +++ b/i18npool/qa/cppunit/test_breakiterator.cxx @@ -992,6 +992,66 @@ void TestBreakIterator::testWordBoundaries() CPPUNIT_ASSERT_EQUAL(sal_Int32(8), aBounds.startPos); CPPUNIT_ASSERT_EQUAL(sal_Int32(11), aBounds.endPos); } + + // tdf#161737: narrow no-break space at the end of words resulted spelling mistakes + { + aLocale.Language = "en"; + aLocale.Country = "US"; + + OUString aTest(u"L’espace fine insécable\u202F!"_ustr); + aBounds + = m_xBreak->getWordBoundary(aTest, 14, aLocale, i18n::WordType::DICTIONARY_WORD, false); + CPPUNIT_ASSERT_EQUAL(sal_Int32(14), aBounds.startPos); + // This was 24 (word + NNBSP) + CPPUNIT_ASSERT_EQUAL(sal_Int32(23), aBounds.endPos); + } + + // tdf#161737: narrow no-break space between digits resulted spelling mistakes + // as a quick fix, limit NBSP as word-part character only for editing, and not for spell checking + // TODO: remove NBSP by the linguistic module or by the spell checking dictionaries to allow + // to check numbers with thousand separators and with correct suffix + { + aLocale.Language = "en"; + aLocale.Country = "US"; + + OUString aTest(u"1\u202F000\u202F000"_ustr); + aBounds + = m_xBreak->getWordBoundary(aTest, 2, aLocale, i18n::WordType::DICTIONARY_WORD, false); + // This was 0 (word + NNBSP) + CPPUNIT_ASSERT_EQUAL(sal_Int32(2), aBounds.startPos); + // This was 8 (word + NNBSP) + CPPUNIT_ASSERT_EQUAL(sal_Int32(5), aBounds.endPos); + } + + // tdf#161737: narrow no-break space at the end of words resulted spelling mistakes + { + aLocale.Language = "hu"; + aLocale.Country = "HU"; + + OUString aTest(u"L’espace fine insécable\u202F!"_ustr); + aBounds + = m_xBreak->getWordBoundary(aTest, 14, aLocale, i18n::WordType::DICTIONARY_WORD, false); + CPPUNIT_ASSERT_EQUAL(sal_Int32(14), aBounds.startPos); + // This was 24 (word + NNBSP) + CPPUNIT_ASSERT_EQUAL(sal_Int32(23), aBounds.endPos); + } + + // tdf#161737: narrow no-break space between digits resulted spelling mistakes + // as a quick fix, limit NBSP as word-part character only for editing, and not for spell checking + // TODO: remove NBSP by the linguistic module or by the spell checking dictionaries to allow + // to check numbers with thousand separators and with correct suffix + { + aLocale.Language = "hu"; + aLocale.Country = "HU"; + + OUString aTest(u"1\u202F000\u202F000"_ustr); + aBounds + = m_xBreak->getWordBoundary(aTest, 2, aLocale, i18n::WordType::DICTIONARY_WORD, false); + // This was 0 (word + NNBSP) + CPPUNIT_ASSERT_EQUAL(sal_Int32(2), aBounds.startPos); + // This was 8 (word + NNBSP) + CPPUNIT_ASSERT_EQUAL(sal_Int32(5), aBounds.endPos); + } } void TestBreakIterator::testSentenceBoundaries() diff --git a/i18npool/qa/cppunit/test_textsearch.cxx b/i18npool/qa/cppunit/test_textsearch.cxx index 269380a90910..38cc099b7c95 100644 --- a/i18npool/qa/cppunit/test_textsearch.cxx +++ b/i18npool/qa/cppunit/test_textsearch.cxx @@ -38,6 +38,7 @@ public: void testSearches(); void testWildcardSearch(); void testApostropheSearch(); + void testQuotationMarkSearch(); void testTdf138410(); CPPUNIT_TEST_SUITE(TestTextSearch); @@ -45,6 +46,7 @@ public: CPPUNIT_TEST(testSearches); CPPUNIT_TEST(testWildcardSearch); CPPUNIT_TEST(testApostropheSearch); + CPPUNIT_TEST(testQuotationMarkSearch); CPPUNIT_TEST(testTdf138410); CPPUNIT_TEST_SUITE_END(); private: @@ -404,6 +406,92 @@ void TestTextSearch::testApostropheSearch() CPPUNIT_ASSERT( aRes.subRegExpressions > 0 ); } +void TestTextSearch::testQuotationMarkSearch() +{ + // A) find typographic quotation marks also by using ASCII ones + OUString str( u"“x”, „y‟, ‘z’, ‚a‛"_ustr ); + sal_Int32 startPos = 0, endPos = str.getLength(); + + // set options + util::SearchOptions aOptions; + aOptions.algorithmType = util::SearchAlgorithms_ABSOLUTE; + aOptions.searchFlag = util::SearchFlags::ALL_IGNORE_CASE; + aOptions.searchString = "\"x\""; + aOptions.transliterateFlags = static_cast(TransliterationFlags::IGNORE_CASE + | TransliterationFlags::IGNORE_WIDTH); + m_xSearch->setOptions( aOptions ); + + util::SearchResult aRes; + + // search forward + aRes = m_xSearch->searchForward( str, startPos, endPos ); + // This was 0. + CPPUNIT_ASSERT( aRes.subRegExpressions > 0 ); + CPPUNIT_ASSERT_EQUAL( static_cast(0), aRes.startOffset[0] ); + CPPUNIT_ASSERT_EQUAL( static_cast(3), aRes.endOffset[0] ); + + // search backwards + aRes = m_xSearch->searchBackward( str, endPos, startPos ); + // This was 0. + CPPUNIT_ASSERT( aRes.subRegExpressions > 0 ); + CPPUNIT_ASSERT_EQUAL( static_cast(3), aRes.startOffset[0] ); + CPPUNIT_ASSERT_EQUAL( static_cast(0), aRes.endOffset[0] ); + + // B) + aOptions.searchString = "\"y\""; + m_xSearch->setOptions( aOptions ); + + // search forward + aRes = m_xSearch->searchForward( str, startPos, endPos ); + // This was 0. + CPPUNIT_ASSERT( aRes.subRegExpressions > 0 ); + CPPUNIT_ASSERT_EQUAL( static_cast(5), aRes.startOffset[0] ); + CPPUNIT_ASSERT_EQUAL( static_cast(8), aRes.endOffset[0] ); + + // search backwards + aRes = m_xSearch->searchBackward( str, endPos, startPos ); + // This was 0. + CPPUNIT_ASSERT( aRes.subRegExpressions > 0 ); + CPPUNIT_ASSERT_EQUAL( static_cast(8), aRes.startOffset[0] ); + CPPUNIT_ASSERT_EQUAL( static_cast(5), aRes.endOffset[0] ); + + // C) + aOptions.searchString = "'z'"; + m_xSearch->setOptions( aOptions ); + + // search forward + aRes = m_xSearch->searchForward( str, startPos, endPos ); + // This was 0. + CPPUNIT_ASSERT( aRes.subRegExpressions > 0 ); + CPPUNIT_ASSERT_EQUAL( static_cast(10), aRes.startOffset[0] ); + CPPUNIT_ASSERT_EQUAL( static_cast(13), aRes.endOffset[0] ); + + // search backwards + aRes = m_xSearch->searchBackward( str, endPos, startPos ); + // This was 0. + CPPUNIT_ASSERT( aRes.subRegExpressions > 0 ); + CPPUNIT_ASSERT_EQUAL( static_cast(13), aRes.startOffset[0] ); + CPPUNIT_ASSERT_EQUAL( static_cast(10), aRes.endOffset[0] ); + + // D) + aOptions.searchString = "'a'"; + m_xSearch->setOptions( aOptions ); + + // search forward + aRes = m_xSearch->searchForward( str, startPos, endPos ); + // This was 0. + CPPUNIT_ASSERT( aRes.subRegExpressions > 0 ); + CPPUNIT_ASSERT_EQUAL( static_cast(15), aRes.startOffset[0] ); + CPPUNIT_ASSERT_EQUAL( static_cast(18), aRes.endOffset[0] ); + + // search backwards + aRes = m_xSearch->searchBackward( str, endPos, startPos ); + // This was 0. + CPPUNIT_ASSERT( aRes.subRegExpressions > 0 ); + CPPUNIT_ASSERT_EQUAL( static_cast(18), aRes.startOffset[0] ); + CPPUNIT_ASSERT_EQUAL( static_cast(15), aRes.endOffset[0] ); +} + void TestTextSearch::testTdf138410() { OUString str(u"\u0643\u064f\u062a\u064f\u0628 \u0643\u062a\u0628"_ustr); diff --git a/i18npool/source/breakiterator/data/dict_word.txt b/i18npool/source/breakiterator/data/dict_word.txt index f804b0eec214..deeec7dd659e 100644 --- a/i18npool/source/breakiterator/data/dict_word.txt +++ b/i18npool/source/breakiterator/data/dict_word.txt @@ -54,7 +54,7 @@ $Double_Quote = [\p{Word_Break = Double_Quote}]; $MidNumLet = [\p{Word_Break = MidNumLet}]; $MidNum = [\p{Word_Break = MidNum}]; $Numeric = [\p{Word_Break = Numeric}]; -$ExtendNumLet = [\p{Word_Break = ExtendNumLet}]; +$ExtendNumLet = [\p{Word_Break = ExtendNumLet}-[:name = NARROW NO-BREAK SPACE:]]; $WSegSpace = [\p{Word_Break = WSegSpace}]; $Extended_Pict = [\p{Extended_Pictographic}]; diff --git a/i18npool/source/breakiterator/data/dict_word_hu.txt b/i18npool/source/breakiterator/data/dict_word_hu.txt index 88648e6e5716..4ba426c8c7db 100644 --- a/i18npool/source/breakiterator/data/dict_word_hu.txt +++ b/i18npool/source/breakiterator/data/dict_word_hu.txt @@ -53,7 +53,7 @@ $Double_Quote = [\p{Word_Break = Double_Quote}]; $MidNumLet = [\p{Word_Break = MidNumLet}]; $MidNum = [\p{Word_Break = MidNum}]; $Numeric = [\p{Word_Break = Numeric}]; -$ExtendNumLet = [\p{Word_Break = ExtendNumLet}]; +$ExtendNumLet = [\p{Word_Break = ExtendNumLet}-[:name = NARROW NO-BREAK SPACE:]]; $WSegSpace = [\p{Word_Break = WSegSpace}]; $Extended_Pict = [\p{Extended_Pictographic}]; diff --git a/i18npool/source/breakiterator/data/edit_word.txt b/i18npool/source/breakiterator/data/edit_word.txt index 14fc221aa96e..1e3bcd15b20d 100644 --- a/i18npool/source/breakiterator/data/edit_word.txt +++ b/i18npool/source/breakiterator/data/edit_word.txt @@ -65,7 +65,7 @@ $Extended_Pict = [\p{Extended_Pictographic}]; $MidNumLet = [\p{Word_Break = MidNumLet}-[:name= FULL STOP:]]; # $ExtendNumLet = [\p{Word_Break = ExtendNumLet}]; -$ExtendNumLet = [\p{Word_Break = ExtendNumLet}-[:name= LOW LINE:]]; +$ExtendNumLet = [\p{Word_Break = ExtendNumLet}-[:name= LOW LINE:]-[:name = NARROW NO-BREAK SPACE:]]; ### END CUSTOMIZATION @@ -164,16 +164,18 @@ $Numeric $ExFm* ($MidNum | $MidNumLet | $Single_Quote) $ExFm* $Numeric; $Katakana $ExFm* $Katakana {400}; # rule 13a/b +# allow to select numbers with narrow no-break spaces as thousand separators +$ExtendNumLetNNBSP = [\p{Word_Break = ExtendNumLet}]; $ALetterPlus $ExFm* $ExtendNumLet {200}; # (13a) $Hebrew_Letter $ExFm* $ExtendNumLet {200}; # (13a) -$Numeric $ExFm* $ExtendNumLet {100}; # (13a) +$Numeric $ExFm* $ExtendNumLetNNBSP {100}; # (13a) $Katakana $ExFm* $ExtendNumLet {400}; # (13a) $ExtendNumLet $ExFm* $ExtendNumLet {200}; # (13a) $ExtendNumLet $ExFm* $ALetterPlus {200}; # (13b) $ExtendNumLet $ExFm* $Hebrew_Letter {200}; # (13b) -$ExtendNumLet $ExFm* $Numeric {100}; # (13b) +$ExtendNumLetNNBSP $ExFm* $Numeric {100}; # (13b) $ExtendNumLet $ExFm* $Katakana {400}; # (13b) # rules 15 - 17 diff --git a/i18npool/source/breakiterator/data/edit_word_hu.txt b/i18npool/source/breakiterator/data/edit_word_hu.txt index 389ad2bacc13..a5e44d2732d9 100644 --- a/i18npool/source/breakiterator/data/edit_word_hu.txt +++ b/i18npool/source/breakiterator/data/edit_word_hu.txt @@ -81,7 +81,7 @@ $MidLetter = [\p{Word_Break = MidLetter} $Symbols_hu]; $MidNumLet = [\p{Word_Break = MidNumLet}-[:name= FULL STOP:]]; # $ExtendNumLet = [\p{Word_Break = ExtendNumLet}]; -$ExtendNumLet = [\p{Word_Break = ExtendNumLet}-[:name= LOW LINE:]]; +$ExtendNumLet = [\p{Word_Break = ExtendNumLet}-[:name= LOW LINE:]-[:name = NARROW NO-BREAK SPACE:]]; ### END CUSTOMIZATION @@ -180,16 +180,18 @@ $Numeric $ExFm* ($MidNum | $MidNumLet | $Single_Quote) $ExFm* $Numeric; $Katakana $ExFm* $Katakana {400}; # rule 13a/b +# allow to select numbers with narrow no-break spaces as thousand separators +$ExtendNumLetNNBSP = [\p{Word_Break = ExtendNumLet}]; $ALetterPlus $ExFm* $ExtendNumLet {200}; # (13a) $Hebrew_Letter $ExFm* $ExtendNumLet {200}; # (13a) -$Numeric $ExFm* $ExtendNumLet {100}; # (13a) +$Numeric $ExFm* $ExtendNumLetNNBSP {100}; # (13a) $Katakana $ExFm* $ExtendNumLet {400}; # (13a) $ExtendNumLet $ExFm* $ExtendNumLet {200}; # (13a) $ExtendNumLet $ExFm* $ALetterPlus {200}; # (13b) $ExtendNumLet $ExFm* $Hebrew_Letter {200}; # (13b) -$ExtendNumLet $ExFm* $Numeric {100}; # (13b) +$ExtendNumLetNNBSP $ExFm* $Numeric {100}; # (13b) $ExtendNumLet $ExFm* $Katakana {400}; # (13b) # rules 15 - 17 diff --git a/i18npool/source/characterclassification/cclass_unicode_parser.cxx b/i18npool/source/characterclassification/cclass_unicode_parser.cxx index 9ed95e2f907a..6e27415bdf15 100644 --- a/i18npool/source/characterclassification/cclass_unicode_parser.cxx +++ b/i18npool/source/characterclassification/cclass_unicode_parser.cxx @@ -651,7 +651,7 @@ ParserFlags cclass_Unicode::getFlagsExtended(sal_uInt32 const c, const cclass_Un return ((nTypes & KParseTokens::IGNORE_LEADING_WS) ? ParserFlags::CHAR_DONTCARE : (bStart ? ParserFlags::CHAR_WORD : (ParserFlags::CHAR_DONTCARE | ParserFlags::WORD_SEP | ParserFlags::VALUE_SEP) )); case U_OTHER_PUNCTUATION: - // fdo#61754 Lets see (if we not at the start) if this is midletter + // fdo#61754 Let's see (if we not at the start) if this is midletter // punctuation and allow it in a word if it is similarly to // U_NON_SPACING_MARK, for example U+00B7 MIDDLE DOT. // tdf#123575 for U+30FB KATAKANA MIDDLE DOT property is not diff --git a/i18npool/source/search/textsearch.cxx b/i18npool/source/search/textsearch.cxx index 816e162c1e6e..dbb49f494781 100644 --- a/i18npool/source/search/textsearch.cxx +++ b/i18npool/source/search/textsearch.cxx @@ -93,6 +93,30 @@ bool isSimpleRegexTrans( TransliterationFlags n ) { return bool(maskSimpleRegexTrans(n)); } + +bool isReplacePunctuation( OUString &rStr ) +{ + return rStr.indexOf(u'\u2018') > -1 || + rStr.indexOf(u'\u2019') > -1 || + rStr.indexOf(u'\u201A') > -1 || + rStr.indexOf(u'\u201B') > -1 || + rStr.indexOf(u'\u201C') > -1 || + rStr.indexOf(u'\u201D') > -1 || + rStr.indexOf(u'\u201E') > -1 || + rStr.indexOf(u'\u201F') > -1; +} + +OUString replacePunctuation( OUString &rStr ) +{ + return rStr.replace(u'\u2018', '\'') + .replace(u'\u2019', '\'') + .replace(u'\u201A', '\'') + .replace(u'\u201B', '\'') + .replace(u'\u201C', '"') + .replace(u'\u201D', '"') + .replace(u'\u201E', '"') + .replace(u'\u201F', '"'); +} }; TextSearch::TextSearch(const Reference < XComponentContext > & rxContext) @@ -139,10 +163,10 @@ void TextSearch::setOptions2( const SearchOptions2& rOptions ) // match is not case-altered, leave case-(in)sensitive to regex engine. transliterateFlags &= ~TransliterationFlags::IGNORE_CASE; } - else if ( aSrchPara.searchString.indexOf('\'') > - 1 ) + else if ( aSrchPara.searchString.indexOf('\'') > - 1 || aSrchPara.searchString.indexOf('"') > - 1 ) { bSearchApostrophe = true; - bReplaceApostrophe = aSrchPara.searchString.indexOf(u'\u2019') > -1; + bReplaceApostrophe = isReplacePunctuation(aSrchPara.searchString); } // Create Transliteration class @@ -215,7 +239,7 @@ void TextSearch::setOptions2( const SearchOptions2& rOptions ) } if ( bReplaceApostrophe ) - sSrchStr = sSrchStr.replace(u'\u2019', '\''); + sSrchStr = replacePunctuation(sSrchStr); // Take the new SearchOptions2::AlgorithmType2 field and ignore // SearchOptions::algorithmType @@ -308,7 +332,7 @@ SearchResult TextSearch::searchForward( const OUString& searchStr, sal_Int32 sta // in non-regex mode, allow searching typographical apostrophe with the ASCII one // to avoid regression after using automatic conversion to U+2019 during typing in Writer - bool bReplaceApostrophe = bSearchApostrophe && in_str.indexOf(u'\u2019') > -1; + bool bReplaceApostrophe = bSearchApostrophe && isReplacePunctuation(in_str); bUsePrimarySrchStr = true; @@ -340,7 +364,7 @@ SearchResult TextSearch::searchForward( const OUString& searchStr, sal_Int32 sta in_str = xTranslit->transliterate(searchStr, nInStartPos, nInEndPos - nInStartPos, offset); if ( bReplaceApostrophe ) - in_str = in_str.replace(u'\u2019', '\''); + in_str = replacePunctuation(in_str); // JP 20.6.2001: also the start and end positions must be corrected! sal_Int32 newStartPos = @@ -447,7 +471,7 @@ SearchResult TextSearch::searchBackward( const OUString& searchStr, sal_Int32 st // in non-regex mode, allow searching typographical apostrophe with the ASCII one // to avoid regression after using automatic conversion to U+2019 during typing in Writer - bool bReplaceApostrophe = bSearchApostrophe && in_str.indexOf(u'\u2019') > -1; + bool bReplaceApostrophe = bSearchApostrophe && isReplacePunctuation(in_str); bUsePrimarySrchStr = true; @@ -458,7 +482,7 @@ SearchResult TextSearch::searchBackward( const OUString& searchStr, sal_Int32 st in_str = xTranslit->transliterate( searchStr, endPos, startPos - endPos, offset ); if ( bReplaceApostrophe ) - in_str = in_str.replace(u'\u2019', '\''); + in_str = replacePunctuation(in_str); // JP 20.6.2001: also the start and end positions must be corrected! sal_Int32 const newStartPos = (startPos < searchStr.getLength()) @@ -508,7 +532,7 @@ SearchResult TextSearch::searchBackward( const OUString& searchStr, sal_Int32 st else { if ( bReplaceApostrophe ) - in_str = in_str.replace(u'\u2019', '\''); + in_str = replacePunctuation(in_str); sres = (this->*fnBackward)( in_str, startPos, endPos ); } diff --git a/icon-themes/breeze/links.txt b/icon-themes/breeze/links.txt index 23ba813b7107..03d969ae0e0d 100644 --- a/icon-themes/breeze/links.txt +++ b/icon-themes/breeze/links.txt @@ -30,6 +30,7 @@ chart2/res/selectrange.png formula/res/refinp1.png # cmd # ============================================== +cmd/sc_endnotedialog.png cmd/sc_footnotedialog.png # Add cmd/32/adddatefield.png cmd/32/datefield.png diff --git a/icon-themes/colibre/links.txt b/icon-themes/colibre/links.txt index ede4f262cddb..f7fa0cc05107 100644 --- a/icon-themes/colibre/links.txt +++ b/icon-themes/colibre/links.txt @@ -47,6 +47,7 @@ cmd/sc_insertmenulegend.png cmd/sc_legend.png # cmd # ============================================== +cmd/sc_endnotedialog.png cmd/sc_footnotedialog.png # Add cmd/32/adddatefield.png cmd/32/datefield.png diff --git a/icon-themes/colibre/res/donate.png b/icon-themes/colibre/res/donate.png new file mode 100644 index 000000000000..6c93e5eeb788 Binary files /dev/null and b/icon-themes/colibre/res/donate.png differ diff --git a/icon-themes/elementary/links.txt b/icon-themes/elementary/links.txt index 0c320f04ccbe..cc35e834f5e9 100644 --- a/icon-themes/elementary/links.txt +++ b/icon-themes/elementary/links.txt @@ -52,6 +52,7 @@ cmd/sc_toggleaxisdescr.png cmd/sc_helplinesvisible.png # cmd # ============================================== +cmd/sc_endnotedialog.png cmd/sc_footnotedialog.png # Add cmd/32/adddatefield.png cmd/32/datefield.png diff --git a/icon-themes/karasa_jaga/links.txt b/icon-themes/karasa_jaga/links.txt index d71263a1f279..f360ac6c3ad7 100644 --- a/icon-themes/karasa_jaga/links.txt +++ b/icon-themes/karasa_jaga/links.txt @@ -1283,6 +1283,7 @@ cmd/sc_editregion.png cmd/sc_insertsection.png cmd/sc_editselectmenu.png cmd/sc_selecttables.png cmd/sc_ellipse.png cmd/sc_basicshapes.ellipse.png cmd/sc_ellipsetoolbox.png cmd/sc_basicshapes.ellipse.png +cmd/sc_endnotedialog.png cmd/sc_footnotedialog.png cmd/sc_exitsearch.png cmd/sc_closepreview.png cmd/sc_exportasgraphic.png cmd/sc_graphic.png cmd/sc_exportasmenu.png cmd/sc_exportto.png diff --git a/icon-themes/sifr/links.txt b/icon-themes/sifr/links.txt index 5733722da4cb..ae5e9021ca37 100644 --- a/icon-themes/sifr/links.txt +++ b/icon-themes/sifr/links.txt @@ -57,6 +57,7 @@ cmd/sc_insertmenulegend.png cmd/sc_legend.png # cmd # ============================================== +cmd/sc_endnotedialog.png cmd/sc_footnotedialog.png # Add cmd/32/adddatefield.png cmd/32/datefield.png diff --git a/icon-themes/sukapura/links.txt b/icon-themes/sukapura/links.txt index 9552ccb3dbf5..5bcf699978bd 100644 --- a/icon-themes/sukapura/links.txt +++ b/icon-themes/sukapura/links.txt @@ -60,6 +60,7 @@ cmd/sc_insertmenulegend.png cmd/sc_legend.png # cmd # ============================================== +cmd/sc_endnotedialog.png cmd/sc_footnotedialog.png # Add cmd/32/adddatefield.png cmd/32/datefield.png diff --git a/include/LibreOfficeKit/LibreOfficeKitEnums.h b/include/LibreOfficeKit/LibreOfficeKitEnums.h index dff64a584fdc..516622722bb9 100644 --- a/include/LibreOfficeKit/LibreOfficeKitEnums.h +++ b/include/LibreOfficeKit/LibreOfficeKitEnums.h @@ -1067,12 +1067,7 @@ typedef enum * * Here all aproperties are same as described in svxruler. */ - LOK_CALLBACK_VERTICAL_RULER_UPDATE = 73, - - /** - * Status of the document has changed notification - */ - LOK_CALLBACK_STATUS_UPDATE = 74, + LOK_CALLBACK_VERTICAL_RULER_UPDATE = 73 } LibreOfficeKitCallbackType; @@ -1250,8 +1245,6 @@ static inline const char* lokCallbackTypeToString(int nType) return "LOK_CALLBACK_TOOLTIP"; case LOK_CALLBACK_SHAPE_INNER_TEXT: return "LOK_CALLBACK_SHAPE_INNER_TEXT"; - case LOK_CALLBACK_STATUS_UPDATE: - return "LOK_CALLBACK_STATUS_UPDATE"; } assert(!"Unknown LibreOfficeKitCallbackType type."); diff --git a/include/LibreOfficeKit/LibreOfficeKitInit.h b/include/LibreOfficeKit/LibreOfficeKitInit.h index 10085d3c1c35..eafee08083a4 100644 --- a/include/LibreOfficeKit/LibreOfficeKitInit.h +++ b/include/LibreOfficeKit/LibreOfficeKitInit.h @@ -158,6 +158,7 @@ extern "C" size_sEnvPath = strlen(sEnvPath); buffer_size = size_sEnvPath + 2*strlen(pPath) + strlen(UNOPATH) + 4; sNewPath = (char *) malloc(buffer_size); + assert(sNewPath); sNewPath[0] = L'\0'; strcat_s(sNewPath, buffer_size, pPath); // program to PATH strcat_s(sNewPath, buffer_size, ";"); diff --git a/include/editeng/borderline.hxx b/include/editeng/borderline.hxx index 86c6be8161be..05b76a05070d 100644 --- a/include/editeng/borderline.hxx +++ b/include/editeng/borderline.hxx @@ -254,21 +254,6 @@ public: static Color threeDDarkColor( Color aMain ); static BorderWidthImpl getWidthImpl( SvxBorderLineStyle nStyle ); - - std::size_t getHash() const - { - std::size_t seed = 0; - o3tl::hash_combine(seed, m_nWidth); - o3tl::hash_combine(seed, m_nMult); - o3tl::hash_combine(seed, m_nDiv); - o3tl::hash_combine(seed, m_aWidthImpl.getHash()); - o3tl::hash_combine(seed, m_aColor.operator::sal_uInt32()); - o3tl::hash_combine(seed, m_aComplexColor.getHash()); - o3tl::hash_combine(seed, m_nStyle); - o3tl::hash_combine(seed, m_bMirrorWidths); - o3tl::hash_combine(seed, m_bUseLeftTop); - return seed; - } }; EDITENG_DLLPUBLIC bool operator!=( const SvxBorderLine& rLeft, const SvxBorderLine& rRight ); diff --git a/include/editeng/sizeitem.hxx b/include/editeng/sizeitem.hxx index 2247c76d9e79..4e20699f1cef 100644 --- a/include/editeng/sizeitem.hxx +++ b/include/editeng/sizeitem.hxx @@ -56,12 +56,15 @@ public: virtual bool HasMetrics() const override; const Size& GetSize() const { return m_aSize; } - void SetSize(const Size& rSize) { m_aSize = rSize; } + void SetSize(const Size& rSize) + { ASSERT_CHANGE_REFCOUNTED_ITEM; m_aSize = rSize; } tools::Long GetWidth() const { return m_aSize.getWidth(); } tools::Long GetHeight() const { return m_aSize.getHeight(); } - void SetWidth(tools::Long n) { m_aSize.setWidth(n); } - void SetHeight(tools::Long n) { m_aSize.setHeight(n); } + void SetWidth(tools::Long n) + { ASSERT_CHANGE_REFCOUNTED_ITEM; m_aSize.setWidth(n); } + void SetHeight(tools::Long n) + { ASSERT_CHANGE_REFCOUNTED_ITEM; m_aSize.setHeight(n); } }; #endif diff --git a/include/editeng/svxfont.hxx b/include/editeng/svxfont.hxx index 126b56f8f65f..9061ffe398d2 100644 --- a/include/editeng/svxfont.hxx +++ b/include/editeng/svxfont.hxx @@ -113,6 +113,9 @@ public: SvxFont& operator=( const SvxFont& rFont ); SvxFont& operator=( const Font& rFont ); + + // returns true if the SvxFont's own properties are equal (the SvxFont portion of an operator==) + bool SvxFontSubsetEquals(const SvxFont& rFont) const; }; #endif // INCLUDED_EDITENG_SVXFONT_HXX diff --git a/include/editeng/tstpitem.hxx b/include/editeng/tstpitem.hxx index 037e76636641..f0f99ce9cc86 100644 --- a/include/editeng/tstpitem.hxx +++ b/include/editeng/tstpitem.hxx @@ -37,11 +37,10 @@ class EDITENG_DLLPUBLIC SvxTabStop private: sal_Int32 nTabPos; SvxTabAdjust eAdjustment; - mutable sal_Unicode - m_cDecimal; + sal_Unicode m_cDecimal; sal_Unicode cFill; - void fillDecimal() const; + void fillDecimal(); public: SvxTabStop(); @@ -56,8 +55,8 @@ public: SvxTabAdjust& GetAdjustment() { return eAdjustment; } SvxTabAdjust GetAdjustment() const { return eAdjustment; } - sal_Unicode& GetDecimal() { fillDecimal(); return m_cDecimal; } - sal_Unicode GetDecimal() const { fillDecimal(); return m_cDecimal; } + sal_Unicode& GetDecimal() { return m_cDecimal; } + sal_Unicode GetDecimal() const { return m_cDecimal; } sal_Unicode& GetFill() { return cFill; } sal_Unicode GetFill() const { return cFill; } diff --git a/include/sal/config.h b/include/sal/config.h index 5d6bd3459287..f666fed23897 100644 --- a/include/sal/config.h +++ b/include/sal/config.h @@ -108,7 +108,7 @@ #if __has_warning("-Wpotentially-evaluated-expression") #pragma GCC diagnostic ignored "-Wpotentially-evaluated-expression" #endif -// Before fixing occurrences of this warning, lets see whether C++20 will still change to obsolete +// Before fixing occurrences of this warning, let's see whether C++20 will still change to obsolete // the warning (see // "[c++20] // Add rewriting from comparison operators to <=> / =="): diff --git a/include/sax/tools/converter.hxx b/include/sax/tools/converter.hxx index bb97acc595ac..e6568faffbd6 100644 --- a/include/sax/tools/converter.hxx +++ b/include/sax/tools/converter.hxx @@ -210,6 +210,14 @@ public: static bool convert10thDegAngle(sal_Int16& rAngle, std::string_view rString, bool isWrongOOo10thDegAngle); + /** convert SVG angle to number, in 1/nFactor of degrees, range [0..nFactor*360[ */ + static bool convertAngle(double& rAngle, std::u16string_view rString, + const sal_uInt16& nFactor = 1); + + /** convert SVG angle to number, in 1/nFactor of degrees, range [0..nFactor*360[ */ + static bool convertAngle(double& rAngle, std::string_view rString, + const sal_uInt16& nFactor = 1); + /** convert double to XMLSchema-2 "duration" string; negative durations allowed */ static void convertDuration(OUStringBuffer& rBuffer, const double fTime); diff --git a/include/sfx2/AccessibilityIssue.hxx b/include/sfx2/AccessibilityIssue.hxx index d6dd7eb3f4bf..1533159c42f8 100644 --- a/include/sfx2/AccessibilityIssue.hxx +++ b/include/sfx2/AccessibilityIssue.hxx @@ -37,6 +37,7 @@ enum class AccessibilityIssueID TABLE_FORMATTING, HYPERLINK_IS_TEXT, HYPERLINK_SHORT, + HYPERLINK_NO_NAME, FAKE_FOOTNOTE, FAKE_CAPTION, MANUAL_NUMBERING diff --git a/include/sfx2/sfxsids.hrc b/include/sfx2/sfxsids.hrc index 617d4b2363a6..2c20b3d8b81a 100644 --- a/include/sfx2/sfxsids.hrc +++ b/include/sfx2/sfxsids.hrc @@ -587,6 +587,7 @@ class SvxZoomItem; #define SID_GALLERY_BG_BRUSH (SID_SVX_START + 279) #define SID_SEARCH_OPTIONS TypedWhichId(SID_SVX_START + 281) #define SID_SEARCH_ITEM TypedWhichId(SID_SVX_START + 291) +#define SID_SEARCH_USE_ATTR_ITEM_LIST TypedWhichId(SID_SFX_START + 292) #define SID_SIDEBAR TypedWhichId(SID_SVX_START + 336) #define SID_NOTEBOOKBAR TypedWhichId(SID_SVX_START + 338) #define SID_MENUBAR TypedWhichId(SID_SVX_START + 339) diff --git a/include/sfx2/shell.hxx b/include/sfx2/shell.hxx index 420c8d578b95..566241c6db7e 100644 --- a/include/sfx2/shell.hxx +++ b/include/sfx2/shell.hxx @@ -455,7 +455,7 @@ public: defined with an earlier call to SetContextName(). When then broadcast the 'default' context. */ - void BroadcastContextForActivation (const bool bIsActivated); + virtual void BroadcastContextForActivation (const bool bIsActivated); /** Enabled or disable the context broadcaster. Returns the old state. */ diff --git a/include/svl/cintitem.hxx b/include/svl/cintitem.hxx index 0b3da790d1ed..d9c0f273f260 100644 --- a/include/svl/cintitem.hxx +++ b/include/svl/cintitem.hxx @@ -51,15 +51,9 @@ public: sal_uInt8 GetValue() const { return m_nValue; } - inline void SetValue(sal_uInt8 nTheValue); + void SetValue(sal_uInt8 nTheValue) { ASSERT_CHANGE_REFCOUNTED_ITEM; m_nValue = nTheValue; } }; -inline void CntByteItem::SetValue(sal_uInt8 nTheValue) -{ - DBG_ASSERT(GetRefCount() == 0, "CntByteItem::SetValue(): Pooled item"); - m_nValue = nTheValue; -} - class SVL_DLLPUBLIC CntUInt16Item: public SfxPoolItem { sal_uInt16 m_nValue; @@ -88,14 +82,9 @@ public: sal_uInt16 GetValue() const { return m_nValue; } - inline void SetValue(sal_uInt16 nTheValue); + void SetValue(sal_uInt16 nTheValue) { ASSERT_CHANGE_REFCOUNTED_ITEM; m_nValue = nTheValue; } }; -inline void CntUInt16Item::SetValue(sal_uInt16 nTheValue) -{ - DBG_ASSERT(GetRefCount() == 0, "CntUInt16Item::SetValue(): Pooled item"); - m_nValue = nTheValue; -} class SVL_DLLPUBLIC CntInt32Item: public SfxPoolItem { @@ -125,14 +114,9 @@ public: sal_Int32 GetValue() const { return m_nValue; } - inline void SetValue(sal_Int32 nTheValue); + void SetValue(sal_Int32 nTheValue) { ASSERT_CHANGE_REFCOUNTED_ITEM; m_nValue = nTheValue; } }; -inline void CntInt32Item::SetValue(sal_Int32 nTheValue) -{ - DBG_ASSERT(GetRefCount() == 0, "CntInt32Item::SetValue(): Pooled item"); - m_nValue = nTheValue; -} class SVL_DLLPUBLIC CntUInt32Item: public SfxPoolItem { @@ -162,15 +146,9 @@ public: sal_uInt32 GetValue() const { return m_nValue; } - inline void SetValue(sal_uInt32 nTheValue); + void SetValue(sal_uInt32 nTheValue) { ASSERT_CHANGE_REFCOUNTED_ITEM; m_nValue = nTheValue; } }; -inline void CntUInt32Item::SetValue(sal_uInt32 nTheValue) -{ - DBG_ASSERT(GetRefCount() == 0, "CntUInt32Item::SetValue(): Pooled item"); - m_nValue = nTheValue; -} - #endif // INCLUDED_SVL_CINTITEM_HXX /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/include/svl/custritm.hxx b/include/svl/custritm.hxx index 0251df2ca182..118fd0963f15 100644 --- a/include/svl/custritm.hxx +++ b/include/svl/custritm.hxx @@ -55,15 +55,9 @@ public: const OUString & GetValue() const { return m_aValue; } - inline void SetValue(const OUString & rTheValue); + void SetValue(const OUString & rTheValue) { ASSERT_CHANGE_REFCOUNTED_ITEM; m_aValue = rTheValue; } }; -inline void CntUnencodedStringItem::SetValue(const OUString & rTheValue) -{ - assert(GetRefCount() == 0 && "cannot modify name of pooled item"); - m_aValue = rTheValue; -} - #endif // INCLUDED_SVL_CUSTRITM_HXX /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/include/svl/eitem.hxx b/include/svl/eitem.hxx index 8e95bed00881..f6fb22bfeb7d 100644 --- a/include/svl/eitem.hxx +++ b/include/svl/eitem.hxx @@ -22,7 +22,7 @@ #include #include - +#include template class SAL_DLLPUBLIC_RTTI SfxEnumItem : public SfxEnumItemInterface @@ -43,7 +43,7 @@ public: void SetValue(EnumT nTheValue) { - assert(GetRefCount() == 0 && "SfxEnumItem::SetValue(): Pooled item"); + ASSERT_CHANGE_REFCOUNTED_ITEM; m_nValue = nTheValue; } diff --git a/include/svl/flagitem.hxx b/include/svl/flagitem.hxx index 76226cb1aa80..ac32bab18ca9 100644 --- a/include/svl/flagitem.hxx +++ b/include/svl/flagitem.hxx @@ -44,12 +44,9 @@ public: MapUnit ePresMetric, OUString & rText, const IntlWrapper& ) const override; - sal_uInt16 GetValue() const { return nVal; } - void SetValue( sal_uInt16 nNewVal ) { - DBG_ASSERT( GetRefCount() == 0, "SetValue() with pooled item" ); - nVal = nNewVal; - } - bool GetFlag( sal_uInt8 nFlag ) const { return (nVal & ( 1< #include #include +#include class IntlWrapper; @@ -502,6 +503,8 @@ public: bool isDynamicDefault() const { return m_bDynamicDefault; } bool isSetItem() const { return m_bIsSetItem; } bool isShareable() const { return m_bShareable; } + bool isPooled() const { return GetRefCount() > 0; } + // version that allows nullptrs static bool areSame(const SfxPoolItem* pItem1, const SfxPoolItem* pItem2); @@ -638,7 +641,7 @@ private: // that specific Item (see other derivations) class SVL_DLLPUBLIC DefaultItemInstanceManager : public ItemInstanceManager { - std::unordered_set maRegistered; + std::unordered_map> maRegistered; public: DefaultItemInstanceManager(const std::size_t aClassHash) @@ -652,6 +655,45 @@ private: virtual void remove(const SfxPoolItem&) override; }; +/** + Utility template to reduce boilerplate code when creating item instance managers + for specific PoolItem subclasses. +*/ +template +class TypeSpecificItemInstanceManager : public ItemInstanceManager +{ +public: + TypeSpecificItemInstanceManager() + : ItemInstanceManager(typeid(T).hash_code()) + { + } + + // standard interface, accessed exclusively + // by implCreateItemEntry/implCleanupItemEntry + virtual const SfxPoolItem* find(const SfxPoolItem& rItem) const override final + { + auto aHit(maRegistered.find(hashCode(rItem))); + if (aHit != maRegistered.end()) + return aHit->second; + return nullptr; + } + virtual void add(const SfxPoolItem& rItem) override final + { + maRegistered.insert({hashCode(rItem), &rItem}); + } + virtual void remove(const SfxPoolItem& rItem) override final + { + maRegistered.erase(hashCode(rItem)); + } + +protected: + virtual size_t hashCode(const SfxPoolItem&) const = 0; + +private: + std::unordered_map maRegistered; +}; + + inline bool IsStaticDefaultItem(const SfxPoolItem *pItem ) { return pItem && pItem->isStaticDefault(); @@ -667,11 +709,6 @@ inline bool IsDefaultItem( const SfxPoolItem *pItem ) return pItem && (pItem->isStaticDefault() || pItem->isDynamicDefault()); } -inline bool IsPooledItem( const SfxPoolItem *pItem ) -{ - return pItem && pItem->GetRefCount() > 0; -} - SVL_DLLPUBLIC extern SfxPoolItem const * const INVALID_POOL_ITEM; SVL_DLLPUBLIC extern SfxPoolItem const * const DISABLED_POOL_ITEM; diff --git a/include/svl/ptitem.hxx b/include/svl/ptitem.hxx index 2ceb39410695..90db98bbc869 100644 --- a/include/svl/ptitem.hxx +++ b/include/svl/ptitem.hxx @@ -46,10 +46,7 @@ public: virtual SfxPointItem* Clone( SfxItemPool *pPool = nullptr ) const override; const Point& GetValue() const { return aVal; } - void SetValue( const Point& rNewVal ) { - DBG_ASSERT( GetRefCount() == 0, "SetValue() with pooled item" ); - aVal = rNewVal; - } + void SetValue( const Point& rNewVal ) { ASSERT_CHANGE_REFCOUNTED_ITEM; aVal = rNewVal; } virtual bool QueryValue( css::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const override; diff --git a/include/svtools/borderline.hxx b/include/svtools/borderline.hxx index 90ecee6512f5..f5b2b56093fa 100644 --- a/include/svtools/borderline.hxx +++ b/include/svtools/borderline.hxx @@ -74,15 +74,6 @@ public: bool IsEmpty( ) const { return (0 == m_nRate1) && (0 == m_nRate2); } bool IsDouble( ) const { return (0 != m_nRate1) && (0 != m_nRate2); } - std::size_t getHash() const - { - std::size_t seed = 0; - o3tl::hash_combine(seed, m_nFlags); - o3tl::hash_combine(seed, m_nRate1); - o3tl::hash_combine(seed, m_nRate2); - o3tl::hash_combine(seed, m_nRateGap); - return seed; - } }; diff --git a/include/svx/strings.hrc b/include/svx/strings.hrc index 8c61f7714e09..c9c1c899998b 100644 --- a/include/svx/strings.hrc +++ b/include/svx/strings.hrc @@ -1570,7 +1570,7 @@ #define RID_SUBSETSTR_THAANA NC_("RID_SUBSETMAP", "Thaana") #define RID_SUBSETSTR_ETHIOPIC NC_("RID_SUBSETMAP", "Ethiopic") #define RID_SUBSETSTR_CHEROKEE NC_("RID_SUBSETMAP", "Cherokee") -#define RID_SUBSETSTR_CANADIAN_ABORIGINAL NC_("RID_SUBSETMAP", "Unified Canadian Aboriginal Syllables") +#define RID_SUBSETSTR_CANADIAN_ABORIGINAL NC_("RID_SUBSETMAP", "Unified Canadian Aboriginal Syllabics") #define RID_SUBSETSTR_MONGOLIAN NC_("RID_SUBSETMAP", "Mongolian") #define RID_SUBSETSTR_MISC_MATH_SYMS_A NC_("RID_SUBSETMAP", "Miscellaneous Mathematical Symbols-A") #define RID_SUBSETSTR_SUPPL_ARROWS_A NC_("RID_SUBSETMAP", "Supplemental Arrows-A") diff --git a/include/svx/svdmodel.hxx b/include/svx/svdmodel.hxx index 81ec0927db4c..f029d928aa8a 100644 --- a/include/svx/svdmodel.hxx +++ b/include/svx/svdmodel.hxx @@ -42,11 +42,7 @@ #include #include - -#ifdef DBG_UTIL -// SdrObjectLifetimeWatchDog #include -#endif class OutputDevice; class SdrOutliner; @@ -153,8 +149,9 @@ struct SdrModelImpl; class SVXCORE_DLLPUBLIC SdrModel : public SfxBroadcaster, public tools::WeakBase { -#ifdef DBG_UTIL - // SdrObjectLifetimeWatchDog: + // We need to keep track of all the SdrObjects linked to this SdrModel so that we can + // shut them down cleanly, otherwise we end up with use-after-free issues. + // // Use maAllIncarnatedObjects to keep track of all SdrObjects incarnated using this SdrModel // (what is now possible after the paradigm change that a SdrObject stays at a single SdrModel // for it's whole lifetime). @@ -174,7 +171,6 @@ class SVXCORE_DLLPUBLIC SdrModel : public SfxBroadcaster, public tools::WeakBase friend void impAddIncarnatedSdrObjectToSdrModel(SdrObject& rSdrObject, SdrModel& rSdrModel); friend void impRemoveIncarnatedSdrObjectToSdrModel(SdrObject& rSdrObject, SdrModel& rSdrModel); std::unordered_set< SdrObject* > maAllIncarnatedObjects; -#endif protected: std::vector> maMasterPages; std::vector> maPages; diff --git a/include/svx/svdobj.hxx b/include/svx/svdobj.hxx index 8dd17bdc00f5..f1bee52e87ec 100644 --- a/include/svx/svdobj.hxx +++ b/include/svx/svdobj.hxx @@ -409,7 +409,7 @@ public: void BroadcastObjectChange() const; - const SfxBroadcaster* GetBroadcaster() const; + SfxBroadcaster* GetBroadcaster() const; // set modified-flag in the model virtual void SetChanged(); diff --git a/include/svx/svdundo.hxx b/include/svx/svdundo.hxx index 743afaced0e3..95504986d1e1 100644 --- a/include/svx/svdundo.hxx +++ b/include/svx/svdundo.hxx @@ -188,10 +188,10 @@ public: class SVXCORE_DLLPUBLIC SdrUndoMoveObj final : public SdrUndoObj { - Size aDistance; // Distance by which we move + Size m_aDistance; // Distance by which we move public: - SdrUndoMoveObj(SdrObject& rNewObj, const Size& rDist): SdrUndoObj(rNewObj),aDistance(rDist) {} + SdrUndoMoveObj(SdrObject& rNewObj, const Size& rDist): SdrUndoObj(rNewObj),m_aDistance(rDist) {} virtual ~SdrUndoMoveObj() override; virtual void Undo() override; diff --git a/include/svx/unoshape.hxx b/include/svx/unoshape.hxx index a72c3beae1b5..4ae84a2bc74e 100644 --- a/include/svx/unoshape.hxx +++ b/include/svx/unoshape.hxx @@ -226,7 +226,7 @@ public: void setMaster( SvxShapeMaster* pMaster ); // SfxListener - virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) noexcept override; + virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) noexcept override final; // XAggregation virtual css::uno::Any SAL_CALL queryAggregation( const css::uno::Type& aType ) override; diff --git a/include/systools/curlinit.hxx b/include/systools/curlinit.hxx index 7c6f8d07deaf..7fe72370c858 100644 --- a/include/systools/curlinit.hxx +++ b/include/systools/curlinit.hxx @@ -14,7 +14,7 @@ #include // curl is built with --with-secure-transport on macOS and iOS so doesn't need these -// certs. Windows doesn't need them either, but lets assume everything else does +// certs. Windows doesn't need them either, but let's assume everything else does #if !defined(SYSTEM_OPENSSL) && !defined(_WIN32) && !defined(MACOSX) && !defined(IOS) #include diff --git a/include/tools/UnitConversion.hxx b/include/tools/UnitConversion.hxx index 43237e0514c5..b7756343252c 100644 --- a/include/tools/UnitConversion.hxx +++ b/include/tools/UnitConversion.hxx @@ -12,77 +12,7 @@ #include #include -#include #include -#include - -constexpr o3tl::Length FieldToO3tlLength(FieldUnit eU, o3tl::Length ePixelValue = o3tl::Length::px) -{ - switch (eU) - { - case FieldUnit::MM: - return o3tl::Length::mm; - case FieldUnit::CM: - return o3tl::Length::cm; - case FieldUnit::M: - return o3tl::Length::m; - case FieldUnit::KM: - return o3tl::Length::km; - case FieldUnit::TWIP: - return o3tl::Length::twip; - case FieldUnit::POINT: - return o3tl::Length::pt; - case FieldUnit::PICA: - return o3tl::Length::pc; - case FieldUnit::INCH: - return o3tl::Length::in; - case FieldUnit::FOOT: - return o3tl::Length::ft; - case FieldUnit::MILE: - return o3tl::Length::mi; - case FieldUnit::CHAR: - return o3tl::Length::ch; - case FieldUnit::LINE: - return o3tl::Length::line; - case FieldUnit::MM_100TH: - return o3tl::Length::mm100; - case FieldUnit::PIXEL: - return ePixelValue; - default: - return o3tl::Length::invalid; - } -} - -constexpr o3tl::Length MapToO3tlLength(MapUnit eU, o3tl::Length ePixelValue = o3tl::Length::px) -{ - switch (eU) - { - case MapUnit::Map100thMM: - return o3tl::Length::mm100; - case MapUnit::Map10thMM: - return o3tl::Length::mm10; - case MapUnit::MapMM: - return o3tl::Length::mm; - case MapUnit::MapCM: - return o3tl::Length::cm; - case MapUnit::Map1000thInch: - return o3tl::Length::in1000; - case MapUnit::Map100thInch: - return o3tl::Length::in100; - case MapUnit::Map10thInch: - return o3tl::Length::in10; - case MapUnit::MapInch: - return o3tl::Length::in; - case MapUnit::MapPoint: - return o3tl::Length::pt; - case MapUnit::MapTwip: - return o3tl::Length::twip; - case MapUnit::MapPixel: - return ePixelValue; - default: - return o3tl::Length::invalid; - } -} inline Fraction conversionFract(o3tl::Length from, o3tl::Length to) { @@ -92,7 +22,8 @@ inline Fraction conversionFract(o3tl::Length from, o3tl::Length to) template constexpr auto convertTwipToMm100(N n) { - return o3tl::convert(n, o3tl::Length::twip, o3tl::Length::mm100); + using namespace o3tl; // Allow ADL find overloads e.g. in + return convert(n, o3tl::Length::twip, o3tl::Length::mm100); } constexpr sal_Int64 sanitiseMm100ToTwip(sal_Int64 n) diff --git a/include/tools/fldunit.hxx b/include/tools/fldunit.hxx index a2838c32ff25..72ab9ad92d87 100644 --- a/include/tools/fldunit.hxx +++ b/include/tools/fldunit.hxx @@ -19,6 +19,9 @@ #ifndef INCLUDED_TOOLS_FLDUNIT_HXX #define INCLUDED_TOOLS_FLDUNIT_HXX +#include + +#include #include // Corresponds to offapi/com/sun/star/awt/FieldUnit.idl @@ -46,6 +49,43 @@ enum class FieldUnit : sal_uInt16 MILLISECOND, }; +constexpr o3tl::Length FieldToO3tlLength(FieldUnit eU, o3tl::Length ePixelValue = o3tl::Length::px) +{ + switch (eU) + { + case FieldUnit::MM: + return o3tl::Length::mm; + case FieldUnit::CM: + return o3tl::Length::cm; + case FieldUnit::M: + return o3tl::Length::m; + case FieldUnit::KM: + return o3tl::Length::km; + case FieldUnit::TWIP: + return o3tl::Length::twip; + case FieldUnit::POINT: + return o3tl::Length::pt; + case FieldUnit::PICA: + return o3tl::Length::pc; + case FieldUnit::INCH: + return o3tl::Length::in; + case FieldUnit::FOOT: + return o3tl::Length::ft; + case FieldUnit::MILE: + return o3tl::Length::mi; + case FieldUnit::CHAR: + return o3tl::Length::ch; + case FieldUnit::LINE: + return o3tl::Length::line; + case FieldUnit::MM_100TH: + return o3tl::Length::mm100; + case FieldUnit::PIXEL: + return ePixelValue; + default: + return o3tl::Length::invalid; + } +} + #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/include/tools/mapunit.hxx b/include/tools/mapunit.hxx index 881a90713cd0..a79950f0d264 100644 --- a/include/tools/mapunit.hxx +++ b/include/tools/mapunit.hxx @@ -18,6 +18,9 @@ */ #pragma once +#include + +#include #include enum class MapUnit : sal_uInt8 @@ -32,4 +35,35 @@ enum class MapUnit : sal_uInt8 LASTENUMDUMMY // used as an error return }; +constexpr o3tl::Length MapToO3tlLength(MapUnit eU, o3tl::Length ePixelValue = o3tl::Length::px) +{ + switch (eU) + { + case MapUnit::Map100thMM: + return o3tl::Length::mm100; + case MapUnit::Map10thMM: + return o3tl::Length::mm10; + case MapUnit::MapMM: + return o3tl::Length::mm; + case MapUnit::MapCM: + return o3tl::Length::cm; + case MapUnit::Map1000thInch: + return o3tl::Length::in1000; + case MapUnit::Map100thInch: + return o3tl::Length::in100; + case MapUnit::Map10thInch: + return o3tl::Length::in10; + case MapUnit::MapInch: + return o3tl::Length::in; + case MapUnit::MapPoint: + return o3tl::Length::pt; + case MapUnit::MapTwip: + return o3tl::Length::twip; + case MapUnit::MapPixel: + return ePixelValue; + default: + return o3tl::Length::invalid; + } +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/include/tools/solar.h b/include/tools/solar.h index ae7c5288c4cc..94015e259c0c 100644 --- a/include/tools/solar.h +++ b/include/tools/solar.h @@ -23,6 +23,8 @@ #include #include +#include + /** Intermediate type to solve type clash with Windows headers. Should be removed as soon as all code parts have been reviewed and the correct type is known. Most of the times ULONG is meant @@ -42,8 +44,6 @@ typedef sal_uInt8 SVBT16[2]; typedef sal_uInt8 SVBT32[4]; typedef sal_uInt8 SVBT64[8]; -#ifdef __cplusplus - inline sal_uInt16 SVBT16ToUInt16( const SVBT16 p ) { return static_cast (static_cast(p[0]) + (static_cast(p[1]) << 8)); } @@ -53,32 +53,16 @@ inline sal_uInt32 SVBT32ToUInt32 ( const SVBT32 p ) { return static_cast(p[1]) << 8) + (static_cast(p[2]) << 16) + (static_cast(p[3]) << 24)); } -#if defined OSL_LITENDIAN inline double SVBT64ToDouble( const SVBT64 p ) { double n; - reinterpret_cast(&n)[0] = p[0]; - reinterpret_cast(&n)[1] = p[1]; - reinterpret_cast(&n)[2] = p[2]; - reinterpret_cast(&n)[3] = p[3]; - reinterpret_cast(&n)[4] = p[4]; - reinterpret_cast(&n)[5] = p[5]; - reinterpret_cast(&n)[6] = p[6]; - reinterpret_cast(&n)[7] = p[7]; +#if defined OSL_LITENDIAN + std::copy(p, p + 8, reinterpret_cast(&n)); +#else + std::reverse_copy(p, p + 8, reinterpret_cast(&n)); +#endif return n; } -#else -inline double SVBT64ToDouble( const SVBT64 p ) { double n; - reinterpret_cast(&n)[0] = p[7]; - reinterpret_cast(&n)[1] = p[6]; - reinterpret_cast(&n)[2] = p[5]; - reinterpret_cast(&n)[3] = p[4]; - reinterpret_cast(&n)[4] = p[3]; - reinterpret_cast(&n)[5] = p[2]; - reinterpret_cast(&n)[6] = p[1]; - reinterpret_cast(&n)[7] = p[0]; - return n; } -#endif inline void ShortToSVBT16( sal_uInt16 n, SVBT16 p ) { @@ -93,26 +77,14 @@ inline void UInt32ToSVBT32 ( sal_uInt32 n, SVBT32 p ) p[3] = static_cast(n >> 24); } inline void Int32ToSVBT32 ( sal_Int32 n, SVBT32 p ) { UInt32ToSVBT32(sal_uInt32(n), p); } +inline void DoubleToSVBT64( double n, SVBT64 p ) +{ #if defined OSL_LITENDIAN -inline void DoubleToSVBT64( double n, SVBT64 p ) { p[0] = reinterpret_cast(&n)[0]; - p[1] = reinterpret_cast(&n)[1]; - p[2] = reinterpret_cast(&n)[2]; - p[3] = reinterpret_cast(&n)[3]; - p[4] = reinterpret_cast(&n)[4]; - p[5] = reinterpret_cast(&n)[5]; - p[6] = reinterpret_cast(&n)[6]; - p[7] = reinterpret_cast(&n)[7]; } + std::copy(reinterpret_cast(&n), reinterpret_cast(&n) + 8, p); #else -inline void DoubleToSVBT64( double n, SVBT64 p ) { p[0] = reinterpret_cast(&n)[7]; - p[1] = reinterpret_cast(&n)[6]; - p[2] = reinterpret_cast(&n)[5]; - p[3] = reinterpret_cast(&n)[4]; - p[4] = reinterpret_cast(&n)[3]; - p[5] = reinterpret_cast(&n)[2]; - p[6] = reinterpret_cast(&n)[1]; - p[7] = reinterpret_cast(&n)[0]; } -#endif + std::reverse_copy(reinterpret_cast(&n), reinterpret_cast(&n) + 8, p); #endif +} #endif diff --git a/include/unotools/ucbstreamhelper.hxx b/include/unotools/ucbstreamhelper.hxx index 69bae538b316..3c8868c03911 100644 --- a/include/unotools/ucbstreamhelper.hxx +++ b/include/unotools/ucbstreamhelper.hxx @@ -39,9 +39,14 @@ namespace utl class UNOTOOLS_DLLPUBLIC UcbStreamHelper { public: - static std::unique_ptr CreateStream(const OUString& rFileName, StreamMode eOpenMode, css::uno::Reference xParentWin = nullptr); - static std::unique_ptr CreateStream(const OUString& rFileName, StreamMode eOpenMode, - bool bFileExists, css::uno::Reference xParentWin = nullptr); + static std::unique_ptr + CreateStream(const OUString& rFileName, StreamMode eOpenMode, + css::uno::Reference xParentWin = nullptr, + bool bUseSimpleFileAccessInteraction = true); + static std::unique_ptr + CreateStream(const OUString& rFileName, StreamMode eOpenMode, bool bFileExists, + css::uno::Reference xParentWin = nullptr, + bool bUseSimpleFileAccessInteraction = true); static std::unique_ptr CreateStream( const css::uno::Reference < css::io::XInputStream >& xStream ); static std::unique_ptr CreateStream( const css::uno::Reference < css::io::XStream >& xStream ); static std::unique_ptr CreateStream( const css::uno::Reference < css::io::XInputStream >& xStream, bool bCloseStream ); diff --git a/include/vcl/filter/PDFiumLibrary.hxx b/include/vcl/filter/PDFiumLibrary.hxx index a5d757414429..6d2a65a8fa38 100644 --- a/include/vcl/filter/PDFiumLibrary.hxx +++ b/include/vcl/filter/PDFiumLibrary.hxx @@ -117,6 +117,7 @@ public: PDFAnnotAActionType eEvent) = 0; virtual OUString getFormFieldValue(PDFiumDocument* pDoc) = 0; + virtual int getOptionCount(PDFiumDocument* pDoc) = 0; }; class PDFiumTextPage; diff --git a/include/vcl/graph.hxx b/include/vcl/graph.hxx index 74261bb84e6f..9d1499ea98c1 100644 --- a/include/vcl/graph.hxx +++ b/include/vcl/graph.hxx @@ -47,7 +47,6 @@ class GDIMetaFile; class SvStream; class ImpGraphic; class OutputDevice; -class GraphicReader; class SAL_WARN_UNUSED VCL_DLLPUBLIC GraphicConversionParameters { @@ -174,8 +173,6 @@ public: SAL_DLLPRIVATE OString getUniqueID() const; - std::shared_ptr& GetReaderContext(); - SAL_DLLPRIVATE void SetReaderContext( const std::shared_ptr &pReader ); SAL_DLLPRIVATE void SetDummyContext(bool value); SAL_DLLPRIVATE bool IsDummyContext() const; diff --git a/include/vcl/lazydelete.hxx b/include/vcl/lazydelete.hxx index 4a524d99fa4d..9488030a3369 100644 --- a/include/vcl/lazydelete.hxx +++ b/include/vcl/lazydelete.hxx @@ -22,6 +22,7 @@ #include #include +#include #include @@ -131,6 +132,33 @@ namespace vcl } } }; + + /** Similar to DeleteOnDeinit, the DeleteRtlReferenceOnDeinit + template class makes sure that a static rtl::Reference managed object is disposed + and released at the right time. + + Use like + static DeleteUnoReferenceOnDeinit xStaticFactory (new Foo); + rtl::Reference xFactory (xStaticFactory.get()); + if (xFactory.is()) + \ + */ + template + class DeleteRtlReferenceOnDeinit final : public vcl::DeleteOnDeinitBase + { + rtl::Reference m_xI; + virtual void doCleanup() override { set(nullptr); } + public: + DeleteRtlReferenceOnDeinit(rtl::Reference _xI ) : m_xI(std::move( _xI )) { + addDeinitContainer( this ); } + + rtl::Reference get() { return m_xI; } + + void set (const rtl::Reference& r_xNew ) + { + m_xI = r_xNew; + } + }; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/include/vcl/syswin.hxx b/include/vcl/syswin.hxx index dc3f3d9fd393..f8a70d2be2a4 100644 --- a/include/vcl/syswin.hxx +++ b/include/vcl/syswin.hxx @@ -96,21 +96,21 @@ class VCL_DLLPUBLIC SystemWindow class ImplData; private: - VclPtr mpMenuBar; - Size maMinOutSize; - bool mbDockBtn; - bool mbHideBtn; - bool mbSysChild; - bool mbIsCalculatingInitialLayoutSize; - bool mbInitialLayoutSizeCalculated; - bool mbPaintComplete; - MenuBarMode mnMenuBarMode; - sal_uInt16 mnIcon; std::unique_ptr mpImplData; - Idle maLayoutIdle; + VclPtr mpMenuBar; OUString maNotebookBarUIFile; + Size maMinOutSize; + MenuBarMode mnMenuBarMode = MenuBarMode::Normal; + sal_uInt16 mnIcon = 0; + bool mbDockBtn : 1 = false; + bool mbHideBtn : 1 = false; + bool mbSysChild : 1 = false; + bool mbIsCalculatingInitialLayoutSize : 1 = false; + bool mbInitialLayoutSizeCalculated : 1 = false; + bool mbPaintComplete : 1 = false; + bool mbIsDeferredInit : 1 = false; + Idle maLayoutIdle; protected: - bool mbIsDeferredInit; VclPtr mpDialogParent; public: using Window::ImplIsInTaskPaneList; @@ -144,6 +144,8 @@ protected: SAL_DLLPRIVATE void DoInitialLayout(); + virtual void ImplDeferredInit(vcl::Window* pParent, WinBits nBits); + public: virtual ~SystemWindow() override; virtual void dispose() override; @@ -239,7 +241,7 @@ public: SAL_DLLPRIVATE bool hasPendingLayout() const { return maLayoutIdle.IsActive(); } - virtual void doDeferredInit(WinBits nBits); + void doDeferredInit(WinBits nBits); // Screenshot interface VclPtr createScreenshot(); diff --git a/include/vcl/toolkit/dialog.hxx b/include/vcl/toolkit/dialog.hxx index 5e11d2f783b5..7b61ed4c68c7 100644 --- a/include/vcl/toolkit/dialog.hxx +++ b/include/vcl/toolkit/dialog.hxx @@ -79,13 +79,13 @@ private: protected: void ImplInitDialog( vcl::Window* pParent, WinBits nStyle, InitFlag eFlag = InitFlag::Default ); + virtual void ImplDeferredInit(vcl::Window* pParent, WinBits nBits) override; /// Find and set the LOK notifier according to the pParent. void ImplLOKNotifier(vcl::Window* pParent); public: SAL_DLLPRIVATE bool IsInClose() const { return mbInClose; } - virtual void doDeferredInit(WinBits nBits) override; SAL_DLLPRIVATE void disposeOwnedButtons(); SAL_DLLPRIVATE static vcl::Window* GetDefDialogParent(); diff --git a/include/vcl/toolkit/floatwin.hxx b/include/vcl/toolkit/floatwin.hxx index f266b745375e..d2dcca050599 100644 --- a/include/vcl/toolkit/floatwin.hxx +++ b/include/vcl/toolkit/floatwin.hxx @@ -83,6 +83,7 @@ private: protected: SAL_DLLPRIVATE void ImplInitFloating( vcl::Window* pParent, WinBits nStyle ); + virtual void ImplDeferredInit(vcl::Window* pParent, WinBits nBits) override; SAL_DLLPRIVATE void ImplInitSettings(); virtual void ApplySettings(vcl::RenderContext& rRenderContext) override; @@ -102,7 +103,6 @@ public: SAL_DLLPRIVATE void ImplEndPopupMode( FloatWinPopupEndFlags nFlags, const VclPtr& xFocusId ); SAL_DLLPRIVATE AbsoluteScreenPixelRectangle ImplGetItemEdgeClipRect(); SAL_DLLPRIVATE bool ImplIsInPrivatePopupMode() const { return mbInPopupMode; } - virtual void doDeferredInit(WinBits nBits) override; void PixelInvalidate(const tools::Rectangle* pRectangle) override; public: diff --git a/libreofficekit/source/gtk/lokdocview.cxx b/libreofficekit/source/gtk/lokdocview.cxx index 3eddb009c242..5dddaa2d0e37 100644 --- a/libreofficekit/source/gtk/lokdocview.cxx +++ b/libreofficekit/source/gtk/lokdocview.cxx @@ -1502,7 +1502,6 @@ callback (gpointer pData) case LOK_CALLBACK_CORE_LOG: case LOK_CALLBACK_TOOLTIP: case LOK_CALLBACK_SHAPE_INNER_TEXT: - case LOK_CALLBACK_STATUS_UPDATE: { // TODO: Implement me break; diff --git a/libreofficekit/source/gtk/tilebuffer.hxx b/libreofficekit/source/gtk/tilebuffer.hxx index 239482e34625..e1bd2ce49c93 100644 --- a/libreofficekit/source/gtk/tilebuffer.hxx +++ b/libreofficekit/source/gtk/tilebuffer.hxx @@ -18,7 +18,7 @@ #define LOK_TILEBUFFER_ERROR (LOKTileBufferErrorQuark()) -// Lets use a square of side 256 pixels for each tile. +// Let's use a square of side 256 pixels for each tile. const int nTileSizePixels = 256; /** diff --git a/lingucomponent/Library_LanguageTool.mk b/lingucomponent/Library_LanguageTool.mk index 91907fe2b52f..aa09327cdec3 100644 --- a/lingucomponent/Library_LanguageTool.mk +++ b/lingucomponent/Library_LanguageTool.mk @@ -23,6 +23,7 @@ $(eval $(call gb_Library_use_libraries,LanguageTool,\ comphelper \ cppu \ cppuhelper \ + fwk \ i18nlangtag \ svt \ lng \ diff --git a/lingucomponent/source/spellcheck/languagetool/languagetoolimp.cxx b/lingucomponent/source/spellcheck/languagetool/languagetoolimp.cxx index e50e96e4fb05..e565b3f269fe 100644 --- a/lingucomponent/source/spellcheck/languagetool/languagetoolimp.cxx +++ b/lingucomponent/source/spellcheck/languagetool/languagetoolimp.cxx @@ -47,8 +47,13 @@ #include #include #include +#include +#include +#include #include +#include #include +#include #include #include #include @@ -121,7 +126,7 @@ enum class HTTP_METHOD std::string makeHttpRequest_impl(std::u16string_view aURL, HTTP_METHOD method, const OString& aPostData, curl_slist* pHttpHeader, - tools::Long& nStatusCode) + tools::Long& nStatusCode, CURLcode& eCURLCode) { struct curl_cleanup_t { @@ -160,11 +165,12 @@ std::string makeHttpRequest_impl(std::u16string_view aURL, HTTP_METHOD method, (void)curl_easy_setopt(curl.get(), CURLOPT_POSTFIELDS, aPostData.getStr()); } - CURLcode cc = curl_easy_perform(curl.get()); - if (cc != CURLE_OK) + eCURLCode = curl_easy_perform(curl.get()); + if (eCURLCode != CURLE_OK) { SAL_WARN("languagetool", - "CURL request returned with error: " << static_cast(cc)); + "CURL request returned with error: " << static_cast(eCURLCode) << " " + << curl_easy_strerror(eCURLCode)); } curl_easy_getinfo(curl.get(), CURLINFO_RESPONSE_CODE, &nStatusCode); @@ -172,7 +178,7 @@ std::string makeHttpRequest_impl(std::u16string_view aURL, HTTP_METHOD method, } std::string makeDudenHttpRequest(std::u16string_view aURL, const OString& aPostData, - tools::Long& nStatusCode) + tools::Long& nStatusCode, CURLcode& eCURLCode) { struct curl_slist* pList = nullptr; OString sAccessToken @@ -186,11 +192,12 @@ std::string makeDudenHttpRequest(std::u16string_view aURL, const OString& aPostD pList = curl_slist_append(pList, sAccessToken.getStr()); } - return makeHttpRequest_impl(aURL, HTTP_METHOD::HTTP_POST, aPostData, pList, nStatusCode); + return makeHttpRequest_impl(aURL, HTTP_METHOD::HTTP_POST, aPostData, pList, nStatusCode, + eCURLCode); } std::string makeHttpRequest(std::u16string_view aURL, HTTP_METHOD method, const OString& aPostData, - tools::Long& nStatusCode) + tools::Long& nStatusCode, CURLcode& eCURLCode) { OString realPostData(aPostData); if (method == HTTP_METHOD::HTTP_POST) @@ -202,7 +209,7 @@ std::string makeHttpRequest(std::u16string_view aURL, HTTP_METHOD method, const realPostData += "&username=" + encodeTextForLT(username) + "&apiKey=" + apiKey; } - return makeHttpRequest_impl(aURL, method, realPostData, nullptr, nStatusCode); + return makeHttpRequest_impl(aURL, method, realPostData, nullptr, nStatusCode, eCURLCode); } template @@ -301,10 +308,41 @@ OUString getCheckerURL() return *oURL + "/check"; return {}; } + +void lclShowCURLErrorInteraction(const css::uno::Reference& xContext, + CURLcode eCURLCode, const OUString& rServer) +{ + if (!xContext.is()) + return; + + css::uno::Reference xInteractionHandler + = task::InteractionHandler::createWithParent(xContext, nullptr); + if (!xInteractionHandler.is()) + return; + + css::uno::Any aInteraction; + + rtl::Reference pApprove + = new comphelper::OInteractionApprove(); + css::uno::Sequence> aContinuations{ + pApprove + }; + + ucb::InteractiveNetworkConnectException aException( + { "(" + OUString::number(eCURLCode) + ") " + + OStringToOUString(curl_easy_strerror(eCURLCode), RTL_TEXTENCODING_UTF8) }, + {}, task::InteractionClassification_ERROR, rServer); + + aInteraction <<= aException; + xInteractionHandler->handle( + framework::InteractionRequest::CreateRequest(aInteraction, aContinuations)); +} } -LanguageToolGrammarChecker::LanguageToolGrammarChecker() +LanguageToolGrammarChecker::LanguageToolGrammarChecker( + const css::uno::Reference& xContext) : mCachedResults(10) + , mxContext(xContext) { } @@ -452,10 +490,22 @@ ProofreadingResult SAL_CALL LanguageToolGrammarChecker::doProofreading( tools::Long http_code = 0; std::string response_body; + CURLcode eCURLCode = CURLE_OK; if (bDudenProtocol) - response_body = makeDudenHttpRequest(checkerURL, postData, http_code); + response_body = makeDudenHttpRequest(checkerURL, postData, http_code, eCURLCode); else - response_body = makeHttpRequest(checkerURL, HTTP_METHOD::HTTP_POST, postData, http_code); + response_body + = makeHttpRequest(checkerURL, HTTP_METHOD::HTTP_POST, postData, http_code, eCURLCode); + + if (eCURLCode != CURLE_OK) + { + // show the cURL error only once for a given checkerURL + if (maLastErrorCheckerURL != checkerURL) + { + maLastErrorCheckerURL = checkerURL; + lclShowCURLErrorInteraction(mxContext, eCURLCode, checkerURL); + } + } if (http_code != 200) { @@ -512,9 +562,9 @@ void SAL_CALL LanguageToolGrammarChecker::initialize(const uno::Sequence const&) + css::uno::XComponentContext* pContext, css::uno::Sequence const&) { - return cppu::acquire(new LanguageToolGrammarChecker()); + return cppu::acquire(new LanguageToolGrammarChecker(pContext)); } /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ diff --git a/lingucomponent/source/spellcheck/languagetool/languagetoolimp.hxx b/lingucomponent/source/spellcheck/languagetool/languagetoolimp.hxx index 93d2c84c612d..487d6d154e4b 100644 --- a/lingucomponent/source/spellcheck/languagetool/languagetoolimp.hxx +++ b/lingucomponent/source/spellcheck/languagetool/languagetoolimp.hxx @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -37,11 +38,13 @@ class LanguageToolGrammarChecker css::uno::Sequence m_aSuppLocales; o3tl::lru_map> mCachedResults; + css::uno::Reference mxContext; + OUString maLastErrorCheckerURL; LanguageToolGrammarChecker(const LanguageToolGrammarChecker&) = delete; LanguageToolGrammarChecker& operator=(const LanguageToolGrammarChecker&) = delete; public: - LanguageToolGrammarChecker(); + LanguageToolGrammarChecker(const css::uno::Reference& xContext); virtual ~LanguageToolGrammarChecker() override; // XSupportedLocales diff --git a/lotuswordpro/source/filter/lwpobjstrm.cxx b/lotuswordpro/source/filter/lwpobjstrm.cxx index 728e3a71f8f3..06e579c3843d 100644 --- a/lotuswordpro/source/filter/lwpobjstrm.cxx +++ b/lotuswordpro/source/filter/lwpobjstrm.cxx @@ -222,7 +222,7 @@ sal_Int16 LwpObjectStream::QuickReadInt16() SVBT16 aValue = { 0 }; QuickRead(aValue, sizeof(aValue)); - return static_cast(SVBT16ToUInt16(aValue)); + return SVBT16ToInt16(aValue); } /** * @descr Quick read sal_uInt8 diff --git a/net_ure/DotnetLibrary_net_basetypes.mk b/net_ure/DotnetLibrary_net_basetypes.mk index b8500fd7aa26..b6a847838344 100644 --- a/net_ure/DotnetLibrary_net_basetypes.mk +++ b/net_ure/DotnetLibrary_net_basetypes.mk @@ -9,12 +9,13 @@ $(eval $(call gb_DotnetLibrary_CsLibrary,net_basetypes)) $(eval $(call gb_DotnetLibrary_add_sources,net_basetypes,\ - net_ure/source/basetypes/Any.cs \ - net_ure/source/basetypes/BoundAttribute.cs \ - net_ure/source/basetypes/Exception.cs \ - net_ure/source/basetypes/IQueryInterface.cs \ - net_ure/source/basetypes/RaisesAttribute.cs \ - net_ure/source/basetypes/UnoGeneratedAttribute.cs \ + $(SRCDIR)/net_ure/source/basetypes, \ + Any.cs \ + BoundAttribute.cs \ + Exception.cs \ + IQueryInterface.cs \ + RaisesAttribute.cs \ + UnoGeneratedAttribute.cs \ )) $(eval $(call gb_DotnetLibrary_add_properties,net_basetypes,\ diff --git a/net_ure/DotnetLibrary_net_oootypes.mk b/net_ure/DotnetLibrary_net_oootypes.mk index f799f5056764..b21f1bb92945 100644 --- a/net_ure/DotnetLibrary_net_oootypes.mk +++ b/net_ure/DotnetLibrary_net_oootypes.mk @@ -12,7 +12,8 @@ $(call gb_DotnetLibrary_get_target,net_oootypes) : \ $(call gb_CustomTarget_get_target,net_oootypes) $(eval $(call gb_DotnetLibrary_add_generated_sources,net_oootypes,\ - $(gb_CustomTarget_workdir)/net_ure/net_oootypes/**/*.cs \ + $(gb_CustomTarget_workdir)/net_ure/net_oootypes, \ + **/*.cs \ )) $(eval $(call gb_DotnetLibrary_link_cs_library,net_oootypes,net_uretypes)) diff --git a/net_ure/DotnetLibrary_net_uretypes.mk b/net_ure/DotnetLibrary_net_uretypes.mk index a5e6968887c2..747e4574ecb9 100644 --- a/net_ure/DotnetLibrary_net_uretypes.mk +++ b/net_ure/DotnetLibrary_net_uretypes.mk @@ -12,7 +12,8 @@ $(call gb_DotnetLibrary_get_target,net_uretypes) : \ $(call gb_CustomTarget_get_target,net_uretypes) $(eval $(call gb_DotnetLibrary_add_generated_sources,net_uretypes,\ - $(gb_CustomTarget_workdir)/net_ure/net_uretypes/**/*.cs \ + $(gb_CustomTarget_workdir)/net_ure/net_uretypes, \ + **/*.cs \ )) $(eval $(call gb_DotnetLibrary_link_cs_library,net_uretypes,net_basetypes)) diff --git a/net_ure/Module_net_ure.mk b/net_ure/Module_net_ure.mk index 6693a5ad58ee..982a030e8aae 100644 --- a/net_ure/Module_net_ure.mk +++ b/net_ure/Module_net_ure.mk @@ -8,7 +8,7 @@ $(eval $(call gb_Module_Module,net_ure)) -ifeq ($(ENABLE_DOTNET),TRUE) +ifeq ($(ENABLE_DOTNET)_$(filter ODK,$(BUILD_TYPE)),TRUE_ODK) $(eval $(call gb_Module_add_targets,net_ure,\ CustomTarget_net_uretypes \ CustomTarget_net_oootypes \ diff --git a/offapi/com/sun/star/awt/XKeyHandler.idl b/offapi/com/sun/star/awt/XKeyHandler.idl index d6455914f640..38b57696e800 100644 --- a/offapi/com/sun/star/awt/XKeyHandler.idl +++ b/offapi/com/sun/star/awt/XKeyHandler.idl @@ -20,15 +20,27 @@ module com { module sun { module star { module awt { -/** This key handler is similar to - ::com::sun::star::awt::XKeyListener but allows the - consumption of key events. If a key event is consumed by one - handler both the following handlers, with respect to the list of key - handlers of the broadcaster, and a following handling by the - broadcaster will not take place. - - @since OOo 1.1.2 -*/ +/** makes it possible to receive keyboard events. + * + * This key handler is similar to com::sun::star::awt::XKeyListener. + * But this handler is easier to use and more flexible for many + * purposes. + * + * This handler is usually added via + * com::sun::star::awt::XUserInputInterception to the controller from + * com::sun::star::frame::XModel. While + * com::sun::star::awt::XKeyListener needs to be added to exactly the + * correct widget. + * + * Also this handler is more flexible then + * com::sun::star::awt::XKeyListener, because it optionally allows the + * consumption of key events. If a key event is consumed by one handler + * both the following handlers, with respect to the list of + * key handlers of the broadcaster, and a following handling by the + * broadcaster will not take place. + * + * @since OOo 1.1.2 + */ published interface XKeyHandler : ::com::sun::star::lang::XEventListener { /** This function is called by the broadcaster, an diff --git a/offapi/com/sun/star/awt/XKeyListener.idl b/offapi/com/sun/star/awt/XKeyListener.idl index bb9375b22fa5..373cc0c43bca 100644 --- a/offapi/com/sun/star/awt/XKeyListener.idl +++ b/offapi/com/sun/star/awt/XKeyListener.idl @@ -24,8 +24,12 @@ /** makes it possible to receive keyboard events. * - * @see com::sun::star::awt::XKeyHandler This interface allows you receive (and consume) key events, - * even on windows which are not at the top. + * @see com::sun::star::awt::XKeyHandler That interface is better suited for many purposes. In + * opposite to this listener, the com::sun::star::awt::XKeyHandler doesn't need to be added on + * exactly the correct widget. Optionally com::sun::star::awt::XKeyHandler can also consume events. + * + * @see com::sun::star::awt::XVclContainer The function getWindows might be helpful to find the + * correct widget to add the this listener to. */ published interface XKeyListener: com::sun::star::lang::XEventListener { diff --git a/offapi/com/sun/star/awt/XMouseClickHandler.idl b/offapi/com/sun/star/awt/XMouseClickHandler.idl index fc63485f91e6..1f070a58850a 100644 --- a/offapi/com/sun/star/awt/XMouseClickHandler.idl +++ b/offapi/com/sun/star/awt/XMouseClickHandler.idl @@ -24,6 +24,15 @@ module com { module sun { module star { module awt { /** makes it possible to receive events from the mouse in a certain window. + This handler is usually added via + com::sun::star::awt::XUserInputInterception to the controller from + com::sun::star::frame::XModel. While + com::sun::star::awt::XMouseListener needs to be added to exactly the + correct widget. + + Also this handler is more flexible, because it optionally allows the + consumption of key events. + @since OOo 1.1.2 */ published interface XMouseClickHandler: ::com::sun::star::lang::XEventListener diff --git a/offapi/com/sun/star/awt/XMouseListener.idl b/offapi/com/sun/star/awt/XMouseListener.idl index a3f003daa0cc..48dd94b16d3f 100644 --- a/offapi/com/sun/star/awt/XMouseListener.idl +++ b/offapi/com/sun/star/awt/XMouseListener.idl @@ -30,6 +30,11 @@ *
  • com::sun::star::awt::XMouseClickHandler
  • *
  • com::sun::star::awt::XMouseMotionHandler
  • * + * These interfaces are better suited for many purposes. In opposite to this listener they don't + * need to be added on exactly the correct widget. Optionally they can also consume events. + * + * @see com::sun::star::awt::XVclContainer The function getWindows might be helpful to find the + * correct widget to add this listener to. */ published interface XMouseListener: com::sun::star::lang::XEventListener { diff --git a/offapi/com/sun/star/awt/XMouseMotionHandler.idl b/offapi/com/sun/star/awt/XMouseMotionHandler.idl index 48cb21178c90..cba0dd0e7d5a 100644 --- a/offapi/com/sun/star/awt/XMouseMotionHandler.idl +++ b/offapi/com/sun/star/awt/XMouseMotionHandler.idl @@ -23,6 +23,9 @@ /** makes it possible to receive mouse motion events on a window. + * + * @see ::com::sun::star::awt::XMouseMotionListener This handler is more + * flexible, because it optionally allows the consumption of key events. */ published interface XMouseMotionHandler: com::sun::star::lang::XEventListener { diff --git a/offapi/com/sun/star/awt/XMouseMotionListener.idl b/offapi/com/sun/star/awt/XMouseMotionListener.idl index b3073ba7a923..7f02f9c37f98 100644 --- a/offapi/com/sun/star/awt/XMouseMotionListener.idl +++ b/offapi/com/sun/star/awt/XMouseMotionListener.idl @@ -23,6 +23,12 @@ /** makes it possible to receive mouse motion events on a window. + * + * @see com::sun::star::awt::XMouseListener + * @see com::sun::star::awt::XMouseMotionHandler This can optionally consume events. + * + * @see com::sun::star::awt::XVclContainer The function getWindows might be helpful to find the + * correct widget to add this listener to. */ published interface XMouseMotionListener: com::sun::star::lang::XEventListener { diff --git a/officecfg/registry/data/org/openoffice/Office/Common.xcu b/officecfg/registry/data/org/openoffice/Office/Common.xcu index de1eae2ce767..7c8bc8f15f35 100644 --- a/officecfg/registry/data/org/openoffice/Office/Common.xcu +++ b/officecfg/registry/data/org/openoffice/Office/Common.xcu @@ -457,6 +457,9 @@ true + + true + diff --git a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu index 7880deebb46c..71f3b3ab17a4 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu @@ -2451,6 +2451,17 @@ bit 3 (0x8): #define UICOMMANDDESCRIPTION_PROPERTIES_TOGGLEBUTTON 8 1 + + + Close All Documents + + + Close All Documents + + + 1 + + ~Print... diff --git a/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu index c0fdc8887338..9ae5f1021926 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu @@ -1550,6 +1550,17 @@ 1 + + + ~Footnote/Endnote Settings... + + + .uno:FootnoteDialog + + + 1 + + ~Footnote/Endnote Settings... diff --git a/officecfg/registry/schema/org/openoffice/Office/Calc.xcs b/officecfg/registry/schema/org/openoffice/Office/Calc.xcs index 7303d1bacd00..b9f74d9724fa 100644 --- a/officecfg/registry/schema/org/openoffice/Office/Calc.xcs +++ b/officecfg/registry/schema/org/openoffice/Office/Calc.xcs @@ -763,6 +763,13 @@ true + + + Disable to always select all + + + true + diff --git a/officecfg/registry/schema/org/openoffice/Office/Common.xcs b/officecfg/registry/schema/org/openoffice/Office/Common.xcs index 15b3a481195c..c2e0e97159d1 100644 --- a/officecfg/registry/schema/org/openoffice/Office/Common.xcs +++ b/officecfg/registry/schema/org/openoffice/Office/Common.xcs @@ -5367,6 +5367,12 @@ false + + + Determines whether to show a donation button in the start center or extension. + + true + Determines whether OpenCL can be used, when available, to speed up diff --git a/oovbaapi/ooo/vba/word/XTable.idl b/oovbaapi/ooo/vba/word/XTable.idl index 683e859e4040..42b05950785c 100644 --- a/oovbaapi/ooo/vba/word/XTable.idl +++ b/oovbaapi/ooo/vba/word/XTable.idl @@ -55,10 +55,10 @@ interface XTable any Rows([in] any aIndex ); any Columns([in] any aIndex ); - [attribute] double BottomPadding; - [attribute] double LeftPadding; - [attribute] double RightPadding; - [attribute] double TopPadding; + [attribute] float BottomPadding; + [attribute] float LeftPadding; + [attribute] float RightPadding; + [attribute] float TopPadding; }; }; }; }; diff --git a/oox/qa/unit/data/testTdf157019_objPlaceholderCustomShape.pptx b/oox/qa/unit/data/testTdf157019_objPlaceholderCustomShape.pptx new file mode 100644 index 000000000000..125494d5f376 Binary files /dev/null and b/oox/qa/unit/data/testTdf157019_objPlaceholderCustomShape.pptx differ diff --git a/oox/qa/unit/data/toplevel-line-hori-offset.docx b/oox/qa/unit/data/toplevel-line-hori-offset.docx new file mode 100644 index 000000000000..9f6ba561d4fe Binary files /dev/null and b/oox/qa/unit/data/toplevel-line-hori-offset.docx differ diff --git a/oox/qa/unit/drawingml.cxx b/oox/qa/unit/drawingml.cxx index 923758ee28a7..f2f06509cdf3 100644 --- a/oox/qa/unit/drawingml.cxx +++ b/oox/qa/unit/drawingml.cxx @@ -29,6 +29,8 @@ #include #include #include +#include +#include #include #include @@ -462,6 +464,23 @@ CPPUNIT_TEST_FIXTURE(OoxDrawingmlTest, testTdf132557_footerCustomShapes) CPPUNIT_ASSERT_EQUAL(u"com.sun.star.drawing.CustomShape"_ustr, xShapeSlideNum->getShapeType()); } +CPPUNIT_TEST_FIXTURE(OoxDrawingmlTest, testTdf132557_objPlaceholderCustomShape) +{ + // slide with object placeholder with custom shape + loadFromFile(u"testTdf157019_objPlaceholderCustomShape.pptx"); + + uno::Reference xDrawPagesSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference xDrawPage(xDrawPagesSupplier->getDrawPages()->getByIndex(0), + uno::UNO_QUERY); + + // Test if we were able to import the outliner shape with CustomShape service. + // Without the fix in place, this test would have failed with + // Expected: shape type: "com.sun.star.drawing.CustomShape" + // Actual : shape type: "com.sun.star.presentation.OutlinerShape" + uno::Reference xObjShape(xDrawPage->getByIndex(0), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(u"com.sun.star.drawing.CustomShape"_ustr, xObjShape->getShapeType()); +} + CPPUNIT_TEST_FIXTURE(OoxDrawingmlTest, testThemeColorTint_Table) { // Given a document with a table style, using theme color with tinting in the A2 cell: @@ -698,6 +717,55 @@ CPPUNIT_TEST_FIXTURE(OoxDrawingmlTest, testTdf125085WordArtFontText) CPPUNIT_ASSERT_EQUAL(u"he"_ustr, aLocal.Language); } +CPPUNIT_TEST_FIXTURE(OoxDrawingmlTest, testToplevelLineHorOffsetDOCX) +{ + // Given a toplevel line shape from DOCX: + loadFromFile(u"toplevel-line-hori-offset.docx"); + + // When checking the transform and the points of the shape: + uno::Reference xDrawPagesSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference xDrawPage(xDrawPagesSupplier->getDrawPages()->getByIndex(0), + uno::UNO_QUERY); + uno::Reference xShape(xDrawPage->getByIndex(0), uno::UNO_QUERY); + drawing::HomogenMatrix3 aTransformation; + xShape->getPropertyValue(u"Transformation"_ustr) >>= aTransformation; + basegfx::B2DHomMatrix aMatrix; + aMatrix.set(0, 0, aTransformation.Line1.Column1); + aMatrix.set(0, 1, aTransformation.Line1.Column2); + aMatrix.set(0, 2, aTransformation.Line1.Column3); + aMatrix.set(1, 0, aTransformation.Line2.Column1); + aMatrix.set(1, 1, aTransformation.Line2.Column2); + aMatrix.set(1, 2, aTransformation.Line2.Column3); + drawing::PointSequenceSequence aPolyPoly; + xShape->getPropertyValue(u"Geometry"_ustr) >>= aPolyPoly; + + // Then make sure we get a vertical line, not a horizontal one: + basegfx::B2DTuple aScale; + basegfx::B2DTuple aTranslate; + double fRotate = 0; + double fShearX = 0; + aMatrix.decompose(aScale, aTranslate, fRotate, fShearX); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 1 + // - Actual : 4094.76362560479 + // i.e. this was a horizontal line, not a vertical one. + CPPUNIT_ASSERT_DOUBLES_EQUAL(1, aScale.getX(), 0.01); + // 1473682 EMUs in mm100 is 4093.56. + CPPUNIT_ASSERT_DOUBLES_EQUAL(4094, aScale.getY(), 0.01); + // 343535 EMUs in mm100 is 954.27. + CPPUNIT_ASSERT_DOUBLES_EQUAL(954, aTranslate.getX(), 2); + CPPUNIT_ASSERT_DOUBLES_EQUAL(0, aTranslate.getY(), 0.01); + CPPUNIT_ASSERT_DOUBLES_EQUAL(0, fRotate, 0); + CPPUNIT_ASSERT_DOUBLES_EQUAL(0, fShearX, 0); + CPPUNIT_ASSERT_EQUAL(static_cast(1), aPolyPoly.getLength()); + drawing::PointSequence aPoly = aPolyPoly[0]; + CPPUNIT_ASSERT_EQUAL(static_cast(2), aPoly.getLength()); + CPPUNIT_ASSERT_EQUAL(static_cast(0), aPoly[0].X); + CPPUNIT_ASSERT_EQUAL(static_cast(0), aPoly[0].Y); + CPPUNIT_ASSERT_EQUAL(static_cast(1), aPoly[1].X); + CPPUNIT_ASSERT_EQUAL(static_cast(4094), aPoly[1].Y); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/oox/source/core/filterdetect.cxx b/oox/source/core/filterdetect.cxx index c62ddfedd749..33c95c7e2ca3 100644 --- a/oox/source/core/filterdetect.cxx +++ b/oox/source/core/filterdetect.cxx @@ -161,7 +161,7 @@ void FilterDetectDocHandler::parseRelationship( const AttributeList& rAttribs ) Reference xFactory = UriReferenceFactory::create( mxContext ); try { - // use '/' to representent the root of the zip package ( and provide a 'file' scheme to + // use '/' to represent the root of the zip package ( and provide a 'file' scheme to // keep the XUriReference implementation happy ) Reference< XUriReference > xBase = xFactory->parse( u"file:///"_ustr ); diff --git a/oox/source/drawingml/customshapes/oox-drawingml-cs-presets b/oox/source/drawingml/customshapes/oox-drawingml-cs-presets index a88d3004006d..004bf6abfadd 100644 --- a/oox/source/drawingml/customshapes/oox-drawingml-cs-presets +++ b/oox/source/drawingml/customshapes/oox-drawingml-cs-presets @@ -1132,7 +1132,7 @@ false MirroredY false Path -([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } +([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } Type "ooxml-non-primitive" ViewBox @@ -1149,7 +1149,7 @@ false MirroredY false Path -([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 5 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 2, Height = (long) 2 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } +([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 5 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 2, Height = (long) 2 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } Type "ooxml-non-primitive" ViewBox @@ -1166,7 +1166,7 @@ false MirroredY false Path -([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } +([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } Type "ooxml-non-primitive" ViewBox @@ -1183,7 +1183,7 @@ false MirroredY false Path -([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 2, Height = (long) 2 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } +([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 2, Height = (long) 2 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } Type "ooxml-non-primitive" ViewBox @@ -1200,7 +1200,7 @@ false MirroredY false Path -([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } +([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } Type "ooxml-non-primitive" ViewBox @@ -1217,7 +1217,7 @@ false MirroredY false Path -([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 6, Height = (long) 6 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } +([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 6, Height = (long) 6 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } Type "ooxml-non-primitive" ViewBox @@ -1234,7 +1234,7 @@ false MirroredY false Path -([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17322 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10800 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17322 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10800 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23922 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20172 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 21600, Height = (long) 21600 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } +([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17322 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10800 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17322 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10800 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23922 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20172 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 21600, Height = (long) 21600 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } Type "ooxml-non-primitive" ViewBox @@ -1251,7 +1251,7 @@ false MirroredY false Path -([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 2, Height = (long) 2 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } +([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 2, Height = (long) 2 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } Type "ooxml-non-primitive" ViewBox @@ -1268,7 +1268,7 @@ false MirroredY false Path -([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 5, Height = (long) 5 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } +([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 5, Height = (long) 5 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } Type "ooxml-non-primitive" ViewBox @@ -1285,7 +1285,7 @@ false MirroredY false Path -([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 1, Height = (long) 1 }, { Width = (long) 8, Height = (long) 8 }, { Width = (long) 1, Height = (long) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } +([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 1, Height = (long) 1 }, { Width = (long) 8, Height = (long) 8 }, { Width = (long) 1, Height = (long) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } Type "ooxml-non-primitive" ViewBox @@ -1302,7 +1302,7 @@ false MirroredY false Path -([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 6, Height = (long) 6 }, { Width = (long) 6, Height = (long) 6 }, { Width = (long) 6, Height = (long) 6 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } +([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 6, Height = (long) 6 }, { Width = (long) 6, Height = (long) 6 }, { Width = (long) 6, Height = (long) 6 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } Type "ooxml-non-primitive" ViewBox @@ -1319,7 +1319,7 @@ false MirroredY false Path -([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 6, Height = (long) 6 }, { Width = (long) 6, Height = (long) 6 }, { Width = (long) 6, Height = (long) 6 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } +([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 6, Height = (long) 6 }, { Width = (long) 6, Height = (long) 6 }, { Width = (long) 6, Height = (long) 6 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } Type "ooxml-non-primitive" ViewBox @@ -1336,7 +1336,7 @@ false MirroredY false Path -([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 4 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } +([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 4 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } Type "ooxml-non-primitive" ViewBox @@ -1353,7 +1353,7 @@ false MirroredY false Path -([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 5, Height = (long) 5 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } +([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 5, Height = (long) 5 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } Type "ooxml-non-primitive" ViewBox @@ -1370,7 +1370,7 @@ false MirroredY false Path -([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 5, Height = (long) 5 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } +([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 5, Height = (long) 5 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } Type "ooxml-non-primitive" ViewBox @@ -1387,7 +1387,7 @@ false MirroredY false Path -([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 2, Height = (long) 2 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } +([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 2, Height = (long) 2 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } Type "ooxml-non-primitive" ViewBox @@ -1404,7 +1404,7 @@ false MirroredY false Path -([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20782 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9298 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23542 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9298 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18022 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18022 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3675 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3675 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1532 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3675 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1532 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1815 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1815 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16252 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19298 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16252 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16352 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16352 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3675 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2972 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1815 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2972 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14392 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20800 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14392 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14467 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14467 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1815 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3675 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3675 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18022 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9298 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18022 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9298 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23542 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20782 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1532 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3675 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1532 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1815 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1815 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16252 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19298 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16252 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16352 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16352 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2972 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1815 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2972 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14392 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20800 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14392 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14467 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14467 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20782 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9298 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23542 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9298 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18022 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18022 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16352 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16352 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19298 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16252 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16252 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14467 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14467 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20800 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14392 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14392 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2972 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2972 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1815 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1532 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1815 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1532 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3675 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3675 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 2, Count = (short) 6 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 21600, Height = (long) 21600 }, { Width = (long) 21600, Height = (long) 21600 }, { Width = (long) 21600, Height = (long) 21600 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } +([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20782 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9298 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23542 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9298 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18022 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18022 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3675 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3675 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1532 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3675 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1532 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1815 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1815 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16252 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19298 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16252 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16352 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16352 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3675 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2972 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1815 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2972 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14392 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20800 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14392 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14467 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14467 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1815 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3675 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3675 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18022 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9298 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18022 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9298 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23542 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20782 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1532 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3675 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1532 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1815 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1815 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16252 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19298 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16252 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16352 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16352 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2972 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1815 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2972 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14392 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20800 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14392 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14467 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14467 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20782 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9298 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23542 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9298 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18022 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18022 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16352 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16352 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19298 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16252 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16252 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14467 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14467 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20800 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14392 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14392 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2972 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2972 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1815 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1532 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1815 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1532 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3675 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3675 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 2, Count = (short) 6 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 21600, Height = (long) 21600 }, { Width = (long) 21600, Height = (long) 21600 }, { Width = (long) 21600, Height = (long) 21600 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } Type "ooxml-non-primitive" ViewBox @@ -1438,7 +1438,7 @@ false MirroredY false Path -([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 10, Height = (long) 10 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } +([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 10, Height = (long) 10 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } Type "ooxml-non-primitive" ViewBox @@ -1455,7 +1455,7 @@ false MirroredY false Path -([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 6, Height = (long) 6 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } +([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 6, Height = (long) 6 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } Type "ooxml-non-primitive" ViewBox @@ -1472,7 +1472,7 @@ false MirroredY false Path -([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } +([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } Type "ooxml-non-primitive" ViewBox @@ -1489,7 +1489,7 @@ false MirroredY false Path -([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 1, Height = (long) 1 }, { Width = (long) 8, Height = (long) 8 }, { Width = (long) 1, Height = (long) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } +([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 1, Height = (long) 1 }, { Width = (long) 8, Height = (long) 8 }, { Width = (long) 1, Height = (long) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } Type "ooxml-non-primitive" ViewBox @@ -1506,7 +1506,7 @@ false MirroredY false Path -([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 5 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 10, Height = (long) 10 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } +([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 5 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 10, Height = (long) 10 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } Type "ooxml-non-primitive" ViewBox @@ -1523,7 +1523,7 @@ false MirroredY false Path -([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 1, Height = (long) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } +([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 1, Height = (long) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } Type "ooxml-non-primitive" ViewBox @@ -1540,7 +1540,7 @@ false MirroredY false Path -([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 5, Height = (long) 5 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } +([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 5, Height = (long) 5 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } Type "ooxml-non-primitive" ViewBox @@ -1557,7 +1557,7 @@ false MirroredY false Path -([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 20, Height = (long) 20 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } +([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 20, Height = (long) 20 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } Type "ooxml-non-primitive" ViewBox @@ -1574,7 +1574,7 @@ false MirroredY false Path -([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 2, Height = (long) 2 }, { Width = (long) 2, Height = (long) 2 }, { Width = (long) 2, Height = (long) 2 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } +([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 2, Height = (long) 2 }, { Width = (long) 2, Height = (long) 2 }, { Width = (long) 2, Height = (long) 2 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } Type "ooxml-non-primitive" ViewBox @@ -1591,7 +1591,7 @@ false MirroredY false Path -([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } +([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } Type "ooxml-non-primitive" ViewBox @@ -1608,7 +1608,7 @@ false MirroredY false Path -([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3475 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18125 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3475 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10800 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3475 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3475 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10800 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 21600, Height = (long) 21600 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } +([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3475 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18125 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3475 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10800 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3475 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3475 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10800 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 21600, Height = (long) 21600 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } Type "ooxml-non-primitive" ViewBox diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx index e2fed9eee281..4c7de78b8817 100644 --- a/oox/source/drawingml/shape.cxx +++ b/oox/source/drawingml/shape.cxx @@ -1035,11 +1035,18 @@ Reference< XShape > const & Shape::createAndInsert( aTransformation.translate(0.5, 0.5); } + bool bLineShape = aServiceName == "com.sun.star.drawing.LineShape"; + bool bTopWriterLine = !pParentGroupShape && mbWps && bLineShape; // Build object matrix from shape size and position; corresponds to MSO ext and off // Only LineShape and ConnectorShape may have zero width or height. - if (aServiceName == "com.sun.star.drawing.LineShape" - || aServiceName == "com.sun.star.drawing.ConnectorShape") - aTransformation.scale(maSize.Width, maSize.Height); + if (bLineShape || aServiceName == "com.sun.star.drawing.ConnectorShape") + { + // For toplevel Writer lines, size is included in the point coordinates. + if (!bTopWriterLine) + { + aTransformation.scale(maSize.Width, maSize.Height); + } + } else { aTransformation.scale(maSize.Width ? maSize.Width : 1.0, @@ -1147,7 +1154,10 @@ Reference< XShape > const & Shape::createAndInsert( aParentTransformation = aTransformation; constexpr double fEmuToMm100 = o3tl::convert(1.0, o3tl::Length::emu, o3tl::Length::mm100); - aTransformation.scale(fEmuToMm100, fEmuToMm100); + if (!bTopWriterLine) + { + aTransformation.scale(fEmuToMm100, fEmuToMm100); + } // OOXML flips shapes before rotating them, so the rotation needs to be inverted if( bIsCustomShape && mbFlipH != mbFlipV ) @@ -1167,12 +1177,23 @@ Reference< XShape > const & Shape::createAndInsert( } // special for lineshape - if ( aServiceName == "com.sun.star.drawing.LineShape" ) + if (bLineShape) { ::basegfx::B2DPolygon aPoly; aPoly.insert( 0, ::basegfx::B2DPoint( 0, 0 ) ); - aPoly.insert( 1, ::basegfx::B2DPoint( maSize.Width ? 1 : 0, maSize.Height ? 1 : 0 ) ); - aPoly.transform( aTransformation ); + if (bTopWriterLine) + { + // No transform of individual points, everything apart from size is part of the + // transform matrix. + sal_Int32 nMM100Width = o3tl::convert(maSize.Width, o3tl::Length::emu, o3tl::Length::mm100); + sal_Int32 nMM100Height = o3tl::convert(maSize.Height, o3tl::Length::emu, o3tl::Length::mm100); + aPoly.insert(1, ::basegfx::B2DPoint(nMM100Width, nMM100Height)); + } + else + { + aPoly.insert( 1, ::basegfx::B2DPoint( maSize.Width ? 1 : 0, maSize.Height ? 1 : 0 ) ); + aPoly.transform( aTransformation ); + } // now creating the corresponding PolyPolygon sal_Int32 i, nNumPoints = aPoly.count(); @@ -1199,7 +1220,7 @@ Reference< XShape > const & Shape::createAndInsert( maShapeProperties.setProperty(PROP_PolyPolygon, aPolyPolySequence); } - else if ( aServiceName == "com.sun.star.drawing.ConnectorShape" ) + if ( aServiceName == "com.sun.star.drawing.ConnectorShape" ) { ::basegfx::B2DPolygon aPoly; aPoly.insert( 0, ::basegfx::B2DPoint( 0, 0 ) ); @@ -1214,7 +1235,7 @@ Reference< XShape > const & Shape::createAndInsert( maShapeProperties.setProperty(PROP_StartPosition, aAWTStartPosition); maShapeProperties.setProperty(PROP_EndPosition, aAWTEndPosition); } - else + else if (!bLineShape || bTopWriterLine) { // now set transformation for this object HomogenMatrix3 aMatrix; @@ -1271,30 +1292,21 @@ Reference< XShape > const & Shape::createAndInsert( ppt::PowerPointImport* pPPT = dynamic_cast(&rFilterBase); if (!pPPT->getActualSlidePersist()->isMasterPage()) { - // There is no support for change the shape of the drawing in LO, but we check, - // if the placeholder changes its shape, top and bottom margins won't be used. - bool bIsChangePlaceholderShape - = !mpCustomShapePropertiesPtr->getAdjustmentGuideList().empty(); - sal_Int32 nUpper = 0; sal_Int32 nLower = 0; sal_Int32 nHeight = maSize.Height / 360; - if (getTextBody()->getTextProperties().moInsets[1].value() != 0 - && getTextBody()->getTextProperties().moInsets[3].value() != 0) + if (getTextBody()->getTextProperties().moInsets[1].has_value() + && getTextBody()->getTextProperties().moInsets[3].has_value()) { - if (!bIsChangePlaceholderShape) - { - nUpper = *getTextBody()->getTextProperties().moInsets[1]; - nLower = *getTextBody()->getTextProperties().moInsets[3]; - nHeight -= (nUpper + nLower); - } + nUpper = *getTextBody()->getTextProperties().moInsets[1]; + nLower = *getTextBody()->getTextProperties().moInsets[3]; } else { maDefaultShapeProperties.getProperty(PROP_TextUpperDistance) >>= nUpper; maDefaultShapeProperties.getProperty(PROP_TextLowerDistance) >>= nLower; - nHeight += (nUpper + nLower); } + nHeight -= (nUpper + nLower); mxShape->setSize(awt::Size(0, nHeight)); } } diff --git a/oox/source/drawingml/textrun.cxx b/oox/source/drawingml/textrun.cxx index faee78f78244..1160e36e4cf4 100644 --- a/oox/source/drawingml/textrun.cxx +++ b/oox/source/drawingml/textrun.cxx @@ -72,7 +72,7 @@ sal_Int32 TextRun::insertAt( TextCharacterProperties aTextCharacterProps( rTextCharacterStyle ); - // If no text color specified lets anyway initialize it as default: + // If no text color specified let's anyway initialize it as default: // this will help to recover after hyperlink if (!aTextCharacterProps.maFillProperties.maFillColor.isUsed()) aTextCharacterProps.maFillProperties.moFillType = XML_solidFill; diff --git a/oox/source/helper/propertymap.cxx b/oox/source/helper/propertymap.cxx index d93fb41209bf..d2db24d75d5a 100644 --- a/oox/source/helper/propertymap.cxx +++ b/oox/source/helper/propertymap.cxx @@ -538,7 +538,7 @@ static const char *lclGetEnhancedParameterType( sal_uInt16 nType ) static void printParameterPairData(int level, EnhancedCustomShapeParameterPair const &pp) { - // These are always sal_Int32s so lets depend on that for our packing ... + // These are always sal_Int32s so let's depend on that for our packing... sal_Int32 nFirstValue = {}; sal_Int32 nSecondValue = {}; // spurious -Werror=maybe-uninitialized if (!(pp.First.Value >>= nFirstValue)) diff --git a/oox/source/ppt/pptshape.cxx b/oox/source/ppt/pptshape.cxx index c443e3bd5e52..6ee8b660a1b9 100644 --- a/oox/source/ppt/pptshape.cxx +++ b/oox/source/ppt/pptshape.cxx @@ -335,9 +335,14 @@ void PPTShape::addShape( // Since it is not possible to represent custom shaped placeholders in Impress // Need to use service name css.drawing.CustomShape if they have a non default shape. // This workaround has the drawback of them not really being processed as placeholders - // so it is only done for slide footers... - bool convertInSlideMode = meShapeLocation == Slide && - (mnSubType == XML_sldNum || mnSubType == XML_dt || mnSubType == XML_ftr || mnSubType == XML_body); + // so it is done for slide footers and obj placeholder + bool convertInSlideMode + = meShapeLocation == Slide + && (mnSubType == XML_sldNum || mnSubType == XML_dt || mnSubType == XML_ftr + || mnSubType == XML_body + || (mnSubType == XML_obj + && sServiceName != "com.sun.star.drawing.GraphicObjectShape")); + bool convertInLayoutMode = meShapeLocation == Layout && (mnSubType == XML_body); if ((convertInSlideMode || convertInLayoutMode) && !mpCustomShapePropertiesPtr->representsDefaultShape()) { diff --git a/readlicense_oo/license/license.xml b/readlicense_oo/license/license.xml index 89ebe058b3d1..d74285e18a57 100644 --- a/readlicense_oo/license/license.xml +++ b/readlicense_oo/license/license.xml @@ -2248,6 +2248,12 @@ original software.

    3. This notice may not be removed or altered from any source distribution.

    +
    +

    ZXing-C++

    +

    The following software may be included in this product: ZXing-C++. Use of any of this software is governed + by the terms of the license below:

    +

    Jump to Apache License Version 2.0

    +

    Skia

    The following software may be included in this product: Skia. Use of any of this software is governed by diff --git a/reportbuilder/java/org/libreoffice/report/pentaho/output/StyleUtilities.java b/reportbuilder/java/org/libreoffice/report/pentaho/output/StyleUtilities.java index 98af0c3fa076..6e7339171fd9 100644 --- a/reportbuilder/java/org/libreoffice/report/pentaho/output/StyleUtilities.java +++ b/reportbuilder/java/org/libreoffice/report/pentaho/output/StyleUtilities.java @@ -138,7 +138,7 @@ public class StyleUtilities } // There is no automatic style either. Now this means that someone - // messed up the fileformat. Lets create a new empty style for this. + // messed up the fileformat. Let's create a new empty style for this. final OfficeStyle autostyle = new OfficeStyle(); autostyle.setNamespace(OfficeNamespaces.STYLE_NS); autostyle.setType(STYLE); diff --git a/reportbuilder/java/org/libreoffice/report/pentaho/output/spreadsheet/SpreadsheetRawReportTarget.java b/reportbuilder/java/org/libreoffice/report/pentaho/output/spreadsheet/SpreadsheetRawReportTarget.java index b1d979e7b788..4987184ee9bd 100644 --- a/reportbuilder/java/org/libreoffice/report/pentaho/output/spreadsheet/SpreadsheetRawReportTarget.java +++ b/reportbuilder/java/org/libreoffice/report/pentaho/output/spreadsheet/SpreadsheetRawReportTarget.java @@ -374,7 +374,7 @@ public class SpreadsheetRawReportTarget extends OfficeDocumentReportTarget { // a new row means our column counter gets reset columnCounter = 0; - // Lets make sure the color of the table is ok .. + // Let's make sure the color of the table is ok... if (tableBackgroundColor != null) { final String styleName = (String) attrs.getAttribute(OfficeNamespaces.TABLE_NS, OfficeToken.STYLE_NAME); diff --git a/reportbuilder/java/org/libreoffice/report/pentaho/output/text/TextRawReportTarget.java b/reportbuilder/java/org/libreoffice/report/pentaho/output/text/TextRawReportTarget.java index d8e50d2d4991..302e6908914b 100644 --- a/reportbuilder/java/org/libreoffice/report/pentaho/output/text/TextRawReportTarget.java +++ b/reportbuilder/java/org/libreoffice/report/pentaho/output/text/TextRawReportTarget.java @@ -642,7 +642,7 @@ public class TextRawReportTarget extends OfficeDocumentReportTarget if (style == null) { style = deriveStyle(OfficeToken.PARAGRAPH, styleName); - // Lets set the 'keep-together' flag... + // Let's set the 'keep-together' flag... Element paragraphProps = style.getParagraphProperties(); if (paragraphProps == null) diff --git a/reportdesign/uiconfig/dbreport/ui/backgrounddialog.ui b/reportdesign/uiconfig/dbreport/ui/backgrounddialog.ui index 4660626a0b64..56035a897a06 100644 --- a/reportdesign/uiconfig/dbreport/ui/backgrounddialog.ui +++ b/reportdesign/uiconfig/dbreport/ui/backgrounddialog.ui @@ -1,33 +1,30 @@ - + - False - 6 + False + 6 Section Setup True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _Reset True - True - True + True + True True @@ -40,10 +37,10 @@ _OK True - True - True - True - True + True + True + True + True True @@ -56,8 +53,8 @@ _Cancel True - True - True + True + True True @@ -70,8 +67,8 @@ _Help True - True - True + True + True True @@ -85,47 +82,23 @@ False True - end + end 0 True - False + False True True True - True + True True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -134,12 +107,12 @@ True - False + False Background 0.5 - False + False diff --git a/sal/qa/rtl/alloc/rtl_alloc.cxx b/sal/qa/rtl/alloc/rtl_alloc.cxx index 2364f3fe56cf..0e743cae3c11 100644 --- a/sal/qa/rtl/alloc/rtl_alloc.cxx +++ b/sal/qa/rtl/alloc/rtl_alloc.cxx @@ -190,7 +190,7 @@ public: void test2() { - // should never happen but lets try it again. + // should never happen but let's try it again. test(); } diff --git a/sax/Library_sax.mk b/sax/Library_sax.mk index f65fcf05b669..7188041f1bf4 100644 --- a/sax/Library_sax.mk +++ b/sax/Library_sax.mk @@ -26,6 +26,7 @@ $(eval $(call gb_Library_use_externals,sax,\ )) $(eval $(call gb_Library_use_libraries,sax,\ + basegfx \ comphelper \ cppu \ cppuhelper \ diff --git a/sax/source/tools/converter.cxx b/sax/source/tools/converter.cxx index bc2342d5b508..204033a7e64a 100644 --- a/sax/source/tools/converter.cxx +++ b/sax/source/tools/converter.cxx @@ -802,6 +802,56 @@ bool Converter::convert10thDegAngle(sal_Int16& rAngle, std::string_view rString, return bRet; } +/** convert SVG angle to number, in 1/nFactor of degrees, range [0..nFactor*360[ */ +bool Converter::convertAngle(double& rAngle, std::u16string_view rString, const sal_uInt16& nFactor) +{ + // ODF uses in several places angles in data type 'angle' (18.3.1, ODF 1.3). That is a double + // followed by unit identifier deg, grad or rad or a unitless value in degrees. LO uses angles + // in degrees, 1/10 of degrees and 1/100 of degrees in various data types. + // This method converts ODF 'angle' to double considering nFactor and normalizes it to range + // [0..nFactor*360[. Further type converting and range restriction are done by the caller. + bool bRet = ::sax::Converter::convertDouble(rAngle, rString); + if (bRet) + { + //degrees + if (std::u16string_view::npos != rString.find(u"grad")) + rAngle *= 0.9; // 360deg = 400grad + else if (std::u16string_view::npos != rString.find(u"rad")) + rAngle = basegfx::rad2deg(rAngle); + // 1/nFactor of degrees in range [0..nFactor*360] + if (nFactor > 0) + rAngle = basegfx::snapToZeroRange(rAngle * nFactor, nFactor * 360.0); + else + return false; + } + return bRet; +} + +/** convert SVG angle to number, in 1/nFactor of degrees, range [0..nFactor*360[ */ +bool Converter::convertAngle(double& rAngle, std::string_view rString, const sal_uInt16& nFactor) +{ + // ODF uses in several places angles in data type 'angle' (18.3.1, ODF 1.3). That is a double + // followed by unit identifier deg, grad or rad or a unitless value in degrees. LO uses angles + // in degrees, 1/10 of degrees and 1/100 of degrees in various data types. + // This method converts ODF 'angle' to double considering nFactor and normalizes it to range + // [0..nFactor*360[. Further type converting and range restriction are done by the caller. + bool bRet = ::sax::Converter::convertDouble(rAngle, rString); + if (bRet) + { + // degrees + if (std::u16string_view::npos != rString.find("grad")) + rAngle *= 0.9; // 360deg = 400grad + else if (std::u16string_view::npos != rString.find("rad")) + rAngle = basegfx::rad2deg(rAngle); + // 1/nFactor of degrees in range [0..nFactor*360] + if (nFactor > 0) + rAngle = basegfx::snapToZeroRange(rAngle * nFactor, nFactor * 360.0); + else + return false; + } + return bRet; +} + /** convert double to ISO "duration" string; negative durations allowed */ void Converter::convertDuration(OUStringBuffer& rBuffer, const double fTime) diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx index d0e825721740..2f67225bf8ec 100644 --- a/sc/inc/document.hxx +++ b/sc/inc/document.hxx @@ -1425,7 +1425,8 @@ public: doesn't already exist. */ ScLookupCache & GetLookupCache( const ScRange & rRange, ScInterpreterContext* pContext ); ScSortedRangeCache & GetSortedRangeCache( const ScRange & rRange, const ScQueryParam& param, - ScInterpreterContext* pContext, sal_uInt8 nSortedBinarySearch = 0x00 ); + ScInterpreterContext* pContext, bool bNewSearchFunction, + sal_uInt8 nSortedBinarySearch = 0x00 ); /** Only ScLookupCache dtor uses RemoveLookupCache(), do not use elsewhere! */ void RemoveLookupCache( ScLookupCache & rCache ); diff --git a/sc/inc/queryevaluator.hxx b/sc/inc/queryevaluator.hxx index 351531b9731c..6d3012141db8 100644 --- a/sc/inc/queryevaluator.hxx +++ b/sc/inc/queryevaluator.hxx @@ -108,7 +108,8 @@ class ScQueryEvaluator public: ScQueryEvaluator(ScDocument& rDoc, const ScTable& rTab, const ScQueryParam& rParam, - ScInterpreterContext* pContext = nullptr, bool* pTestEqualCondition = nullptr); + ScInterpreterContext* pContext = nullptr, bool* pTestEqualCondition = nullptr, + bool bNewSearchFunction = false); bool ValidQuery(SCROW nRow, const ScRefCellValue* pCell = nullptr, sc::TableColumnBlockPositionSet* pBlockPos = nullptr); diff --git a/sc/inc/queryiter.hxx b/sc/inc/queryiter.hxx index 9d0ab1cc6aea..67f0e16fc0b5 100644 --- a/sc/inc/queryiter.hxx +++ b/sc/inc/queryiter.hxx @@ -103,7 +103,7 @@ public: protected: ScQueryCellIteratorAccessSpecific( ScDocument& rDocument, ScInterpreterContext& rContext, const ScQueryParam& rParam, bool bReverseSearch ); - void InitPosStart(sal_uInt8 nSortedBinarySearch = 0x00); + void InitPosStart(bool bNewSearchFunction, sal_uInt8 nSortedBinarySearch = 0x00); void InitPosFinish( SCROW beforeRow, SCROW lastRow, bool bFirstMatch ); void InitPosColFinish( SCCOL beforeCol, SCCOL lastCol, bool bFirstMatch ); void IncPos() { IncPosImpl(); } diff --git a/sc/inc/rangecache.hxx b/sc/inc/rangecache.hxx index 5a9553e764ff..4f0e810db0a8 100644 --- a/sc/inc/rangecache.hxx +++ b/sc/inc/rangecache.hxx @@ -47,7 +47,7 @@ public: /// MUST be new'd because Notify() deletes. ScSortedRangeCache(ScDocument* pDoc, const ScRange& rRange, const ScQueryParam& param, ScInterpreterContext* context, bool invalid = false, - sal_uInt8 nSortedBinarySearch = 0x00); + bool bNewSearchFunction = false, sal_uInt8 nSortedBinarySearch = 0x00); /// Returns if the cache is usable. bool isValid() const { return mValid; } diff --git a/sc/qa/unit/data/functions/spreadsheet/fods/xlookup.fods b/sc/qa/unit/data/functions/spreadsheet/fods/xlookup.fods index 633153fd5b40..593054bf4682 100644 --- a/sc/qa/unit/data/functions/spreadsheet/fods/xlookup.fods +++ b/sc/qa/unit/data/functions/spreadsheet/fods/xlookup.fods @@ -1,13 +1,13 @@ - 2024-01-16T18:30:06.278000000PT1H51M31S33LibreOfficeDev/24.8.0.0.alpha1$Windows_X86_64 LibreOffice_project/d3ae30f41573c7cb5b4cd6244c1ccd8010f966d72024-06-03T13:56:08.658000000 + 2024-01-16T18:30:06.278000000PT1H56M5S34LibreOfficeDev/25.2.0.0.alpha0$Windows_X86_64 LibreOffice_project/449050477173ff56b3f3d94406913b261f541b0f2024-06-26T18:39:33.496000000 0 0 - 60486 - 61863 + 15882 + 5013 view1 @@ -30,13 +30,13 @@ false - 4 - 85 + 2 + 32 2 0 0 0 - 30 + 99 0 100 60 @@ -48,7 +48,7 @@ Sheet1 - 2495 + 1539 0 100 60 @@ -2001,7 +2001,7 @@ - + @@ -2036,10 +2036,6 @@ - - - - @@ -2057,11 +2053,6 @@ - - - - - @@ -2079,8 +2070,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -2141,7 +2184,7 @@ ???(???) - 0000.00.00, 00:00:00 + 0000.00.00, 00:00:00 @@ -2155,13 +2198,13 @@ - + - + - + XLOOKUP Function @@ -2173,10 +2216,10 @@ - + Result - + IGAZ @@ -2185,13 +2228,13 @@ - + Sheet - + Result - + Description @@ -2199,16 +2242,16 @@ 2 - + IGAZ - + Simple XLOOKUP formulas with local references and values - + @@ -2299,7 +2342,7 @@ +55 - + IGAZ @@ -2342,7 +2385,7 @@ +91 - + IGAZ @@ -2382,7 +2425,7 @@ +91 - + IGAZ @@ -2425,7 +2468,7 @@ #N/A - + IGAZ @@ -2468,7 +2511,7 @@ - + IGAZ @@ -2508,7 +2551,7 @@ -99 - + IGAZ @@ -2545,7 +2588,7 @@ Not here - + IGAZ @@ -2588,7 +2631,7 @@ #N/A - + IGAZ @@ -2631,7 +2674,7 @@ 00234 - + IGAZ @@ -2671,7 +2714,7 @@ +234 - + IGAZ @@ -2706,7 +2749,7 @@ - + Mexico @@ -2727,7 +2770,7 @@ - + @@ -2737,7 +2780,7 @@ Ned Lanning - + IGAZ @@ -2789,7 +2832,7 @@ Marketing - + IGAZ @@ -2838,7 +2881,7 @@ Mia Arnold - + IGAZ @@ -2887,7 +2930,7 @@ Operations - + IGAZ @@ -2902,7 +2945,7 @@ ID not found - + IGAZ @@ -2921,7 +2964,7 @@ ID not found - + IGAZ @@ -2936,7 +2979,7 @@ #N/A - + IGAZ @@ -2951,7 +2994,7 @@ #N/A - + IGAZ @@ -2966,7 +3009,7 @@ Earlene McCartney - + IGAZ @@ -2998,7 +3041,7 @@ Accounting - + IGAZ @@ -3030,7 +3073,7 @@ Earlene McCartney - + IGAZ @@ -3059,7 +3102,7 @@ Accounting - + IGAZ @@ -3092,7 +3135,7 @@ Earlene McCartney - + IGAZ @@ -3125,7 +3168,7 @@ Accounting - + IGAZ @@ -3135,7 +3178,7 @@ - + @@ -3145,7 +3188,7 @@ 0,24 - + IGAZ @@ -3170,7 +3213,7 @@ 0,24 - + IGAZ @@ -3192,7 +3235,7 @@ 0,22 - + IGAZ @@ -3214,10 +3257,10 @@ #VALUE! - - #N/A + + 519 - + IGAZ @@ -3234,7 +3277,7 @@ - + 0,32 @@ -3246,7 +3289,7 @@ - + 0,35 @@ -3258,7 +3301,7 @@ - + 0,37 @@ -3270,7 +3313,7 @@ - + @@ -3280,7 +3323,7 @@ 25000 - + IGAZ @@ -3331,7 +3374,7 @@ 19342 - + IGAZ @@ -3379,7 +3422,7 @@ 0,293 - + IGAZ @@ -3422,7 +3465,7 @@ - + Q3 @@ -3465,7 +3508,7 @@ Mia Arnold - + IGAZ @@ -3513,7 +3556,7 @@ Operations - + IGAZ @@ -3556,7 +3599,7 @@ - + @@ -3566,7 +3609,7 @@ 110,56 - + IGAZ @@ -3593,7 +3636,7 @@ - + Banana @@ -3614,7 +3657,7 @@ - + Grape @@ -3632,7 +3675,7 @@ - + Pear @@ -3650,7 +3693,7 @@ - + Banana @@ -3668,7 +3711,7 @@ - + Cherry @@ -3686,7 +3729,7 @@ - + @@ -3696,7 +3739,7 @@ err:504 - + IGAZ @@ -3729,7 +3772,7 @@ err:504 - + IGAZ @@ -3762,7 +3805,7 @@ err:504 - + IGAZ @@ -3795,7 +3838,7 @@ err:504 - + IGAZ @@ -3814,7 +3857,7 @@ err:504 - + IGAZ @@ -3828,7 +3871,7 @@ - + @@ -3838,7 +3881,7 @@ b3 - + IGAZ @@ -3876,7 +3919,7 @@ b3 - + IGAZ @@ -3914,7 +3957,7 @@ a5 - + IGAZ @@ -3952,7 +3995,7 @@ b3 - + IGAZ @@ -3986,7 +4029,7 @@ b3 - + IGAZ @@ -4024,7 +4067,7 @@ b3 - + IGAZ @@ -4043,7 +4086,7 @@ a5 - + IGAZ @@ -4062,7 +4105,7 @@ b3 - + IGAZ @@ -4077,7 +4120,7 @@ c3 - + IGAZ @@ -4096,7 +4139,7 @@ c3 - + IGAZ @@ -4115,7 +4158,7 @@ D5.2 - + IGAZ @@ -4134,7 +4177,7 @@ 519 - + IGAZ @@ -4152,7 +4195,7 @@ c3 - + IGAZ @@ -4171,7 +4214,7 @@ c3 - + IGAZ @@ -4190,7 +4233,7 @@ b5 - + IGAZ @@ -4209,7 +4252,7 @@ 519 - + IGAZ @@ -4227,7 +4270,7 @@ b3 - + IGAZ @@ -4262,7 +4305,7 @@ b3 - + IGAZ @@ -4297,7 +4340,7 @@ a5 - + IGAZ @@ -4316,7 +4359,7 @@ b3 - + IGAZ @@ -4330,7 +4373,7 @@ - + @@ -4340,7 +4383,7 @@ bC - + IGAZ @@ -4378,7 +4421,7 @@ bC - + IGAZ @@ -4416,7 +4459,7 @@ aE - + IGAZ @@ -4454,7 +4497,7 @@ eB - + IGAZ @@ -4488,7 +4531,7 @@ bC - + IGAZ @@ -4526,7 +4569,7 @@ bC - + IGAZ @@ -4549,7 +4592,7 @@ aE - + IGAZ @@ -4572,7 +4615,7 @@ bC - + IGAZ @@ -4591,7 +4634,7 @@ cC - + IGAZ @@ -4614,7 +4657,7 @@ cC - + IGAZ @@ -4637,7 +4680,7 @@ eE - + IGAZ @@ -4651,7 +4694,7 @@ - + @@ -4661,7 +4704,7 @@ cC - + IGAZ @@ -4680,7 +4723,7 @@ cC - + IGAZ @@ -4699,7 +4742,7 @@ eE - + IGAZ @@ -4713,7 +4756,7 @@ - + @@ -4723,7 +4766,7 @@ bC - + IGAZ @@ -4758,7 +4801,7 @@ bC - + IGAZ @@ -4793,7 +4836,7 @@ aE - + IGAZ @@ -4812,7 +4855,7 @@ #N/A - + IGAZ @@ -4822,7 +4865,7 @@ - + LookCol @@ -4864,7 +4907,7 @@ bC - + IGAZ @@ -4909,7 +4952,7 @@ bC - + IGAZ @@ -4935,7 +4978,7 @@ aE - + IGAZ @@ -4961,7 +5004,7 @@ #N/A - + IGAZ @@ -4983,7 +5026,7 @@ g - + IGAZ @@ -5005,7 +5048,7 @@ a - + IGAZ @@ -5027,7 +5070,7 @@ BR - + IGAZ @@ -5049,7 +5092,7 @@ BR - + IGAZ @@ -5071,7 +5114,7 @@ ID - + IGAZ @@ -5093,7 +5136,7 @@ PK - + IGAZ @@ -5115,7 +5158,7 @@ PK - + IGAZ @@ -5130,7 +5173,7 @@ #N/A - + IGAZ @@ -5140,7 +5183,7 @@ - + @@ -5150,7 +5193,7 @@ #N/A - + IGAZ @@ -5165,7 +5208,7 @@ c - + IGAZ @@ -5180,7 +5223,7 @@ d - + IGAZ @@ -5195,7 +5238,7 @@ c - + IGAZ @@ -5210,7 +5253,7 @@ c - + IGAZ @@ -5225,7 +5268,7 @@ c - + IGAZ @@ -5235,7 +5278,7 @@ - + @@ -5245,7 +5288,7 @@ #N/A - + IGAZ @@ -5260,7 +5303,7 @@ h - + IGAZ @@ -5282,7 +5325,7 @@ g - + IGAZ @@ -5304,7 +5347,7 @@ h - + IGAZ @@ -5326,7 +5369,7 @@ h - + IGAZ @@ -5348,7 +5391,7 @@ h - + IGAZ @@ -5365,7 +5408,7 @@ - + Klein @@ -5382,7 +5425,7 @@ 16 - + IGAZ @@ -5404,7 +5447,7 @@ 86 - + IGAZ @@ -5421,7 +5464,7 @@ - + @@ -5431,7 +5474,7 @@ Susanne - + IGAZ @@ -5441,7 +5484,7 @@ - + Country Asc1 @@ -5471,7 +5514,7 @@ - + Country Asc2 @@ -5509,7 +5552,7 @@ c - + IGAZ @@ -5535,7 +5578,7 @@ - + Country Desc2 @@ -5568,7 +5611,7 @@ - + Prefix @@ -5607,12 +5650,12 @@ - + - + 2 @@ -5621,7 +5664,7 @@ - + diff --git a/sc/qa/unit/data/functions/spreadsheet/fods/xmatch.fods b/sc/qa/unit/data/functions/spreadsheet/fods/xmatch.fods index 1bcb37925d14..7ba23d505bb3 100644 --- a/sc/qa/unit/data/functions/spreadsheet/fods/xmatch.fods +++ b/sc/qa/unit/data/functions/spreadsheet/fods/xmatch.fods @@ -1,7 +1,7 @@ - 2024-01-16T18:30:06.278000000PT2H45M21S49LibreOfficeDev/24.8.0.0.alpha0$Windows_X86_64 LibreOffice_project/8c4fe90c53a6a889e5d327b1d0fff5a74ce284cb2024-05-13T14:33:55.183000000 + 2024-01-16T18:30:06.278000000PT2H53M47S51LibreOfficeDev/25.2.0.0.alpha0$Windows_X86_64 LibreOffice_project/449050477173ff56b3f3d94406913b261f541b0f2024-06-26T18:59:52.334000000 0 @@ -31,7 +31,7 @@ 0 - 32 + 34 2 0 0 @@ -48,7 +48,7 @@ Sheet1 - 2479 + 1539 0 100 60 @@ -3098,7 +3098,7 @@ ???(???) - 0000.00.00, 00:00:00 + 0000.00.00, 00:00:00 @@ -3112,7 +3112,7 @@ - + @@ -4091,18 +4091,38 @@ + + #N/A + + + #N/A + + + IGAZ + + + =XMATCH("Micha*";F$13:F$19) + - - 8 + + #N/A + + + #N/A + + + IGAZ + + + =XMATCH("chael";F$13:F$19;2;1) + - - 9 diff --git a/sc/qa/unit/data/xlsx/cell-note.xlsx b/sc/qa/unit/data/xlsx/cell-note.xlsx new file mode 100644 index 000000000000..9df212a2970f Binary files /dev/null and b/sc/qa/unit/data/xlsx/cell-note.xlsx differ diff --git a/sc/qa/unit/data/xlsx/change-tracking.xlsx b/sc/qa/unit/data/xlsx/change-tracking.xlsx new file mode 100644 index 000000000000..cba56b971d64 Binary files /dev/null and b/sc/qa/unit/data/xlsx/change-tracking.xlsx differ diff --git a/sc/qa/unit/subsequent_export_test.cxx b/sc/qa/unit/subsequent_export_test.cxx index 67e7cd013119..e3cad1881415 100644 --- a/sc/qa/unit/subsequent_export_test.cxx +++ b/sc/qa/unit/subsequent_export_test.cxx @@ -1140,10 +1140,10 @@ CPPUNIT_TEST_FIXTURE(ScExportTest, testMiscRowHeightExport) // Checks that some distributed ( non-empty ) heights remain set after export (to xls) { u"xlsx/miscrowheights.xlsx", u"MS Excel 97"_ustr, SAL_N_ELEMENTS(DfltRowData), DfltRowData }, - // Checks that repreated rows ( of various heights ) remain set after export ( to xlsx ) + // Checks that repeated rows ( of various heights ) remain set after export ( to xlsx ) { u"ods/miscemptyrepeatedrowheights.ods", u"Calc Office Open XML"_ustr, SAL_N_ELEMENTS(EmptyRepeatRowData), EmptyRepeatRowData }, - // Checks that repreated rows ( of various heights ) remain set after export ( to xls ) + // Checks that repeated rows ( of various heights ) remain set after export ( to xls ) { u"ods/miscemptyrepeatedrowheights.ods", u"MS Excel 97"_ustr, SAL_N_ELEMENTS(EmptyRepeatRowData), EmptyRepeatRowData }, }; diff --git a/sc/qa/unit/subsequent_export_test4.cxx b/sc/qa/unit/subsequent_export_test4.cxx index 0814c915d81b..fbf31673ada3 100644 --- a/sc/qa/unit/subsequent_export_test4.cxx +++ b/sc/qa/unit/subsequent_export_test4.cxx @@ -1889,6 +1889,52 @@ CPPUNIT_TEST_FIXTURE(ScExportTest4, testChangesAuthorDate) pXmlDoc, "/office:document-content/office:body/office:spreadsheet/table:tracked-changes/table:cell-content-change[1]/office:change-info/dc:date"_ostr, u"1970-01-01T12:00:00"_ustr); + + // Reset config change + officecfg::Office::Common::Security::Scripting::RemovePersonalInfoOnSaving::set(false, pBatch); + pBatch->commit(); +} + +CPPUNIT_TEST_FIXTURE(ScExportTest4, testChangesAuthorDateXLSX) +{ + createScDoc("xlsx/change-tracking.xlsx"); + + auto pBatch(comphelper::ConfigurationChanges::create()); + // Remove all personal info + officecfg::Office::Common::Security::Scripting::RemovePersonalInfoOnSaving::set(true, pBatch); + pBatch->commit(); + + save(u"Calc Office Open XML"_ustr); + xmlDocUniquePtr pXmlDoc = parseExport(u"xl/revisions/revisionHeaders.xml"_ustr); + CPPUNIT_ASSERT(pXmlDoc); + + assertXPath(pXmlDoc, "/x:headers/x:header[1]"_ostr, "userName"_ostr, u"Author1"_ustr); + assertXPath(pXmlDoc, "/x:headers/x:header[1]"_ostr, "dateTime"_ostr, + u"1970-01-01T12:00:00.000000000Z"_ustr); + + // Reset config change + officecfg::Office::Common::Security::Scripting::RemovePersonalInfoOnSaving::set(false, pBatch); + pBatch->commit(); +} + +CPPUNIT_TEST_FIXTURE(ScExportTest4, testNotesAuthor) +{ + createScDoc("xlsx/cell-note.xlsx"); + + auto pBatch(comphelper::ConfigurationChanges::create()); + // Remove all personal info + officecfg::Office::Common::Security::Scripting::RemovePersonalInfoOnSaving::set(true, pBatch); + pBatch->commit(); + + save(u"Calc Office Open XML"_ustr); + xmlDocUniquePtr pXmlDoc = parseExport(u"xl/comments1.xml"_ustr); + CPPUNIT_ASSERT(pXmlDoc); + + assertXPathContent(pXmlDoc, "/x:comments/x:authors/x:author"_ostr, u"Author1"_ustr); + + // Reset config change + officecfg::Office::Common::Security::Scripting::RemovePersonalInfoOnSaving::set(false, pBatch); + pBatch->commit(); } CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/sc/qa/unit/uicalc/uicalc.cxx b/sc/qa/unit/uicalc/uicalc.cxx index 08a1eeb3848b..ae1edf38147e 100644 --- a/sc/qa/unit/uicalc/uicalc.cxx +++ b/sc/qa/unit/uicalc/uicalc.cxx @@ -2120,6 +2120,8 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf108654) createScDoc("tdf108654.ods"); ScDocument* pDoc = getScDoc(); + dispatchCommand(mxComponent, u".uno:SelectAll"_ustr, {}); + // first .uno:SelectAll selects the range, second all (tdf#161641) dispatchCommand(mxComponent, u".uno:SelectAll"_ustr, {}); dispatchCommand(mxComponent, u".uno:Copy"_ustr, {}); diff --git a/sc/source/core/data/documen2.cxx b/sc/source/core/data/documen2.cxx index ca7fbcc938c4..49cdd8d8fb81 100644 --- a/sc/source/core/data/documen2.cxx +++ b/sc/source/core/data/documen2.cxx @@ -1254,7 +1254,8 @@ ScLookupCache & ScDocument::GetLookupCache( const ScRange & rRange, ScInterprete } ScSortedRangeCache& ScDocument::GetSortedRangeCache( const ScRange & rRange, const ScQueryParam& param, - ScInterpreterContext* pContext, sal_uInt8 nSortedBinarySearch ) + ScInterpreterContext* pContext, bool bNewSearchFunction, + sal_uInt8 nSortedBinarySearch ) { assert(mxScSortedRangeCache); ScSortedRangeCache::HashKey key = ScSortedRangeCache::makeHashKey(rRange, param); @@ -1281,7 +1282,7 @@ ScSortedRangeCache& ScDocument::GetSortedRangeCache( const ScRange & rRange, con auto [findIt, bInserted] = mxScSortedRangeCache->aCacheMap.emplace(key, nullptr); if (bInserted) { - findIt->second = std::make_unique(this, rRange, param, pContext, invalid, nSortedBinarySearch); + findIt->second = std::make_unique(this, rRange, param, pContext, invalid, bNewSearchFunction, nSortedBinarySearch); StartListeningArea(rRange, false, findIt->second.get()); } return *findIt->second; diff --git a/sc/source/core/data/formulacell.cxx b/sc/source/core/data/formulacell.cxx index 810a2c9984a5..e7ebdb305d72 100644 --- a/sc/source/core/data/formulacell.cxx +++ b/sc/source/core/data/formulacell.cxx @@ -4499,7 +4499,7 @@ struct ScDependantsCalculator // The dependency evaluator evaluates all arguments of IF/IFS/SWITCH irrespective // of the result of the condition expression. // This is a perf problem if we *don't* intent on recalc'ing all dirty cells - // in the document. So lets disable threading and stop dependency evaluation if + // in the document. So let's disable threading and stop dependency evaluation if // the call did not originate from ScDocShell::DoRecalc()/ScDocShell::DoHardRecalc() // for formulae with IF/IFS/SWITCH OpCode nOpCode = p->GetOpCode(); @@ -4636,7 +4636,7 @@ struct ScDependantsCalculator } // Compute dependencies irrespective of the presence of any self references. - // These dependencies would get computed via InterpretTail anyway when we disable group calc, so lets do it now. + // These dependencies would get computed via InterpretTail anyway when we disable group calc, so let's do it now. // The advantage is that the FG's get marked for cycles early if present, and can avoid lots of complications. for (size_t i = 0; i < aRangeList.size(); ++i) { @@ -4770,7 +4770,7 @@ bool ScFormulaCell::CheckComputeDependencies(sc::FormulaLogger::GroupScope& rSco // to avoid writing during the calculation if (bCalcDependencyOnly) { - // Lets not use "ScFormulaGroupDependencyComputeGuard" here as there is no corresponding + // Let's not use "ScFormulaGroupDependencyComputeGuard" here as there is no corresponding // "ScFormulaGroupCycleCheckGuard" for this formula-group. // (We can only reach here from a multi-group dependency evaluation attempt). // (These two have to be in pairs always for any given formula-group) diff --git a/sc/source/core/data/queryevaluator.cxx b/sc/source/core/data/queryevaluator.cxx index b21c75801a6f..060716e08d92 100644 --- a/sc/source/core/data/queryevaluator.cxx +++ b/sc/source/core/data/queryevaluator.cxx @@ -98,7 +98,7 @@ void ScQueryEvaluator::setupCollatorIfNeeded() ScQueryEvaluator::ScQueryEvaluator(ScDocument& rDoc, const ScTable& rTab, const ScQueryParam& rParam, ScInterpreterContext* pContext, - bool* pTestEqualCondition) + bool* pTestEqualCondition, bool bNewSearchFunction) : mrDoc(rDoc) , mrStrPool(rDoc.GetSharedStringPool()) , mrTab(rTab) @@ -106,7 +106,7 @@ ScQueryEvaluator::ScQueryEvaluator(ScDocument& rDoc, const ScTable& rTab, , mpTestEqualCondition(pTestEqualCondition) , mpTransliteration(nullptr) , mpCollator(nullptr) - , mbMatchWholeCell(rDoc.GetDocOptions().IsMatchWholeCell()) + , mbMatchWholeCell(!bNewSearchFunction ? rDoc.GetDocOptions().IsMatchWholeCell() : true) , mbCaseSensitive(rParam.bCaseSens) , mpContext(pContext) , mnEntryCount(mrParam.GetEntryCount()) diff --git a/sc/source/core/data/queryiter.cxx b/sc/source/core/data/queryiter.cxx index 1cccedd59dc5..8141b90cc95e 100644 --- a/sc/source/core/data/queryiter.cxx +++ b/sc/source/core/data/queryiter.cxx @@ -91,8 +91,9 @@ void ScQueryCellIteratorBase< accessType, queryType >::PerformQuery() ((maParam.bByRow && nRow == maParam.nRow1) || (!maParam.bByRow && nCol == maParam.nCol1)); bool bTestEqualCondition = false; + const bool bNewSearchFunction = nSearchOpCode == SC_OPCODE_X_LOOKUP || nSearchOpCode == SC_OPCODE_X_MATCH; ScQueryEvaluator queryEvaluator(rDoc, *rDoc.maTabs[nTab], maParam, &mrContext, - (nTestEqualCondition ? &bTestEqualCondition : nullptr)); + (nTestEqualCondition ? &bTestEqualCondition : nullptr), bNewSearchFunction); if( queryType == ScQueryCellIteratorType::CountIf ) { // These are not used for COUNTIF, so should not be set, make the compiler @@ -193,7 +194,7 @@ void ScQueryCellIteratorBase< accessType, queryType >::PerformQuery() return; // XLookUp/XMatch: Forward/asc/backward/desc search for best fit value, except if we have an exact match - if ((nSearchOpCode == SC_OPCODE_X_LOOKUP || nSearchOpCode == SC_OPCODE_X_MATCH) && + if (bNewSearchFunction && (rEntry.eOp == SC_LESS_EQUAL || rEntry.eOp == SC_GREATER_EQUAL) && (nBestFitCol != nCol || nBestFitRow != nRow)) { @@ -221,7 +222,7 @@ void ScQueryCellIteratorBase< accessType, queryType >::PerformQuery() else if (bStringSearch) rItemTmp.maString = svl::SharedString(aBFCell.getString(&rDoc)); - ScQueryEvaluator queryEvaluatorTmp(rDoc, *rDoc.maTabs[nTab], aParamTmp, &mrContext, nullptr); + ScQueryEvaluator queryEvaluatorTmp(rDoc, *rDoc.maTabs[nTab], aParamTmp, &mrContext, nullptr, bNewSearchFunction); if (queryEvaluatorTmp.ValidQuery(nRow, (nCol == static_cast(nFirstQueryField) ? &aCell : nullptr))) HandleBestFitItemFound(nCol, nRow); else @@ -288,7 +289,8 @@ void ScQueryCellIteratorBase< accessType, queryType >::InitPos() { // This should be all in AccessBase::InitPos(), but that one can't call // BinarySearch(), so do it this way instead. - AccessBase::InitPosStart(nSortedBinarySearch); + bool bNewSearchFunction = nSearchOpCode == SC_OPCODE_X_LOOKUP || nSearchOpCode == SC_OPCODE_X_MATCH; + AccessBase::InitPosStart(bNewSearchFunction, nSortedBinarySearch); ScQueryOp& op = maParam.GetEntry(0).eOp; SCCOLROW beforeColRow = -1; SCCOLROW lastColRow = -1; @@ -1362,11 +1364,11 @@ void ScQueryCellIteratorAccessSpecific< ScQueryCellIteratorAccess::SortedCache > // over indexes of the sorted cache (which is a stable sort of the cell contents) in the range // that fits the query condition and then that is mapped to rows. This will result in iterating // over only matching rows in their sorted order (and for equal rows in their row order). -void ScQueryCellIteratorAccessSpecific< ScQueryCellIteratorAccess::SortedCache >::InitPosStart(sal_uInt8 nSortedBinarySearch) +void ScQueryCellIteratorAccessSpecific< ScQueryCellIteratorAccess::SortedCache >::InitPosStart(bool bNewSearchFunction, sal_uInt8 nSortedBinarySearch) { ScRange aSortedRangeRange( maParam.nCol1, maParam.nRow1, nTab, maParam.nCol2, maParam.nRow2, nTab ); // We want all matching values first in the sort order, - SetSortedRangeCache( rDoc.GetSortedRangeCache( aSortedRangeRange, maParam, &mrContext, nSortedBinarySearch )); + SetSortedRangeCache( rDoc.GetSortedRangeCache( aSortedRangeRange, maParam, &mrContext, bNewSearchFunction, nSortedBinarySearch )); // InitPosFinish() needs to be called after this, ScQueryCellIteratorBase::InitPos() // will handle that } @@ -1615,7 +1617,8 @@ static bool CanBeUsedForSorterCache(ScDocument& /*rDoc*/, const ScQueryParam& /* return false; if(rParam.mbRangeLookup) return false; - if(rParam.GetEntry(0).GetQueryItem().meType == ScQueryEntry::ByString + const bool bNewSearchFunction = nSearchOpCode == SC_OPCODE_X_LOOKUP || nSearchOpCode == SC_OPCODE_X_MATCH; + if(rParam.GetEntry(0).GetQueryItem().meType == ScQueryEntry::ByString && !bNewSearchFunction && !ScQueryEvaluator::isMatchWholeCell(rDoc, rParam.GetEntry(0).eOp)) return false; // substring matching cannot be sorted if(rParam.GetEntry(0).eOp != SC_LESS && rParam.GetEntry(0).eOp != SC_LESS_EQUAL @@ -1773,7 +1776,8 @@ sal_uInt64 ScCountIfCellIterator< ScQueryCellIteratorAccess::SortedCache >::GetC nRow = maParam.nRow1; ScRange aSortedRangeRange( col, maParam.nRow1, nTab, col, maParam.nRow2, nTab); ScQueryOp& op = maParam.GetEntry(0).eOp; - SetSortedRangeCache( rDoc.GetSortedRangeCache( aSortedRangeRange, maParam, &mrContext )); + bool bNewSearchFunction = nSearchOpCode == SC_OPCODE_X_LOOKUP || nSearchOpCode == SC_OPCODE_X_MATCH; + SetSortedRangeCache( rDoc.GetSortedRangeCache( aSortedRangeRange, maParam, &mrContext, bNewSearchFunction, nSearchOpCode )); if( op == SC_EQUAL ) { // BinarySearch() searches for the last item that matches. Therefore first diff --git a/sc/source/core/data/validat.cxx b/sc/source/core/data/validat.cxx index 55cb345a88bc..6a4a4aed064e 100644 --- a/sc/source/core/data/validat.cxx +++ b/sc/source/core/data/validat.cxx @@ -906,7 +906,7 @@ bool ScValidationData::GetSelectionFromFormula( /* XL artificially limits things to a single col or row in the UI but does * not list the constraint in MOOXml. If a defined name or INDIRECT * resulting in 1D is entered in the UI and the definition later modified - * to 2D, it is evaluated fine and also stored and loaded. Lets get ahead + * to 2D, it is evaluated fine and also stored and loaded. Let's get ahead * of the curve and support 2d. In XL, values are listed row-wise, do the * same. */ for( nRow = 0; nRow < nRows ; nRow++ ) diff --git a/sc/source/core/tool/address.cxx b/sc/source/core/tool/address.cxx index ffbeb495d4ab..54236396ec5d 100644 --- a/sc/source/core/tool/address.cxx +++ b/sc/source/core/tool/address.cxx @@ -960,8 +960,11 @@ static const sal_Unicode* lcl_a1_get_row( const ScDocument& rDoc, return p; } - sal_Int64 n = sal_Unicode_strtol( p, &pEnd ) - 1; - if( nullptr == pEnd || p == pEnd || n < 0 || n > rDoc.MaxRow() ) + sal_Int64 n = sal_Unicode_strtol(p, &pEnd); + if (nullptr == pEnd || p == pEnd || n < 1) + return nullptr; + n -= 1; + if (n > rDoc.MaxRow()) return nullptr; *nFlags |= ScRefFlags::ROW_VALID; @@ -1159,7 +1162,7 @@ static ScRefFlags lcl_ScAddress_Parse_OOo( const sal_Unicode* p, const ScDocumen bool bExtDoc = false; bool bExtDocInherited = false; - // Lets see if this is a reference to something in an external file. A + // Let's see if this is a reference to something in an external file. A // document name is always quoted and has a trailing #. if (*p == '\'') { diff --git a/sc/source/core/tool/interpr4.cxx b/sc/source/core/tool/interpr4.cxx index bea16130257f..c6045ad57362 100644 --- a/sc/source/core/tool/interpr4.cxx +++ b/sc/source/core/tool/interpr4.cxx @@ -3874,7 +3874,7 @@ ScInterpreter::ScInterpreter( ScFormulaCell* pCell, ScDocument& rDoc, ScInterpre else bMatrixFormula = false; - // Lets not use the global stack while formula-group-threading. + // Let's not use the global stack while formula-group-threading. // as it complicates its life-cycle mgmt since for threading formula-groups, // ScInterpreter is preallocated (in main thread) for each worker thread. if (!bGlobalStackInUse && !bForGroupThreading) diff --git a/sc/source/core/tool/interpr5.cxx b/sc/source/core/tool/interpr5.cxx index dce3f25819ea..2f4fe0f19fa1 100644 --- a/sc/source/core/tool/interpr5.cxx +++ b/sc/source/core/tool/interpr5.cxx @@ -317,7 +317,7 @@ ScMatrixRef ScInterpreter::CreateMatrixFromDoubleRef( const FormulaToken* pToken { // Clamp the size of the matrix area to rows which actually contain data. // For e.g. SUM(IF over an entire column, this can make a big difference, - // But lets not trim the empty space from the top or left as this matters + // But let's not trim the empty space from the top or left as this matters // at least in matrix formulas involving IF(). // Refer ScCompiler::AnnotateTrimOnDoubleRefs() where double-refs are // flagged for trimming. diff --git a/sc/source/core/tool/rangecache.cxx b/sc/source/core/tool/rangecache.cxx index e18dbace0f31..24a8a39313ff 100644 --- a/sc/source/core/tool/rangecache.cxx +++ b/sc/source/core/tool/rangecache.cxx @@ -51,7 +51,8 @@ static ScSortedRangeCache::ValueType toValueType(const ScQueryParam& param) ScSortedRangeCache::ScSortedRangeCache(ScDocument* pDoc, const ScRange& rRange, const ScQueryParam& param, ScInterpreterContext* context, - bool invalid, sal_uInt8 nSortedBinarySearch) + bool invalid, bool bNewSearchFunction, + sal_uInt8 nSortedBinarySearch) : maRange(rRange) , mpDoc(pDoc) , mValid(false) @@ -111,8 +112,8 @@ ScSortedRangeCache::ScSortedRangeCache(ScDocument* pDoc, const ScRange& rRange, // the whole column which includes a textual header). But if it can possibly // match, then bail out and leave it to the unoptimized case. // TODO Maybe it would actually work to use the numeric value obtained here? - if (!ScQueryEvaluator::isMatchWholeCell(*pDoc, mQueryOp)) - return; // substring matching cannot be sorted + if (!bNewSearchFunction && !ScQueryEvaluator::isMatchWholeCell(*pDoc, mQueryOp)) + return; // substring matching cannot be sorted, but new search functions are sorted sal_uInt32 format = 0; double value; if (context->NFIsNumberFormat(cell.getString(pDoc), format, value)) @@ -169,7 +170,8 @@ ScSortedRangeCache::ScSortedRangeCache(ScDocument* pDoc, const ScRange& rRange, // Try to reuse as much ScQueryEvaluator code as possible, this should // basically do the same comparisons. assert(pDoc->FetchTable(nTab) != nullptr); - ScQueryEvaluator evaluator(*pDoc, *pDoc->FetchTable(nTab), param, context); + ScQueryEvaluator evaluator(*pDoc, *pDoc->FetchTable(nTab), param, context, nullptr, + bNewSearchFunction); for (SCCOL nCol = startCol; nCol <= endCol; ++nCol) { for (SCROW nRow = startRow; nRow <= endRow; ++nRow) diff --git a/sc/source/filter/excel/xeescher.cxx b/sc/source/filter/excel/xeescher.cxx index 314f2ebe5b1c..625021e7555b 100644 --- a/sc/source/filter/excel/xeescher.cxx +++ b/sc/source/filter/excel/xeescher.cxx @@ -38,6 +38,7 @@ #include #include #include +#include #include #include @@ -1639,6 +1640,7 @@ XclExpNote::XclExpNote(const XclExpRoot& rRoot, const ScAddress& rScPos, , mbAutoFill(false) , mbColHidden(false) , mbRowHidden(false) + , mpAuthorIDs(new SvtSecurityMapPersonalInfo) { // get the main note text OUString aNoteText; @@ -1681,8 +1683,18 @@ XclExpNote::XclExpNote(const XclExpRoot& rRoot, const ScAddress& rScPos, // stAuthor (variable): An XLUnicodeString that specifies the name of the comment // author. String length MUST be greater than or equal to 1 and less than or equal // to 54. + bool bRemovePersonalInfo + = SvtSecurityOptions::IsOptionSet( + SvtSecurityOptions::EOption::DocWarnRemovePersonalInfo) + && !SvtSecurityOptions::IsOptionSet( + SvtSecurityOptions::EOption::DocWarnKeepNoteAuthorDateInfo); if( pScNote->GetAuthor().isEmpty() ) maAuthor = XclExpString( u" "_ustr ); + else if (bRemovePersonalInfo) + maAuthor = XclExpString( + "Author" + + OUString::number(mpAuthorIDs->GetInfoID(pScNote->GetAuthor())), + XclStrFlags::NONE, 54); else maAuthor = XclExpString( pScNote->GetAuthor(), XclStrFlags::NONE, 54 ); diff --git a/sc/source/filter/excel/xeformula.cxx b/sc/source/filter/excel/xeformula.cxx index 16bd88715d54..162f8f2968b7 100644 --- a/sc/source/filter/excel/xeformula.cxx +++ b/sc/source/filter/excel/xeformula.cxx @@ -452,13 +452,6 @@ private: void AppendExt( double fData ); void AppendExt( const OUString& rString ); - std::optional> InsertDde(const OUString& rApplic, const OUString& rTopic, const OUString& rItem) - { - if (!mxData->mpLinkMgr) - return {}; - return mxData->mpLinkMgr->InsertDde(rApplic, rTopic, rItem); - } - private: typedef std::map< XclFormulaType, XclExpCompConfig > XclExpCompConfigMap; typedef std::shared_ptr< XclExpCompData > XclExpCompDataRef; @@ -1299,14 +1292,15 @@ void XclExpFmlaCompImpl::ProcessDdeLink( const XclExpScToken& rTokData ) if( mxData->mbOk ) mxData->mbOk = !aApplic.isEmpty() && !aTopic.isEmpty() && !aItem.isEmpty(); if( mxData->mbOk ) { - const auto oResult = InsertDde(aApplic, aTopic, aItem); - - if ( oResult ) { - AppendNameXToken( oResult->first, oResult->second, rTokData.mnSpaces ); - } - else { - AppendErrorToken( EXC_ERR_NA, rTokData.mnSpaces ); + if ( mxData->mpLinkMgr ) + { + if( const auto& rResult = mxData->mpLinkMgr->InsertDde( aApplic, aTopic, aItem ) ) + AppendNameXToken( rResult->mnSupbook, rResult->mnSBTab, rTokData.mnSpaces ); + else + AppendErrorToken( EXC_ERR_NA, rTokData.mnSpaces ); } + else + AppendErrorToken( EXC_ERR_NA, rTokData.mnSpaces ); } } @@ -2225,12 +2219,12 @@ void XclExpFmlaCompImpl::ProcessExternalName( const XclExpScToken& rTokData ) } // insert the new external name and create the tNameX token - if (const OUString* pFile = rExtRefMgr.getExternalFileName( nFileId )) { - - - const auto oResult = mxData->mpLinkMgr->InsertExtName( *pFile, aName, xArray ); - if( oResult ) { - AppendNameXToken( oResult->first, oResult->second, rTokData.mnSpaces ); + const OUString* pFile = rExtRefMgr.getExternalFileName( nFileId ); + if ( pFile ) + { + if ( const auto& rResult = mxData->mpLinkMgr->InsertExtName( *pFile, aName, xArray ) ) + { + AppendNameXToken( rResult->mnSupbook, rResult->mnSBTab, rTokData.mnSpaces ); return; } } @@ -2441,10 +2435,9 @@ void XclExpFmlaCompImpl::AppendAddInCallToken( const XclExpExtFuncData& rExtFunc OUString aXclFuncName; if( mxData->mpLinkMgr && ScGlobal::GetAddInCollection()->GetExcelName( rExtFuncData.maFuncName, GetUILanguage(), aXclFuncName ) ) { - const auto oResult = mxData->mpLinkMgr->InsertAddIn( aXclFuncName ); - if (oResult) + if ( const auto& rResult = mxData->mpLinkMgr->InsertAddIn( aXclFuncName ) ) { - AppendNameXToken(oResult->first, oResult->second); + AppendNameXToken( rResult->mnSupbook, rResult->mnSBTab ); return; } } @@ -2455,14 +2448,13 @@ void XclExpFmlaCompImpl::AppendEuroToolCallToken( const XclExpExtFuncData& rExtF { if ( mxData->mpLinkMgr ) { - const auto oResult = mxData->mpLinkMgr->InsertEuroTool( rExtFuncData.maFuncName ); - if ( oResult ) - { - AppendNameXToken( oResult->first, oResult->second ); - return; - } + if( const auto& rResult = mxData->mpLinkMgr->InsertEuroTool( rExtFuncData.maFuncName ) ) + AppendNameXToken( rResult->mnSupbook, rResult->mnSBTab ); + else + AppendMacroCallToken( rExtFuncData ); } - AppendMacroCallToken( rExtFuncData ); + else + AppendMacroCallToken( rExtFuncData ); } void XclExpFmlaCompImpl::AppendOperatorTokenId( sal_uInt8 nTokenId, const XclExpOperandListRef& rxOperands, sal_uInt8 nSpaces ) diff --git a/sc/source/filter/excel/xelink.cxx b/sc/source/filter/excel/xelink.cxx index 47217e2d775c..db68b16770c2 100644 --- a/sc/source/filter/excel/xelink.cxx +++ b/sc/source/filter/excel/xelink.cxx @@ -413,23 +413,21 @@ public: void StoreCellRange( sal_uInt16 nFileId, const OUString& rTabName, const ScRange& rRange ); /** Finds or inserts an EXTERNNAME record for an add-in function name. - * @return an optional pair, containing [rnSupbook, rnExtName] + * @return an optional struct, containing [mnSupbook, mnExtName] rnSupbook Returns the index of the SUPBOOK record which contains the DDE link. rnExtName Returns the 1-based EXTERNNAME record index. */ - std::optional> InsertAddIn(const OUString& rName); + std::optional InsertAddIn(const OUString& rName); /** InsertEuroTool */ - std::optional> InsertEuroTool(const OUString& rName); + std::optional InsertEuroTool(const OUString& rName); /** Finds or inserts an EXTERNNAME record for DDE links. - * @return an optional pair, containing [rnSupbook, rnExtName] + * @return an optional struct, containing [mnSupbook, mnExtName] * rnSupbook Returns the index of the SUPBOOK record which contains the DDE link. rnExtName Returns the 1-based EXTERNNAME record index. */ - std::optional> - InsertDde(const OUString& rApplic, const OUString& rTopic, const OUString& rItem); + std::optional InsertDde(const OUString& rApplic, const OUString& rTopic, const OUString& rItem); - std::optional> - InsertExtName(const OUString& rUrl, const OUString& rName, + std::optional InsertExtName(const OUString& rUrl, const OUString& rName, const ScExternalRefCache::TokenArrayRef& rArray); XclExpXti GetXti( sal_uInt16 nFileId, const OUString& rTabName, sal_uInt16 nXclTabSpan, @@ -444,14 +442,6 @@ public: /** Whether we need to write externalReferences or not. */ bool HasExternalReferences() const; - struct XclExpSBIndex - { - sal_uInt16 mnSupbook; /// SUPBOOK index for an Excel sheet. - sal_uInt16 mnSBTab; /// Sheet name index in SUPBOOK for an Excel sheet. - void Set( sal_uInt16 nSupbook, sal_uInt16 nSBTab ) - { mnSupbook = nSupbook; mnSBTab = nSBTab; } - }; - private: typedef XclExpRecordList< XclExpSupbook > XclExpSupbookList; typedef XclExpSupbookList::RecordRefType XclExpSupbookRef; @@ -508,17 +498,15 @@ public: virtual void StoreCellRange( sal_uInt16 nFileId, const OUString& rTabName, const ScRange& rRange ) = 0; /** Derived classes find or insert an EXTERNNAME record for an add-in function name. */ - virtual std::optional> InsertAddIn(const OUString& rName) = 0; + virtual std::optional InsertAddIn(const OUString& rName) = 0; /** InsertEuroTool */ - virtual std::optional> InsertEuroTool(const OUString& rName) + virtual std::optional InsertEuroTool(const OUString& rName) = 0; /** Derived classes find or insert an EXTERNNAME record for DDE links. */ - virtual std::optional> - InsertDde(const OUString& rApplic, const OUString& rTopic, const OUString& rItem) = 0; + virtual std::optional InsertDde(const OUString& rApplic, const OUString& rTopic, const OUString& rItem) = 0; - virtual std::optional> - InsertExtName(const OUString& rUrl, const OUString& rName, + virtual std::optional InsertExtName(const OUString& rUrl, const OUString& rName, const ScExternalRefCache::TokenArrayRef& rArray) = 0; @@ -555,18 +543,14 @@ public: virtual void StoreCell( sal_uInt16 nFileId, const OUString& rTabName, const ScAddress& rPos ) override; virtual void StoreCellRange( sal_uInt16 nFileId, const OUString& rTabName, const ScRange& rRange ) override; - virtual std::optional> - InsertAddIn(const OUString& rName) override; + virtual std::optional InsertAddIn(const OUString& rName) override; /** InsertEuroTool */ - virtual std::optional> - InsertEuroTool(const OUString& rName) override; + virtual std::optional InsertEuroTool(const OUString& rName) override; - virtual std::optional> - InsertDde(const OUString& rApplic, const OUString& rTopic, const OUString& rItem) override; + virtual std::optional InsertDde(const OUString& rApplic, const OUString& rTopic, const OUString& rItem) override; - virtual std::optional> - InsertExtName(const OUString& rUrl, const OUString& rName, + virtual std::optional InsertExtName(const OUString& rUrl, const OUString& rName, const ScExternalRefCache::TokenArrayRef& rArray) override; virtual void Save( XclExpStream& rStrm ) override; @@ -622,17 +606,13 @@ public: virtual void StoreCell( sal_uInt16 nFileId, const OUString& rTabName, const ScAddress& rPos ) override; virtual void StoreCellRange( sal_uInt16 nFileId, const OUString& rTabName, const ScRange& rRange ) override; - virtual std::optional> - InsertAddIn(const OUString& rName) override; + virtual std::optional InsertAddIn(const OUString& rName) override; /** InsertEuroTool */ - virtual std::optional> - InsertEuroTool(const OUString& rName) override; + virtual std::optional InsertEuroTool(const OUString& rName) override; - virtual std::optional> - InsertDde(const OUString& rApplic, const OUString& rTopic, const OUString& rItem) override; + virtual std::optional InsertDde(const OUString& rApplic, const OUString& rTopic, const OUString& rItem) override; - virtual std::optional> - InsertExtName(const OUString& rUrl, const OUString& rName, + virtual std::optional InsertExtName(const OUString& rUrl, const OUString& rName, const ScExternalRefCache::TokenArrayRef& rArray) override; virtual void Save( XclExpStream& rStrm ) override; @@ -1856,7 +1836,7 @@ public: explicit FindSBIndexEntry(sal_uInt16 nSupbookId, sal_uInt16 nTabId) : mnSupbookId(nSupbookId), mnTabId(nTabId) {} - bool operator()(const XclExpSupbookBuffer::XclExpSBIndex& r) const + bool operator()(const XclExpSBIndex& r) const { return mnSupbookId == r.mnSupbook && mnTabId == r.mnSBTab; } @@ -1965,7 +1945,7 @@ void XclExpSupbookBuffer::StoreCellRange( sal_uInt16 nFileId, const OUString& rT } } -std::optional> XclExpSupbookBuffer::InsertAddIn(const OUString& rName ) +std::optional XclExpSupbookBuffer::InsertAddIn(const OUString& rName ) { XclExpSupbookRef xSupbook; if( mnAddInSB == SAL_MAX_UINT16 ) @@ -1977,57 +1957,57 @@ std::optional> XclExpSupbookBuffer::InsertAddI xSupbook = maSupbookList.GetRecord( mnAddInSB ); OSL_ENSURE( xSupbook, "XclExpSupbookBuffer::InsertAddin - missing add-in supbook" ); - auto nExtName = xSupbook->InsertAddIn( rName ); + sal_uInt16 nExtName = xSupbook->InsertAddIn( rName ); if( nExtName > 0) { - return std::make_pair(mnAddInSB, nExtName); + return XclExpSBIndex( mnAddInSB, nExtName ); } return {}; } -std::optional> XclExpSupbookBuffer::InsertEuroTool( const OUString& rName ) +std::optional XclExpSupbookBuffer::InsertEuroTool( const OUString& rName ) { XclExpSupbookRef xSupbook; OUString aUrl( u"\001\010EUROTOOL.XLA"_ustr ); auto nSupbookId = GetSupbookUrl(xSupbook, aUrl); - if (!nSupbookId) + if ( !nSupbookId ) { xSupbook = new XclExpSupbook( GetRoot(), aUrl, XclSupbookType::Eurotool ); - nSupbookId = Append(xSupbook); + nSupbookId = Append( xSupbook ); } auto nExtName = xSupbook->InsertEuroTool( rName ); if( nExtName > 0) { - return std::make_pair(*nSupbookId, nExtName); + return XclExpSBIndex( *nSupbookId, nExtName ); } return {}; } -std::optional> XclExpSupbookBuffer::InsertDde( +std::optional XclExpSupbookBuffer::InsertDde( const OUString& rApplic, const OUString& rTopic, const OUString& rItem ) { XclExpSupbookRef xSupbook; - auto nSupbookDde = GetSupbookDde( xSupbook, rApplic, rTopic ); - if (!nSupbookDde) + auto nSupbook = GetSupbookDde( xSupbook, rApplic, rTopic ); + if( !nSupbook ) { xSupbook = new XclExpSupbook( GetRoot(), rApplic, rTopic ); - nSupbookDde = Append(xSupbook); + nSupbook = Append( xSupbook ); } auto nExtName = xSupbook->InsertDde( rItem ); if (nExtName > 0) { - return std::make_pair(*nSupbookDde, nExtName); + return XclExpSBIndex(*nSupbook, nExtName); } return {}; } -std::optional> XclExpSupbookBuffer::InsertExtName( const OUString& rUrl, +std::optional XclExpSupbookBuffer::InsertExtName( const OUString& rUrl, const OUString& rName, const ScExternalRefCache::TokenArrayRef& rArray ) { XclExpSupbookRef xSupbook; auto nSupbookId = GetSupbookUrl(xSupbook, rUrl); - if (!nSupbookId) + if ( !nSupbookId ) { xSupbook = new XclExpSupbook(GetRoot(), rUrl); nSupbookId = Append(xSupbook); @@ -2036,7 +2016,7 @@ std::optional> XclExpSupbookBuffer::InsertExtN auto nExtName = xSupbook->InsertExtName(rName, rArray); if (nExtName > 0) { - return std::make_pair(*nSupbookId, nExtName); + return XclExpSBIndex( *nSupbookId, nExtName ); } return {}; } @@ -2262,7 +2242,7 @@ void XclExpLinkManagerImpl5::StoreCellRange( sal_uInt16 /*nFileId*/, const OUStr // not implemented } -std::optional> XclExpLinkManagerImpl5::InsertAddIn( const OUString& rName ) +std::optional XclExpLinkManagerImpl5::InsertAddIn( const OUString& rName ) { sal_uInt16 nExtSheet, nExtName; XclExpExtSheetRef xExtSheet = FindInternal( nExtSheet, EXC_EXTSH_ADDIN ); @@ -2271,25 +2251,25 @@ std::optional> XclExpLinkManagerImpl5::InsertA nExtName = xExtSheet->InsertAddIn( rName ); if(nExtName > 0) { - return std::make_pair(nExtSheet, nExtName); + return XclExpSBIndex( nExtSheet, nExtName ); } } return {}; } -std::optional> XclExpLinkManagerImpl5::InsertEuroTool( const OUString& /*rName*/ ) +std::optional XclExpLinkManagerImpl5::InsertEuroTool( const OUString& /*rName*/ ) { return {}; } -std::optional> XclExpLinkManagerImpl5::InsertDde( +std::optional XclExpLinkManagerImpl5::InsertDde( const OUString& /*rApplic*/, const OUString& /*rTopic*/, const OUString& /*rItem*/ ) { // not implemented return {}; } -std::optional> XclExpLinkManagerImpl5::InsertExtName( const OUString& /*rUrl*/, +std::optional XclExpLinkManagerImpl5::InsertExtName( const OUString& /*rUrl*/, const OUString& /*rName*/, const ScExternalRefCache::TokenArrayRef& /*rArray*/ ) { // not implemented @@ -2461,37 +2441,48 @@ void XclExpLinkManagerImpl8::StoreCellRange( sal_uInt16 nFileId, const OUString& maSBBuffer.StoreCellRange(nFileId, rTabName, rRange); } -std::optional> XclExpLinkManagerImpl8::InsertAddIn( const OUString& rName ) +std::optional XclExpLinkManagerImpl8::InsertAddIn( const OUString& rName ) { - const auto& rResult = maSBBuffer.InsertAddIn(rName); - if (rResult) - return std::make_pair(InsertXti( XclExpXti( rResult->first, EXC_TAB_EXTERNAL, EXC_TAB_EXTERNAL ) ), rResult->second); + const auto & rResult = maSBBuffer.InsertAddIn( rName ); + if( rResult ) + { + return XclExpSBIndex(InsertXti( XclExpXti( rResult->mnSupbook, EXC_TAB_EXTERNAL, EXC_TAB_EXTERNAL ) ), rResult->mnSBTab); + } return {}; } -std::optional> XclExpLinkManagerImpl8::InsertEuroTool( const OUString& rName ) +std::optional XclExpLinkManagerImpl8::InsertEuroTool( const OUString& rName ) { - const auto& rResult = maSBBuffer.InsertEuroTool(rName); - if (rResult) - return std::make_pair(InsertXti( XclExpXti( rResult->first, EXC_TAB_EXTERNAL, EXC_TAB_EXTERNAL ) ), rResult->second); + const auto & rResult = maSBBuffer.InsertEuroTool( rName ); + if( rResult ) + { + return XclExpSBIndex(InsertXti( XclExpXti( rResult->mnSupbook, EXC_TAB_EXTERNAL, EXC_TAB_EXTERNAL ) ), + rResult->mnSBTab); + } return {}; } -std::optional> XclExpLinkManagerImpl8::InsertDde( +std::optional XclExpLinkManagerImpl8::InsertDde( const OUString& rApplic, const OUString& rTopic, const OUString& rItem ) { - const auto& rResult = maSBBuffer.InsertDde(rApplic, rTopic, rItem); - if (rResult) - return std::make_pair(InsertXti( XclExpXti( rResult->first, EXC_TAB_EXTERNAL, EXC_TAB_EXTERNAL ) ), rResult->second); + const auto & rResult = maSBBuffer.InsertDde( rApplic, rTopic, rItem ); + if( rResult ) + { + return XclExpSBIndex(InsertXti( XclExpXti( rResult->mnSupbook, EXC_TAB_EXTERNAL, EXC_TAB_EXTERNAL ) ), + rResult->mnSBTab); + } return {}; } -std::optional> XclExpLinkManagerImpl8::InsertExtName( const OUString& rUrl, const OUString& rName, +std::optional XclExpLinkManagerImpl8::InsertExtName( const OUString& rUrl, const OUString& rName, const ScExternalRefCache::TokenArrayRef& rArray ) { - const auto& rResult = maSBBuffer.InsertExtName(rUrl, rName, rArray); - if (rResult) - return std::make_pair(InsertXti( XclExpXti( rResult->first, EXC_TAB_EXTERNAL, EXC_TAB_EXTERNAL ) ), rResult->second); + const auto & rResult = maSBBuffer.InsertExtName( rUrl, rName, rArray ); + if( rResult ) + { + return XclExpSBIndex(InsertXti( XclExpXti( rResult->mnSupbook, EXC_TAB_EXTERNAL, EXC_TAB_EXTERNAL ) ), + rResult->mnSBTab); + } return {}; } @@ -2611,23 +2602,23 @@ void XclExpLinkManager::StoreCellRange( sal_uInt16 nFileId, const OUString& rTab mxImpl->StoreCellRange(nFileId, rTabName, rRange); } -std::optional> XclExpLinkManager::InsertAddIn( const OUString& rName ) +std::optional XclExpLinkManager::InsertAddIn( const OUString& rName ) { return mxImpl->InsertAddIn( rName ); } -std::optional> XclExpLinkManager::InsertEuroTool( const OUString& rName ) +std::optional XclExpLinkManager::InsertEuroTool( const OUString& rName ) { return mxImpl->InsertEuroTool( rName ); } -std::optional> XclExpLinkManager::InsertDde( +std::optional XclExpLinkManager::InsertDde( const OUString& rApplic, const OUString& rTopic, const OUString& rItem ) { return mxImpl->InsertDde( rApplic, rTopic, rItem ); } -std::optional> XclExpLinkManager::InsertExtName( const OUString& rUrl, const OUString& rName, +std::optional XclExpLinkManager::InsertExtName( const OUString& rUrl, const OUString& rName, const ScExternalRefCache::TokenArrayRef& rArray ) { return mxImpl->InsertExtName( rUrl, rName, rArray); diff --git a/sc/source/filter/excel/xistream.cxx b/sc/source/filter/excel/xistream.cxx index 0a6c24aca6b2..16eea86e7cd8 100644 --- a/sc/source/filter/excel/xistream.cxx +++ b/sc/source/filter/excel/xistream.cxx @@ -637,7 +637,7 @@ sal_Int16 XclImpStream::ReadInt16() { SVBT16 pnBuffer{0}; mxDecrypter->Read( mrStrm, pnBuffer, 2 ); - nValue = static_cast< sal_Int16 >( SVBT16ToUInt16( pnBuffer ) ); + nValue = SVBT16ToInt16(pnBuffer); } else mrStrm.ReadInt16( nValue ); diff --git a/sc/source/filter/excel/xistyle.cxx b/sc/source/filter/excel/xistyle.cxx index 8c29ece09885..dddf509b0944 100644 --- a/sc/source/filter/excel/xistyle.cxx +++ b/sc/source/filter/excel/xistyle.cxx @@ -1890,6 +1890,7 @@ XclImpXFRangeBuffer::~XclImpXFRangeBuffer() void XclImpXFRangeBuffer::Initialize() { maColumns.clear(); + maRows.clear(); maHyperlinks.clear(); maMergeList.RemoveAll(); } @@ -1904,7 +1905,7 @@ void XclImpXFRangeBuffer::SetXF( const ScAddress& rScPos, sal_uInt16 nXFIndex, X if( maColumns.size() <= nIndex ) maColumns.resize( nIndex + 1 ); if( !maColumns[ nIndex ] ) - maColumns[ nIndex ] = std::make_shared(); + maColumns[ nIndex ].emplace(); // remember all Boolean cells, they will get 'Standard' number format maColumns[ nIndex ]->SetXF( nScRow, XclImpXFIndex( nXFIndex, eMode == xlXFModeBoolCell ) ); @@ -1942,8 +1943,10 @@ void XclImpXFRangeBuffer::SetBoolXF( const ScAddress& rScPos, sal_uInt16 nXFInde void XclImpXFRangeBuffer::SetRowDefXF( SCROW nScRow, sal_uInt16 nXFIndex ) { - for( SCCOL nScCol = 0; nScCol <= GetDoc().MaxCol(); ++nScCol ) - SetXF( ScAddress( nScCol, nScRow, 0 ), nXFIndex, xlXFModeRow ); + size_t nIndex = static_cast< size_t >( nScRow ); + if( maRows.size() <= nIndex ) + maRows.resize( nIndex + 1 ); + maRows[ nIndex ].emplace(nXFIndex); } void XclImpXFRangeBuffer::SetColumnDefXF( SCCOL nScCol, sal_uInt16 nXFIndex ) @@ -1953,7 +1956,7 @@ void XclImpXFRangeBuffer::SetColumnDefXF( SCCOL nScCol, sal_uInt16 nXFIndex ) if( maColumns.size() <= nIndex ) maColumns.resize( nIndex + 1 ); OSL_ENSURE( !maColumns[ nIndex ], "XclImpXFRangeBuffer::SetColumnDefXF - default column of XFs already has values" ); - maColumns[ nIndex ] = std::make_shared(); + maColumns[ nIndex ].emplace(); maColumns[ nIndex ]->SetDefaultXF( XclImpXFIndex( nXFIndex ), GetRoot()); } @@ -1990,13 +1993,24 @@ void XclImpXFRangeBuffer::Finalize() ScDocument& rDoc = rDocImport.getDoc(); SCTAB nScTab = GetCurrScTab(); + // apply row styles + for( SCROW nScRow = 0; nScRow < static_cast(maRows.size()); ++nScRow ) + { + if (!maRows[nScRow]) + continue; + sal_uInt16 nXFIndex = *maRows[nScRow]; + for( SCCOL nScCol = 0; nScCol < static_cast(maColumns.size()); ++nScCol ) + if (maColumns[nScCol]) + SetXF( ScAddress( nScCol, nScRow, 0 ), nXFIndex, xlXFModeRow ); + } + // apply patterns XclImpXFBuffer& rXFBuffer = GetXFBuffer(); ScDocumentImport::Attrs aPendingAttrParam; SCCOL pendingColStart = -1; SCCOL pendingColEnd = -1; SCCOL nScCol = 0; - for( const auto& rxColumn : maColumns ) + for( auto& rxColumn : maColumns ) { // apply all cell styles of an existing column if( rxColumn ) diff --git a/sc/source/filter/inc/XclExpChangeTrack.hxx b/sc/source/filter/inc/XclExpChangeTrack.hxx index b23b6f8cdcaf..746125e50ab1 100644 --- a/sc/source/filter/inc/XclExpChangeTrack.hxx +++ b/sc/source/filter/inc/XclExpChangeTrack.hxx @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include "xelink.hxx" @@ -262,6 +263,10 @@ public: virtual void SaveXml( XclExpXmlStream& rStrm ) override; void AppendAction( std::unique_ptr pAction ); + +private: + /// map authors to remove personal info + std::unique_ptr mpAuthorIDs; }; // XclExpChTrInfo - header of action group of a user diff --git a/sc/source/filter/inc/xeescher.hxx b/sc/source/filter/inc/xeescher.hxx index c7adf1050b9b..2d7aefcf07d7 100644 --- a/sc/source/filter/inc/xeescher.hxx +++ b/sc/source/filter/inc/xeescher.hxx @@ -26,6 +26,7 @@ #include "xlformula.hxx" #include #include +#include #include #include #include @@ -382,6 +383,8 @@ private: bool mbRowHidden; /// Row containing the comment is hidden tools::Rectangle maCommentFrom; /// From and From Offset tools::Rectangle maCommentTo; /// To and To Offsets + /// map authors to remove personal info + std::unique_ptr mpAuthorIDs; }; class XclExpComments : public XclExpRecord diff --git a/sc/source/filter/inc/xelink.hxx b/sc/source/filter/inc/xelink.hxx index d71a732e4dcd..a4bef778b991 100644 --- a/sc/source/filter/inc/xelink.hxx +++ b/sc/source/filter/inc/xelink.hxx @@ -55,6 +55,16 @@ namespace o3tl { template<> struct typed_flags : is_typed_flags {}; } +struct XclExpSBIndex +{ + sal_uInt16 mnSupbook; /// SUPBOOK index for an Excel sheet. + sal_uInt16 mnSBTab; /// Sheet name index in SUPBOOK for an Excel sheet. + void Set( sal_uInt16 nSupbook, sal_uInt16 nSBTab ) + { mnSupbook = nSupbook; mnSBTab = nSBTab; } + XclExpSBIndex( sal_uInt16 nSupbook, sal_uInt16 nSBTab ) : mnSupbook(nSupbook), mnSBTab(nSBTab) {} + XclExpSBIndex() {} +}; + /** Stores the correct Excel sheet index for each Calc sheet. @descr The class knows all sheets which will not exported (i.e. external link sheets, scenario sheets). */ @@ -189,17 +199,17 @@ public: rnExtName Returns the 1-based EXTERNNAME record index. sc/source/filter/inc/xelink.hxx @return [rnExtSheet, rnExtName] as an optional pair. If empty, it's not supported in current BIFF.*/ - std::optional> InsertAddIn(const OUString& rName); + std::optional InsertAddIn(const OUString& rName); /** InsertEuroTool */ - std::optional> InsertEuroTool(const OUString& rName); + std::optional InsertEuroTool(const OUString& rName); /** Finds or inserts an EXTERNNAME record for DDE links. rnExtSheet Returns the index of the EXTSHEET structure for the DDE link. rnExtName Returns the 1-based EXTERNNAME record index. @return [rnExtSheet, rnExtName] as an optional pair. If empty, it's not supported in current BIFF. */ - std::optional> + std::optional InsertDde(const OUString& rApplic, const OUString& rTopic, const OUString& rItem); - std::optional> + std::optional InsertExtName(const OUString& rUrl, const OUString& rName, const ScExternalRefCache::TokenArrayRef& rArray); diff --git a/sc/source/filter/inc/xistyle.hxx b/sc/source/filter/inc/xistyle.hxx index 963beb2ab609..450719832042 100644 --- a/sc/source/filter/inc/xistyle.hxx +++ b/sc/source/filter/inc/xistyle.hxx @@ -22,6 +22,7 @@ #include #include #include +#include #include #include "xlstyle.hxx" #include "xiroot.hxx" @@ -565,10 +566,6 @@ inline bool XclImpXFRange::Contains( SCROW nScRow ) const class XclImpXFRangeColumn { public: - /** make noncopyable */ - XclImpXFRangeColumn(const XclImpXFRangeColumn&) = delete; - const XclImpXFRangeColumn& operator=(const XclImpXFRangeColumn&) = delete; - typedef std::vector< XclImpXFRange > IndexList; explicit XclImpXFRangeColumn() {} @@ -660,8 +657,10 @@ private: private: - std::vector< std::shared_ptr< XclImpXFRangeColumn > > + std::vector< std::optional > maColumns; /// Array of column XF index buffers. + std::vector< std::optional > + maRows; /// Array of row XF index. std::vector< std::pair< XclRange, OUString > > maHyperlinks; /// Maps URLs to hyperlink cells. ScRangeList maMergeList; /// List of merged cell ranges. diff --git a/sc/source/filter/oox/worksheethelper.cxx b/sc/source/filter/oox/worksheethelper.cxx index 495cc0ff7828..39a24a2303b3 100644 --- a/sc/source/filter/oox/worksheethelper.cxx +++ b/sc/source/filter/oox/worksheethelper.cxx @@ -1074,7 +1074,7 @@ void WorksheetGlobals::insertHyperlink( const ScAddress& rAddress, const OUStrin // Handle other cell types e.g. formulas ( and ? ) that have associated // hyperlinks. // Ideally all hyperlinks should be treated as below. For the moment, - // given the current absence of ods support lets just handle what we + // given the current absence of ods support let's just handle what we // previously didn't handle the new way. // Unfortunately we won't be able to preserve such hyperlinks when // saving to ods. Note: when we are able to save such hyperlinks to ods diff --git a/sc/source/filter/xcl97/XclExpChangeTrack.cxx b/sc/source/filter/xcl97/XclExpChangeTrack.cxx index 52d2150e9f75..30812d7bb9e2 100644 --- a/sc/source/filter/xcl97/XclExpChangeTrack.cxx +++ b/sc/source/filter/xcl97/XclExpChangeTrack.cxx @@ -37,6 +37,9 @@ #include #include #include +#include + +#include using namespace oox; @@ -395,7 +398,7 @@ XclExpXmlChTrHeader::XclExpXmlChTrHeader( OUString aUserName, const DateTime& rDateTime, const sal_uInt8* pGUID, sal_Int32 nLogNumber, const XclExpChTrTabIdBuffer& rBuf ) : maUserName(std::move(aUserName)), maDateTime(rDateTime), mnLogNumber(nLogNumber), - mnMinAction(0), mnMaxAction(0) + mnMinAction(0), mnMaxAction(0), mpAuthorIDs(new SvtSecurityMapPersonalInfo) { memcpy(maGUID, pGUID, 16); if (rBuf.GetBufferCount()) @@ -421,6 +424,14 @@ void XclExpXmlChTrHeader::SaveXml( XclExpXmlStream& rStrm ) &aRelId); tools::Guid aGuid(maGUID); + bool bRemovePersonalInfo + = SvtSecurityOptions::IsOptionSet(SvtSecurityOptions::EOption::DocWarnRemovePersonalInfo) + && !SvtSecurityOptions::IsOptionSet(SvtSecurityOptions::EOption::DocWarnKeepRedlineInfo); + if (bRemovePersonalInfo) + { + maDateTime = css::util::DateTime(0, 0, 0, 12, 1, 1, 1970, true); + maUserName = "Author" + OUString::number(mpAuthorIDs->GetInfoID(maUserName)); + } rStrm.WriteAttributes( XML_guid, aGuid.getString(), XML_dateTime, lcl_DateTimeToOString(maDateTime), diff --git a/sc/source/ui/formdlg/dwfunctr.cxx b/sc/source/ui/formdlg/dwfunctr.cxx index 690db4c8aac1..504703f3b478 100644 --- a/sc/source/ui/formdlg/dwfunctr.cxx +++ b/sc/source/ui/formdlg/dwfunctr.cxx @@ -443,6 +443,20 @@ IMPL_LINK(ScFunctionWin, KeyInputHdl, const KeyEvent&, rEvent, bool) break; case KEY_ESCAPE: { + // Escape in an empty search field should move focus to the document, + // adhering to Sidebar guidelines + if (m_xSearchString->get_text().isEmpty()) + { + if (SfxViewShell* pCurSh = SfxViewShell::Current()) + { + vcl::Window* pShellWnd = pCurSh->GetWindow(); + + if (pShellWnd) + pShellWnd->GrabFocusToDocument(); + } + bHandled = true; + break; + } m_xSearchString->set_text(u""_ustr); UpdateFunctionList(u""_ustr); bHandled = true; diff --git a/sc/source/ui/unoobj/cellsuno.cxx b/sc/source/ui/unoobj/cellsuno.cxx index 9e1b77732c41..a3338bba3496 100644 --- a/sc/source/ui/unoobj/cellsuno.cxx +++ b/sc/source/ui/unoobj/cellsuno.cxx @@ -8386,8 +8386,7 @@ void ScTableColumnObj::GetOnePropertyValue( const SfxItemPropertyMapEntry* pEntr // for hidden column, return original height sal_uInt16 nWidth = rDoc.GetOriginalWidth( nCol, nTab ); // property is 1/100mm, column width is twips - nWidth = static_cast(convertTwipToMm100(nWidth)); - rAny <<= static_cast(nWidth); + rAny <<= static_cast(convertTwipToMm100(nWidth)); } else if ( pEntry->nWID == SC_WID_UNO_CELLVIS ) { @@ -8532,8 +8531,7 @@ void ScTableRowObj::GetOnePropertyValue( const SfxItemPropertyMapEntry* pEntry, // for hidden row, return original height sal_uInt16 nHeight = rDoc.GetOriginalHeight( nRow, nTab ); // property is 1/100mm, row height is twips - nHeight = static_cast(convertTwipToMm100(nHeight)); - rAny <<= static_cast(nHeight); + rAny <<= static_cast(convertTwipToMm100(nHeight)); } else if ( pEntry->nWID == SC_WID_UNO_CELLVIS ) { diff --git a/sc/source/ui/view/cellsh1.cxx b/sc/source/ui/view/cellsh1.cxx index ed879ecb62f9..995d0cd2dfff 100644 --- a/sc/source/ui/view/cellsh1.cxx +++ b/sc/source/ui/view/cellsh1.cxx @@ -1461,7 +1461,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq ) case SID_COPYDELETE: // for graphs in DrawShell { weld::WaitObject aWait( GetViewData().GetDialogParent() ); - pTabViewShell->CopyToClip( nullptr, false, false, true ); + pTabViewShell->CopyToClip( nullptr, true, false, true ); pTabViewShell->DeleteContents( InsertDeleteFlags::CONTENTS ); rReq.Done(); GetViewData().SetPasteMode( ScPasteFlags::Mode | ScPasteFlags::Border ); diff --git a/sc/source/ui/view/cellsh3.cxx b/sc/source/ui/view/cellsh3.cxx index c62500c7e124..dfb7b4d5e92b 100644 --- a/sc/source/ui/view/cellsh3.cxx +++ b/sc/source/ui/view/cellsh3.cxx @@ -49,6 +49,7 @@ #include #include #include +#include #include @@ -657,7 +658,31 @@ void ScCellShell::Execute( SfxRequest& rReq ) case SID_SELECTALL: { - pTabViewShell->SelectAll(); + SCTAB nTab = GetViewData().GetTabNo(); + SCCOL nStartCol = GetViewData().GetCurX(); + SCROW nStartRow = GetViewData().GetCurY(); + SCCOL nEndCol = nStartCol; + SCROW nEndRow = nStartRow; + bool bCanMark = false; + + ScMarkData& rMarkdata = GetViewData().GetMarkData(); + const bool bSelectFirst(officecfg::Office::Calc::Input::SelectRangeBeforeAll::get()); + + if (bSelectFirst && !rMarkdata.IsMarked()) + { + const ScDocument& rDoc = GetViewData().GetDocument(); + rDoc.GetDataArea( nTab, nStartCol, nStartRow, nEndCol, nEndRow, true, false ); + bCanMark = nStartCol != nEndCol || nStartRow != nEndRow; + } + + if (bCanMark) + { + const ScRange aRange(nStartCol, nStartRow, nTab, nEndCol, nEndRow, nTab); + pTabViewShell->MarkRange(aRange, false); + } + else + pTabViewShell->SelectAll(); + rReq.Done(); } break; diff --git a/sc/source/ui/view/drawview.cxx b/sc/source/ui/view/drawview.cxx index 1c96d86facf0..8a6670d4f419 100644 --- a/sc/source/ui/view/drawview.cxx +++ b/sc/source/ui/view/drawview.cxx @@ -952,8 +952,7 @@ void ScDrawView::SyncForGrid( SdrObject* pObj ) MapMode aDrawMode = pGridWin->GetDrawMapMode(); // find pos anchor position Point aOldPos( rDoc.GetColOffset( aOldStt.Col(), aOldStt.Tab() ), rDoc.GetRowOffset( aOldStt.Row(), aOldStt.Tab() ) ); - aOldPos.setX(convertTwipToMm100(aOldPos.X())); - aOldPos.setY(convertTwipToMm100(aOldPos.Y())); + aOldPos = convertTwipToMm100(aOldPos); // find position of same point on the screen ( e.g. grid ) Point aCurPos = pViewData->GetScrPos( aOldStt.Col(), aOldStt.Row(), eWhich, true ); Point aCurPosHmm = pGridWin->PixelToLogic(aCurPos, aDrawMode ); @@ -1029,8 +1028,7 @@ bool ScDrawView::calculateGridOffsetForSdrObject( // find pos anchor position Point aOldPos(rDoc.GetColOffset(aOldStt.Col(), aOldStt.Tab()), rDoc.GetRowOffset(aOldStt.Row(), aOldStt.Tab())); - aOldPos.setX(convertTwipToMm100(aOldPos.X())); - aOldPos.setY(convertTwipToMm100(aOldPos.Y())); + aOldPos = convertTwipToMm100(aOldPos); // find position of same point on the screen ( e.g. grid ) ScSplitPos eWhich(pViewData->GetActivePart()); @@ -1080,8 +1078,7 @@ bool ScDrawView::calculateGridOffsetForB2DRange( // find pos anchor position Point aOldPos(rDoc.GetColOffset(aOldStt.Col(), aOldStt.Tab()), rDoc.GetRowOffset(aOldStt.Row(), aOldStt.Tab())); - aOldPos.setX(convertTwipToMm100(aOldPos.X())); - aOldPos.setY(convertTwipToMm100(aOldPos.Y())); + aOldPos = convertTwipToMm100(aOldPos); // find position of same point on the screen ( e.g. grid ) ScSplitPos eWhich(pViewData->GetActivePart()); diff --git a/sc/uiconfig/scalc/ui/allheaderfooterdialog.ui b/sc/uiconfig/scalc/ui/allheaderfooterdialog.ui index 48cdc347875e..f80bae61bacd 100644 --- a/sc/uiconfig/scalc/ui/allheaderfooterdialog.ui +++ b/sc/uiconfig/scalc/ui/allheaderfooterdialog.ui @@ -1,34 +1,31 @@ - + - False - 6 + False + 6 Headers/Footers False True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _Reset True - True - True + True + True True @@ -41,10 +38,10 @@ _OK True - True - True - True - True + True + True + True + True True @@ -57,8 +54,8 @@ _Cancel True - True - True + True + True True @@ -71,8 +68,8 @@ _Help True - True - True + True + True True @@ -86,47 +83,23 @@ False True - end + end 0 True - True + True True True True - True + True True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -135,42 +108,18 @@ True - False + False Header (right) - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -182,43 +131,19 @@ True - False + False Header (left) 1 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -230,43 +155,19 @@ True - False + False Footer (right) 2 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -278,12 +179,12 @@ True - False + False Footer (left) 3 - False + False diff --git a/sc/uiconfig/scalc/ui/autosum.ui b/sc/uiconfig/scalc/ui/autosum.ui index 60d27f57c5d2..24440d32d2db 100644 --- a/sc/uiconfig/scalc/ui/autosum.ui +++ b/sc/uiconfig/scalc/ui/autosum.ui @@ -1,96 +1,96 @@ - + True - False + False True - False + False Sum - True + True True - False + False Average - True + True True - False + False Min - True + True True - False + False Max - True + True True - False + False Count - True + True True - False + False CountA - True + True True - False + False Product - True + True True - False + False Stdev - True + True True - False + False StdevP - True + True True - False + False Var - True + True True - False + False VarP - True + True diff --git a/sc/uiconfig/scalc/ui/changesourcedialog.ui b/sc/uiconfig/scalc/ui/changesourcedialog.ui index 49f4bf08a885..b0d36f1984c1 100644 --- a/sc/uiconfig/scalc/ui/changesourcedialog.ui +++ b/sc/uiconfig/scalc/ui/changesourcedialog.ui @@ -1,36 +1,33 @@ - + - False - 6 + False + 6 Change Source Data Range False True - 0 - 0 - normal - - - + 0 + 0 + normal - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -43,8 +40,8 @@ _Cancel True - True - True + True + True True @@ -57,8 +54,8 @@ _Help True - True - True + True + True True @@ -72,50 +69,50 @@ False True - end + end 0 True - False - 0 - none + False + 0 + none - + True - False - 6 + False 12 6 + 6 First _column as label True - True - False - True - True + True + False + True + True - 0 - 0 + 0 + 0 First _row as label True - True - False - True - True + True + False + True + True - 0 - 1 + 0 + 1 @@ -123,7 +120,7 @@ True - False + False Labels diff --git a/sc/uiconfig/scalc/ui/chardialog.ui b/sc/uiconfig/scalc/ui/chardialog.ui index 6cc8b6b01974..9dd487ad335f 100644 --- a/sc/uiconfig/scalc/ui/chardialog.ui +++ b/sc/uiconfig/scalc/ui/chardialog.ui @@ -1,31 +1,28 @@ - + - False - 6 + False + 6 Character False - dialog - - - + dialog - False + False vertical 12 - False - end + False + end _Reset True - True - True + True + True True @@ -38,10 +35,10 @@ _OK True - True - True - True - True + True + True + True + True True @@ -54,8 +51,8 @@ _Cancel True - True - True + True + True True @@ -68,8 +65,8 @@ _Help True - True - True + True + True True @@ -83,47 +80,23 @@ False True - end + end 0 True - True + True True True True - True + True True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -132,42 +105,18 @@ True - False + False Font - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -179,43 +128,19 @@ True - False + False Font Effects 1 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -227,43 +152,19 @@ True - False + False Position 2 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -275,12 +176,12 @@ True - False + False Highlighting 3 - False + False diff --git a/sc/uiconfig/scalc/ui/conditionaliconset.ui b/sc/uiconfig/scalc/ui/conditionaliconset.ui index 342a4747c012..27c0bf9cdb96 100644 --- a/sc/uiconfig/scalc/ui/conditionaliconset.ui +++ b/sc/uiconfig/scalc/ui/conditionaliconset.ui @@ -1,54 +1,54 @@ - + True - False + False start - 6 + 6 - + True - False - 6 - 12 + False + 6 + 12 True - False + False - = - < - > - <= - >= - <> + = + < + > + <= + >= + <> - 1 - 0 + 1 + 0 True - True - True + True True + True - 2 - 0 + 2 + 0 True - False + False Value Percent @@ -57,27 +57,27 @@ - 3 - 0 + 3 + 0 True - False + False center center missing-image - 0 - 0 + 0 + 0 - 0 - 0 + 0 + 0 diff --git a/sc/uiconfig/scalc/ui/conflictsdialog.ui b/sc/uiconfig/scalc/ui/conflictsdialog.ui index b12b5ad5c6dc..ae346f4269a0 100644 --- a/sc/uiconfig/scalc/ui/conflictsdialog.ui +++ b/sc/uiconfig/scalc/ui/conflictsdialog.ui @@ -1,5 +1,5 @@ - + @@ -15,30 +15,27 @@ - False - 6 + False + 6 Resolve Conflicts False - dialog - - - + dialog - False + False vertical 12 - False - end + False + end _Keep All Mine True - True - True - True + True + True + True False @@ -50,9 +47,9 @@ Keep _All Others True - True - True - True + True + True + True False @@ -64,8 +61,8 @@ _Cancel True - True - True + True + True True @@ -78,8 +75,8 @@ _Help True - True - True + True + True True @@ -87,31 +84,31 @@ True 3 True - True + True False True - end + end 0 True - False + False vertical 6 True - False + False start There are conflicting changes in this shared spreadsheet. Conflicts must be resolved before saving the spreadsheet. Keep either own or other changes. True - 120 + 120 0 @@ -123,20 +120,19 @@ True - True + True True True - in + in True - True - True + True + True True True liststore1 - 0 - True + 0 @@ -185,7 +181,7 @@ - + Changes @@ -199,16 +195,16 @@ True - False + False 6 - center + center Keep _Mine True - True - True - True + True + True + True False @@ -220,9 +216,9 @@ Keep _Other True - True - True - True + True + True + True False diff --git a/sc/uiconfig/scalc/ui/dapiservicedialog.ui b/sc/uiconfig/scalc/ui/dapiservicedialog.ui index b7ed4a32df4d..a03b0b143dd7 100644 --- a/sc/uiconfig/scalc/ui/dapiservicedialog.ui +++ b/sc/uiconfig/scalc/ui/dapiservicedialog.ui @@ -1,37 +1,34 @@ - + - False + False True True - 6 + 6 External Source True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False True True vertical 12 - False - end + False + end _OK True - True - True + True + True True @@ -44,8 +41,8 @@ _Cancel True - True - True + True + True True @@ -58,8 +55,8 @@ _Help True - True - True + True + True True @@ -73,160 +70,160 @@ False True - end + end 0 True - False + False True True - 0 - none + 0 + none - + True - False - True - True - 6 - 6 + False 12 6 + True + True + 6 + 6 True - False + False start _Service - True + True 0 - 0 - 0 + 0 + 0 True - False + False start So_urce - True + True 0 - 0 - 1 + 0 + 1 True - False + False start _Name - True + True 0 - 0 - 2 + 0 + 2 True - False + False start Us_er - True + True 0 - 0 - 3 + 0 + 3 True - False + False start _Password - True + True 0 - 0 - 4 + 0 + 4 True - True + True True + True True - True - 1 - 4 + 1 + 4 True - True + True True + True True - True - 1 - 3 + 1 + 3 True - True + True True + True True - True - 1 - 2 + 1 + 2 True - True + True True + True True - True - 1 - 1 + 1 + 1 True - False + False True - 1 - 0 + 1 + 0 @@ -234,7 +231,7 @@ True - False + False Selection diff --git a/sc/uiconfig/scalc/ui/databaroptions.ui b/sc/uiconfig/scalc/ui/databaroptions.ui index 0fe698e5d7ab..6932d95d9bdb 100644 --- a/sc/uiconfig/scalc/ui/databaroptions.ui +++ b/sc/uiconfig/scalc/ui/databaroptions.ui @@ -1,27 +1,24 @@ - + - False - 6 + False + 6 Data Bar True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _Help @@ -41,10 +38,10 @@ _OK True - True - True - True - True + True + True + True + True True @@ -57,8 +54,8 @@ _Cancel True - True - True + True + True True @@ -71,65 +68,65 @@ False True - end + end 0 True - False + False vertical 12 True - False - 0 - none + False + 0 + none - + True - False - True - True - 6 - 6 + False 12 6 + True + True + 6 + 6 True - False + False end Minimum: - True - min + True + min - 0 - 0 + 0 + 0 True - False + False end Maximum: - True - max + True + max - 0 - 1 + 0 + 1 True - False + False True Automatic @@ -147,14 +144,14 @@ - 1 - 0 + 1 + 0 True - False + False True Automatic @@ -172,15 +169,15 @@ - 1 - 1 + 1 + 1 True - True - True + True + True True @@ -189,15 +186,15 @@ - 2 - 0 + 2 + 0 True - True - True + True + True True @@ -206,8 +203,8 @@ - 2 - 1 + 2 + 1 @@ -215,7 +212,7 @@ True - False + False Entry Values @@ -232,56 +229,59 @@ True - False - 0 - none + False + 0 + none - + True - False - True - True - 6 - 6 + False 12 6 + True + True + 6 + 6 True - False + False end Positive: - True - positive_colour + True + positive_colour - 0 - 0 + 0 + 0 True - False + False end Negative: - True - negative_colour + True + negative_colour - 0 - 1 + 0 + 1 True - False + False + False True 0 - True - + True + + + Select the color for the positive values @@ -289,18 +289,21 @@ - 1 - 0 + 1 + 0 True - False + False + False True 0 - True - + True + + + Select the color for the negative values @@ -308,28 +311,28 @@ - 1 - 1 + 1 + 1 True - False + False end Fill: - True - fill_type + True + fill_type - 0 - 2 + 0 + 2 True - False + False Color Gradient @@ -341,8 +344,8 @@ - 1 - 2 + 1 + 2 @@ -350,7 +353,7 @@ True - False + False Bar Colors @@ -367,52 +370,52 @@ True - False - 0 - none + False + 0 + none - + True - False - True - True - 6 - 6 + False 12 6 + True + True + 6 + 6 True - False + False end Position of vertical axis: - True - axis_pos + True + axis_pos - 0 - 0 + 0 + 0 True - False + False end Color of vertical axis: - True - axis_colour + True + axis_colour - 0 - 1 + 0 + 1 True - False + False True Automatic @@ -426,18 +429,21 @@ - 1 - 0 + 1 + 0 True - False + False + False True 0 - True - + True + + + Set the color of the vertical axis @@ -445,8 +451,8 @@ - 1 - 1 + 1 + 1 @@ -454,7 +460,7 @@ True - False + False Axis @@ -471,53 +477,53 @@ True - False - 0 - none + False + 0 + none - + True - False - True - True - 6 - 6 + False 12 6 + True + True + 6 + 6 True - False + False end Minimum bar length (%): - True - min_length + True + min_length - 0 - 0 + 0 + 0 True - False + False end Maximum bar length (%): - True - max_length + True + max_length - 0 - 1 + 0 + 1 True - True - True + True + True True @@ -526,15 +532,15 @@ - 1 - 0 + 1 + 0 True - True - True + True + True True @@ -543,8 +549,8 @@ - 1 - 1 + 1 + 1 @@ -552,7 +558,7 @@ True - False + False Bar Lengths @@ -570,10 +576,10 @@ Display bar only True - True - False - True - True + True + False + True + True Select to have only the bar visible and have value invisible @@ -588,7 +594,7 @@ - False + False The minimum value must be less than the maximum value. 0 diff --git a/sc/uiconfig/scalc/ui/dataformfragment.ui b/sc/uiconfig/scalc/ui/dataformfragment.ui index 96c7d30a9180..7f2fbe7d6bd3 100644 --- a/sc/uiconfig/scalc/ui/dataformfragment.ui +++ b/sc/uiconfig/scalc/ui/dataformfragment.ui @@ -1,22 +1,22 @@ - + True - True + True True False - True + True + 32 True - 32 True - False + False end - True - entry + True + entry 0 diff --git a/sc/uiconfig/scalc/ui/deleterowentry.ui b/sc/uiconfig/scalc/ui/deleterowentry.ui index b0004f8db83a..e51c57232329 100644 --- a/sc/uiconfig/scalc/ui/deleterowentry.ui +++ b/sc/uiconfig/scalc/ui/deleterowentry.ui @@ -1,79 +1,80 @@ - + + True - False + False 6 - 6 - 6 - 12 + 6 + 6 + 12 True - False + False - 0 - 0 + 0 + 0 3 True - False + False start Delete Row Action - True - ed_find + True + ed_find - 0 - 1 + 0 + 1 3 True - True + True True - 10 - True - Enter Value + 10 + True + Enter Value - 0 - 2 + 0 + 2 True - True + True True - 10 - True - Column + 10 + True + Column - 1 - 2 + 1 + 2 Delete True - True - False + True + False end - 2 - 2 + 2 + 2 diff --git a/sc/uiconfig/scalc/ui/findreplaceentry.ui b/sc/uiconfig/scalc/ui/findreplaceentry.ui index 1171b789dfbc..03582cefa5e7 100644 --- a/sc/uiconfig/scalc/ui/findreplaceentry.ui +++ b/sc/uiconfig/scalc/ui/findreplaceentry.ui @@ -1,93 +1,94 @@ - + + True - False - 6 - 6 - 6 - 12 + False + 6 + 6 + 6 + 12 True - False + False - 0 - 0 + 0 + 0 4 True - False + False start Find Replace Action - True - ed_find + True + ed_find - 0 - 1 + 0 + 1 4 True - True + True True - 7 - True - Find + 7 + True + Find - 0 - 2 + 0 + 2 True - True + True True - 7 - True - Replace With + 7 + True + Replace With - 1 - 2 + 1 + 2 True - True + True True - 6 - True - Column + 6 + True + Column - 2 - 2 + 2 + 2 Delete True - True - False + True + False end - 3 - 2 + 3 + 2 diff --git a/sc/uiconfig/scalc/ui/floatingborderstyle.ui b/sc/uiconfig/scalc/ui/floatingborderstyle.ui index 2640d06d051f..294185940224 100644 --- a/sc/uiconfig/scalc/ui/floatingborderstyle.ui +++ b/sc/uiconfig/scalc/ui/floatingborderstyle.ui @@ -1,37 +1,38 @@ - + - False - True - 4 + False + True + 4 none True - False + False vertical 6 - + True - False + False True True vertical - 6 + 6 True - True - icons - False + True + icons + False True - sc/res/sidebar/CellBorder_Empty_18x18.png + False + sc/res/sidebar/CellBorder_Empty_18x18.png False @@ -41,7 +42,8 @@ True - sc/res/sidebar/CellBorder_All_18x18.png + False + sc/res/sidebar/CellBorder_All_18x18.png False @@ -51,7 +53,8 @@ True - sc/res/sidebar/CellBorder_FourBorders_18x18.png + False + sc/res/sidebar/CellBorder_FourBorders_18x18.png False @@ -61,7 +64,8 @@ True - sc/res/sidebar/CellBorder_FourBorders_Thick_18x18.png + False + sc/res/sidebar/CellBorder_FourBorders_Thick_18x18.png False @@ -70,20 +74,21 @@ - 0 - 0 + 0 + 0 True - True - icons - False + True + icons + False True - sc/res/sidebar/CellBorder_Bottom_Thick_18x18.png + False + sc/res/sidebar/CellBorder_Bottom_Thick_18x18.png False @@ -93,7 +98,8 @@ True - sc/res/sidebar/CellBorder_Bottom_Double_18x18.png + False + sc/res/sidebar/CellBorder_Bottom_Double_18x18.png False @@ -103,7 +109,8 @@ True - sc/res/sidebar/CellBorder_TopThin_BottomThick_18x18.png + False + sc/res/sidebar/CellBorder_TopThin_BottomThick_18x18.png False @@ -113,7 +120,8 @@ True - sc/res/sidebar/CellBorder_TopSingle_BottomDouble_18x18.png + False + sc/res/sidebar/CellBorder_TopSingle_BottomDouble_18x18.png False @@ -122,20 +130,21 @@ - 0 - 3 + 0 + 3 True - True - icons - False + True + icons + False True - sc/res/sidebar/CellBorder_Left_18x18.png + False + sc/res/sidebar/CellBorder_Left_18x18.png False @@ -145,7 +154,8 @@ True - sc/res/sidebar/CellBorder_Right_18x18.png + False + sc/res/sidebar/CellBorder_Right_18x18.png False @@ -155,7 +165,8 @@ True - sc/res/sidebar/CellBorder_Top_18x18.png + False + sc/res/sidebar/CellBorder_Top_18x18.png False @@ -165,7 +176,8 @@ True - sc/res/sidebar/CellBorder_Bottom_18x18.png + False + sc/res/sidebar/CellBorder_Bottom_18x18.png False @@ -174,21 +186,22 @@ - 0 - 1 + 0 + 1 True - True - icons - False + True + icons + False True - True - sc/res/sidebar/CellBorder_RightDiagonal_18x18.png + False + True + sc/res/sidebar/CellBorder_RightDiagonal_18x18.png False @@ -198,8 +211,9 @@ True - True - sc/res/sidebar/CellBorder_LeftDiagonal_18x18.png + False + True + sc/res/sidebar/CellBorder_LeftDiagonal_18x18.png False @@ -209,8 +223,9 @@ True - True - sc/res/sidebar/CellBorder_TopAndBottom_18x18.png + False + True + sc/res/sidebar/CellBorder_TopAndBottom_18x18.png False @@ -220,8 +235,9 @@ True - True - sc/res/sidebar/CellBorder_LeftAndRight_18x18.png + False + True + sc/res/sidebar/CellBorder_LeftAndRight_18x18.png False @@ -230,8 +246,8 @@ - 0 - 2 + 0 + 2 diff --git a/sc/uiconfig/scalc/ui/floatinglinestyle.ui b/sc/uiconfig/scalc/ui/floatinglinestyle.ui index 0f8c4d016afe..7ec51add0056 100644 --- a/sc/uiconfig/scalc/ui/floatinglinestyle.ui +++ b/sc/uiconfig/scalc/ui/floatinglinestyle.ui @@ -1,58 +1,58 @@ - + - False - True - 4 + False + True + 4 none True - False + False vertical 6 - + True - False + False True True vertical - 6 + 6 _More Options... True - True - True - True + True + True + True - 0 - 1 + 0 + 1 True - True + True True True - never - never - in + never + never + in True - False + False True - True - True + True + True GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_STRUCTURE_MASK True True @@ -62,8 +62,8 @@ - 0 - 0 + 0 + 0 diff --git a/sc/uiconfig/scalc/ui/gotosheetdialog.ui b/sc/uiconfig/scalc/ui/gotosheetdialog.ui index 93c2e72a0e10..e0f87dc5d293 100644 --- a/sc/uiconfig/scalc/ui/gotosheetdialog.ui +++ b/sc/uiconfig/scalc/ui/gotosheetdialog.ui @@ -1,5 +1,5 @@ - + @@ -11,35 +11,32 @@ - False - 6 + False + 6 Go to Sheet False True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True - True + True + True + True + True + True False @@ -51,9 +48,9 @@ _Cancel True - True - True - True + True + True + True False @@ -65,9 +62,9 @@ _Help True - True - True - True + True + True + True False @@ -80,26 +77,26 @@ False True - end + end 0 True - False + False True True - 0 - none + 0 + none True - True + True + True True - True - + Type some letters of sheet name to find it. @@ -108,9 +105,9 @@ True - False + False _Type a sheet name - True + True @@ -126,30 +123,30 @@ True - False + False True True - 0 - none + 0 + none True - True - 12 - 6 + True + 12 + 6 True True - in + in True - True + True True liststore1 - False - False - 0 - False + False + False + 0 + False @@ -170,9 +167,9 @@ True - False + False _Sheets - True + True diff --git a/sc/uiconfig/scalc/ui/groupdialog.ui b/sc/uiconfig/scalc/ui/groupdialog.ui index 1924034bb9a5..f39b775a7388 100644 --- a/sc/uiconfig/scalc/ui/groupdialog.ui +++ b/sc/uiconfig/scalc/ui/groupdialog.ui @@ -1,33 +1,33 @@ - + - False - 6 + False + 6 Group False True - 0 - 0 - dialog + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -40,8 +40,8 @@ _Cancel True - True - True + True + True True @@ -54,8 +54,8 @@ _Help True - True - True + True + True True @@ -69,36 +69,36 @@ False True - end + end 0 True - False + False True True - 0 - none + 0 + none True - False + False + 12 + 6 True vertical 6 - 12 - 6 _Rows True - True - False - True + True + False + True True - True + True False @@ -110,10 +110,10 @@ _Columns True - True - False - True - True + True + False + True + True rows @@ -127,7 +127,7 @@ True - False + False True Include 0 @@ -150,8 +150,5 @@ cancel help - - - diff --git a/sc/uiconfig/scalc/ui/headerfooterdialog.ui b/sc/uiconfig/scalc/ui/headerfooterdialog.ui index 40a4aa7c49c6..f928d7e598bd 100644 --- a/sc/uiconfig/scalc/ui/headerfooterdialog.ui +++ b/sc/uiconfig/scalc/ui/headerfooterdialog.ui @@ -1,34 +1,31 @@ - + - False - 6 + False + 6 Headers/Footers False True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _Reset True - True - True + True + True True @@ -41,10 +38,10 @@ _OK True - True - True - True - True + True + True + True + True True @@ -57,8 +54,8 @@ _Cancel True - True - True + True + True True @@ -71,8 +68,8 @@ _Help True - True - True + True + True True @@ -86,47 +83,23 @@ False True - end + end 0 True - True + True True True True - True + True True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -135,42 +108,18 @@ True - False + False Header - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -182,12 +131,12 @@ True - False + False Footer 1 - False + False diff --git a/sc/uiconfig/scalc/ui/leftfooterdialog.ui b/sc/uiconfig/scalc/ui/leftfooterdialog.ui index 24e881ce4ace..b48ce782f30c 100644 --- a/sc/uiconfig/scalc/ui/leftfooterdialog.ui +++ b/sc/uiconfig/scalc/ui/leftfooterdialog.ui @@ -1,34 +1,31 @@ - + - False - 6 + False + 6 Footer (left) False True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _Reset True - True - True + True + True True @@ -41,10 +38,10 @@ _OK True - True - True - True - True + True + True + True + True True @@ -57,8 +54,8 @@ _Cancel True - True - True + True + True True @@ -71,8 +68,8 @@ _Help True - True - True + True + True True @@ -86,47 +83,23 @@ False True - end + end 0 True - True + True True True True - True + True True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -135,11 +108,11 @@ True - False + False Footer (left) - False + False diff --git a/sc/uiconfig/scalc/ui/leftheaderdialog.ui b/sc/uiconfig/scalc/ui/leftheaderdialog.ui index 3f0ea34c0839..779f4028a999 100644 --- a/sc/uiconfig/scalc/ui/leftheaderdialog.ui +++ b/sc/uiconfig/scalc/ui/leftheaderdialog.ui @@ -1,34 +1,31 @@ - + - False - 6 + False + 6 Header (left) False True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _Reset True - True - True + True + True True @@ -41,10 +38,10 @@ _OK True - True - True - True - True + True + True + True + True True @@ -57,8 +54,8 @@ _Cancel True - True - True + True + True True @@ -71,8 +68,8 @@ _Help True - True - True + True + True True @@ -86,47 +83,23 @@ False True - end + end 0 True - True + True True True True - True + True True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -135,11 +108,11 @@ True - False + False Header (left) - False + False diff --git a/sc/uiconfig/scalc/ui/listmenu.ui b/sc/uiconfig/scalc/ui/listmenu.ui index 6a36672621fb..a89a63a03ac7 100644 --- a/sc/uiconfig/scalc/ui/listmenu.ui +++ b/sc/uiconfig/scalc/ui/listmenu.ui @@ -1,9 +1,9 @@ - + True - False + False diff --git a/sc/uiconfig/scalc/ui/navigatorpanel.ui b/sc/uiconfig/scalc/ui/navigatorpanel.ui index a5b9b3038be6..3934bdaac402 100644 --- a/sc/uiconfig/scalc/ui/navigatorpanel.ui +++ b/sc/uiconfig/scalc/ui/navigatorpanel.ui @@ -1,28 +1,28 @@ - + 100 - 1 - 10 + 1 + 10 100 - 1 - 10 + 1 + 10 True - False + False True - False + False Insert as Hyperlink - True + True True - True + True Inserts a hyperlink when you drag-and-drop an object from the Navigator into a document. @@ -33,10 +33,10 @@ True - False + False Insert as Link - True - True + True + True hyperlink @@ -48,10 +48,10 @@ True - False + False Insert as Copy - True - True + True + True hyperlink @@ -86,63 +86,63 @@ True - False + False True True - 6 + 6 - + True - False + False True True - 6 - 12 + 6 + 12 - + True - False + False True - 3 - 6 + 3 + 6 True - False + False start Column: - True - column + True + column - 0 - 0 + 0 + 0 True - False + False start Row: - True - row + True + row - 0 - 1 + 0 + 1 True - True - Column + True + Column True - adjustment1 True + adjustment1 Enter the column letter. Press Enter to reposition the cell cursor to the specified column in the same row. @@ -150,18 +150,18 @@ - 1 - 0 + 1 + 0 True - True - Row + True + Row True - adjustment2 True + adjustment2 Enter a row number. Press Enter to reposition the cell cursor to the specified row in the same column. @@ -169,22 +169,23 @@ - 1 - 1 + 1 + 1 True - True - icons - False + True + icons + False 2 True - Data Range - sc/res/na03.png + False + Data Range + sc/res/na03.png Specifies the current data range denoted by the position of the cell cursor. @@ -199,8 +200,9 @@ True - Start - sc/res/na05.png + False + Start + sc/res/na05.png Moves to the cell at the beginning of the current data range, which you can highlight using the Data Range button. @@ -215,8 +217,9 @@ True - End - sc/res/na06.png + False + End + sc/res/na06.png Moves to the cell at the end of the current data range, which you can highlight using the Data Range button. @@ -231,8 +234,9 @@ True - Contents - sc/res/na011.png + False + Contents + sc/res/na011.png False @@ -241,22 +245,23 @@ - 2 - 0 + 2 + 0 True - True - icons - False + True + icons + False 2 True - Toggle - sc/res/na010.png + False + Toggle + sc/res/na010.png Allows you to hide/show the contents. @@ -271,8 +276,9 @@ True - Scenarios - sc/res/na07.png + False + Scenarios + sc/res/na07.png Displays all available scenarios. Double-click a name to apply that scenario. @@ -287,8 +293,9 @@ True - Drag Mode - sc/res/na09.png + False + Drag Mode + sc/res/na09.png Opens a submenu for selecting the drag mode. You decide which action is performed when dragging and dropping an object from the Navigator into a document. Depending on the mode you select, the icon indicates whether a hyperlink, link or a copy is created. @@ -302,21 +309,21 @@ - 2 - 1 + 2 + 1 - 0 - 0 + 0 + 0 True - True - Document + True + Document Active Window @@ -325,30 +332,30 @@ - 0 - 3 + 0 + 3 True - True + True True True - in + in - -1 + -1 True - True - True - True + True + True + True True True liststore1 - False + False True - 1 + 1 @@ -380,14 +387,14 @@ - 0 - 1 + 0 + 1 - False - True + False + True True True vertical @@ -396,22 +403,22 @@ True - True + True True True - in + in - -1 + -1 True - True - True + True + True True True liststore2 - False - 0 - False + False + 0 + False @@ -438,16 +445,16 @@ True - True - in + True + in True - True + True False - word - False - False + word + False + False @@ -459,14 +466,14 @@ - 0 - 2 + 0 + 2 - 0 - 0 + 0 + 0 diff --git a/sc/uiconfig/scalc/ui/nosolutiondialog.ui b/sc/uiconfig/scalc/ui/nosolutiondialog.ui index cb7c1e264712..359b789cec50 100644 --- a/sc/uiconfig/scalc/ui/nosolutiondialog.ui +++ b/sc/uiconfig/scalc/ui/nosolutiondialog.ui @@ -1,36 +1,33 @@ - + - False - 6 + False + 6 No Solution False True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -43,40 +40,40 @@ False True - end + end 0 - + True - False + False True - 6 + 6 True - False + False True No solution was found. - 0 - 0 + 0 + 0 True - False + False True True - 56 + 56 - 0 - 1 + 0 + 1 diff --git a/sc/uiconfig/scalc/ui/numberbox.ui b/sc/uiconfig/scalc/ui/numberbox.ui index 0aa8b1d73dfd..d24931000804 100644 --- a/sc/uiconfig/scalc/ui/numberbox.ui +++ b/sc/uiconfig/scalc/ui/numberbox.ui @@ -1,16 +1,16 @@ - + True - False + False True 6 True - False + False True diff --git a/sc/uiconfig/scalc/ui/paradialog.ui b/sc/uiconfig/scalc/ui/paradialog.ui index e338163ecb03..ae6bbacb4e48 100644 --- a/sc/uiconfig/scalc/ui/paradialog.ui +++ b/sc/uiconfig/scalc/ui/paradialog.ui @@ -1,31 +1,28 @@ - + - False - 6 + False + 6 Paragraph False - dialog - - - + dialog - False + False vertical 12 - False - end + False + end _Reset True - True - True + True + True True @@ -38,10 +35,10 @@ _OK True - True - True - True - True + True + True + True + True True @@ -54,8 +51,8 @@ _Cancel True - True - True + True + True True @@ -68,8 +65,8 @@ _Help True - True - True + True + True True @@ -83,47 +80,23 @@ False True - end + end 0 True - True + True True True True - True + True True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -132,42 +105,18 @@ True - False + False Indents & Spacing - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -179,44 +128,20 @@ True - False + False Alignment 0.5 1 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -228,43 +153,19 @@ True - False + False Asian Typography 2 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -276,12 +177,12 @@ True - False + False Tabs 3 - False + False diff --git a/sc/uiconfig/scalc/ui/passfragment.ui b/sc/uiconfig/scalc/ui/passfragment.ui index b9bd6cddce8e..b679a08212e3 100644 --- a/sc/uiconfig/scalc/ui/passfragment.ui +++ b/sc/uiconfig/scalc/ui/passfragment.ui @@ -1,48 +1,48 @@ - + - + True - False - True + False + True start True - 12 + 12 True - False + False 0 - 0 - 0 + 0 + 0 True - False + False 0 - 1 - 0 + 1 + 0 True False - True - True - True + True + True + True - 2 - 0 + 2 + 0 diff --git a/sc/uiconfig/scalc/ui/pivottablelayoutdialog.ui b/sc/uiconfig/scalc/ui/pivottablelayoutdialog.ui index 3f1e626d1b66..293500c868aa 100644 --- a/sc/uiconfig/scalc/ui/pivottablelayoutdialog.ui +++ b/sc/uiconfig/scalc/ui/pivottablelayoutdialog.ui @@ -1,5 +1,5 @@ - + @@ -43,32 +43,29 @@ - False - 6 + False + 6 Pivot Table Layout - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -86,8 +83,8 @@ _Cancel True - True - True + True + True True @@ -105,8 +102,8 @@ _Help True - True - True + True + True True @@ -120,14 +117,14 @@ False True - end + end 0 True - False + False True True vertical @@ -135,23 +132,23 @@ True - False + False True True 6 - + True - False + False True True - 6 - 6 + 6 + 6 True - False + False True True vertical @@ -159,10 +156,10 @@ True - False + False Column Fields: - True - listbox-column + True + listbox-column 0 0 @@ -177,25 +174,25 @@ - 200 - 100 + 200 + 100 True - True + True True True - in + in True - True + True True True liststore3 - False - False + False + False True - 0 - False + 0 + False @@ -225,14 +222,14 @@ - 1 - 0 + 1 + 0 True - False + False True True vertical @@ -240,10 +237,10 @@ True - False + False Data Fields: - True - listbox-data + True + listbox-data 0 0 @@ -258,25 +255,25 @@ - 240 - 120 + 240 + 120 True - True + True True True - in + in True - True + True True True liststore4 - False - False + False + False True - 0 - False + 0 + False @@ -306,14 +303,14 @@ - 1 - 1 + 1 + 1 True - False + False True True vertical @@ -321,10 +318,10 @@ True - False + False Row Fields: - True - listbox-row + True + listbox-row 0 0 @@ -339,23 +336,23 @@ - 180 - 100 + 180 + 100 True - True + True True - in + in True - True + True True liststore5 - False - False + False + False True - 0 - False + 0 + False @@ -385,14 +382,14 @@ - 0 - 1 + 0 + 1 True - False + False True True vertical @@ -400,10 +397,10 @@ True - False + False Filters: - True - listbox-page + True + listbox-page 0 0 @@ -418,25 +415,25 @@ - 200 - 100 + 200 + 100 True - True + True True True - in + in True - True + True True True liststore1 - False - False + False + False True - 0 - False + 0 + False @@ -466,8 +463,8 @@ - 0 - 0 + 0 + 0 @@ -480,14 +477,14 @@ True - False + False True vertical 6 True - False + False vertical @@ -506,17 +503,17 @@ True - False + False True vertical 6 True - False + False Available Fields: - True - listbox-fields + True + listbox-fields 0 @@ -530,25 +527,25 @@ - 180 - 150 + 180 + 150 True - True + True True True - in + in True - True + True True True liststore2 - False - False + False + False True - 0 - False + 0 + False @@ -593,7 +590,7 @@ True - False + False True Drag the Items into the Desired Position @@ -609,26 +606,26 @@ True - True - True + True + True - + True - False + False 12 - 6 - 3 - 12 - True + 6 + 3 + 12 + True Ignore empty rows True - True - False - True - True + True + False + True + True Ignores empty fields in the data source. @@ -636,18 +633,18 @@ - 0 - 0 + 0 + 0 Identify categories True - True - False - True - True + True + False + True + True Automatically assigns rows without labels to the category of the row above. @@ -655,18 +652,18 @@ - 1 - 0 + 1 + 0 Total rows True - True - False - True - True + True + False + True + True Calculates and displays the grand total of the row calculation. @@ -674,18 +671,18 @@ - 1 - 1 + 1 + 1 Total columns True - True - False - True - True + True + False + True + True Calculates and displays the grand total of the column calculation. @@ -693,18 +690,18 @@ - 0 - 1 + 0 + 1 Add filter True - True - False - True - True + True + False + True + True Adds a Filter button to pivot tables that are based on spreadsheet data. @@ -712,18 +709,18 @@ - 0 - 2 + 0 + 2 Enable drill to details True - True - False - True - True + True + False + True + True Select this check box and double-click an item label in the table to show or hide details for the item. Clear this check box and double-click a cell in the table to edit the contents of the cell. @@ -731,18 +728,18 @@ - 1 - 2 + 1 + 2 Show expand/collapse buttons True - True - False - True - True + True + False + True + True Select this check box to show expand/collapse buttons for field members @@ -750,18 +747,21 @@ - 0 - 3 + 0 + 3 + + + True - False + False Options - True + True @@ -777,48 +777,48 @@ True - True - True + True + True - + True - False + False 12 - 6 + 6 True - 6 - 12 + 6 + 12 True - False + False True - 0 - none + 0 + none - + True - False - True - 3 - 6 + False 12 6 + True + 3 + 6 New sheet True - True - False - True + True + False + True True - True + True - 0 - 0 + 0 + 0 3 @@ -826,21 +826,21 @@ Selection True - True - False - True - True + True + False + True + True destination-radio-new-sheet - 0 - 2 + 0 + 2 True - True + True True True @@ -850,15 +850,15 @@ - 1 - 2 + 1 + 2 True - True - True + True + True Click the Shrink icon to reduce the dialog to the size of the input field. It is then easier to mark the required reference in the sheet. The icons then automatically convert to the Maximize icon. Click it to restore the dialog to its original size. @@ -866,14 +866,14 @@ - 2 - 2 + 2 + 2 True - False + False Select the area where you want to display the results of the pivot table. @@ -881,8 +881,8 @@ - 1 - 1 + 1 + 1 2 @@ -890,15 +890,15 @@ Named range True - True - False - True - True + True + False + True + True destination-radio-new-sheet - 0 - 1 + 0 + 1 @@ -906,7 +906,7 @@ True - False + False Destination @@ -915,48 +915,48 @@ - 0 - 1 + 0 + 1 True - False + False True - 0 - none + 0 + none - + True - False - True - 3 - 6 + False 12 6 + True + 3 + 6 Selection True - True - False - True + True + False + True True - True + True - 0 - 1 + 0 + 1 True - True + True True - True + True True @@ -965,15 +965,15 @@ - 1 - 1 + 1 + 1 True - True - True + True + True Select the area that contains the data for the current pivot table. @@ -981,33 +981,33 @@ - 2 - 1 + 2 + 1 Named range True - True - False - True - True + True + False + True + True source-radio-selection - 0 - 0 + 0 + 0 True - False + False - 1 - 0 + 1 + 0 2 @@ -1016,7 +1016,7 @@ True - False + False Source @@ -1025,8 +1025,8 @@ - 0 - 0 + 0 + 0 @@ -1034,9 +1034,9 @@ True - False + False Source and Destination - True + True diff --git a/sc/uiconfig/scalc/ui/posbox.ui b/sc/uiconfig/scalc/ui/posbox.ui index 5527f569ad15..530798251650 100644 --- a/sc/uiconfig/scalc/ui/posbox.ui +++ b/sc/uiconfig/scalc/ui/posbox.ui @@ -1,22 +1,22 @@ - + True - False + False vertical True - False + False True True - True + True + True True - True diff --git a/sc/uiconfig/scalc/ui/recalcquerydialog.ui b/sc/uiconfig/scalc/ui/recalcquerydialog.ui index 49156dde08ba..64429815e797 100644 --- a/sc/uiconfig/scalc/ui/recalcquerydialog.ui +++ b/sc/uiconfig/scalc/ui/recalcquerydialog.ui @@ -1,22 +1,22 @@ - + + False False True - False - dialog - question + dialog + question yes-no - False + False vertical 2 - False + False True @@ -29,11 +29,11 @@ Always perform this without prompt in the future. True - True - False + True + False start - True - True + True + True False @@ -43,8 +43,5 @@ - - - diff --git a/sc/uiconfig/scalc/ui/retypepassdialog.ui b/sc/uiconfig/scalc/ui/retypepassdialog.ui index b33d5d327c93..dcf74691a3a8 100644 --- a/sc/uiconfig/scalc/ui/retypepassdialog.ui +++ b/sc/uiconfig/scalc/ui/retypepassdialog.ui @@ -1,40 +1,37 @@ - + - False + False True True - 6 + 6 Re-type Password False True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False True True vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -47,8 +44,8 @@ _Cancel True - True - True + True + True True @@ -61,8 +58,8 @@ _Help True - True - True + True + True True @@ -76,14 +73,14 @@ False True - end + end 0 True - False + False True True vertical @@ -91,11 +88,11 @@ True - False + False start The document you are about to export has one or more protected items with password that cannot be exported. Please re-type your password to be able to export your document. True - 60 + 60 0 @@ -107,20 +104,20 @@ True - False - 0 - none + False + 0 + none True - False - 6 + False 12 6 + 6 True - False + False Status unknown @@ -133,9 +130,9 @@ _Re-type True - True - True - True + True + True + True False @@ -148,7 +145,7 @@ True - False + False Document Protection @@ -165,28 +162,28 @@ True - False + False True True - 0 - none + 0 + none True - False - True - True - in + False 12 6 + True + True + in True - False + False True - False + False True True vertical @@ -203,7 +200,7 @@ True - False + False Sheet Protection diff --git a/sc/uiconfig/scalc/ui/retypepassworddialog.ui b/sc/uiconfig/scalc/ui/retypepassworddialog.ui index 193fb249d0cd..5e4f15918614 100644 --- a/sc/uiconfig/scalc/ui/retypepassworddialog.ui +++ b/sc/uiconfig/scalc/ui/retypepassworddialog.ui @@ -1,35 +1,32 @@ - + - False - 6 + False + 6 Re-type Password True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -42,8 +39,8 @@ _Cancel True - True - True + True + True True @@ -56,8 +53,8 @@ _Help True - True - True + True + True True @@ -71,14 +68,14 @@ False True - end + end 0 True - False + False True vertical 6 @@ -86,11 +83,11 @@ Re-type password True - True - False - True + True + False + True True - True + True False @@ -99,85 +96,85 @@ - + True - False - True - 6 - 12 + False 12 6 + True + 6 + 12 True - True + True True False - True + True True - password + password - 1 - 0 + 1 + 0 True - True + True True False - True + True True - password + password - 1 - 1 + 1 + 1 True - False + False Pa_ssword: - True - newpassEntry + True + newpassEntry 0 - 0 - 0 + 0 + 0 True - False + False Confi_rm: - True - confirmpassEntry + True + confirmpassEntry 0 - 0 - 1 + 0 + 1 New password must match the original password True - True - False - True - True + True + False + True + True - 0 - 2 + 0 + 2 2 @@ -192,10 +189,10 @@ Remove password from this protected item True - True - False - True - True + True + False + True + True retypepassword diff --git a/sc/uiconfig/scalc/ui/rightfooterdialog.ui b/sc/uiconfig/scalc/ui/rightfooterdialog.ui index 028329db8a67..02502e8cfefd 100644 --- a/sc/uiconfig/scalc/ui/rightfooterdialog.ui +++ b/sc/uiconfig/scalc/ui/rightfooterdialog.ui @@ -1,34 +1,31 @@ - + - False - 6 + False + 6 Footer (right) False True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _Reset True - True - True + True + True True @@ -41,10 +38,10 @@ _OK True - True - True - True - True + True + True + True + True True @@ -57,8 +54,8 @@ _Cancel True - True - True + True + True True @@ -71,8 +68,8 @@ _Help True - True - True + True + True True @@ -86,47 +83,23 @@ False True - end + end 0 True - True + True True True True - True + True True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -135,11 +108,11 @@ True - False + False Footer (right) - False + False diff --git a/sc/uiconfig/scalc/ui/rightheaderdialog.ui b/sc/uiconfig/scalc/ui/rightheaderdialog.ui index e0823999c2cd..340df22acdc2 100644 --- a/sc/uiconfig/scalc/ui/rightheaderdialog.ui +++ b/sc/uiconfig/scalc/ui/rightheaderdialog.ui @@ -1,34 +1,31 @@ - + - False - 6 + False + 6 Header (right) False True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _Reset True - True - True + True + True True @@ -41,10 +38,10 @@ _OK True - True - True - True - True + True + True + True + True True @@ -57,8 +54,8 @@ _Cancel True - True - True + True + True True @@ -71,8 +68,8 @@ _Help True - True - True + True + True True @@ -86,47 +83,23 @@ False True - end + end 0 True - True + True True True True - True + True True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -135,11 +108,11 @@ True - False + False Header (right) - False + False diff --git a/sc/uiconfig/scalc/ui/searchresults.ui b/sc/uiconfig/scalc/ui/searchresults.ui index 304a167cd421..0af677ec64e6 100644 --- a/sc/uiconfig/scalc/ui/searchresults.ui +++ b/sc/uiconfig/scalc/ui/searchresults.ui @@ -1,5 +1,5 @@ - + @@ -15,32 +15,32 @@ - False - 6 - 0 - 0 + False + 6 Search Results - dialog + 0 + 0 + dialog - False + False vertical 12 - False + False True - end + end _Show this dialog True - True - False - Enable the dialog again at Tools - Options - %PRODUCTNAME Calc - View - True + True + False + Enable the dialog again at Tools - Options - %PRODUCTNAME Calc - View + True True - True + True True @@ -53,10 +53,10 @@ _Close True - True - True - True - True + True + True + True + True True @@ -69,28 +69,27 @@ False True - end + end 2 True - True + True True True - in + in True - True - True + True + True True True liststore3 - True - 0 - False + 0 + False @@ -148,9 +147,8 @@ True - False + False start - False @@ -163,8 +161,5 @@ close - - - diff --git a/sc/uiconfig/scalc/ui/selectsource.ui b/sc/uiconfig/scalc/ui/selectsource.ui index 1dc349a0502b..0509e1eea3ad 100644 --- a/sc/uiconfig/scalc/ui/selectsource.ui +++ b/sc/uiconfig/scalc/ui/selectsource.ui @@ -1,36 +1,33 @@ - + - False - 6 + False + 6 Select Source False True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -43,8 +40,8 @@ _Cancel True - True - True + True + True True @@ -57,8 +54,8 @@ _Help True - True - True + True + True True @@ -72,37 +69,37 @@ False True - end + end 0 True - False - 0 - none + False + 0 + none True - False - vertical - 6 + False 12 6 + vertical + 6 True - False + False 12 _Named range: True - True - False - True - True + True + False + True + True selection @@ -117,7 +114,7 @@ True - False + False True @@ -140,11 +137,11 @@ _Current selection True - True - False - True + True + False + True True - True + True Uses the selected cells as the data source for the pivot table. @@ -161,10 +158,10 @@ _Data source registered in Calc True - True - False - True - True + True + False + True + True selection @@ -182,10 +179,10 @@ _External source/interface True - True - False - True - True + True + False + True + True selection @@ -204,7 +201,7 @@ True - False + False Selection diff --git a/sc/uiconfig/scalc/ui/sharedfooterdialog.ui b/sc/uiconfig/scalc/ui/sharedfooterdialog.ui index c129bbfdb865..6ef6701102a2 100644 --- a/sc/uiconfig/scalc/ui/sharedfooterdialog.ui +++ b/sc/uiconfig/scalc/ui/sharedfooterdialog.ui @@ -1,34 +1,31 @@ - + - False - 6 + False + 6 Headers/Footers False True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _Reset True - True - True + True + True True @@ -41,10 +38,10 @@ _OK True - True - True - True - True + True + True + True + True True @@ -57,8 +54,8 @@ _Cancel True - True - True + True + True True @@ -71,8 +68,8 @@ _Help True - True - True + True + True True @@ -86,47 +83,23 @@ False True - end + end 0 True - True + True True True True - True + True True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -135,42 +108,18 @@ True - False + False Header (right) - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -182,43 +131,19 @@ True - False + False Header (left) 1 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -230,12 +155,12 @@ True - False + False Footer 2 - False + False diff --git a/sc/uiconfig/scalc/ui/sharedheaderdialog.ui b/sc/uiconfig/scalc/ui/sharedheaderdialog.ui index ccbc1435452d..2a68d9814bb5 100644 --- a/sc/uiconfig/scalc/ui/sharedheaderdialog.ui +++ b/sc/uiconfig/scalc/ui/sharedheaderdialog.ui @@ -1,34 +1,31 @@ - + - False - 6 + False + 6 Headers/Footers False True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _Reset True - True - True + True + True True @@ -41,10 +38,10 @@ _OK True - True - True - True - True + True + True + True + True True @@ -57,8 +54,8 @@ _Cancel True - True - True + True + True True @@ -71,8 +68,8 @@ _Help True - True - True + True + True True @@ -86,47 +83,23 @@ False True - end + end 0 True - True + True True True True - True + True True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -135,42 +108,18 @@ True - False + False Header - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -182,43 +131,19 @@ True - False + False Footer (right) 1 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -230,12 +155,12 @@ True - False + False Footer (left) 2 - False + False diff --git a/sc/uiconfig/scalc/ui/sharedocumentdlg.ui b/sc/uiconfig/scalc/ui/sharedocumentdlg.ui index f1dcbd523215..98435f5e4fc5 100644 --- a/sc/uiconfig/scalc/ui/sharedocumentdlg.ui +++ b/sc/uiconfig/scalc/ui/sharedocumentdlg.ui @@ -1,5 +1,5 @@ - + @@ -13,34 +13,31 @@ - False - 6 + False + 6 Share Document False True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _Help True - True - True + True + True True - right + right False @@ -53,10 +50,10 @@ _OK True - True - True - True - True + True + True + True + True True @@ -69,8 +66,8 @@ _Cancel True - True - True + True + True True @@ -83,14 +80,14 @@ False True - end + end 0 True - False + False True True vertical @@ -98,17 +95,17 @@ True - False + False vertical 6 _Share this spreadsheet with other users True - True - False - True - True + True + False + True + True False @@ -119,16 +116,16 @@ True - False + False + 12 Note: Changes to formatting attributes like fonts, colors, and number formats will not be saved and some functionalities like editing charts and drawing objects are not available in shared mode. Turn off shared mode to get exclusive access needed for those changes and functionalities. True - 72 - 72 + 72 + 72 0 0 - 12 - + @@ -147,39 +144,38 @@ True - False + False True True - 0 - none + 0 + none True - False + False + 12 + 6 True True vertical 6 - 12 - 6 True - True + True True True - in + in True - True - True + True + True True True liststore1 - True - 0 - False + 0 + False @@ -223,7 +219,7 @@ True - False + False Users Currently Accessing This Spreadsheet diff --git a/sc/uiconfig/scalc/ui/sharedwarningdialog.ui b/sc/uiconfig/scalc/ui/sharedwarningdialog.ui index fb9c6b66989f..9282c2e3bb72 100644 --- a/sc/uiconfig/scalc/ui/sharedwarningdialog.ui +++ b/sc/uiconfig/scalc/ui/sharedwarningdialog.ui @@ -1,24 +1,24 @@ - + - False + False False True - dialog - warning + dialog + warning ok The spreadsheet is in shared mode. This allows multiple users to access and edit the spreadsheet at the same time. - Changes to formatting attributes like fonts, colors, and number formats will not be saved and some functionalities like editing charts and drawing objects are not available in shared mode. Turn off shared mode to get exclusive access needed for those changes and functionalities. + Changes to formatting attributes like fonts, colors, and number formats will not be saved and some functionalities like editing charts and drawing objects are not available in shared mode. Turn off shared mode to get exclusive access needed for those changes and functionalities. - False + False vertical 2 - False + False True @@ -31,11 +31,11 @@ Do not show warning again. True - True - False - True + True + False start - True + True + True False @@ -45,8 +45,5 @@ - - - diff --git a/sc/uiconfig/scalc/ui/solverprogressdialog.ui b/sc/uiconfig/scalc/ui/solverprogressdialog.ui index 914214616eb7..75afe4825ba1 100644 --- a/sc/uiconfig/scalc/ui/solverprogressdialog.ui +++ b/sc/uiconfig/scalc/ui/solverprogressdialog.ui @@ -1,69 +1,32 @@ - + - False - 6 + False + 6 Solving... False - dialog + dialog - False + False vertical 12 - - - - True - False - 24 - - - True - False - 0 - Solving in progress... - - - 0 - 0 - - - - - True - False - 0 - (time limit # seconds) - - - 0 - 1 - - - - - False - True - 0 - - - False - end + False + end _OK True False - True - True - True - True - True + True + True + True + True + True False @@ -75,10 +38,47 @@ False True - end + end 2 + + + + True + False + 24 + + + True + False + Solving in progress... + 0 + + + 0 + 0 + + + + + True + False + (time limit # seconds) + 0 + + + 0 + 1 + + + + + False + True + 0 + + diff --git a/sc/uiconfig/scalc/ui/solversuccessdialog.ui b/sc/uiconfig/scalc/ui/solversuccessdialog.ui index ca44365d0bf3..8bf2a3f6e690 100644 --- a/sc/uiconfig/scalc/ui/solversuccessdialog.ui +++ b/sc/uiconfig/scalc/ui/solversuccessdialog.ui @@ -1,37 +1,34 @@ - + - False - 6 + False + 6 Solving Result False True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end Keep Result True - True - True - True - True - True + True + True + True + True + True False @@ -43,9 +40,9 @@ Restore Previous True - True - True - True + True + True + True False @@ -57,52 +54,52 @@ False True - end + end 2 - + True - False - 24 + False + 24 True - False + False Do you want to keep the result or do you want to restore previous values? True - 40 + 40 0 - 0 - 2 + 0 + 2 True - False + False Solving successfully finished. 0 - 0 - 0 + 0 + 0 True - False + False Result: 0 - 0 - 1 + 0 + 1 diff --git a/sc/uiconfig/scalc/ui/sorttransformationentry.ui b/sc/uiconfig/scalc/ui/sorttransformationentry.ui index 4a5347677c23..c2c9cc65930a 100644 --- a/sc/uiconfig/scalc/ui/sorttransformationentry.ui +++ b/sc/uiconfig/scalc/ui/sorttransformationentry.ui @@ -1,83 +1,84 @@ - + + True - False - 6 - 6 - 6 - 12 + False + 6 + 6 + 6 + 12 True - False + False - 0 - 0 + 0 + 0 3 True - False + False start Sort Transformation - True - ed_ascending + True + ed_ascending - 0 - 1 + 0 + 1 3 True - True + True True - 10 - True - Column + 10 + True + Column - 1 - 2 + 1 + 2 Delete True - True - False + True + False end - 2 - 2 + 2 + 2 True - False + False start False 0 - 1 + 1 Descending Order Ascending Order - 0 - 2 + 0 + 2 diff --git a/sc/uiconfig/scalc/ui/sortwarning.ui b/sc/uiconfig/scalc/ui/sortwarning.ui index 2d2221cb6c0a..9072accedc52 100644 --- a/sc/uiconfig/scalc/ui/sortwarning.ui +++ b/sc/uiconfig/scalc/ui/sortwarning.ui @@ -1,36 +1,33 @@ - + - False - 6 + False + 6 Sort Range True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 2 - False - end + False + end _Extend selection True - True - True - True - True - True + True + True + True + True + True False @@ -42,8 +39,8 @@ Current selection True - True - True + True + True False @@ -55,8 +52,8 @@ _Cancel True - True - True + True + True True @@ -75,15 +72,15 @@ True - False + False start start - 6 - 6 + 6 + 6 The cells next to the current selection also contain data. Do you want to extend the sort range to %1, or sort the currently selected range, %2? True - word-char - 72 + word-char + 72 0 @@ -95,15 +92,15 @@ True - False + False start start - 6 - 6 + 6 + 6 Tip: The sort range can be detected automatically. Place the cell cursor inside a list and execute sort. The whole range of neighboring non-empty cells will then be sorted. True - word-char - 72 + word-char + 72 0 diff --git a/sc/uiconfig/scalc/ui/subtotaldialog.ui b/sc/uiconfig/scalc/ui/subtotaldialog.ui index 69a1e370bba7..f850bac550b1 100644 --- a/sc/uiconfig/scalc/ui/subtotaldialog.ui +++ b/sc/uiconfig/scalc/ui/subtotaldialog.ui @@ -1,34 +1,31 @@ - + - False - 6 + False + 6 Subtotals False True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _Help True - True - True + True + True 6 True @@ -43,8 +40,8 @@ _Reset True - True - True + True + True True @@ -57,8 +54,8 @@ _Remove True - True - True + True + True True @@ -71,10 +68,10 @@ _OK True - True - True - True - True + True + True + True + True True @@ -87,8 +84,8 @@ _Cancel True - True - True + True + True True @@ -101,47 +98,23 @@ False True - end + end 0 True - True + True True True True - True + True True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -150,42 +123,18 @@ True - False + False 1st Group - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -197,43 +146,19 @@ True - False + False 2nd Group 1 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -245,43 +170,19 @@ True - False + False 3rd Group 2 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -293,12 +194,12 @@ True - False + False Options 3 - False + False diff --git a/sc/uiconfig/scalc/ui/swaprowsentry.ui b/sc/uiconfig/scalc/ui/swaprowsentry.ui index 397d3b30af5c..c5251127a673 100644 --- a/sc/uiconfig/scalc/ui/swaprowsentry.ui +++ b/sc/uiconfig/scalc/ui/swaprowsentry.ui @@ -1,79 +1,80 @@ - + + True - False - 6 - 6 - 6 - 12 + False + 6 + 6 + 6 + 12 True - False + False - 0 - 0 + 0 + 0 3 True - False + False start Swap Rows Action - True - ed_row1 + True + ed_row1 - 0 - 1 + 0 + 1 3 True - True + True True - 10 - True - First Row + 10 + True + First Row - 0 - 2 + 0 + 2 True - True + True True - 10 - True - Second Row + 10 + True + Second Row - 1 - 2 + 1 + 2 Delete True - True - False + True + False end - 2 - 2 + 2 + 2 diff --git a/sc/uiconfig/scalc/ui/tabcolordialog.ui b/sc/uiconfig/scalc/ui/tabcolordialog.ui index 58b717f153ae..d2e1f26c4d09 100644 --- a/sc/uiconfig/scalc/ui/tabcolordialog.ui +++ b/sc/uiconfig/scalc/ui/tabcolordialog.ui @@ -1,34 +1,31 @@ - + - False - 6 + False + 6 True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -41,8 +38,8 @@ _Cancel True - True - True + True + True True @@ -55,23 +52,23 @@ False True - end + end 2 True - False + False 3 True - False + False center Palette: - True - paletteselector + True + paletteselector 0 0 @@ -84,7 +81,7 @@ True - False + False True @@ -102,20 +99,20 @@ True - True + True True True - never - never - in + never + never + in True - False + False True - True + True GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_STRUCTURE_MASK True True diff --git a/sc/uiconfig/scalc/ui/textimportoptions.ui b/sc/uiconfig/scalc/ui/textimportoptions.ui index 2ba1641d324d..0abfd7f4b6bd 100644 --- a/sc/uiconfig/scalc/ui/textimportoptions.ui +++ b/sc/uiconfig/scalc/ui/textimportoptions.ui @@ -1,35 +1,32 @@ - + - False - 6 + False + 6 Import Options True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -42,8 +39,8 @@ _Cancel True - True - True + True + True True @@ -72,71 +69,71 @@ False True - end + end 0 True - False + False vertical 12 True - False - 0 - none + False + 0 + none True - False - 6 - 6 + False 12 6 + 6 + 6 Custom: True - True - False - True - True + True + False + True + True automatic - 0 - 1 + 0 + 1 Automatic True - True - False - True + True + False + True True - True + True - 0 - 0 + 0 + 0 2 True - False + False True - 1 - 1 + 1 + 1 @@ -144,7 +141,7 @@ True - False + False Select the Locale to Use for Import @@ -161,9 +158,9 @@ True - False - 0 - none + False + 0 + none @@ -208,7 +205,7 @@ True - False + False Options diff --git a/sc/uiconfig/scalc/ui/texttransformationentry.ui b/sc/uiconfig/scalc/ui/texttransformationentry.ui index 4c9fe473596c..5a6c0f01f479 100644 --- a/sc/uiconfig/scalc/ui/texttransformationentry.ui +++ b/sc/uiconfig/scalc/ui/texttransformationentry.ui @@ -1,48 +1,49 @@ - + + True - False - 6 - 6 - 6 - 12 + False + 6 + 6 + 6 + 12 True - False + False - 0 - 0 + 0 + 0 3 True - False + False start Text Transformation - True - ed_lst + True + ed_lst - 0 - 1 + 0 + 1 3 True - False + False start False 0 - 0 + 0 To Lower To Upper @@ -51,35 +52,35 @@ - 0 - 2 + 0 + 2 True - True + True True - 10 - True - Columns + 10 + True + Columns - 1 - 2 + 1 + 2 Delete True - True - False + True + False end - 2 - 2 + 2 + 2 diff --git a/sc/uiconfig/scalc/ui/ungroupdialog.ui b/sc/uiconfig/scalc/ui/ungroupdialog.ui index e2ebc78b4f4b..1652d31d4406 100644 --- a/sc/uiconfig/scalc/ui/ungroupdialog.ui +++ b/sc/uiconfig/scalc/ui/ungroupdialog.ui @@ -1,33 +1,33 @@ - + - False - 6 + False + 6 Ungroup False True - 0 - 0 - dialog + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -40,8 +40,8 @@ _Cancel True - True - True + True + True True @@ -54,8 +54,8 @@ _Help True - True - True + True + True True @@ -69,36 +69,36 @@ False True - end + end 0 True - False + False True True - 0 - none + 0 + none True - False + False + 12 + 6 True vertical 6 - 12 - 6 _Rows True - True - False - True + True + False + True True - True + True False @@ -110,10 +110,10 @@ _Columns True - True - False - True - True + True + False + True + True rows @@ -127,7 +127,7 @@ True - False + False True Deactivate for 0 @@ -150,8 +150,5 @@ cancel help - - - diff --git a/sc/uiconfig/scalc/ui/validationdialog.ui b/sc/uiconfig/scalc/ui/validationdialog.ui index 1fb18070d4cf..9b91467c1ec8 100644 --- a/sc/uiconfig/scalc/ui/validationdialog.ui +++ b/sc/uiconfig/scalc/ui/validationdialog.ui @@ -1,34 +1,31 @@ - + - False - 6 + False + 6 Validity False True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _Reset True - True - True + True + True True @@ -41,10 +38,10 @@ _OK True - True - True - True - True + True + True + True + True True @@ -57,8 +54,8 @@ _Cancel True - True - True + True + True True @@ -71,8 +68,8 @@ _Help True - True - True + True + True True @@ -86,52 +83,28 @@ False True - end + end 0 True - False + False vertical True - True + True True True True - True + True True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -140,42 +113,18 @@ True - False + False Criteria - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -187,43 +136,19 @@ True - False + False Input Help 1 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -235,12 +160,12 @@ True - False + False Error Alert 2 - False + False @@ -253,7 +178,7 @@ True - False + False diff --git a/sd/qa/unit/AnnotationTest.cxx b/sd/qa/unit/AnnotationTest.cxx index 0f9e1c81ad0f..563fb2122018 100644 --- a/sd/qa/unit/AnnotationTest.cxx +++ b/sd/qa/unit/AnnotationTest.cxx @@ -194,52 +194,68 @@ CPPUNIT_TEST_FIXTURE(AnnotationTest, testAnnotationInsertUndoRedo) CPPUNIT_ASSERT_EQUAL(sal_uInt32(nID + 1), pPage->getAnnotations().at(1)->GetId()); } -CPPUNIT_TEST_FIXTURE(AnnotationTest, testAnnotationUpdate) +CPPUNIT_TEST_FIXTURE(AnnotationTest, testAnnotationPositionUpdate) { createSdDrawDoc(); auto pXImpressDocument = dynamic_cast(mxComponent.get()); sd::ViewShell* pViewShell = pXImpressDocument->GetDocShell()->GetViewShell(); + // Check current page SdPage* pPage = pViewShell->GetActualPage(); + + // Should have no objects yet CPPUNIT_ASSERT_EQUAL(size_t(0), pPage->GetObjCount()); + // Insert new annotation uno::Sequence aArgs; - aArgs = comphelper::InitPropertySequence({ { "Text", uno::Any(u"Comment"_ustr) }, }); dispatchCommand(mxComponent, u".uno:InsertAnnotation"_ustr, aArgs); + // 1 object in the page now CPPUNIT_ASSERT_EQUAL(size_t(1), pPage->GetObjCount()); + // .. and is an annotation object SdrObject* pObject = pPage->GetObj(0); CPPUNIT_ASSERT_EQUAL(SdrObjKind::Annotation, pObject->GetObjIdentifier()); - auto& pAnnotationData = pObject->getAnnotationData(); CPPUNIT_ASSERT(pAnnotationData); + + // Remember the annotation ID sal_Int32 nID = pAnnotationData->mxAnnotation->GetId(); + // Current annotation position CPPUNIT_ASSERT_EQUAL(tools::Long(0), pObject->GetLogicRect().Left()); CPPUNIT_ASSERT_EQUAL(tools::Long(0), pObject->GetLogicRect().Top()); + // Move the object pObject->Move({ 200, 200 }); - CPPUNIT_ASSERT_EQUAL(tools::Long(200), pObject->GetLogicRect().Left()); + // Object at a new position + CPPUNIT_ASSERT_EQUAL(tools::Long(200), + pObject->GetLogicRect().Left()); // in 100th of an mm (hmm) CPPUNIT_ASSERT_EQUAL(tools::Long(200), pObject->GetLogicRect().Top()); - CPPUNIT_ASSERT_DOUBLES_EQUAL(2.0, pAnnotationData->mxAnnotation->getPosition().X, 1E-4); + // Position of the annotation would be the same as the object (2.0 mm equals 200 hmm) + CPPUNIT_ASSERT_DOUBLES_EQUAL(2.0, pAnnotationData->mxAnnotation->getPosition().X, 1E-4); // mm CPPUNIT_ASSERT_DOUBLES_EQUAL(2.0, pAnnotationData->mxAnnotation->getPosition().Y, 1E-4); - aArgs = comphelper::InitPropertySequence({ { "Id", uno::Any(OUString::number(nID)) }, - { "PositionX", uno::Any(sal_Int32(1440)) }, - { "PositionY", uno::Any(sal_Int32(14400)) } }); + // Change the annotation position + aArgs = comphelper::InitPropertySequence( + { { "Id", uno::Any(OUString::number(nID)) }, + { "PositionX", uno::Any(sal_Int32(1440)) }, // 1440 twips = 2540 hmm + { "PositionY", uno::Any(sal_Int32(14400)) } }); dispatchCommand(mxComponent, u".uno:EditAnnotation"_ustr, aArgs); - CPPUNIT_ASSERT_DOUBLES_EQUAL(25.4, pAnnotationData->mxAnnotation->getPosition().X, 1E-4); + // Position of the annotation changed again + CPPUNIT_ASSERT_DOUBLES_EQUAL(25.4, pAnnotationData->mxAnnotation->getPosition().X, + 1E-4); // in mm CPPUNIT_ASSERT_DOUBLES_EQUAL(254.0, pAnnotationData->mxAnnotation->getPosition().Y, 1E-4); - CPPUNIT_ASSERT_EQUAL(tools::Long(2540), pObject->GetLogicRect().Left()); + // Position of the annotation object changed also to the same value + CPPUNIT_ASSERT_EQUAL(tools::Long(2540), pObject->GetLogicRect().Left()); // in hmm CPPUNIT_ASSERT_EQUAL(tools::Long(25400), pObject->GetLogicRect().Top()); } diff --git a/sd/qa/unit/data/pptx/tdf157216.pptx b/sd/qa/unit/data/pptx/tdf157216.pptx new file mode 100644 index 000000000000..ad53887b844a Binary files /dev/null and b/sd/qa/unit/data/pptx/tdf157216.pptx differ diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx index bbde4f833efb..d2ae920a0071 100644 --- a/sd/qa/unit/import-tests.cxx +++ b/sd/qa/unit/import-tests.cxx @@ -205,6 +205,35 @@ CPPUNIT_TEST_FIXTURE(SdImportTest, testDocumentLayout) } } +CPPUNIT_TEST_FIXTURE(SdImportTest, testTdf157216) +{ + createSdImpressDoc("pptx/tdf157216.pptx"); + uno::Reference xFlowchartShape(getShapeFromPage(0, 0)); + uno::Sequence aProps; + xFlowchartShape->getPropertyValue(u"CustomShapeGeometry"_ustr) >>= aProps; + + uno::Sequence aPathProps; + for (beans::PropertyValue const& rProp : aProps) + { + if (rProp.Name == "Path") + aPathProps = rProp.Value.get>(); + } + + uno::Sequence seqGluePoints; + for (beans::PropertyValue const& rProp : aPathProps) + { + if (rProp.Name == "GluePoints") + { + seqGluePoints + = rProp.Value.get>(); + } + } + + sal_Int32 nCountGluePoints = seqGluePoints.getLength(); + // The Flowchart: Punched Tape has 4 glue points. + CPPUNIT_ASSERT_EQUAL(sal_Int32(4), nCountGluePoints); +} + CPPUNIT_TEST_FIXTURE(SdImportTest, testTableStyle) { createSdImpressDoc("pptx/tdf156718.pptx"); diff --git a/sd/qa/unit/import-tests2.cxx b/sd/qa/unit/import-tests2.cxx index c01ae0b8747a..3f01a678ca5b 100644 --- a/sd/qa/unit/import-tests2.cxx +++ b/sd/qa/unit/import-tests2.cxx @@ -111,18 +111,18 @@ CPPUNIT_TEST_FIXTURE(SdImportTest2, testTdf160490) sal_Int32 nHeight1 = xShape1->getSize().Height; // Without the fix in place, this test would have failed with - // Expected: placeholder height: 3730 - // Actual : placeholder height: 2627 - CPPUNIT_ASSERT_EQUAL(sal_Int32(3730), nHeight1); + // Expected: placeholder height: 2627 + // Actual : placeholder height: 3476 + CPPUNIT_ASSERT_EQUAL(sal_Int32(2627), nHeight1); uno::Reference xShape2(getShapeFromPage(0, 1), uno::UNO_QUERY); CPPUNIT_ASSERT(xShape2.is()); sal_Int32 nHeight2 = xShape2->getSize().Height; // Without the fix in place, this test would have failed with - // Expected: placeholder height: 3366 - // Actual : placeholder height: 2373 - CPPUNIT_ASSERT_EQUAL(sal_Int32(3366), nHeight2); + // Expected: placeholder height: 2373 + // Actual : placeholder height: 3116 + CPPUNIT_ASSERT_EQUAL(sal_Int32(2373), nHeight2); } CPPUNIT_TEST_FIXTURE(SdImportTest2, testTdf157285) diff --git a/sd/sdi/NotesPanelView.sdi b/sd/sdi/NotesPanelView.sdi index b54addb52b8c..2fca90c56fdc 100644 --- a/sd/sdi/NotesPanelView.sdi +++ b/sd/sdi/NotesPanelView.sdi @@ -499,5 +499,4 @@ include "drtxtob.sdi" shell NotesPanelViewShell { import NotesPanelView; - import TextObjectBar; } diff --git a/sd/source/ui/annotations/annotationmanager.cxx b/sd/source/ui/annotations/annotationmanager.cxx index 64262a233471..b07a79932b5d 100644 --- a/sd/source/ui/annotations/annotationmanager.cxx +++ b/sd/source/ui/annotations/annotationmanager.cxx @@ -94,6 +94,7 @@ #include #include +#include #include using namespace css; @@ -428,13 +429,13 @@ void AnnotationManagerImpl::ExecuteEditAnnotation(SfxRequest const & rReq) SdrObject* pObject = xAnnotation->findAnnotationObject(); if (pObject && nPositionX >= 0 && nPositionY >= 0) { - double fX = convertTwipToMm100(nPositionX); - double fY = convertTwipToMm100(nPositionY); + double fX = convertTwipToMm100(nPositionX); + double fY = convertTwipToMm100(nPositionY); - double deltaX = fX - (pSdAnnotation->getPosition().X * 100.0); - double deltaY = fY - (pSdAnnotation->getPosition().Y * 100.0); + ::tools::Long deltaX = std::round(fX - (pSdAnnotation->getPosition().X * 100.0)); + ::tools::Long deltaY = std::round(fY - (pSdAnnotation->getPosition().Y * 100.0)); - pObject->Move({::tools::Long(deltaX), ::tools::Long(deltaY)}); + pObject->Move({ deltaX, deltaY }); } if (!sText.isEmpty()) diff --git a/sd/source/ui/annotations/annotationwindow.cxx b/sd/source/ui/annotations/annotationwindow.cxx index 1430e2875e28..14952248f5e6 100644 --- a/sd/source/ui/annotations/annotationwindow.cxx +++ b/sd/source/ui/annotations/annotationwindow.cxx @@ -351,7 +351,7 @@ void AnnotationWindow::FillMenuButton() void AnnotationWindow::StartEdit() { - GetOutlinerView()->SetSelection(ESelection(EE_PARA_MAX_COUNT,EE_TEXTPOS_MAX_COUNT,EE_PARA_MAX_COUNT,EE_TEXTPOS_MAX_COUNT)); + GetOutlinerView()->SetSelection(ESelection::NoSelection()); GetOutlinerView()->ShowCursor(); } diff --git a/sd/source/ui/framework/module/ToolBarModule.cxx b/sd/source/ui/framework/module/ToolBarModule.cxx index de7f3e583126..cf3fd880105e 100644 --- a/sd/source/ui/framework/module/ToolBarModule.cxx +++ b/sd/source/ui/framework/module/ToolBarModule.cxx @@ -18,10 +18,17 @@ */ #include "ToolBarModule.hxx" +#include #include +#include #include +#include #include #include +#include + +#include +#include using namespace ::com::sun::star; using namespace ::com::sun::star::uno; @@ -76,6 +83,9 @@ ToolBarModule::ToolBarModule ( ToolBarModule::~ToolBarModule() { + if (mpBase && mbListeningEventMultiplexer) + mpBase->GetEventMultiplexer()->RemoveEventListener( + LINK(this, ToolBarModule, EventMultiplexerListener)); } void ToolBarModule::disposing(std::unique_lock&) @@ -93,6 +103,16 @@ void SAL_CALL ToolBarModule::notifyConfigurationChange ( if (!mxConfigurationController.is()) return; + // since EventMultiplexer isn't available when the ToolBarModule is + // initialized, subscribing the event listener hacked here. + if (!mbListeningEventMultiplexer && mpBase) + { + mpBase->GetEventMultiplexer()->AddEventListener( + LINK(this, ToolBarModule, EventMultiplexerListener)); + mbListeningEventMultiplexer = true; + } + + sal_Int32 nEventType = 0; rEvent.UserData >>= nEventType; switch (nEventType) @@ -123,6 +143,34 @@ void SAL_CALL ToolBarModule::notifyConfigurationChange ( } } +void ToolBarModule::HandlePaneViewShellFocused(const css::uno::Reference& rxResourceId) +{ + if(!mpBase) + return; + + std::shared_ptr pFrameworkHelper(FrameworkHelper::Instance(*mpBase)); + std::shared_ptr pViewShell + = FrameworkHelper::GetViewShell(pFrameworkHelper->GetView(rxResourceId)); + + if(mpBase->GetMainViewShell() == pViewShell) + { + mpBase->GetViewShellManager()->RemoveOverridingMainShell(); + return; + } + + switch(pViewShell->GetShellType()) + { + // shells that override mainviewshell functionality when used in a pane + case ViewShell::ST_NOTESPANEL: + mpBase->GetViewShellManager()->SetOverridingMainShell(pViewShell); + UpdateToolbars(pViewShell.get()); + break; + default: + break; + } + mpToolBarManagerLock.reset(); +} + void ToolBarModule::HandleUpdateStart() { // Lock the ToolBarManager and tell it to lock the ViewShellManager as @@ -149,23 +197,11 @@ void ToolBarModule::HandleUpdateEnd() std::shared_ptr pToolBarManager (mpBase->GetToolBarManager()); std::shared_ptr pFrameworkHelper ( FrameworkHelper::Instance(*mpBase)); - ViewShell* pViewShell - = pFrameworkHelper->GetViewShell(FrameworkHelper::msCenterPaneURL).get(); - if (pViewShell != nullptr) - { - pToolBarManager->MainViewShellChanged(*pViewShell); - pToolBarManager->SelectionHasChanged( - *pViewShell, - *pViewShell->GetView()); - pToolBarManager->PreUpdate(); - } - else - { - pToolBarManager->MainViewShellChanged(); - pToolBarManager->PreUpdate(); - } - } + auto pViewShell + = pFrameworkHelper->GetViewShell(FrameworkHelper::msCenterPaneURL); + UpdateToolbars(pViewShell.get()); + } // Releasing the update lock of the ToolBarManager will let the // ToolBarManager with the help of the ViewShellManager take care of // updating tool bars and view shell with the minimal amount of @@ -173,6 +209,35 @@ void ToolBarModule::HandleUpdateEnd() mpToolBarManagerLock.reset(); } +void ToolBarModule::UpdateToolbars(ViewShell* pViewShell) +{ + // Update the set of visible tool bars and deactivate those that are + // no longer visible. This is done before the old view shell is + // destroyed in order to avoid unnecessary updates of those tool + // bars. + if (!mpBase) + return; + + std::shared_ptr pToolBarManager (mpBase->GetToolBarManager()); + + if(!pToolBarManager) + return; + + if (pViewShell) + { + pToolBarManager->MainViewShellChanged(*pViewShell); + pToolBarManager->SelectionHasChanged( + *pViewShell, + *pViewShell->GetView()); + pToolBarManager->PreUpdate(); + } + else + { + pToolBarManager->MainViewShellChanged(); + pToolBarManager->PreUpdate(); + } +} + void SAL_CALL ToolBarModule::disposing (const lang::EventObject& rEvent) { if (mxConfigurationController.is() @@ -184,6 +249,27 @@ void SAL_CALL ToolBarModule::disposing (const lang::EventObject& rEvent) } } +IMPL_LINK(ToolBarModule, EventMultiplexerListener, sd::tools::EventMultiplexerEvent&, rEvent, + void) +{ + if (!mpBase) + return; + + switch(rEvent.meEventId) + { + case EventMultiplexerEventId::FocusShifted: + { + uno::Reference xResourceId{ rEvent.mxUserData, + UNO_QUERY }; + if (xResourceId.is()) + HandlePaneViewShellFocused(xResourceId); + break; + } + default: + break; + } +} + } // end of namespace sd::framework /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/framework/module/ToolBarModule.hxx b/sd/source/ui/framework/module/ToolBarModule.hxx index bf0c017ef981..f245e88f8562 100644 --- a/sd/source/ui/framework/module/ToolBarModule.hxx +++ b/sd/source/ui/framework/module/ToolBarModule.hxx @@ -20,20 +20,34 @@ #pragma once #include +#include #include +#include #include #include #include #include -namespace com::sun::star::drawing::framework { class XConfigurationController; } -namespace com::sun::star::frame { class XController; } +namespace com::sun::star::drawing::framework +{ +class XConfigurationController; +class XResourceId; +} +namespace com::sun::star::frame +{ +class XController; +} namespace sd { class DrawController; class ViewShellBase; } +namespace sd::tools +{ +class EventMultiplexerEvent; +} + namespace sd::framework { typedef comphelper::WeakComponentImplHelper < @@ -73,9 +87,20 @@ private: ViewShellBase* mpBase; std::unique_ptr> mpToolBarManagerLock; bool mbMainViewSwitchUpdatePending; + bool mbListeningEventMultiplexer = false; + + /** Update toolbars via ToolbarManager + + @param pViewShell may be nullptr + */ + void UpdateToolbars(ViewShell* pViewShell); void HandleUpdateStart(); void HandleUpdateEnd(); + void HandlePaneViewShellFocused( + const css::uno::Reference& rxResourceId); + + DECL_LINK(EventMultiplexerListener, ::sd::tools::EventMultiplexerEvent&, void); }; } // end of namespace sd::framework diff --git a/sd/source/ui/inc/EventMultiplexer.hxx b/sd/source/ui/inc/EventMultiplexer.hxx index d6d79d11b279..7de135d45fff 100644 --- a/sd/source/ui/inc/EventMultiplexer.hxx +++ b/sd/source/ui/inc/EventMultiplexer.hxx @@ -22,6 +22,7 @@ #include #include +#include template class Link; @@ -112,6 +113,10 @@ enum class EventMultiplexerEventId /** Edit mode was (or is being) switched to master mode. */ EditModeMaster, + + /** Focus shifted between views. + */ + FocusShifted, }; namespace sd::tools @@ -121,8 +126,10 @@ class EventMultiplexerEvent public: EventMultiplexerEventId meEventId; const void* mpUserData; + css::uno::Reference mxUserData; - EventMultiplexerEvent(EventMultiplexerEventId eEventId, const void* pUserData); + EventMultiplexerEvent(EventMultiplexerEventId eEventId, const void* pUserData, + const css::uno::Reference& xUserData = {}); }; /** This convenience class makes it easy to listen to various events that @@ -160,7 +167,8 @@ public: @param pUserData Some data sent to the listeners along with the event. */ - void MultiplexEvent(EventMultiplexerEventId eEventId, void const* pUserData); + void MultiplexEvent(EventMultiplexerEventId eEventId, void const* pUserData, + const css::uno::Reference& xUserData = {}); private: class Implementation; diff --git a/sd/source/ui/inc/ToolBarManager.hxx b/sd/source/ui/inc/ToolBarManager.hxx index da5325cf693c..a5cebb377f5c 100644 --- a/sd/source/ui/inc/ToolBarManager.hxx +++ b/sd/source/ui/inc/ToolBarManager.hxx @@ -178,10 +178,13 @@ public: The group is used for the actual tool bars. @param nToolBarId Id of the tool bar shell. + @param bAddBar + Add the toolbar itself with the shell. When false only adds the shell. */ void AddToolBarShell ( ToolBarGroup eGroup, - ShellId nToolBarId); + ShellId nToolBarId, + bool bAddBar = true); /** Remove the tool bar with the given name from the specified group. If the tool bar is not visible then nothing happens. diff --git a/sd/source/ui/inc/ViewShell.hxx b/sd/source/ui/inc/ViewShell.hxx index b848593458a6..8b1292e554ad 100644 --- a/sd/source/ui/inc/ViewShell.hxx +++ b/sd/source/ui/inc/ViewShell.hxx @@ -522,6 +522,7 @@ protected: virtual void Activate(bool IsMDIActivate) override; virtual void Deactivate(bool IsMDIActivate) override; + virtual void BroadcastContextForActivation (const bool bIsActivated) override; virtual void SetZoomFactor( const Fraction &rZoomX, const Fraction &rZoomY ); diff --git a/sd/source/ui/inc/ViewShellManager.hxx b/sd/source/ui/inc/ViewShellManager.hxx index b56335ad6170..1ad4f138d8ae 100644 --- a/sd/source/ui/inc/ViewShellManager.hxx +++ b/sd/source/ui/inc/ViewShellManager.hxx @@ -79,6 +79,10 @@ public: */ void ActivateViewShell(ViewShell* pViewShell); + void RemoveOverridingMainShell(); + void SetOverridingMainShell(std::shared_ptr pViewShell); + std::shared_ptr GetOverridingMainShell(); + /** Activate the given shell which is not a view shell. For view shells use the ActivateViewShell() method. */ diff --git a/sd/source/ui/tools/EventMultiplexer.cxx b/sd/source/ui/tools/EventMultiplexer.cxx index 122ac736a4e8..5e20b9cc1f33 100644 --- a/sd/source/ui/tools/EventMultiplexer.cxx +++ b/sd/source/ui/tools/EventMultiplexer.cxx @@ -132,7 +132,8 @@ private: void CallListeners ( EventMultiplexerEventId eId, - void const * pUserData = nullptr); + void const * pUserData = nullptr, + const css::uno::Reference& xUserData = {}); DECL_LINK(SlideSorterSelectionChangeListener, LinkParamNone*, void); }; @@ -173,11 +174,10 @@ void EventMultiplexer::RemoveEventListener ( mpImpl->RemoveEventListener(rCallback); } -void EventMultiplexer::MultiplexEvent( - EventMultiplexerEventId eEventId, - void const * pUserData ) +void EventMultiplexer::MultiplexEvent(EventMultiplexerEventId eEventId, void const* pUserData, + const css::uno::Reference& xUserData) { - EventMultiplexerEvent aEvent(eEventId, pUserData); + EventMultiplexerEvent aEvent(eEventId, pUserData, xUserData); mpImpl->CallListeners(aEvent); } @@ -622,11 +622,11 @@ void EventMultiplexer::Implementation::Notify ( } } -void EventMultiplexer::Implementation::CallListeners ( - EventMultiplexerEventId eId, - void const * pUserData) +void EventMultiplexer::Implementation::CallListeners( + EventMultiplexerEventId eId, void const* pUserData, + const css::uno::Reference& xUserData) { - EventMultiplexerEvent aEvent(eId, pUserData); + EventMultiplexerEvent aEvent(eId, pUserData, xUserData); CallListeners(aEvent); } @@ -648,9 +648,11 @@ IMPL_LINK_NOARG(EventMultiplexer::Implementation, SlideSorterSelectionChangeList EventMultiplexerEvent::EventMultiplexerEvent ( EventMultiplexerEventId eEventId, - const void* pUserData) + const void* pUserData, + const css::uno::Reference& xUserData) : meEventId(eEventId), - mpUserData(pUserData) + mpUserData(pUserData), + mxUserData(xUserData) { } diff --git a/sd/source/ui/view/NotesPanelView.cxx b/sd/source/ui/view/NotesPanelView.cxx index 45d29748504e..45c2c4117fa3 100644 --- a/sd/source/ui/view/NotesPanelView.cxx +++ b/sd/source/ui/view/NotesPanelView.cxx @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -193,7 +194,12 @@ void NotesPanelView::onUpdateStyleSettings() void NotesPanelView::onResize() { ::sd::Window* pWin = mrNotesPanelViewShell.GetActiveWindow(); + if (!pWin) + return; + OutlinerView* pOutlinerView = GetOutlinerView(); + if (!pOutlinerView) + return; Size aOutputSize = pWin->PixelToLogic(pWin->GetOutputSizePixel()); diff --git a/sd/source/ui/view/NotesPanelViewShell.cxx b/sd/source/ui/view/NotesPanelViewShell.cxx index 0b1904293b05..a13daeb9f6f0 100644 --- a/sd/source/ui/view/NotesPanelViewShell.cxx +++ b/sd/source/ui/view/NotesPanelViewShell.cxx @@ -308,7 +308,6 @@ void NotesPanelViewShell::Activate(bool bIsMDIActivate) } ViewShell::Activate(bIsMDIActivate); - SfxShell::BroadcastContextForActivation(true); if (bIsMDIActivate) { diff --git a/sd/source/ui/view/ToolBarManager.cxx b/sd/source/ui/view/ToolBarManager.cxx index c8f40b99a0ef..89a8f9cfba61 100644 --- a/sd/source/ui/view/ToolBarManager.cxx +++ b/sd/source/ui/view/ToolBarManager.cxx @@ -20,9 +20,11 @@ #include #include +#include #include #include #include +#include #include #include @@ -178,6 +180,8 @@ private: things easier and does not waste too much memory. */ GroupedShellList maCurrentList; + + std::shared_ptr pCurrentActiveShell; }; /** This class concentrates the knowledge about when to show what tool bars @@ -256,7 +260,7 @@ public: void ResetToolBars (ToolBarGroup eGroup); void ResetAllToolBars(); void AddToolBar (ToolBarGroup eGroup, const OUString& rsToolBarName); - void AddToolBarShell (ToolBarGroup eGroup, ShellId nToolBarId); + void AddToolBarShell (ToolBarGroup eGroup, ShellId nToolBarId, bool bAddBar = true); void RemoveToolBar (ToolBarGroup eGroup, const OUString& rsToolBarName); /** Release all tool bar shells and the associated framework tool bars. @@ -387,12 +391,13 @@ void ToolBarManager::AddToolBar ( void ToolBarManager::AddToolBarShell ( ToolBarGroup eGroup, - ShellId nToolBarId) + ShellId nToolBarId, + bool bAddBar) { if (mpImpl != nullptr) { UpdateLock aLock (shared_from_this()); - mpImpl->AddToolBarShell(eGroup,nToolBarId); + mpImpl->AddToolBarShell(eGroup,nToolBarId,bAddBar); } } @@ -621,13 +626,23 @@ void ToolBarManager::Implementation::RemoveToolBar ( void ToolBarManager::Implementation::AddToolBarShell ( ToolBarGroup eGroup, - ShellId nToolBarId) + ShellId nToolBarId, + bool bAddBar) { ViewShell* pMainViewShell = mrBase.GetMainViewShell().get(); if (pMainViewShell != nullptr) { maToolBarShellList.AddShellId(eGroup,nToolBarId); - GetToolBarRules().SubShellAdded(eGroup, nToolBarId); + if (bAddBar) + { + GetToolBarRules().SubShellAdded(eGroup, nToolBarId); + } + else + { + mbPostUpdatePending = true; + if (mnLockCount == 0) + PostUpdate(); + } } } @@ -958,6 +973,11 @@ void ToolBarRules::MainViewShellChanged (ViewShell::ShellType nShellType) ToolBarManager::msViewerToolBar); break; + case ::sd::ViewShell::ST_NOTESPANEL: + mpToolBarManager->AddToolBarShell(ToolBarManager::ToolBarGroup::Permanent, + ToolbarId::Draw_Text_Toolbox_Sd); + break; + case ::sd::ViewShell::ST_DRAW: mpToolBarManager->AddToolBar( ToolBarManager::ToolBarGroup::Permanent, @@ -993,7 +1013,6 @@ void ToolBarRules::MainViewShellChanged (ViewShell::ShellType nShellType) ToolBarManager::msSlideSorterObjectBar); break; - case ViewShell::ST_NOTESPANEL: case ViewShell::ST_NONE: case ViewShell::ST_PRESENTATION: case ViewShell::ST_SIDEBAR: @@ -1347,6 +1366,9 @@ void ToolBarShellList::UpdateShells ( if (rpMainViewShell == nullptr) return; + const std::shared_ptr& pCurrentMainViewShell + = rpManager->GetOverridingMainShell() ? rpManager->GetOverridingMainShell() : rpMainViewShell; + GroupedShellList aList; // Deactivate shells that are in maCurrentList, but not in @@ -1357,7 +1379,7 @@ void ToolBarShellList::UpdateShells ( for (const auto& rShell : aList) { SAL_INFO("sd.view", __func__ << ": deactivating tool bar shell " << static_cast(rShell.mnId)); - rpManager->DeactivateSubShell(*rpMainViewShell, rShell.mnId); + rpManager->DeactivateSubShell(*pCurrentMainViewShell, rShell.mnId); } // Activate shells that are in maNewList, but not in @@ -1369,7 +1391,7 @@ void ToolBarShellList::UpdateShells ( for (const auto& rShell : aList) { SAL_INFO("sd.view", __func__ << ": activating tool bar shell " << static_cast(rShell.mnId)); - rpManager->ActivateSubShell(*rpMainViewShell, rShell.mnId); + rpManager->ActivateSubShell(*pCurrentMainViewShell, rShell.mnId); } // The maNewList now reflects the current state and thus is made diff --git a/sd/source/ui/view/ViewShellManager.cxx b/sd/source/ui/view/ViewShellManager.cxx index db2ee5f8f158..f158e32e3296 100644 --- a/sd/source/ui/view/ViewShellManager.cxx +++ b/sd/source/ui/view/ViewShellManager.cxx @@ -113,6 +113,9 @@ public: void SetFormShell (const ViewShell* pViewShell, FmFormShell* pFormShell, bool bAbove); void ActivateSubShell (const SfxShell& rParentShell, ShellId nId); void DeactivateSubShell (const SfxShell& rParentShell, ShellId nId); + void RemoveOverridingMainShell(); + void SetOverridingShell(std::shared_ptr pViewShell); + std::shared_ptr GetOverridingShell(); void MoveToTop (const SfxShell& rParentShell); SfxShell* GetShell (ShellId nId) const; SfxShell* GetTopShell() const; @@ -189,6 +192,7 @@ private: SfxShell* mpTopShell; SfxShell* mpTopViewShell; + std::shared_ptr mpOverridingShell; void UpdateShellStack(); @@ -260,6 +264,26 @@ void ViewShellManager::DeactivateViewShell (const ViewShell* pShell) mpImpl->DeactivateViewShell(*pShell); } + +void ViewShellManager::RemoveOverridingMainShell() +{ + if(mbValid) + mpImpl->RemoveOverridingMainShell(); +} + +void ViewShellManager::SetOverridingMainShell(std::shared_ptr pViewShell) +{ + if(mbValid) + mpImpl->SetOverridingShell(pViewShell); +} + +std::shared_ptr ViewShellManager::GetOverridingMainShell() +{ + if(mbValid) + return mpImpl->GetOverridingShell(); + return {}; +} + void ViewShellManager::SetFormShell ( const ViewShell* pParentShell, FmFormShell* pFormShell, @@ -570,6 +594,21 @@ void ViewShellManager::Implementation::DeactivateSubShell ( DestroySubShell(aDescriptor); } +std::shared_ptr ViewShellManager::Implementation::GetOverridingShell() +{ + return mpOverridingShell; +} + +void ViewShellManager::Implementation::RemoveOverridingMainShell() +{ + mpOverridingShell.reset(); +} + +void ViewShellManager::Implementation::SetOverridingShell(std::shared_ptr pViewShell) +{ + mpOverridingShell = pViewShell; +} + void ViewShellManager::Implementation::MoveToTop (const SfxShell& rShell) { ::osl::MutexGuard aGuard (maMutex); @@ -711,10 +750,12 @@ void ViewShellManager::Implementation::UpdateShellStack() // 1. Create the missing shells. CreateShells(); + SfxShell* pPreviousTopViewShell = mpTopViewShell; // Update the pointer to the top-most active view shell. mpTopViewShell = (maActiveViewShells.empty()) ? nullptr : maActiveViewShells.begin()->mpShell; + bool bTopViewShellChanged = mpTopViewShell != pPreviousTopViewShell; // 2. Create the internal target stack. ShellStack aTargetStack; @@ -776,6 +817,10 @@ void ViewShellManager::Implementation::UpdateShellStack() if (mpTopShell!=nullptr && pUndoManager!=nullptr && mpTopShell->GetUndoManager()==nullptr) mpTopShell->SetUndoManager(pUndoManager); + // Only broadcast context for activation on the top-most ViewShell + if (mpTopViewShell && bTopViewShellChanged) + mpTopViewShell->BroadcastContextForActivation(true); + // Finally tell an invocation of this method on a higher level that it can (has // to) abort and return immediately. mbShellStackIsUpToDate = true; @@ -1071,6 +1116,7 @@ void ViewShellManager::Implementation::Shutdown() mrBase.RemoveSubShell (); maShellFactories.clear(); + mpOverridingShell.reset(); } #if OSL_DEBUG_LEVEL >= 2 @@ -1113,9 +1159,12 @@ void ViewShellManager::Implementation::Deactivate (SfxShell* pShell) { pView->SdrEndTextEdit(); pView->UnmarkAll(); + + // dispatch synchronously, otherwise it might execute while another + // ViewShell is active! pViewShell->GetViewFrame()->GetDispatcher()->Execute( SID_OBJECT_SELECT, - SfxCallMode::ASYNCHRON); + SfxCallMode::SYNCHRON); } } diff --git a/sd/source/ui/view/drtxtob.cxx b/sd/source/ui/view/drtxtob.cxx index 7310b2e19e2b..4bdc074a0574 100644 --- a/sd/source/ui/view/drtxtob.cxx +++ b/sd/source/ui/view/drtxtob.cxx @@ -56,6 +56,7 @@ #include #include #include +#include #include #include #include @@ -453,7 +454,9 @@ void TextObjectBar::GetAttrStateImpl(ViewShell* mpViewShell, ::sd::View* mpView, rSet.Put( aAttrSet, false ); // <- sal_False, so DontCare-Status gets acquired // these are disabled in outline-mode - if (!mpViewShell || dynamic_cast< const DrawViewShell *>( mpViewShell ) == nullptr) + if (!mpViewShell + || !(dynamic_cast(mpViewShell) + || dynamic_cast(mpViewShell))) { rSet.DisableItem( SID_ATTR_PARA_ADJUST_LEFT ); rSet.DisableItem( SID_ATTR_PARA_ADJUST_RIGHT ); diff --git a/sd/source/ui/view/drviews1.cxx b/sd/source/ui/view/drviews1.cxx index 00560836cb7f..8f2a2190cc73 100644 --- a/sd/source/ui/view/drviews1.cxx +++ b/sd/source/ui/view/drviews1.cxx @@ -406,7 +406,8 @@ void DrawViewShell::ChangeEditMode(EditMode eEMode, bool bIsLayerModeActive) }; if (comphelper::LibreOfficeKit::isActive()) - GetViewShell()->libreOfficeKitViewCallback(LOK_CALLBACK_STATUS_UPDATE, {}); + GetViewShell()->libreOfficeKitViewCallback(LOK_CALLBACK_STATE_CHANGED, + ".uno:DocumentStatus"_ostr); // pseudo-command if (meEditMode == EditMode::Page) { diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx index 5b6b797fe025..fc2cfa046b83 100644 --- a/sd/source/ui/view/drviews2.cxx +++ b/sd/source/ui/view/drviews2.cxx @@ -1489,9 +1489,9 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq) const SfxUInt32Item* newPosYTwips = rReq.GetArg(FN_PARAM_3); const SfxInt32Item* OrdNum = rReq.GetArg(FN_PARAM_4); - const sal_uLong handleNum = handleNumItem->GetValue(); - const sal_uLong newPosX = convertTwipToMm100(newPosXTwips->GetValue()); - const sal_uLong newPosY = convertTwipToMm100(newPosYTwips->GetValue()); + const sal_uInt32 handleNum = handleNumItem->GetValue(); + const ::tools::Long newPosX = convertTwipToMm100(newPosXTwips->GetValue()); + const ::tools::Long newPosY = convertTwipToMm100(newPosYTwips->GetValue()); mpDrawView->MoveShapeHandle(handleNum, Point(newPosX, newPosY), OrdNum ? OrdNum->GetValue() : -1); Cancel(); diff --git a/sd/source/ui/view/outlnvsh.cxx b/sd/source/ui/view/outlnvsh.cxx index b945695d97de..8fcd132ff3de 100644 --- a/sd/source/ui/view/outlnvsh.cxx +++ b/sd/source/ui/view/outlnvsh.cxx @@ -317,7 +317,7 @@ void OutlineViewShell::Activate( bool bIsMDIActivate ) } ViewShell::Activate( bIsMDIActivate ); - SfxShell::BroadcastContextForActivation(true); + BroadcastContextForActivation(true); pOlView->SetLinks(); pOlView->ConnectToApplication(); diff --git a/sd/source/ui/view/viewshel.cxx b/sd/source/ui/view/viewshel.cxx index 2f2cecf7aabd..11f7a186f282 100644 --- a/sd/source/ui/view/viewshel.cxx +++ b/sd/source/ui/view/viewshel.cxx @@ -17,6 +17,8 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include +#include #include #include #include @@ -58,6 +60,7 @@ #include #include #include +#include #include #include #include @@ -90,6 +93,12 @@ #include #include +#include +#include +#include +#include +#include + using namespace ::com::sun::star; using namespace ::com::sun::star::uno; using namespace ::com::sun::star::presentation; @@ -405,6 +414,62 @@ void ViewShell::Deactivate(bool bIsMDIActivate) SfxShell::Deactivate(bIsMDIActivate); } +void ViewShell::BroadcastContextForActivation(const bool bIsActivated) +{ + auto getFrameworkResourceIdForShell + = [&]() -> uno::Reference const + { + Reference<::css::drawing::framework::XControllerManager> xControllerManager( + GetViewShellBase().GetController(), UNO_QUERY); + if (!xControllerManager.is()) + return {}; + + Reference<::css::drawing::framework::XConfigurationController> xConfigurationController + = xControllerManager->getConfigurationController(); + if (!xConfigurationController.is()) + return {}; + + Reference<::css::drawing::framework::XConfiguration> xConfiguration + = xConfigurationController->getCurrentConfiguration(); + if (!xConfiguration.is()) + return {}; + + auto aResIdsIndirect + = xConfiguration->getResources({}, "", drawing::framework::AnchorBindingMode_INDIRECT); + + for (const uno::Reference& rResId : aResIdsIndirect) + { + auto pFrameworkHelper = framework::FrameworkHelper::Instance(GetViewShellBase()); + + uno::Reference xView; + if (rResId->getResourceURL().match(framework::FrameworkHelper::msViewURLPrefix)) + { + xView.set(xConfigurationController->getResource(rResId), UNO_QUERY); + + if (xView.is()) + { + auto pViewShellWrapper + = dynamic_cast(xView.get()); + if (pViewShellWrapper->GetViewShell().get() == this) + { + return rResId; + } + } + } + } + return {}; + }; + + if (bIsActivated) + { + GetViewShellBase().GetEventMultiplexer()->MultiplexEvent( + EventMultiplexerEventId::FocusShifted, nullptr, getFrameworkResourceIdForShell()); + } + + if (GetDispatcher()) + SfxShell::BroadcastContextForActivation(bIsActivated); +} + void ViewShell::Shutdown() { Exit (); diff --git a/sd/uiconfig/sdraw/ui/breakdialog.ui b/sd/uiconfig/sdraw/ui/breakdialog.ui index a42d710039f8..ad3f6c92030e 100644 --- a/sd/uiconfig/sdraw/ui/breakdialog.ui +++ b/sd/uiconfig/sdraw/ui/breakdialog.ui @@ -134,4 +134,4 @@ cancel - \ No newline at end of file + diff --git a/sd/uiconfig/sdraw/ui/bulletsandnumbering.ui b/sd/uiconfig/sdraw/ui/bulletsandnumbering.ui index 327c45e0b31b..3e680869329d 100644 --- a/sd/uiconfig/sdraw/ui/bulletsandnumbering.ui +++ b/sd/uiconfig/sdraw/ui/bulletsandnumbering.ui @@ -1,32 +1,29 @@ - + - False - 6 + False + 6 Bullets and Numbering True - mouse - dialog - - - + mouse + dialog - False + False vertical 12 - False - end + False + end Reset True - True - True + True + True False @@ -38,10 +35,10 @@ _OK True - True - True - True - True + True + True + True + True True @@ -54,8 +51,8 @@ _Cancel True - True - True + True + True True @@ -68,8 +65,8 @@ _Help True - True - True + True + True True @@ -83,47 +80,23 @@ False True - end + end 0 True - True + True True True True - True + True True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -135,43 +108,19 @@ True - False + False Position 3 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -183,12 +132,12 @@ True - False + False Customize 4 - False + False diff --git a/sfx2/inc/bitmaps.hlst b/sfx2/inc/bitmaps.hlst index 0484bb7e18e9..04169c38d2db 100644 --- a/sfx2/inc/bitmaps.hlst +++ b/sfx2/inc/bitmaps.hlst @@ -95,4 +95,6 @@ inline constexpr OUString BMP_MENU_RENAME = u"cmd/sc_editdoc.png"_ustr; inline constexpr OUString BMP_MENU_DELETE = u"cmd/sc_delete.png"_ustr; inline constexpr OUString BMP_MENU_EXPORT = u"cmd/sc_exportto.png"_ustr; +inline constexpr OUString BMP_DONATE = u"res/donate.png"_ustr; + /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ diff --git a/sfx2/sdi/sfx.sdi b/sfx2/sdi/sfx.sdi index 8d3298b541b4..9a341064c970 100644 --- a/sfx2/sdi/sfx.sdi +++ b/sfx2/sdi/sfx.sdi @@ -631,9 +631,9 @@ SfxVoidItem CloseDocs SID_CLOSEDOCS RecordPerSet; Asynchron; - AccelConfig = FALSE, - MenuConfig = FALSE, - ToolBoxConfig = FALSE, + AccelConfig = TRUE, + MenuConfig = TRUE, + ToolBoxConfig = TRUE, GroupId = SfxGroupId::Application; ] @@ -1158,7 +1158,7 @@ SfxVoidItem ShowStyle SID_STYLE_SHOW SfxVoidItem ExecuteSearch FID_SEARCH_NOW -(SvxSearchItem SearchItem SID_SEARCH_ITEM, SfxBoolItem Quiet SID_SEARCH_QUIET ) +(SvxSearchItem SearchItem SID_SEARCH_ITEM, SfxBoolItem Quiet SID_SEARCH_QUIET, SfxBoolItem UseAttrItemList SID_SEARCH_USE_ATTR_ITEM_LIST) [ AutoUpdate = FALSE, FastCall = FALSE, diff --git a/sfx2/source/appl/appdata.cxx b/sfx2/source/appl/appdata.cxx index 06d524c9330b..70be13869689 100644 --- a/sfx2/source/appl/appdata.cxx +++ b/sfx2/source/appl/appdata.cxx @@ -79,6 +79,7 @@ SfxAppData_Impl::SfxAppData_Impl() , pViewFrame( nullptr ) , bDowning( true ) , bInQuit( false ) + , bClosingDocs( false ) { pBasic = new BasicDLL; diff --git a/sfx2/source/appl/appserv.cxx b/sfx2/source/appl/appserv.cxx index a53cbd7ff9e1..737635ddf2c0 100644 --- a/sfx2/source/appl/appserv.cxx +++ b/sfx2/source/appl/appserv.cxx @@ -374,8 +374,8 @@ void SfxApplication::MiscExec_Impl( SfxRequest& rReq ) case SID_QUITAPP: case SID_LOGOUT: { - // protect against reentrant calls - if ( pImpl->bInQuit ) + // protect against reentrant calls and avoid closing the same files in parallel + if (pImpl->bInQuit || pImpl->bClosingDocs) return; if ( rReq.GetSlot() == SID_LOGOUT ) @@ -484,34 +484,94 @@ void SfxApplication::MiscExec_Impl( SfxRequest& rReq ) case SID_CLOSEDOCS: { + // protect against reentrant calls and avoid closing the same files in parallel + if (pImpl->bInQuit || pImpl->bClosingDocs) + return; - Reference < XDesktop2 > xDesktop = Desktop::create( ::comphelper::getProcessComponentContext() ); - Reference< XIndexAccess > xTasks = xDesktop->getFrames(); - if ( !xTasks.is() ) - break; + pImpl->bClosingDocs = true; + // closed all status for all visible frames + bool bClosedAll = true; - sal_Int32 n=0; - do + // Iterate over all documents and close them + for (SfxObjectShell *pObjSh = SfxObjectShell::GetFirst(); pObjSh;) { - if ( xTasks->getCount() <= n ) - break; - - Any aAny = xTasks->getByIndex(n); - Reference < XCloseable > xTask; - aAny >>= xTask; - try + SfxObjectShell* pNxtObjSh = SfxObjectShell::GetNext(*pObjSh); + // can close immediately + if (!pObjSh->IsModified() || pObjSh->isSaveLocked()) { - xTask->close(true); - n++; + // don't close the last remaining frame for close dispatch + if (pNxtObjSh || !bClosedAll) + pObjSh->DoClose(); } - catch( CloseVetoException& ) + else { + // skip invisible frames when asking user to close + SfxViewFrame* pFrame = SfxViewFrame::GetFirst(pObjSh); + if (pFrame && pFrame->GetWindow().IsReallyVisible()) + { + // asks user to close + if (pObjSh->PrepareClose()) + { + pObjSh->SetModified(false); + // get next pointer again after asking user since it can become invalid pointer from being manually closed by user + // don't close the last remaining frame for close dispatch + if ((pNxtObjSh = SfxObjectShell::GetNext(*pObjSh)) || !bClosedAll) + pObjSh->DoClose(); + } + // user disagrees to close + else + { + bClosedAll = false; + // get next pointer again after asking user since it can become invalid pointer from being manually closed by user + pNxtObjSh = SfxObjectShell::GetNext(*pObjSh); + } + } + } + pObjSh = pNxtObjSh; + } + + pImpl->bClosingDocs = false; + + // close dispatch status + bool bDispatchOk = true; + // open backing window + if (bClosedAll) + { + // don't use pViewFrame = SfxViewFrame::Current() as dispatch won't load sometimes + SfxObjectShell* pObjSh = SfxObjectShell::GetFirst(); + SfxViewFrame* pViewFrame = SfxViewFrame::GetFirst(pObjSh); + if (pViewFrame) + { + Reference xCurrentFrame = pViewFrame->GetFrame().GetFrameInterface(); + if (xCurrentFrame.is()) + { + uno::Reference xProvider(xCurrentFrame, uno::UNO_QUERY); + if (xProvider.is()) + { + uno::Reference xDispatcher + = frame::DispatchHelper::create(::comphelper::getProcessComponentContext()); + // use .uno:CloseDoc to be able to close windows of the same document + css::uno::Any aResult = + xDispatcher->executeDispatch(xProvider, + u".uno:CloseDoc"_ustr, + u"_self"_ustr, + 0, + uno::Sequence()); + css::frame::DispatchResultEvent aEvent; + bDispatchOk = (aResult >>= aEvent) && (aEvent.State == frame::DispatchResultState::SUCCESS); + } + } } } - while( true ); + // terminate the application if the dispatch fails or + // if there is no visible frame left after the command is run (e.g user manually closes the document again that was already cancelled for closing) + if (!bDispatchOk || (!bClosedAll && !SfxObjectShell::GetFirst())) + { + SfxRequest aReq(SID_QUITAPP, SfxCallMode::SLOT, GetPool()); + MiscExec_Impl(aReq); + } - bool bOk = ( n == 0); - rReq.SetReturnValue( SfxBoolItem( 0, bOk ) ); + rReq.SetReturnValue(SfxBoolItem(0, bDispatchOk)); bDone = true; break; } @@ -524,7 +584,7 @@ void SfxApplication::MiscExec_Impl( SfxRequest& rReq ) pObjSh = SfxObjectShell::GetNext( *pObjSh ) ) { SfxRequest aReq( SID_SAVEDOC, SfxCallMode::SLOT, pObjSh->GetPool() ); - if ( pObjSh->IsModified() && !pObjSh->isSaveLocked()) + if ( pObjSh->IsModified() && !pObjSh->isSaveLocked() ) { pObjSh->ExecuteSlot( aReq ); const SfxBoolItem* pItem(dynamic_cast(aReq.GetReturnValue().getItem())); @@ -1235,7 +1295,7 @@ void SfxApplication::MiscState_Impl(SfxItemSet &rSet) break; case SID_QUITAPP: { - if ( pImpl->nDocModalMode ) + if (pImpl->nDocModalMode || pImpl->bClosingDocs) rSet.DisableItem(nWhich); else rSet.Put(SfxStringItem(nWhich, SfxResId(STR_QUITAPP))); @@ -1287,8 +1347,15 @@ void SfxApplication::MiscState_Impl(SfxItemSet &rSet) case SID_CLOSEDOCS: { + if ( pImpl->nDocModalMode || pImpl->bInQuit ) + { + rSet.DisableItem(nWhich); + return; + } + Reference < XDesktop2 > xDesktop = Desktop::create( ::comphelper::getProcessComponentContext() ); Reference< XIndexAccess > xTasks = xDesktop->getFrames(); + if ( !xTasks.is() || !xTasks->getCount() ) rSet.DisableItem(nWhich); break; diff --git a/sfx2/source/dialog/backingwindow.cxx b/sfx2/source/dialog/backingwindow.cxx index e3761327ee60..4d166d61f424 100644 --- a/sfx2/source/dialog/backingwindow.cxx +++ b/sfx2/source/dialog/backingwindow.cxx @@ -56,6 +56,10 @@ #include #include +#include +#include +#include + using namespace ::com::sun::star; using namespace ::com::sun::star::beans; using namespace ::com::sun::star::frame; @@ -189,6 +193,13 @@ BackingWindow::BackingWindow(vcl::Window* i_pParent) mxHelpButton->set_label(mxAltHelpLabel->get_label()); mxHelpButton->connect_clicked(LINK(this, BackingWindow, ClickHelpHdl)); + // tdf#161796 make the extension button show the donation page + if (officecfg::Office::Common::Misc::ShowDonation::get()) + { + mxExtensionsButton->set_label(SfxResId(STR_DONATE_BUTTON)); + mxExtensionsButton->set_from_icon_name(BMP_DONATE); + } + mxDropTarget = mxAllRecentThumbnails->GetDropTarget(); try @@ -533,9 +544,15 @@ IMPL_LINK(BackingWindow, ExtLinkClickHdl, weld::Button&, rButton,void) try { - OUString sURL(officecfg::Office::Common::Menus::ExtensionsURL::get() + - "?LOvers=" + utl::ConfigManager::getProductVersion() + - "&LOlocale=" + LanguageTag(utl::ConfigManager::getUILocale()).getBcp47() ); + OUString sURL; + if (officecfg::Office::Common::Misc::ShowDonation::get()) + sURL = officecfg::Office::Common::Menus::DonationURL::get() + + "?BCP47=" + LanguageTag(utl::ConfigManager::getUILocale()).getBcp47() + + "&LOlang=" + LanguageTag(utl::ConfigManager::getUILocale()).getLanguage(); + else + sURL = officecfg::Office::Common::Menus::ExtensionsURL::get() + + "?LOvers=" + utl::ConfigManager::getProductVersion() + + "&LOlocale=" + LanguageTag(utl::ConfigManager::getUILocale()).getBcp47(); Reference const xSystemShellExecute( diff --git a/sfx2/source/dialog/infobar.cxx b/sfx2/source/dialog/infobar.cxx index 4e1fed849680..e69fe481bccb 100644 --- a/sfx2/source/dialog/infobar.cxx +++ b/sfx2/source/dialog/infobar.cxx @@ -42,8 +42,6 @@ namespace void GetInfoBarColors(InfobarType ibType, BColor& rBackgroundColor, BColor& rForegroundColor, BColor& rMessageColor) { - rMessageColor = basegfx::BColor(0.0, 0.0, 0.0); - const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings(); switch (ibType) @@ -51,18 +49,22 @@ void GetInfoBarColors(InfobarType ibType, BColor& rBackgroundColor, BColor& rFor case InfobarType::INFO: // blue; #004785/0,71,133; #BDE5F8/189,229,248 rBackgroundColor = basegfx::BColor(0.741, 0.898, 0.973); rForegroundColor = basegfx::BColor(0.0, 0.278, 0.522); + rMessageColor = basegfx::BColor(0.0, 0.278, 0.522); break; case InfobarType::SUCCESS: // green; #32550C/50,85,12; #DFF2BF/223,242,191 rBackgroundColor = basegfx::BColor(0.874, 0.949, 0.749); rForegroundColor = basegfx::BColor(0.196, 0.333, 0.047); + rMessageColor = basegfx::BColor(0.196, 0.333, 0.047); break; case InfobarType::WARNING: // orange; #704300/112,67,0; #FEEFB3/254,239,179 rBackgroundColor = rSettings.GetWarningColor().getBColor(); rForegroundColor = rSettings.GetWarningTextColor().getBColor(); + rMessageColor = rSettings.GetWarningTextColor().getBColor(); break; case InfobarType::DANGER: // red; #7A0006/122,0,6; #FFBABA/255,186,186 rBackgroundColor = rSettings.GetErrorColor().getBColor(); rForegroundColor = rSettings.GetErrorTextColor().getBColor(); + rMessageColor = rSettings.GetErrorTextColor().getBColor(); break; } diff --git a/sfx2/source/doc/objserv.cxx b/sfx2/source/doc/objserv.cxx index a7863609e617..428e4d2d9d0c 100644 --- a/sfx2/source/doc/objserv.cxx +++ b/sfx2/source/doc/objserv.cxx @@ -49,6 +49,7 @@ #include #include #include +#include #include #include @@ -1293,6 +1294,13 @@ void SfxObjectShell::ExecFile_Impl(SfxRequest &rReq) case SID_CLOSEDOC: { + // cancel requests during SfxApplication is closing or quitting. + SfxAppData_Impl* pAppData = SfxGetpApp()->Get_Impl(); + if (pAppData && (pAppData->bInQuit || pAppData->bClosingDocs)) + { + return; + } + // Evaluate Parameter const SfxBoolItem* pSaveItem = rReq.GetArg(SID_CLOSEDOC_SAVE); const SfxStringItem* pNameItem = rReq.GetArg(SID_CLOSEDOC_FILENAME); diff --git a/sfx2/source/inc/appdata.hxx b/sfx2/source/inc/appdata.hxx index 6362d05d093d..400dcae776d6 100644 --- a/sfx2/source/inc/appdata.hxx +++ b/sfx2/source/inc/appdata.hxx @@ -114,6 +114,7 @@ public: bool bDowning:1; // sal_True on Exit and afterwards bool bInQuit : 1; + bool bClosingDocs : 1; SfxAppData_Impl(); ~SfxAppData_Impl(); diff --git a/sfx2/source/sidebar/TabBar.cxx b/sfx2/source/sidebar/TabBar.cxx index 76669adc5798..184f42877667 100644 --- a/sfx2/source/sidebar/TabBar.cxx +++ b/sfx2/source/sidebar/TabBar.cxx @@ -337,6 +337,12 @@ void TabBar::UpdateFocusManager(FocusManager& rFocusManager) void TabBar::UpdateMenus() { + if (Application::GetToolkitName() == u"gtk4"_ustr) + { + SAL_WARN("sfx", "Skipping update of sidebar menus to avoid crash due to gtk4 menu brokenness."); + return; + } + for (int i = mxMainMenu->n_children() - 1; i >= 0; --i) { OUString sIdent = mxMainMenu->get_id(i); diff --git a/sfx2/uiconfig/ui/addtargetdialog.ui b/sfx2/uiconfig/ui/addtargetdialog.ui index 09c704779d17..c883fa9d90d7 100644 --- a/sfx2/uiconfig/ui/addtargetdialog.ui +++ b/sfx2/uiconfig/ui/addtargetdialog.ui @@ -1,35 +1,32 @@ - + - False - 6 + False + 6 Add Target True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False True True vertical 12 - False - end + False + end _OK True - True - True + True + True True @@ -42,8 +39,8 @@ _Cancel True - True - True + True + True True @@ -56,8 +53,8 @@ _Help True - True - True + True + True True @@ -71,98 +68,98 @@ False True - end + end 0 - + True - False - 6 - 12 + False + 6 + 12 True - False + False Name: - True + True - 0 - 0 + 0 + 0 True - True + True True - True + True True - 1 - 0 + 1 + 0 True - False + False Type: - True + True - 0 - 1 + 0 + 1 True - False + False Content: - True + True - 0 - 2 + 0 + 2 True - True + True True - True + True True - 1 - 2 + 1 + 2 True - False + False True 0 @@ -175,29 +172,29 @@ - 1 - 1 + 1 + 1 False - False + False Content: - True + True - 0 - 3 + 0 + 3 False - False + False True 0 @@ -213,8 +210,8 @@ - 1 - 3 + 1 + 3 @@ -227,16 +224,16 @@ True - False + False 12 Match case True - True - False - True - True + True + False + True + True False @@ -248,15 +245,15 @@ Whole words only True - True - False - True - True + True + False + True + True False True - end + end 1 diff --git a/sfx2/uiconfig/ui/alienwarndialog.ui b/sfx2/uiconfig/ui/alienwarndialog.ui index d142433c53f8..02570dfd1ed4 100644 --- a/sfx2/uiconfig/ui/alienwarndialog.ui +++ b/sfx2/uiconfig/ui/alienwarndialog.ui @@ -1,62 +1,62 @@ - + - False + False Confirm File Format False True - dialog - True - question + dialog + True + question This document may contain formatting or content that cannot be saved in the currently selected file format “%FORMATNAME”. - Use the default ODF file format to be sure that the document is saved correctly. + Use the default ODF file format to be sure that the document is saved correctly. - False + False vertical 12 - False + False Use %DEFAULTEXTENSION _Format True - True - True - True + True + True + True False True 0 - True + True _Use %FORMATNAME Format True - True - True - True - True - True + True + True + True + True + True False True 1 - True + True False True - end + end 0 @@ -64,10 +64,10 @@ _Ask when not saving in ODF or default format True - True - False - True - True + True + False + True + True False diff --git a/sfx2/uiconfig/ui/autoredactdialog.ui b/sfx2/uiconfig/ui/autoredactdialog.ui index b4eda210b86c..ed89df505fb5 100644 --- a/sfx2/uiconfig/ui/autoredactdialog.ui +++ b/sfx2/uiconfig/ui/autoredactdialog.ui @@ -1,5 +1,5 @@ - + @@ -19,27 +19,27 @@ - False - 6 + False + 6 Automatic Redaction True - dialog + dialog - False + False True True vertical 12 - False + False _Help True - True - True + True + True True @@ -53,8 +53,8 @@ _OK True - True - True + True + True True @@ -67,8 +67,8 @@ _Cancel True - True - True + True + True True @@ -81,37 +81,37 @@ False False - end + end 5 - + True - False + False True - 6 - 12 + 6 + 12 True - True + True True True - in + in True - True - True + True + True 5 - 5 + 5 True True liststore1 - 0 - False + 0 + False @@ -187,42 +187,42 @@ - 0 - 1 + 0 + 1 True - False + False start center 1 - 1 + 1 _Redaction Targets - True + True - 0 - 0 + 0 + 0 True - False + False vertical 6 - start + start Load Targets True - True - True + True + True False @@ -234,8 +234,8 @@ Save Targets True - True - True + True + True False @@ -247,21 +247,21 @@ True False - False + False True True 2 - True + True Add Target True - True - True + True + True False @@ -273,8 +273,8 @@ Edit Target True - True - True + True + True False @@ -286,8 +286,8 @@ Delete Target True - True - True + True + True False @@ -297,8 +297,8 @@ - 1 - 1 + 1 + 1 diff --git a/sfx2/uiconfig/ui/bookmarkdialog.ui b/sfx2/uiconfig/ui/bookmarkdialog.ui index e449a4726e45..f480b1f52ffa 100644 --- a/sfx2/uiconfig/ui/bookmarkdialog.ui +++ b/sfx2/uiconfig/ui/bookmarkdialog.ui @@ -135,4 +135,4 @@ help - \ No newline at end of file + diff --git a/sfx2/uiconfig/ui/bookmarkmenu.ui b/sfx2/uiconfig/ui/bookmarkmenu.ui index 529b134b0ee4..aab95a893d70 100644 --- a/sfx2/uiconfig/ui/bookmarkmenu.ui +++ b/sfx2/uiconfig/ui/bookmarkmenu.ui @@ -36,4 +36,4 @@ - \ No newline at end of file + diff --git a/sfx2/uiconfig/ui/charviewmenu.ui b/sfx2/uiconfig/ui/charviewmenu.ui index 714d33c6e606..f417d7633743 100644 --- a/sfx2/uiconfig/ui/charviewmenu.ui +++ b/sfx2/uiconfig/ui/charviewmenu.ui @@ -1,24 +1,24 @@ - + True - False + False True - False + False Remove - True + True True - False + False Clear All - True + True diff --git a/sfx2/uiconfig/ui/checkin.ui b/sfx2/uiconfig/ui/checkin.ui index fb0bf0ec8a6c..a322b6ac5113 100644 --- a/sfx2/uiconfig/ui/checkin.ui +++ b/sfx2/uiconfig/ui/checkin.ui @@ -1,37 +1,34 @@ - + - False - 6 + False + 6 Check-In False True - center-on-parent - 0 - 0 - dialog - - - + center-on-parent + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -44,8 +41,8 @@ _Cancel True - True - True + True + True True @@ -58,8 +55,8 @@ _Help True - True - True + True + True True @@ -73,67 +70,67 @@ False True - end + end 0 - + True - False + False True True - 6 + 6 New major version True - True - False - True - True + True + False + True + True - 0 - 2 + 0 + 2 True - False + False Version comment: - True + True 0 - 0 - 0 + 0 + 0 True - True + True True True - in + in - 300 - 150 + 300 + 150 True - True + True True True - word + word - 0 - 1 + 0 + 1 diff --git a/sfx2/uiconfig/ui/classificationbox.ui b/sfx2/uiconfig/ui/classificationbox.ui index 4441818c2dd6..9d6bbda4ad62 100644 --- a/sfx2/uiconfig/ui/classificationbox.ui +++ b/sfx2/uiconfig/ui/classificationbox.ui @@ -1,24 +1,24 @@ - + True - False + False vertical True - False + False 6 6 6 True - False - True - combobox + False + True + combobox False @@ -29,7 +29,7 @@ True - False + False True diff --git a/sfx2/uiconfig/ui/cmisinfopage.ui b/sfx2/uiconfig/ui/cmisinfopage.ui index b7a410804cba..75b2f2926a4a 100644 --- a/sfx2/uiconfig/ui/cmisinfopage.ui +++ b/sfx2/uiconfig/ui/cmisinfopage.ui @@ -1,32 +1,32 @@ - + True - False + False True True - 6 - 6 + 6 + 6 True - True + True True True - never - always - in + never + always + in True - False + False True - False + False True True vertical @@ -39,8 +39,8 @@ - 0 - 0 + 0 + 0 diff --git a/sfx2/uiconfig/ui/custominfopage.ui b/sfx2/uiconfig/ui/custominfopage.ui index 645db84af469..6a5a6fd31f58 100644 --- a/sfx2/uiconfig/ui/custominfopage.ui +++ b/sfx2/uiconfig/ui/custominfopage.ui @@ -1,23 +1,23 @@ - + - + True - False + False True True - 6 - 6 + 6 + 6 Add _Property True - True - True + True + True end - True + True Click to add a new row to the Properties list. @@ -25,20 +25,20 @@ - 0 - 2 + 0 + 2 True - False + False True 12 True - False + False Name 0 @@ -51,7 +51,7 @@ True - False + False Type 0 @@ -64,7 +64,7 @@ True - False + False Value 0 @@ -76,36 +76,36 @@ - 0 - 0 + 0 + 0 True - True + True True True - never - always - in + never + always + in True - False + False True True True - False + False vertical True - False + False start - 3 + 3 vertical 6 @@ -129,8 +129,8 @@ - 0 - 1 + 0 + 1 diff --git a/sfx2/uiconfig/ui/documentpropertiesdialog.ui b/sfx2/uiconfig/ui/documentpropertiesdialog.ui index 5b5c1a8e7ffb..5ce35fa601f8 100644 --- a/sfx2/uiconfig/ui/documentpropertiesdialog.ui +++ b/sfx2/uiconfig/ui/documentpropertiesdialog.ui @@ -1,33 +1,30 @@ - + - False - 6 + False + 6 Properties of “%1” True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _Reset True - True - True + True + True True @@ -40,10 +37,10 @@ _OK True - True - True - True - True + True + True + True + True True @@ -56,8 +53,8 @@ _Cancel True - True - True + True + True True @@ -70,8 +67,8 @@ _Help True - True - True + True + True True @@ -85,44 +82,20 @@ False True - end + end 0 True - True - True + True + True True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -131,42 +104,18 @@ True - False + False General - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -178,43 +127,19 @@ True - False + False Description 1 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -226,43 +151,19 @@ True - False + False Custom Properties 2 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -274,43 +175,19 @@ True - False + False CMIS Properties 3 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -322,12 +199,12 @@ True - False + False Security 4 - False + False diff --git a/sfx2/uiconfig/ui/editdocumentdialog.ui b/sfx2/uiconfig/ui/editdocumentdialog.ui index aa1cc1d2bd54..6e57e6c8f0b5 100644 --- a/sfx2/uiconfig/ui/editdocumentdialog.ui +++ b/sfx2/uiconfig/ui/editdocumentdialog.ui @@ -1,62 +1,62 @@ - + - False + False Confirm editing of document False True - dialog - True - question + dialog + True + question Are you sure you want to edit the document? - The original file can be signed without editing the document. Existing signatures on the document will be lost in case of saving an edited version. + The original file can be signed without editing the document. Existing signatures on the document will be lost in case of saving an edited version. - False + False vertical 12 - False + False Edit Document True - True - True - True - True - True + True + True + True + True + True False True 0 - True + True Cancel True - True - True - True + True + True + True False True 1 - True + True False True - end + end 0 diff --git a/sfx2/uiconfig/ui/editdurationdialog.ui b/sfx2/uiconfig/ui/editdurationdialog.ui index b6ebe0553d0e..6c8a8bb91ece 100644 --- a/sfx2/uiconfig/ui/editdurationdialog.ui +++ b/sfx2/uiconfig/ui/editdurationdialog.ui @@ -1,68 +1,68 @@ - + 2147483647 - 1 - 10 + 1 + 10 2147483647 - 1 - 10 + 1 + 10 2147483647 - 1 - 10 + 1 + 10 2147483647 - 1 - 10 + 1 + 10 2147483647 - 1 - 10 + 1 + 10 2147483647 - 1 - 10 + 1 + 10 2147483647 - 1 - 10 + 1 + 10 - False - 6 + False + 6 Edit Duration False True - 0 - 0 - dialog + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -75,8 +75,8 @@ _Cancel True - True - True + True + True True @@ -89,8 +89,8 @@ _Help True - True - True + True + True True @@ -104,231 +104,231 @@ False True - end + end 0 True - False + False True True - 0 - none + 0 + none - + True - False - 6 - 12 + False 12 6 True True + 6 + 12 _Negative True - True - False - True - True + True + False + True + True - 0 - 0 + 0 + 0 2 True - False + False _Years: - True - years + True + years 1 - 0 - 1 + 0 + 1 True - False + False _Months: - True - months + True + months 1 - 0 - 2 + 0 + 2 True - False + False _Days: - True - days + True + days 1 - 0 - 3 + 0 + 3 True - False + False H_ours: - True - hours + True + hours 1 - 0 - 4 + 0 + 4 True - False + False Min_utes: - True - minutes + True + minutes 1 - 0 - 5 + 0 + 5 True - False + False _Seconds: - True - seconds + True + seconds 1 - 0 - 6 + 0 + 6 True - False + False Millise_conds: - True - milliseconds + True + milliseconds 1 - 0 - 7 + 0 + 7 True - True - True + True + True True adjustment1 - 1 - 1 + 1 + 1 True - True - True + True + True True adjustment2 - 1 - 2 + 1 + 2 True - True - True + True + True True adjustment3 - 1 - 3 + 1 + 3 True - True - True + True + True True adjustment4 - 1 - 4 + 1 + 4 True - True - True + True + True True adjustment5 - 1 - 5 + 1 + 5 True - True - True + True + True True adjustment6 - 1 - 6 + 1 + 6 True - True - True + True + True True adjustment7 - 1 - 7 + 1 + 7 @@ -336,7 +336,7 @@ True - False + False Duration @@ -357,8 +357,5 @@ cancel help - - - diff --git a/sfx2/uiconfig/ui/errorfindemaildialog.ui b/sfx2/uiconfig/ui/errorfindemaildialog.ui index fb7b20c4d2d7..a4bc7fb674ca 100644 --- a/sfx2/uiconfig/ui/errorfindemaildialog.ui +++ b/sfx2/uiconfig/ui/errorfindemaildialog.ui @@ -32,4 +32,4 @@ - \ No newline at end of file + diff --git a/sfx2/uiconfig/ui/extrabutton.ui b/sfx2/uiconfig/ui/extrabutton.ui index cec9c2b676b3..179e67cdbe0f 100644 --- a/sfx2/uiconfig/ui/extrabutton.ui +++ b/sfx2/uiconfig/ui/extrabutton.ui @@ -1,18 +1,18 @@ - + True - False + False vertical True - True - True - True - True + True + True + True + True True diff --git a/sfx2/uiconfig/ui/floatingrecord.ui b/sfx2/uiconfig/ui/floatingrecord.ui index 570fba2a9b41..805cd33afe66 100644 --- a/sfx2/uiconfig/ui/floatingrecord.ui +++ b/sfx2/uiconfig/ui/floatingrecord.ui @@ -1,26 +1,23 @@ - + - False + False Record Macro - 0 - 0 - utility + 0 + 0 + utility False - - - - False + False vertical - False - True - end + False + True + end @@ -34,17 +31,18 @@ True - True + True True True - text - False + text + False True + False True True - True + True True diff --git a/sfx2/uiconfig/ui/helpbookmarkpage.ui b/sfx2/uiconfig/ui/helpbookmarkpage.ui index d7219ec5443d..465120d25352 100644 --- a/sfx2/uiconfig/ui/helpbookmarkpage.ui +++ b/sfx2/uiconfig/ui/helpbookmarkpage.ui @@ -1,5 +1,5 @@ - + @@ -12,51 +12,51 @@ True - False + False True True - 6 + 6 vertical - + True - False + False True True - 6 + 6 True - False + False _Bookmarks - True - bookmarks + True + bookmarks 0 - 0 - 0 + 0 + 0 True - True + True True True - in + in True - True + True True True liststore2 - False - False - 0 - False + False + False + 0 + False @@ -74,22 +74,22 @@ - 0 - 1 + 0 + 1 _Display True - True - True + True + True end - True + True - 0 - 2 + 0 + 2 diff --git a/sfx2/uiconfig/ui/helpcontentpage.ui b/sfx2/uiconfig/ui/helpcontentpage.ui index 42012f9bc093..97646c191355 100644 --- a/sfx2/uiconfig/ui/helpcontentpage.ui +++ b/sfx2/uiconfig/ui/helpcontentpage.ui @@ -1,5 +1,5 @@ - + @@ -15,28 +15,28 @@ True - False + False True True - 6 + 6 vertical True - False + False True True - in + in True - True + True True True liststore2 - False - False - 0 + False + False + 0 @@ -63,8 +63,8 @@ - 0 - 0 + 0 + 0 diff --git a/sfx2/uiconfig/ui/helpcontrol.ui b/sfx2/uiconfig/ui/helpcontrol.ui index 8d30bdfc9b35..8570d96996d1 100644 --- a/sfx2/uiconfig/ui/helpcontrol.ui +++ b/sfx2/uiconfig/ui/helpcontrol.ui @@ -1,25 +1,25 @@ - + True - False + False True True True - False + False True True - 6 + 6 vertical 6 True - False + False False @@ -30,90 +30,42 @@ True - True + True True True - True + True True - False + False True True - - - - - - - - - - - - - - - - - - - - - - - - True - False + False Contents - False + False True - False + False True True - - - - - - - - - - - - - - - - - - - - - - - - 1 @@ -122,48 +74,24 @@ True - False + False Index 1 - False + False True - False + False True True - - - - - - - - - - - - - - - - - - - - - - - - 2 @@ -172,48 +100,24 @@ True - False + False Find 2 - False + False True - False + False True True - - - - - - - - - - - - - - - - - - - - - - - - 3 @@ -222,12 +126,12 @@ True - False + False Bookmarks 3 - False + False diff --git a/sfx2/uiconfig/ui/helpindexpage.ui b/sfx2/uiconfig/ui/helpindexpage.ui index 8850f8ccfacf..fbab8d8cf0ef 100644 --- a/sfx2/uiconfig/ui/helpindexpage.ui +++ b/sfx2/uiconfig/ui/helpindexpage.ui @@ -1,5 +1,5 @@ - + @@ -12,67 +12,67 @@ True - False + False True True - 6 + 6 vertical - + True - False + False True True - 6 + 6 _Display True - True - True + True + True end - True + True - 0 - 1 + 0 + 1 True - False + False True True - 0 - none + 0 + none - + True - False - True - 3 + False 6 + True + 3 True - True + True True True - in + in True - True + True True True liststore2 - False - False - 0 - False + False + False + 0 + False @@ -90,21 +90,21 @@ - 0 - 1 + 0 + 1 True - True + True True + True True - True - 0 - 0 + 0 + 0 @@ -112,16 +112,16 @@ True - False + False _Search Term - True + True 0 - 0 - 0 + 0 + 0 diff --git a/sfx2/uiconfig/ui/helpsearchpage.ui b/sfx2/uiconfig/ui/helpsearchpage.ui index 664bda924524..ac8f4ec8ef6d 100644 --- a/sfx2/uiconfig/ui/helpsearchpage.ui +++ b/sfx2/uiconfig/ui/helpsearchpage.ui @@ -1,5 +1,5 @@ - + @@ -12,65 +12,65 @@ True - False + False True True - 6 + 6 vertical - + True - False + False True True - 6 + 6 _Display True - True - True + True + True end - True + True - 0 - 5 + 0 + 5 True - False + False _Search term - True - search + True + search 0 - 0 - 0 + 0 + 0 True - True + True True True - in + in True - True + True True True liststore2 - False - False - 0 - False + False + False + 0 + False @@ -88,80 +88,80 @@ - 0 - 4 + 0 + 4 - + True - False + False True - 12 + 12 True - False + False True - True + True + True True - True - 0 - 0 + 0 + 0 _Find True - True - True - True + True + True + True - 1 - 0 + 1 + 0 - 0 - 1 + 0 + 1 _Complete words only True - True - False - True - True + True + False + True + True - 0 - 2 + 0 + 2 Find in _headings only True - True - False - True - True + True + False + True + True - 0 - 3 + 0 + 3 diff --git a/sfx2/uiconfig/ui/helpwindow.ui b/sfx2/uiconfig/ui/helpwindow.ui index 6241c287c166..31692552b468 100644 --- a/sfx2/uiconfig/ui/helpwindow.ui +++ b/sfx2/uiconfig/ui/helpwindow.ui @@ -1,17 +1,17 @@ - + True - False + False True True - True + True True - False + False True True vertical @@ -27,7 +27,7 @@ True - False + False True True vertical @@ -35,18 +35,19 @@ True - False + False True 12 True - True - icons + True + icons True - sfx2/res/indexon_small.png + False + sfx2/res/indexon_small.png False @@ -56,7 +57,7 @@ True - False + False False @@ -66,8 +67,9 @@ True - Previous Page - res/sc06301.png + False + Previous Page + res/sc06301.png False @@ -77,8 +79,9 @@ True - Next Page - res/sc06300.png + False + Next Page + res/sc06300.png False @@ -88,8 +91,9 @@ True - First Page - res/sc06303.png + False + First Page + res/sc06303.png False @@ -99,7 +103,7 @@ True - False + False False @@ -109,8 +113,9 @@ True - Print - res/sc05504.png + False + Print + res/sc05504.png False @@ -120,8 +125,9 @@ True - Add to Bookmarks - sfx2/res/favourite.png + False + Add to Bookmarks + sfx2/res/favourite.png False @@ -131,8 +137,9 @@ True - Find on this Page - sfx2/res/sc05961.png + False + Find on this Page + sfx2/res/sc05961.png False @@ -148,16 +155,16 @@ - True - False - True - True - True + True + False + True + True + True False True - end + end 1 @@ -171,7 +178,7 @@ True - False + False True True vertical @@ -194,6 +201,6 @@ True - False + False diff --git a/sfx2/uiconfig/ui/infobar.ui b/sfx2/uiconfig/ui/infobar.ui index a7cf21662096..0caeecd2a513 100644 --- a/sfx2/uiconfig/ui/infobar.ui +++ b/sfx2/uiconfig/ui/infobar.ui @@ -1,44 +1,44 @@ - + True - False + False True True vertical True - True + True True True - never - never - in + never + never + in True - False + False - + True - False + False True - 2 - 6 + 2 + 6 True - False + False start 3 True - False + False center 6 @@ -53,17 +53,18 @@ - True - True + True + True center - icons - False + icons + False 1 True - Close Infobar - window-close-symbolic + False + Close Infobar + window-close-symbolic False @@ -82,20 +83,20 @@ - 2 - 0 + 2 + 0 True - False + False start 6 True - False + False center missing-image @@ -107,8 +108,8 @@ - False - True + False + True center True label @@ -131,38 +132,38 @@ - 0 - 0 + 0 + 0 - 60 - 6 + 60 + 6 True - True + True True True - never - never + never + never - 60 - 6 + 60 + 6 True - True + True True True False - word-char - False - False + word-char + False + False - 1 - 0 + 1 + 0 diff --git a/sfx2/uiconfig/ui/inputdialog.ui b/sfx2/uiconfig/ui/inputdialog.ui index 9d8680fd98ac..8bee2dd5cd93 100644 --- a/sfx2/uiconfig/ui/inputdialog.ui +++ b/sfx2/uiconfig/ui/inputdialog.ui @@ -1,29 +1,29 @@ - + - False - 6 + False + 6 True - 0 - 0 - dialog + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _Help True - True - True + True + True True @@ -37,10 +37,10 @@ _OK True - True - True - True - True + True + True + True + True True @@ -53,8 +53,8 @@ _Cancel True - True - True + True + True True @@ -67,44 +67,44 @@ False True - end + end 0 - + True - False + False start True True - 6 + 6 True - False + False Height: - True - entry + True + entry 0 - 0 - 0 + 0 + 0 True - True + True True + True True - True - 0 - 1 + 0 + 1 @@ -121,8 +121,5 @@ ok cancel - - - diff --git a/sfx2/uiconfig/ui/licensedialog.ui b/sfx2/uiconfig/ui/licensedialog.ui index ee82f6968513..004f029b9132 100644 --- a/sfx2/uiconfig/ui/licensedialog.ui +++ b/sfx2/uiconfig/ui/licensedialog.ui @@ -1,33 +1,33 @@ - + - False - 6 + False + 6 Licensing and Legal information False True - 0 - 0 - dialog + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _Show License True - True - True - True - True + True + True + True + True False @@ -40,11 +40,11 @@ _Close True - True - True - True - True - True + True + True + True + True + True True @@ -57,14 +57,14 @@ False True - end + end 0 True - False + False %PRODUCTNAME is made available subject to the terms of the Mozilla Public License, v. 2.0. A copy of the MPL can be obtained at http://mozilla.org/MPL/2.0/. Third Party Code Additional copyright notices and license terms applicable to portions of the Software are set forth in the LICENSE.html file; choose Show License to see exact details in English. @@ -75,7 +75,7 @@ Copyright © 2000–2024 LibreOffice contributors. All rights reserved. This product was created by %OOOVENDOR, based on OpenOffice.org, which is Copyright 2000, 2011 Oracle and/or its affiliates. %OOOVENDOR acknowledges all community members, please see http://www.libreoffice.org/ for more details. True - 80 + 80 0 0 @@ -91,8 +91,5 @@ This product was created by %OOOVENDOR, based on OpenOffice.org, which is Copyri ok close - - - diff --git a/sfx2/uiconfig/ui/linkeditdialog.ui b/sfx2/uiconfig/ui/linkeditdialog.ui index 0fbe755ffc6d..c5bd365d8b67 100644 --- a/sfx2/uiconfig/ui/linkeditdialog.ui +++ b/sfx2/uiconfig/ui/linkeditdialog.ui @@ -1,35 +1,32 @@ - + - False - 6 + False + 6 Modify DDE Link True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -42,8 +39,8 @@ _Cancel True - True - True + True + True True @@ -56,8 +53,8 @@ _Help True - True - True + True + True True @@ -71,78 +68,78 @@ False True - end + end 0 True - False + False True True - 0 - none + 0 + none - + True - False - True - True - 6 - 12 + False 12 6 + True + True + 6 + 12 True - False + False start _Application: - True - app + True + app - 0 - 0 + 0 + 0 True - False + False start _File: - True - file + True + file - 0 - 1 + 0 + 1 True - False + False start _Category: - True - category + True + category - 0 - 2 + 0 + 2 True - True + True True + True True - True Lists the application that last saved the source file. The office suite applications have the server name soffice. @@ -150,17 +147,17 @@ - 1 - 0 + 1 + 0 True - True + True True + True True - True Path to the source file. Relative paths must be expressed by full URI, for example, with file://. @@ -168,17 +165,17 @@ - 1 - 1 + 1 + 1 True - True + True True + True True - True Lists the section or object that the link refers to in the source file. If you want, you can enter a new section or object here. @@ -186,8 +183,8 @@ - 1 - 2 + 1 + 2 @@ -195,7 +192,7 @@ True - False + False Modify Link diff --git a/sfx2/uiconfig/ui/loadtemplatedialog.ui b/sfx2/uiconfig/ui/loadtemplatedialog.ui index 36ed46a32a2f..e9470430188d 100644 --- a/sfx2/uiconfig/ui/loadtemplatedialog.ui +++ b/sfx2/uiconfig/ui/loadtemplatedialog.ui @@ -1,5 +1,5 @@ - + @@ -19,30 +19,30 @@ - False - 6 + False + 6 New True - dialog + dialog - False + False True True vertical 12 - False - end + False + end From File... - True - True - True - True - Copy styles from selected external document to current document. + True + True + True + Copy styles from selected external document to current document. + True Locate the file containing the styles that you want to load, and then click Open. @@ -59,9 +59,9 @@ _Cancel True - True - True - True + True + True + True True @@ -74,10 +74,10 @@ _OK True - True - True - True - True + True + True + True + True True @@ -90,9 +90,9 @@ _Help True - True - True - True + True + True + True True @@ -106,47 +106,47 @@ False True - end + end 0 - + True - False + False True True - 6 - 12 - True + 6 + 12 + True True - False + False True True - 0 - none + 0 + none True - True - True - True - in + True 12 6 + True + True + in True - True + True True liststore1 - False - False - 0 - False + False + False + 0 + False @@ -172,7 +172,7 @@ True - False + False Categories @@ -181,37 +181,37 @@ - 0 - 0 + 0 + 0 True - False + False True True - 0 - none + 0 + none True - True - True - True - in + True 12 6 + True + True + in True - True + True True liststore2 - False - False - 0 - False + False + False + 0 + False @@ -237,37 +237,37 @@ True - False + False + Templates in the selected category Templates - Templates in the selected category - 1 - 0 + 1 + 0 - + True - False - 6 - 12 - True + False + 6 + 12 + True _Paragraph and Character - True - False - True - True - Copy paragraph and character styles to current document. - True + True + False + True + Copy paragraph and character styles to current document. + True + True Loads the paragraph and the character styles from the selected document into the current document. @@ -275,19 +275,19 @@ - 0 - 0 + 0 + 0 _Frame - True - False - True - True - Copy frame styles to current document. - True + True + False + True + Copy frame styles to current document. + True + True Loads the frame styles from the selected document into the current document. @@ -295,19 +295,19 @@ - 1 - 0 + 1 + 0 Pa_ge - True - False - True - True - Copy page styles to current document. - True + True + False + True + Copy page styles to current document. + True + True Loads the page styles from the selected document into the current document. @@ -315,19 +315,19 @@ - 2 - 0 + 2 + 0 _List - True - False - True - True - Copy list styles to current document. - True + True + False + True + Copy list styles to current document. + True + True Loads the list styles from the selected document into the current document. @@ -335,19 +335,19 @@ - 0 - 1 + 0 + 1 _Overwrite - True - False - True - True - True - Overwrite styles with same name + True + False + True + Overwrite styles with same name + True + True Replaces styles in the current document that have the same name as the styles you are loading. @@ -355,8 +355,8 @@ - 1 - 1 + 1 + 1 @@ -364,44 +364,44 @@ - 0 - 1 + 0 + 1 2 - False - True + False + True Load Styles from Template - 0 - 3 + 0 + 3 2 True - True - True + True + True True - False - 6 + False + 6 - False - True + False + True start start - 0 - 0 + 0 + 0 @@ -409,9 +409,9 @@ True - False + False Pre_view - True + True @@ -421,8 +421,8 @@ - 0 - 2 + 0 + 2 2 @@ -441,9 +441,6 @@ ok help - - - Imports formatting styles from another document or template into the current document. diff --git a/sfx2/uiconfig/ui/newstyle.ui b/sfx2/uiconfig/ui/newstyle.ui index 91ccd6174610..cabd281b8b97 100644 --- a/sfx2/uiconfig/ui/newstyle.ui +++ b/sfx2/uiconfig/ui/newstyle.ui @@ -1,5 +1,5 @@ - + @@ -11,36 +11,33 @@ - False - 6 + False + 6 New Style from Selection True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False True True vertical 12 - False - end + False + end _OK True False - True - True - True - True + True + True + True + True True @@ -53,8 +50,8 @@ _Cancel True - True - True + True + True True @@ -67,8 +64,8 @@ _Help True - True - True + True + True True @@ -82,46 +79,46 @@ False True - end + end 0 True - False + False True True - 0 - none + 0 + none - + True - False - True - True - 3 + False 12 6 + True + True + 3 True - True + True True True - in + in True - True + True True True liststore1 - False - False - 0 - False + False + False + 0 + False @@ -144,16 +141,16 @@ - 0 - 2 + 0 + 2 True - True + True True - True + True True @@ -162,24 +159,24 @@ - 0 - 0 + 0 + 0 True - False + False + Custom styles for current document styles 0 - Custom styles for current document - 0 - 1 + 0 + 1 @@ -187,7 +184,7 @@ True - False + False Enter new style name: diff --git a/sfx2/uiconfig/ui/notebookbar.ui b/sfx2/uiconfig/ui/notebookbar.ui index cc8656720b06..8809cf58ed89 100644 --- a/sfx2/uiconfig/ui/notebookbar.ui +++ b/sfx2/uiconfig/ui/notebookbar.ui @@ -1,16 +1,16 @@ - + True - False + False True - False + False vertical @@ -87,8 +87,8 @@ - 0 - 0 + 0 + 0 diff --git a/sfx2/uiconfig/ui/notebookbarpopup.ui b/sfx2/uiconfig/ui/notebookbarpopup.ui index 297c5093d5fd..5e86e0daff06 100644 --- a/sfx2/uiconfig/ui/notebookbarpopup.ui +++ b/sfx2/uiconfig/ui/notebookbarpopup.ui @@ -1,20 +1,20 @@ - + - False + False True True - 4 + 4 False - True - popup-menu + True + popup-menu False True - False + False 6 True True diff --git a/sfx2/uiconfig/ui/printeroptionsdialog.ui b/sfx2/uiconfig/ui/printeroptionsdialog.ui index 2176e68a89c0..8f85cda1aebb 100644 --- a/sfx2/uiconfig/ui/printeroptionsdialog.ui +++ b/sfx2/uiconfig/ui/printeroptionsdialog.ui @@ -1,33 +1,33 @@ - + - False - 6 + False + 6 Printer Options False True - 0 - 0 - dialog + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -40,9 +40,9 @@ _Cancel True - True - True - True + True + True + True True @@ -55,8 +55,8 @@ _Help True - True - True + True + True True @@ -70,7 +70,7 @@ False True - end + end 0 @@ -84,8 +84,5 @@ cancel help - - - diff --git a/sfx2/uiconfig/ui/querysavedialog.ui b/sfx2/uiconfig/ui/querysavedialog.ui index 4e78257e553c..4eeefe6c38b0 100644 --- a/sfx2/uiconfig/ui/querysavedialog.ui +++ b/sfx2/uiconfig/ui/querysavedialog.ui @@ -1,32 +1,32 @@ - + - False + False Save Document? False True - dialog - True - warning + dialog + True + warning Save changes to document “$(DOC)” before closing? - Your changes will be lost if you don’t save them. + Your changes will be lost if you don’t save them. - False + False vertical 12 - False + False Do_n’t Save True - True - True - True + True + True + True @@ -41,8 +41,8 @@ _Cancel True - True - True + True + True True @@ -55,11 +55,11 @@ _Save True - True - True - True - True - True + True + True + True + True + True False @@ -71,7 +71,7 @@ False True - end + end 0 diff --git a/sfx2/uiconfig/ui/safemodequerydialog.ui b/sfx2/uiconfig/ui/safemodequerydialog.ui index 774c380848a3..8f76f1a58de2 100644 --- a/sfx2/uiconfig/ui/safemodequerydialog.ui +++ b/sfx2/uiconfig/ui/safemodequerydialog.ui @@ -1,33 +1,33 @@ - + - False + False Enter Safe Mode False True - dialog - question + dialog + question Are you sure you want to restart %PRODUCTNAME and enter safe mode? - False + False vertical 2 - False + False True _Cancel True - True - True - True - True - True + True + True + True + True + True False @@ -39,9 +39,9 @@ _Restart True - True - True - True + True + True + True False @@ -62,8 +62,5 @@ cancel ok - - - diff --git a/sfx2/uiconfig/ui/saveastemplatedlg.ui b/sfx2/uiconfig/ui/saveastemplatedlg.ui index dc4d02404d3d..ae0d45567af3 100644 --- a/sfx2/uiconfig/ui/saveastemplatedlg.ui +++ b/sfx2/uiconfig/ui/saveastemplatedlg.ui @@ -1,5 +1,5 @@ - + @@ -9,28 +9,28 @@ - False - 6 + False + 6 Save As Template True - 0 - 0 - normal + 0 + 0 + normal - False + False vertical 2 - False - end + False + end _Help True - True - True + True + True True @@ -44,10 +44,10 @@ _OK True - True - True - True - True + True + True + True + True True @@ -60,8 +60,8 @@ _Cancel True - True - True + True + True True @@ -74,35 +74,35 @@ False True - end + end 1 - + True - False - 6 + False + 6 True True - 12 - 12 + 12 + 12 True - False + False True vertical 6 True - False + False + Enter a name for the template. Enter Template _Name: - Enter a name for the template. - True - name_entry + True + name_entry 0 @@ -116,10 +116,10 @@ - 300 + 300 True - True - True + True + True True @@ -135,14 +135,14 @@ - 0 - 0 + 0 + 0 True - False + False True True vertical @@ -150,11 +150,11 @@ True - False + False + Save template in selected category. Select Template _Category: - Save template in selected category. - True - categorylb + True + categorylb 0 @@ -169,22 +169,22 @@ True - True + True True True - in + in - 146 + 146 True - True + True True True categorylist - False - False - 0 - False + False + False + 0 + False @@ -214,18 +214,18 @@ - 0 - 1 + 0 + 1 _Set as default template True - True - False - True - True + True + False + True + True The new template will be used as the default template. @@ -233,8 +233,8 @@ - 0 - 2 + 0 + 2 @@ -251,9 +251,6 @@ ok cancel - - - Saves the current document as a template. diff --git a/sfx2/uiconfig/ui/searchdialog.ui b/sfx2/uiconfig/ui/searchdialog.ui index a99b20e768a5..60bf2b3da366 100644 --- a/sfx2/uiconfig/ui/searchdialog.ui +++ b/sfx2/uiconfig/ui/searchdialog.ui @@ -1,35 +1,32 @@ - + - False - 6 + False + 6 Find on this Page - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _Find True - True - True - True - True - True + True + True + True + True + True False @@ -41,8 +38,8 @@ _Close True - True - True + True + True True @@ -55,55 +52,55 @@ False True - end + end 0 True - False + False True vertical 12 - + True - False - 6 + False + 6 True - False + False center True - True + True - True + True + True True - True - 0 - 1 + 0 + 1 True - False + False _Search for: - True - searchterm + True + searchterm 0 - 0 - 0 + 0 + 0 @@ -114,66 +111,66 @@ - + True - False - 6 - 12 + False + 6 + 12 Ma_tch case True - True - False - True - True + True + False + True + True - 0 - 0 + 0 + 0 Whole wor_ds only True - True - False - True - True + True + False + True + True - 1 - 0 + 1 + 0 Bac_kwards True - True - False - True - True + True + False + True + True - 1 - 1 + 1 + 1 Wrap _around True - True - False - True - True + True + False + True + True - 0 - 1 + 0 + 1 diff --git a/sfx2/uiconfig/ui/singletabdialog.ui b/sfx2/uiconfig/ui/singletabdialog.ui index c1ddd4f3190d..65d33288c226 100644 --- a/sfx2/uiconfig/ui/singletabdialog.ui +++ b/sfx2/uiconfig/ui/singletabdialog.ui @@ -1,33 +1,30 @@ - + - False - 6 + False + 6 False True - dialog - - - + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -40,8 +37,8 @@ _Cancel True - True - True + True + True True @@ -54,8 +51,8 @@ _Help True - True - True + True + True True @@ -69,7 +66,7 @@ False True - end + end 0 diff --git a/sfx2/uiconfig/ui/stylecontextmenu.ui b/sfx2/uiconfig/ui/stylecontextmenu.ui index 4dfb520ecf95..d8c1e2ee45c4 100644 --- a/sfx2/uiconfig/ui/stylecontextmenu.ui +++ b/sfx2/uiconfig/ui/stylecontextmenu.ui @@ -1,48 +1,48 @@ - + True - False + False True - False + False New... - True + True True - False + False Edit Style... - True + True True - False + False Hide - True + True True - False + False Show - True + True True - False + False Delete... - True + True diff --git a/sfx2/uiconfig/ui/templatecategorydlg.ui b/sfx2/uiconfig/ui/templatecategorydlg.ui index ecf5bd92ce6f..cdae9a2082d8 100644 --- a/sfx2/uiconfig/ui/templatecategorydlg.ui +++ b/sfx2/uiconfig/ui/templatecategorydlg.ui @@ -1,5 +1,5 @@ - + @@ -11,31 +11,28 @@ - False - 6 + False + 6 Select Category True - 0 - 0 - normal - - - + 0 + 0 + normal - False + False vertical 2 - False - end + False + end _Help True - True - True + True + True True @@ -49,10 +46,10 @@ _OK True - True - True - True - True + True + True + True + True True @@ -65,8 +62,8 @@ _Cancel True - True - True + True + True True @@ -79,24 +76,24 @@ False True - end + end 1 - + True - False - 6 + False + 6 True True - 12 - 12 + 12 + 12 True - False + False True True vertical @@ -104,10 +101,10 @@ True - False + False Select from Existing Category - True - categorylb + True + categorylb 0 @@ -122,20 +119,20 @@ True - True + True True True - in + in True - True + True True categorylist - False - False - 0 - False + False + False + 0 + False @@ -160,24 +157,24 @@ - 0 - 0 + 0 + 0 True - False + False True vertical 6 True - False + False or Create a New Category - True - category_entry + True + category_entry 0 @@ -192,10 +189,10 @@ True - True + True True + True True - True False @@ -205,8 +202,8 @@ - 0 - 1 + 0 + 1 diff --git a/sfx2/uiconfig/ui/urlbox.ui b/sfx2/uiconfig/ui/urlbox.ui index 29fe22b9f15a..05dd1acf0bfe 100644 --- a/sfx2/uiconfig/ui/urlbox.ui +++ b/sfx2/uiconfig/ui/urlbox.ui @@ -1,22 +1,22 @@ - + True - False + False True 6 True - False + False True - True + True + True True - True diff --git a/sfx2/uiconfig/ui/versioncommentdialog.ui b/sfx2/uiconfig/ui/versioncommentdialog.ui index 42184735715a..42053332bc3f 100644 --- a/sfx2/uiconfig/ui/versioncommentdialog.ui +++ b/sfx2/uiconfig/ui/versioncommentdialog.ui @@ -1,33 +1,33 @@ - + - False - 6 + False + 6 Insert Version Comment False True - 0 - 0 - dialog + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -40,9 +40,9 @@ _Close True - True - True - True + True + True + True True @@ -55,8 +55,8 @@ _Cancel True - True - True + True + True True @@ -69,8 +69,8 @@ _Help True - True - True + True + True True @@ -84,61 +84,61 @@ False True - end + end 0 - + True - False + False True True - 6 + 6 True - False + False Date and time: 0 - 0 - 0 + 0 + 0 True - False + False Saved by: 0 - 0 - 1 + 0 + 1 True - True + True True True - in + in True - True + True True True - 0 - 2 + 0 + 2 @@ -156,9 +156,6 @@ cancel help - - - Enter a comment here when you are saving a new version. If you clicked Show to open this dialog, you cannot edit the comment. diff --git a/sfx2/uiconfig/ui/versionscmis.ui b/sfx2/uiconfig/ui/versionscmis.ui index 16eff4f32926..277a07423ae9 100644 --- a/sfx2/uiconfig/ui/versionscmis.ui +++ b/sfx2/uiconfig/ui/versionscmis.ui @@ -1,5 +1,5 @@ - + @@ -15,29 +15,26 @@ - False - 6 + False + 6 True - dialog - - - + dialog - False + False vertical 12 - False - end + False + end _Delete True - True - True - True + True + True + True False @@ -49,9 +46,9 @@ _Compare True - True - True - True + True + True + True False @@ -63,9 +60,9 @@ _Show... True - True - True - True + True + True + True False @@ -77,8 +74,8 @@ _Close True - True - True + True + True True @@ -91,9 +88,9 @@ _Open True - True - True - True + True + True + True False @@ -105,8 +102,8 @@ _Help True - True - True + True + True True @@ -120,7 +117,7 @@ False True - end + end 0 @@ -128,45 +125,44 @@ True - False + False True True - 12 + 12 True - False + False True True - 0 - none + 0 + none True - False - True - True + False 12 6 + True + True True - True + True True True - in + in True - True - True + True + True True True liststore3 - True - 0 - False + 0 + False @@ -213,8 +209,8 @@ - 0 - 0 + 0 + 0 @@ -222,7 +218,7 @@ True - False + False Existing Versions @@ -231,8 +227,8 @@ - 0 - 0 + 0 + 0 diff --git a/sfx2/uiconfig/ui/versionsofdialog.ui b/sfx2/uiconfig/ui/versionsofdialog.ui index c217cbf59138..eb565de84cce 100644 --- a/sfx2/uiconfig/ui/versionsofdialog.ui +++ b/sfx2/uiconfig/ui/versionsofdialog.ui @@ -1,5 +1,5 @@ - + @@ -15,25 +15,25 @@ - False - 6 + False + 6 True - dialog + dialog - False + False vertical 12 - False - end + False + end CMIS True - True - True + True + True False @@ -45,9 +45,9 @@ _Delete True - True - True - True + True + True + True Deletes the selected version. @@ -64,9 +64,9 @@ _Compare True - True - True - True + True + True + True Compare the changes that were made in each version. @@ -83,9 +83,9 @@ _Show... True - True - True - True + True + True + True Displays the entire comment for the selected version. @@ -102,10 +102,10 @@ _Close True - True - True - True - True + True + True + True + True True @@ -118,9 +118,9 @@ _Open True - True - True - True + True + True + True Opens the selected version in a read-only window. @@ -137,8 +137,8 @@ _Help True - True - True + True + True True @@ -152,40 +152,40 @@ False True - end + end 0 - + True - False + False True True - 12 + 12 True - False + False True - 0 - none + 0 + none - + True - False - 12 + False 12 6 + 12 Save _New Version True - True - True - True + True + True + True Saves the current state of the document as a new version. If you want, you can also enter comments in the Insert Version Comment dialog before you save the new version. @@ -193,18 +193,18 @@ - 0 - 0 + 0 + 0 _Always save a new version on closing True - True - False - True - True + True + False + True + True If you have made changes to your document then a new version is automatically saved when you close the document. @@ -212,8 +212,8 @@ - 1 - 0 + 1 + 0 @@ -221,7 +221,7 @@ True - False + False New Versions @@ -230,44 +230,44 @@ - 0 - 0 + 0 + 0 True - False + False True True - 0 - none + 0 + none True - False - True - True + False 12 6 + True + True True - True + True True True - in + in True - True - True + True + True True True liststore3 - 0 - False + 0 + False @@ -319,8 +319,8 @@ - 0 - 0 + 0 + 0 @@ -328,7 +328,7 @@ True - False + False Existing Versions @@ -337,8 +337,8 @@ - 0 - 1 + 0 + 1 @@ -359,9 +359,6 @@ open help - - - Saves and organizes multiple versions of the current document in the same file. You can also open, delete and compare previous versions. diff --git a/solenv/flatpak-manifest.in b/solenv/flatpak-manifest.in index d54822398eaa..98d42674d517 100644 --- a/solenv/flatpak-manifest.in +++ b/solenv/flatpak-manifest.in @@ -77,8 +77,8 @@ "sources": [ { "type": "archive", - "url": "https://kerberos.org/dist/krb5/1.21/krb5-1.21.2.tar.gz", - "sha256": "9560941a9d843c0243a71b17a7ac6fe31c7cebb5bce3983db79e52ae7e850491", + "url": "https://kerberos.org/dist/krb5/1.21/krb5-1.21.3.tar.gz", + "sha256": "b7a4cd5ead67fb08b980b21abd150ff7217e85ea320c9ed0c6dadd304840ad35", "x-checker-data": { "type": "html", "url": "https://kerberos.org/dist/", diff --git a/solenv/gbuild/DotnetLibrary.mk b/solenv/gbuild/DotnetLibrary.mk index 190a0059e724..9d20638f0738 100644 --- a/solenv/gbuild/DotnetLibrary.mk +++ b/solenv/gbuild/DotnetLibrary.mk @@ -33,11 +33,6 @@ $(strip $(subst ",\",$(1))) endef -define gb_DotnetLibrary__ensure_absolute -$(if $(filter $(SRCDIR)%,$(1)),$(1),$(SRCDIR)/$(1)) - -endef - ####### Build and Clean Targets ######### .PHONY : $(call gb_DotnetLibrary_get_clean_target,%) @@ -136,19 +131,19 @@ endef # Add one source file to the project file # This adds it to the project, and makes it a build dependency # so the library is rebuilt if the source changes -# call gb_DotnetLibrary_add_source,target,source +# call gb_DotnetLibrary_add_source,target,basedir,source define gb_DotnetLibrary_add_source -$(call gb_DotnetLibrary_get_target,$(1)) : $(call gb_DotnetLibrary__ensure_absolute,$(strip $(2))) -$(call gb_DotnetLibrary_add_items,$(1),) +$(call gb_DotnetLibrary_get_target,$(1)) : $(strip $(2))/$(strip $(3)) +$(call gb_DotnetLibrary_add_items,$(1),) endef # Add source files to the project file # This adds them to the project, and makes it them build dependency # so the library is rebuilt if the sources change -# call gb_DotnetLibrary_add_sources,target,sources +# call gb_DotnetLibrary_add_sources,target,basedir,sources define gb_DotnetLibrary_add_sources -$(foreach source,$(2),$(call gb_DotnetLibrary_add_source,$(1),$(source))) +$(foreach source,$(3),$(call gb_DotnetLibrary_add_source,$(1),$(2),$(source))) endef @@ -156,9 +151,9 @@ endef # This is not marked as makefile build dependency, # so the library is NOT rebuilt if this source changes # Useful for things like source globs supported by .net projects -# call gb_DotnetLibrary_add_generated_source,target,source +# call gb_DotnetLibrary_add_generated_source,target,basedir,source define gb_DotnetLibrary_add_generated_source -$(call gb_DotnetLibrary_add_items,$(1),) +$(call gb_DotnetLibrary_add_items,$(1),) endef @@ -166,9 +161,9 @@ endef # These are not marked as makefile build dependencies, # so the library is NOT rebuilt if these sources change # Useful for things like source globs supported by .net projects -# call gb_DotnetLibrary_add_generated_sources,target,sources +# call gb_DotnetLibrary_add_generated_sources,target,basedir,sources define gb_DotnetLibrary_add_generated_sources -$(foreach source,$(2),$(call gb_DotnetLibrary_add_generated_source,$(1),$(source))) +$(foreach source,$(3),$(call gb_DotnetLibrary_add_generated_source,$(1),$(2),$(source))) endef diff --git a/solenv/gbuild/platform/com_MSC_defs.mk b/solenv/gbuild/platform/com_MSC_defs.mk index ce1a1ed7ea5e..4c6a7e25a885 100644 --- a/solenv/gbuild/platform/com_MSC_defs.mk +++ b/solenv/gbuild/platform/com_MSC_defs.mk @@ -82,8 +82,7 @@ gb_AFLAGS := $(AFLAGS) # C4201: nonstandard extension used : nameless struct/union -# C4244: nonstandard extension used : formal parameter 'identifier' -# was previously defined as a type +# C4244: 'argument' : conversion from 'type1' to 'type2', possible loss of data # C4250: 'class1' : inherits 'class2::member' via dominance @@ -272,7 +271,7 @@ gb_CXXCLRFLAGS := \ -AI $(INSTDIR)/$(LIBO_URE_LIB_FOLDER) \ -EHa \ -clr \ - -Wv:18 \ + $(if $(filter 16.0,$(VCVER)),-Wv:18) \ -Zc:twoPhase- \ ifeq ($(COM_IS_CLANG),TRUE) diff --git a/starmath/source/node.cxx b/starmath/source/node.cxx index 7be9effe4175..49ef500c2059 100644 --- a/starmath/source/node.cxx +++ b/starmath/source/node.cxx @@ -2189,7 +2189,9 @@ void SmSpecialNode::Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell bool bIsSpecialSymbol = false; bool bIsArabic = false; - if (nullptr != (pSym = pp->GetSymbolManager().GetSymbolByName(GetToken().aText.subView(1)))) + if ((!GetToken().aText.isEmpty()) + && (nullptr + != (pSym = pp->GetSymbolManager().GetSymbolByName(GetToken().aText.subView(1))))) { sal_UCS4 cChar = pSym->GetCharacter(); OUString aTmp( &cChar, 1 ); diff --git a/svgio/source/svgreader/svgtools.cxx b/svgio/source/svgreader/svgtools.cxx index e3a4e7e9f3c3..3918660fb7bd 100644 --- a/svgio/source/svgreader/svgtools.cxx +++ b/svgio/source/svgreader/svgtools.cxx @@ -153,6 +153,7 @@ namespace svgio::svgreader { u"plum", Color(221, 160, 221) }, { u"powderblue", Color(176, 224, 230) }, { u"purple", Color(128, 0, 128) }, + { u"rebeccapurple", Color(102, 51, 153) }, { u"red", Color(255, 0, 0) }, { u"rosybrown", Color(188, 143, 143) }, { u"royalblue", Color( 65, 105, 225) }, diff --git a/svl/Library_svl.mk b/svl/Library_svl.mk index 04abb8c6cf3a..d848c2bde516 100644 --- a/svl/Library_svl.mk +++ b/svl/Library_svl.mk @@ -119,6 +119,7 @@ $(eval $(call gb_Library_add_exception_objects,svl,\ svl/source/items/custritm \ svl/source/items/flagitem \ svl/source/items/globalnameitem \ + svl/source/items/globalpool \ svl/source/items/grabbagitem \ svl/source/items/ilstitem \ svl/source/items/imageitm \ diff --git a/svl/source/items/globalpool.cxx b/svl/source/items/globalpool.cxx new file mode 100644 index 000000000000..66bc650a2791 --- /dev/null +++ b/svl/source/items/globalpool.cxx @@ -0,0 +1,453 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#include +#include +#include +#include + +static bool g_bDisableItemInstanceManager(getenv("SVL_DISABLE_ITEM_INSTANCE_MANAGER")); +static bool g_bShareImmediately(getenv("SVL_SHARE_ITEMS_GLOBALLY_INSTANTLY")); +#define NUMBER_OF_UNSHARED_INSTANCES (50) + +#ifdef DBG_UTIL + +// > +typedef std::unordered_map> HightestUsage; +static HightestUsage aHightestUsage; + +static void addUsage(const SfxPoolItem& rCandidate) +{ + HightestUsage::iterator aHit(aHightestUsage.find(rCandidate.Which())); + if (aHit == aHightestUsage.end()) + { + aHightestUsage.insert({ rCandidate.Which(), { 1, typeid(rCandidate).name() } }); + return; + } + aHit->second.first++; +} + +void listSfxPoolItemsWithHighestUsage(sal_uInt16 nNum) +{ + struct sorted + { + sal_uInt16 nWhich; + sal_uInt32 nUsage; + const char* pType; + sorted(sal_uInt16 _nWhich, sal_uInt32 _nUsage, const char* _pType) + : nWhich(_nWhich) + , nUsage(_nUsage) + , pType(_pType) + { + } + bool operator<(const sorted& rDesc) const { return nUsage > rDesc.nUsage; } + }; + std::vector aSorted; + aSorted.reserve(aHightestUsage.size()); + for (const auto& rEntry : aHightestUsage) + aSorted.emplace_back(rEntry.first, rEntry.second.first, rEntry.second.second); + std::sort(aSorted.begin(), aSorted.end()); + sal_uInt16 a(0); + SAL_INFO("svl.items", + "ITEM: List of the " << nNum << " SfxPoolItems with highest non-RefCounted usages:"); + for (const auto& rEntry : aSorted) + { + SAL_INFO("svl.items", " ITEM(" << a << "): Which: " << rEntry.nWhich + << " Uses: " << rEntry.nUsage << " Type: " << rEntry.pType); + if (++a >= nNum) + break; + } +} + +#endif + +void DefaultItemInstanceManager::add(const SfxPoolItem& rItem) +{ + maRegistered[rItem.Which()].insert(&rItem); +} + +void DefaultItemInstanceManager::remove(const SfxPoolItem& rItem) +{ + maRegistered[rItem.Which()].erase(&rItem); +} + +// Class that implements global Item sharing. It uses rtti to +// associate every Item-derivation with a possible incarnation +// of a DefaultItemInstanceManager. This is the default, it will +// give direct implementations at the Items that overload +// getItemInstanceManager() preference. These are expected to +// return static instances of a derived implementation of a +// ItemInstanceManager. +// All in all there are now the following possibilities to support +// this for individual Item derivations: +// (1) Do nothing: +// In that case, if the Item is shareable, the new mechanism +// will kick in: It will start sharing the Item globally, +// but not immediately: After a defined amount of allowed +// non-shared occurrences (look for NUMBER_OF_UNSHARED_INSTANCES) +// an instance of the default ItemInstanceManager, a +// DefaultItemInstanceManager, will be incarnated and used. +// NOTE: Mixing shared/unshared instances is not a problem (we +// might even implement a kind of 're-hash' when this kicks in, +// but is not really needed). +// (2) Overload getItemInstanceManager for SfxPoolItem in a class +// derived from SfxPoolItem and... +// (2a) Return a static incarnation of DefaultItemInstanceManager to +// immediately start global sharing of that Item derivation. +// (2b) Implement and return your own implementation and static +// incarnation of ItemInstanceManager to do something better/ +// faster that the default implementation can do. Example: +// SvxFontItem, uses hashing now. +// There are two supported ENVVARs to use: +// (a) SVL_DISABLE_ITEM_INSTANCE_MANAGER: +// This disables the mechanism of global Item sharing completely. +// This can be used to test/check speed/memory needs compared with +// using it, but also may come in handy to check if evtl. errors/ +// regressions have to do with it. +// (b) SVL_SHARE_ITEMS_GLOBALLY_INSTANTLY: +// This internally forces the NUMBER_OF_UNSHARED_INSTANCES to be +// ignored and start sharing ALL Item derivations instantly. +class InstanceManagerHelper +{ + typedef std::unordered_map> + managerTypeMap; + managerTypeMap maManagerPerType; + +public: + InstanceManagerHelper() {} + ~InstanceManagerHelper() + { + for (auto& rCandidate : maManagerPerType) + if (nullptr != rCandidate.second.second) + delete rCandidate.second.second; + } + + ItemInstanceManager* getOrCreateItemInstanceManager(const SfxPoolItem& rItem) + { + // deactivated? + if (g_bDisableItemInstanceManager) + return nullptr; + + // Item cannot be shared? + if (!rItem.isShareable()) + return nullptr; + + // Prefer getting an ItemInstanceManager directly from + // the Item: These are the extra implemented (and thus + // hopefully fastest) incarnations + ItemInstanceManager* pManager(rItem.getItemInstanceManager()); + + // Check for correct hash, there may be derivations of that class. + // Note that Managers from the Items are *not* added to local list, + // they are expected to be static instances at the Items + const std::size_t aHash(typeid(rItem).hash_code()); + if (nullptr != pManager && pManager->getClassHash() == aHash) + return pManager; + + // check local memory for existing entry + managerTypeMap::iterator aHit(maManagerPerType.find(aHash)); + + // no instance yet + if (aHit == maManagerPerType.end()) + { + // create a default one to start usage-counting + if (g_bShareImmediately) + { + // create, insert locally and immediately start sharing + DefaultItemInstanceManager* pNew(new DefaultItemInstanceManager(aHash)); + maManagerPerType.insert({ aHash, std::make_pair(0, pNew) }); + return pNew; + } + + // start countdown from NUMBER_OF_UNSHARED_INSTANCES until zero is reached + maManagerPerType.insert( + { aHash, std::make_pair(NUMBER_OF_UNSHARED_INSTANCES, nullptr) }); + return nullptr; + } + + // if there is already an ItemInstanceManager incarnated, return it + if (nullptr != aHit->second.second) + return aHit->second.second; + + if (aHit->second.first > 0) + { + // still not the needed number of hits, countdown & return nullptr + aHit->second.first--; + return nullptr; + } + + // here the countdown is zero and there is not yet a ItemInstanceManager + // incarnated. Do so, register and return it + assert(nullptr == aHit->second.second); + DefaultItemInstanceManager* pNew(new DefaultItemInstanceManager(aHash)); + aHit->second.second = pNew; + + return pNew; + } + + ItemInstanceManager* getExistingItemInstanceManager(const SfxPoolItem& rItem) + { + // deactivated? + if (g_bDisableItemInstanceManager) + return nullptr; + + // Item cannot be shared? + if (!rItem.isShareable()) + return nullptr; + + // Prefer getting an ItemInstanceManager directly from + // the Item: These are the extra implemented (and thus + // hopefully fastest) incarnations + ItemInstanceManager* pManager(rItem.getItemInstanceManager()); + + // Check for correct hash, there may be derivations of that class. + // Note that Managers from the Items are *not* added to local list, + // they are expected to be static instances at the Items + const std::size_t aHash(typeid(rItem).hash_code()); + if (nullptr != pManager && pManager->getClassHash() == aHash) + return pManager; + + // check local memory for existing entry + managerTypeMap::iterator aHit(maManagerPerType.find(aHash)); + + if (aHit == maManagerPerType.end()) + // no instance yet, return nullptr + return nullptr; + + // if there is already a ItemInstanceManager incarnated, return it + if (nullptr != aHit->second.second) + return aHit->second.second; + + // count-up needed number of hits again if item is released + if (aHit->second.first < NUMBER_OF_UNSHARED_INSTANCES) + aHit->second.first++; + + return nullptr; + } +}; + +// the single static instance that takes over that global Item sharing +static InstanceManagerHelper aInstanceManagerHelper; + +SfxPoolItem const* implCreateItemEntry(SfxItemPool& rPool, SfxPoolItem const* pSource, + bool bPassingOwnership) +{ + if (nullptr == pSource) + // SfxItemState::UNKNOWN aka current default (nullptr) + // just use/return nullptr + return nullptr; + + if (pSource->isStaticDefault()) + // static default Items can just be used without RefCounting + // NOTE: This now includes IsInvalidItem/IsDisabledItem + return pSource; + + if (0 == pSource->Which()) + { + // There should be no Items with 0 == WhichID, but there are some + // constructed for dialog return values AKA result (look for SetReturnValue) + // these need to be cloned (currently...) + if (bPassingOwnership) + return pSource; + return pSource->Clone(); + } + + if (pSource->isDynamicDefault() && rPool.GetPoolDefaultItem(pSource->Which()) == pSource) + // dynamic defaults are not allowed to 'leave' the Pool they are + // defined for. We can check by comparing the PoolDefault (the + // PoolDefaultItem) to pSource by ptr compare (instance). When + // same Item we can use without RefCount. Else it will be cloned + // below the standard way. + return pSource; + +#ifdef DBG_UTIL + // remember WhichID due to being able to assert Clone() error(s) + const sal_uInt16 nWhich(pSource->Which()); +#endif + + if (SfxItemPool::IsSlot(pSource->Which())) + { + // SlotItems were always cloned in original (even when bPassingOwnership), + // so do that here, too (but without bPassingOwnership). + // They do not need to be registered at pool (actually impossible, pools + // do not have entries for SlotItems) so handle here early + if (!bPassingOwnership) + { + pSource = pSource->Clone(rPool.GetMasterPool()); + // ARGH! Found out that *some* ::Clone implementations fail to also clone the + // WhichID set at the original Item, e.g. SfxFrameItem. Assert, this is an error +#ifdef DBG_UTIL + assert(pSource->Which() == nWhich + && "ITEM: Clone of Item did NOT copy/set WhichID (!)"); +#endif + } + + return pSource; + } + + // get the pool with which ItemSets have to work, plus get the + // pool at which the WhichID is defined, so calls to it do not + // have to do this repeatedly + SfxItemPool* pMasterPool(rPool.GetMasterPool()); + assert(nullptr != pMasterPool); + + // The Item itself is shareable when it is used/added at an instance + // that RefCounts the Item, SfxItemPool or SfxPoolItemHolder. Try + // to share items that are already shared + while (pSource->GetRefCount() > 0) + { + if (!pSource->isShareable()) + // not shareable, done + break; + + // SfxSetItems cannot be shared if they are in/use another pool + if (pSource->isSetItem() + && static_cast(pSource)->GetItemSet().GetPool() != pMasterPool) + break; + + // If we get here we can share the Item + pSource->AddRef(); + return pSource; + } + + // try to get an ItemInstanceManager for global Item instance sharing + ItemInstanceManager* pManager(aInstanceManagerHelper.getOrCreateItemInstanceManager(*pSource)); + + // check if we can globally share the Item using an ItemInstanceManager + while (nullptr != pManager) + { + const SfxPoolItem* pAlternative(pManager->find(*pSource)); + if (nullptr == pAlternative) + // no already globally shared one found, done + break; + + // Here we do *not* need to check if it is an SfxSetItem + // and cannot be shared if they are in/use another pool: + // The SfxItemSet::operator== will check for SfxItemPools + // being equal, thus when found in global share the Pool + // cannot be equal + + // need to delete evtl. handed over ownership change Item + if (bPassingOwnership) + delete pSource; + + // If we get here we can share the Item + pAlternative->AddRef(); + return pAlternative; + } + + // check if the handed over and to be directly used item is a + // SfxSetItem, that would make it pool-dependent. It then must have + // the same target-pool, ensure that by the cost of cloning it + // (should not happen) + if (bPassingOwnership && pSource->isSetItem() + && static_cast(pSource)->GetItemSet().GetPool() != pMasterPool) + { + const SfxPoolItem* pOld(pSource); + pSource = pSource->Clone(pMasterPool); +#ifdef DBG_UTIL + assert(pSource->Which() == nWhich && "ITEM: Clone of Item did NOT copy/set WhichID (!)"); +#endif + delete pOld; + } + +#ifdef DBG_UTIL + // create statistics for listSfxPoolItemsWithHighestUsage + addUsage(*pSource); +#endif + + // when we reach this line we know that we have to add/create a new item. If + // bPassingOwnership is given just use the item, else clone it + if (!bPassingOwnership) + { + pSource = pSource->Clone(pMasterPool); +#ifdef DBG_UTIL + assert(pSource->Which() == nWhich && "ITEM: Clone of Item did NOT copy/set WhichID (!)"); +#endif + } + + // increase RefCnt 0->1 + pSource->AddRef(); + + // check if we should register this Item for the global + // ItemInstanceManager mechanism (only for shareable Items) + if (nullptr != pManager) + pManager->add(*pSource); + + return pSource; +} + +void implCleanupItemEntry(const SfxPoolItem* pSource) +{ + if (nullptr == pSource) + // no entry, done + return; + + if (pSource->isStaticDefault()) + // static default Items can just be used without RefCounting + // NOTE: This now includes IsInvalidItem/IsDisabledItem + return; + + if (0 == pSource->Which()) + { + // There should be no Items with 0 == WhichID, but there are some + // constructed for dialog return values AKA result (look for SetReturnValue) + // and need to be deleted + delete pSource; + return; + } + + if (pSource->isDynamicDefault()) + // dynamic default Items can only be used without RefCounting + // when same pool. this is already checked at implCreateItemEntry, + // so it would have been cloned (and would no longer have this + // flag). So we can just return here + return; + + if (SfxItemPool::IsSlot(pSource->Which())) + { + // SlotItems are cloned, so delete + delete pSource; + return; + } + + if (1 < pSource->GetRefCount()) + { + // Still multiple references present, so just alter the RefCount + pSource->ReleaseRef(); + return; + } + + // try to get an ItemInstanceManager for global Item instance sharing + ItemInstanceManager* pManager(aInstanceManagerHelper.getExistingItemInstanceManager(*pSource)); + + // check if we should/can remove this Item from the global + // ItemInstanceManager mechanism + if (nullptr != pManager) + pManager->remove(*pSource); + + // decrease RefCnt before deleting (destructor asserts for it and that's + // good to find other errors) + pSource->ReleaseRef(); + + // delete Item + delete pSource; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svl/source/items/itemset.cxx b/svl/source/items/itemset.cxx index b3a6dd8f68cf..523ffc857509 100644 --- a/svl/source/items/itemset.cxx +++ b/svl/source/items/itemset.cxx @@ -35,10 +35,6 @@ #include #include -static bool g_bDisableItemInstanceManager(getenv("SVL_DISABLE_ITEM_INSTANCE_MANAGER")); -static bool g_bShareImmediately(getenv("SVL_SHARE_ITEMS_GLOBALLY_INSTANTLY")); -#define NUMBER_OF_UNSHARED_INSTANCES (50) - #ifdef DBG_UTIL static size_t nAllocatedSfxItemSetCount(0); static size_t nUsedSfxItemSetCount(0); @@ -49,10 +45,6 @@ size_t getUsedSfxItemSetCount() { return nUsedSfxItemSetCount; } size_t getAllocatedSfxPoolItemHolderCount() { return nAllocatedSfxPoolItemHolderCount; } size_t getUsedSfxPoolItemHolderCount() { return nUsedSfxPoolItemHolderCount; } -// > -typedef std::unordered_map> HightestUsage; -static HightestUsage aHightestUsage; - // > typedef std::unordered_map> ItemArrayUsage; static ItemArrayUsage aItemArrayUsage; @@ -69,42 +61,6 @@ static void addArrayUsage(sal_uInt16 nCount, sal_uInt16 nTotalCount) aHit->second.second += nCount; } -static void addUsage(const SfxPoolItem& rCandidate) -{ - HightestUsage::iterator aHit(aHightestUsage.find(rCandidate.Which())); - if (aHit == aHightestUsage.end()) - { - aHightestUsage.insert({rCandidate.Which(), {1, typeid(rCandidate).name()}}); - return; - } - aHit->second.first++; -} - -void listSfxPoolItemsWithHighestUsage(sal_uInt16 nNum) -{ - struct sorted { - sal_uInt16 nWhich; - sal_uInt32 nUsage; - const char* pType; - sorted(sal_uInt16 _nWhich, sal_uInt32 _nUsage, const char* _pType) - : nWhich(_nWhich), nUsage(_nUsage), pType(_pType) {} - bool operator<(const sorted& rDesc) const { return nUsage > rDesc.nUsage; } - }; - std::vector aSorted; - aSorted.reserve(aHightestUsage.size()); - for (const auto& rEntry : aHightestUsage) - aSorted.emplace_back(rEntry.first, rEntry.second.first, rEntry.second.second); - std::sort(aSorted.begin(), aSorted.end()); - sal_uInt16 a(0); - SAL_INFO("svl.items", "ITEM: List of the " << nNum << " SfxPoolItems with highest non-RefCounted usages:"); - for (const auto& rEntry : aSorted) - { - SAL_INFO("svl.items", " ITEM(" << a << "): Which: " << rEntry.nWhich << " Uses: " << rEntry.nUsage << " Type: " << rEntry.pType); - if (++a >= nNum) - break; - } -} - SVL_DLLPUBLIC void listSfxItemSetUsage() { struct sorted { @@ -368,364 +324,6 @@ SfxItemSet::~SfxItemSet() m_aWhichRanges.reset(); } -// Class that implements global Item sharing. It uses rtti to -// associate every Item-derivation with a possible incarnation -// of a DefaultItemInstanceManager. This is the default, it will -// give direct implementations at the Items that overload -// getItemInstanceManager() preference. These are expected to -// return static instances of a derived implementation of a -// ItemInstanceManager. -// All in all there are now the following possibilities to support -// this for individual Item derivations: -// (1) Do nothing: -// In that case, if the Item is shareable, the new mechanism -// will kick in: It will start sharing the Item globally, -// but not immediately: After a defined amount of allowed -// non-shared occurrences (look for NUMBER_OF_UNSHARED_INSTANCES) -// an instance of the default ItemInstanceManager, a -// DefaultItemInstanceManager, will be incarnated and used. -// NOTE: Mixing shared/unshared instances is not a problem (we -// might even implement a kind of 're-hash' when this kicks in, -// but is not really needed). -// (2) Overload getItemInstanceManager for SfxPoolItem in a class -// derived from SfxPoolItem and... -// (2a) Return a static incarnation of DefaultItemInstanceManager to -// immediately start global sharing of that Item derivation. -// (2b) Implement and return your own implementation and static -// incarnation of ItemInstanceManager to do something better/ -// faster that the default implementation can do. Example: -// SvxFontItem, uses hashing now. -// There are two supported ENVVARs to use: -// (a) SVL_DISABLE_ITEM_INSTANCE_MANAGER: -// This disables the mechanism of global Item sharing completely. -// This can be used to test/check speed/memory needs compared with -// using it, but also may come in handy to check if evtl. errors/ -// regressions have to do with it. -// (b) SVL_SHARE_ITEMS_GLOBALLY_INSTANTLY: -// This internally forces the NUMBER_OF_UNSHARED_INSTANCES to be -// ignored and start sharing ALL Item derivations instantly. -class InstanceManagerHelper -{ - typedef std::unordered_map> managerTypeMap; - managerTypeMap maManagerPerType; - -public: - InstanceManagerHelper() {} - ~InstanceManagerHelper() - { - for (auto& rCandidate : maManagerPerType) - if (nullptr != rCandidate.second.second) - delete rCandidate.second.second; - } - - ItemInstanceManager* getOrCreateItemInstanceManager(const SfxPoolItem& rItem) - { - // deactivated? - if (g_bDisableItemInstanceManager) - return nullptr; - - // Item cannot be shared? - if (!rItem.isShareable()) - return nullptr; - - // Prefer getting an ItemInstanceManager directly from - // the Item: These are the extra implemented (and thus - // hopefully fastest) incarnations - ItemInstanceManager* pManager(rItem.getItemInstanceManager()); - - // Check for correct hash, there may be derivations of that class. - // Note that Managers from the Items are *not* added to local list, - // they are expected to be static instances at the Items - const std::size_t aHash(typeid(rItem).hash_code()); - if (nullptr != pManager && pManager->getClassHash() == aHash) - return pManager; - - // check local memory for existing entry - managerTypeMap::iterator aHit(maManagerPerType.find(aHash)); - - // no instance yet - if (aHit == maManagerPerType.end()) - { - // create a default one to start usage-counting - if (g_bShareImmediately) - { - // create, insert locally and immediately start sharing - DefaultItemInstanceManager* pNew(new DefaultItemInstanceManager(aHash)); - maManagerPerType.insert({aHash, std::make_pair(0, pNew)}); - return pNew; - } - - // start countdown from NUMBER_OF_UNSHARED_INSTANCES until zero is reached - maManagerPerType.insert({aHash, std::make_pair(NUMBER_OF_UNSHARED_INSTANCES, nullptr)}); - return nullptr; - } - - // if there is already an ItemInstanceManager incarnated, return it - if (nullptr != aHit->second.second) - return aHit->second.second; - - if (aHit->second.first > 0) - { - // still not the needed number of hits, countdown & return nullptr - aHit->second.first--; - return nullptr; - } - - // here the countdown is zero and there is not yet a ItemInstanceManager - // incarnated. Do so, register and return it - assert(nullptr == aHit->second.second); - DefaultItemInstanceManager* pNew(new DefaultItemInstanceManager(aHash)); - aHit->second.second = pNew; - - return pNew; - } - - ItemInstanceManager* getExistingItemInstanceManager(const SfxPoolItem& rItem) - { - // deactivated? - if (g_bDisableItemInstanceManager) - return nullptr; - - // Item cannot be shared? - if (!rItem.isShareable()) - return nullptr; - - // Prefer getting an ItemInstanceManager directly from - // the Item: These are the extra implemented (and thus - // hopefully fastest) incarnations - ItemInstanceManager* pManager(rItem.getItemInstanceManager()); - - // Check for correct hash, there may be derivations of that class. - // Note that Managers from the Items are *not* added to local list, - // they are expected to be static instances at the Items - const std::size_t aHash(typeid(rItem).hash_code()); - if (nullptr != pManager && pManager->getClassHash() == aHash) - return pManager; - - // check local memory for existing entry - managerTypeMap::iterator aHit(maManagerPerType.find(aHash)); - - if (aHit == maManagerPerType.end()) - // no instance yet, return nullptr - return nullptr; - - // if there is already a ItemInstanceManager incarnated, return it - if (nullptr != aHit->second.second) - return aHit->second.second; - - // count-up needed number of hits again if item is released - if (aHit->second.first < NUMBER_OF_UNSHARED_INSTANCES) - aHit->second.first++; - - return nullptr; - } -}; - -// the single static instance that takes over that global Item sharing -static InstanceManagerHelper aInstanceManagerHelper; - -SfxPoolItem const* implCreateItemEntry(SfxItemPool& rPool, SfxPoolItem const* pSource, bool bPassingOwnership) -{ - if (nullptr == pSource) - // SfxItemState::UNKNOWN aka current default (nullptr) - // just use/return nullptr - return nullptr; - - if (pSource->isStaticDefault()) - // static default Items can just be used without RefCounting - // NOTE: This now includes IsInvalidItem/IsDisabledItem - return pSource; - - if (0 == pSource->Which()) - { - // There should be no Items with 0 == WhichID, but there are some - // constructed for dialog return values AKA result (look for SetReturnValue) - // these need to be cloned (currently...) - if (bPassingOwnership) - return pSource; - return pSource->Clone(); - } - - if (pSource->isDynamicDefault() && rPool.GetPoolDefaultItem(pSource->Which()) == pSource) - // dynamic defaults are not allowed to 'leave' the Pool they are - // defined for. We can check by comparing the PoolDefault (the - // PoolDefaultItem) to pSource by ptr compare (instance). When - // same Item we can use without RefCount. Else it will be cloned - // below the standard way. - return pSource; - -#ifdef DBG_UTIL - // remember WhichID due to being able to assert Clone() error(s) - const sal_uInt16 nWhich(pSource->Which()); -#endif - - if (SfxItemPool::IsSlot(pSource->Which())) - { - // SlotItems were always cloned in original (even when bPassingOwnership), - // so do that here, too (but without bPassingOwnership). - // They do not need to be registered at pool (actually impossible, pools - // do not have entries for SlotItems) so handle here early - if (!bPassingOwnership) - { - pSource = pSource->Clone(rPool.GetMasterPool()); - // ARGH! Found out that *some* ::Clone implementations fail to also clone the - // WhichID set at the original Item, e.g. SfxFrameItem. Assert, this is an error -#ifdef DBG_UTIL - assert(pSource->Which() == nWhich && "ITEM: Clone of Item did NOT copy/set WhichID (!)"); -#endif - } - - return pSource; - } - - // get the pool with which ItemSets have to work, plus get the - // pool at which the WhichID is defined, so calls to it do not - // have to do this repeatedly - SfxItemPool* pMasterPool(rPool.GetMasterPool()); - assert(nullptr != pMasterPool); - - // The Item itself is shareable when it is used/added at an instance - // that RefCounts the Item, SfxItemPool or SfxPoolItemHolder. Try - // to share items that are already shared - while(pSource->GetRefCount() > 0) - { - if (!pSource->isShareable()) - // not shareable, done - break; - - // SfxSetItems cannot be shared if they are in/use another pool - if (pSource->isSetItem() && static_cast(pSource)->GetItemSet().GetPool() != pMasterPool) - break; - - // If we get here we can share the Item - pSource->AddRef(); - return pSource; - } - - // try to get an ItemInstanceManager for global Item instance sharing - ItemInstanceManager* pManager(aInstanceManagerHelper.getOrCreateItemInstanceManager(*pSource)); - - // check if we can globally share the Item using an ItemInstanceManager - while (nullptr != pManager) - { - const SfxPoolItem* pAlternative(pManager->find(*pSource)); - if(nullptr == pAlternative) - // no already globally shared one found, done - break; - - // Here we do *not* need to check if it is an SfxSetItem - // and cannot be shared if they are in/use another pool: - // The SfxItemSet::operator== will check for SfxItemPools - // being equal, thus when found in global share the Pool - // cannot be equal - - // need to delete evtl. handed over ownership change Item - if (bPassingOwnership) - delete pSource; - - // If we get here we can share the Item - pAlternative->AddRef(); - return pAlternative; - } - - // check if the handed over and to be directly used item is a - // SfxSetItem, that would make it pool-dependent. It then must have - // the same target-pool, ensure that by the cost of cloning it - // (should not happen) - if (bPassingOwnership - && pSource->isSetItem() - && static_cast(pSource)->GetItemSet().GetPool() != pMasterPool) - { - const SfxPoolItem* pOld(pSource); - pSource = pSource->Clone(pMasterPool); -#ifdef DBG_UTIL - assert(pSource->Which() == nWhich && "ITEM: Clone of Item did NOT copy/set WhichID (!)"); -#endif - delete pOld; - } - -#ifdef DBG_UTIL - // create statistics for listSfxPoolItemsWithHighestUsage - addUsage(*pSource); -#endif - - // when we reach this line we know that we have to add/create a new item. If - // bPassingOwnership is given just use the item, else clone it - if (!bPassingOwnership) - { - pSource = pSource->Clone(pMasterPool); -#ifdef DBG_UTIL - assert(pSource->Which() == nWhich && "ITEM: Clone of Item did NOT copy/set WhichID (!)"); -#endif - } - - // increase RefCnt 0->1 - pSource->AddRef(); - - // check if we should register this Item for the global - // ItemInstanceManager mechanism (only for shareable Items) - if (nullptr != pManager) - pManager->add(*pSource); - - return pSource; -} - -void implCleanupItemEntry(const SfxPoolItem* pSource) -{ - if (nullptr == pSource) - // no entry, done - return; - - if (pSource->isStaticDefault()) - // static default Items can just be used without RefCounting - // NOTE: This now includes IsInvalidItem/IsDisabledItem - return; - - if (0 == pSource->Which()) - { - // There should be no Items with 0 == WhichID, but there are some - // constructed for dialog return values AKA result (look for SetReturnValue) - // and need to be deleted - delete pSource; - return; - } - - if (pSource->isDynamicDefault()) - // dynamic default Items can only be used without RefCounting - // when same pool. this is already checked at implCreateItemEntry, - // so it would have been cloned (and would no longer have this - // flag). So we can just return here - return; - - if (SfxItemPool::IsSlot(pSource->Which())) - { - // SlotItems are cloned, so delete - delete pSource; - return; - } - - if (1 < pSource->GetRefCount()) - { - // Still multiple references present, so just alter the RefCount - pSource->ReleaseRef(); - return; - } - - // try to get an ItemInstanceManager for global Item instance sharing - ItemInstanceManager* pManager(aInstanceManagerHelper.getExistingItemInstanceManager(*pSource)); - - // check if we should/can remove this Item from the global - // ItemInstanceManager mechanism - if (nullptr != pManager) - pManager->remove(*pSource); - - // decrease RefCnt before deleting (destructor asserts for it and that's - // good to find other errors) - pSource->ReleaseRef(); - - // delete Item - delete pSource; -} // Delete single Items or all Items (nWhich == 0) sal_uInt16 SfxItemSet::ClearItem( sal_uInt16 nWhich ) diff --git a/svl/source/items/poolitem.cxx b/svl/source/items/poolitem.cxx index 491c30a7f50a..709d7aa64a83 100644 --- a/svl/source/items/poolitem.cxx +++ b/svl/source/items/poolitem.cxx @@ -503,17 +503,16 @@ void listAllocatedSfxPoolItems() const SfxPoolItem* DefaultItemInstanceManager::find(const SfxPoolItem& rItem) const { - for (const auto& rCandidate : maRegistered) - if (rCandidate->Which() == rItem.Which() && *rCandidate == rItem) + auto it = maRegistered.find(rItem.Which()); + if (it == maRegistered.end()) + return nullptr; + for (const auto& rCandidate : it->second) + if (*rCandidate == rItem) return rCandidate; return nullptr; } -void DefaultItemInstanceManager::add(const SfxPoolItem& rItem) { maRegistered.insert(&rItem); } - -void DefaultItemInstanceManager::remove(const SfxPoolItem& rItem) { maRegistered.erase(&rItem); } - ItemInstanceManager* SfxPoolItem::getItemInstanceManager() const { return nullptr; } SfxPoolItem::SfxPoolItem(sal_uInt16 const nWhich, SfxItemType eType) diff --git a/svtools/source/svrtf/svparser.cxx b/svtools/source/svrtf/svparser.cxx index a7c9c411caf2..419de30e9d0a 100644 --- a/svtools/source/svrtf/svparser.cxx +++ b/svtools/source/svrtf/svparser.cxx @@ -34,7 +34,7 @@ template struct SvParser_Impl { - OUString aToken; // gescanntes Token + OUString aToken; // parsed token sal_uInt64 nFilePos; // actual position in stream sal_uInt32 nlLineNr; // actual line number sal_uInt32 nlLinePos; // actual column number diff --git a/svtools/uiconfig/ui/addresstemplatedialog.ui b/svtools/uiconfig/ui/addresstemplatedialog.ui index 311a59f4b355..6c067a5216ca 100644 --- a/svtools/uiconfig/ui/addresstemplatedialog.ui +++ b/svtools/uiconfig/ui/addresstemplatedialog.ui @@ -1,33 +1,33 @@ - + - False - 6 + False + 6 Templates: Address Book Assignment False True - 0 - 0 - dialog + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -40,8 +40,8 @@ _Cancel True - True - True + True + True True @@ -54,8 +54,8 @@ _Help True - True - True + True + True True @@ -69,73 +69,73 @@ False True - end + end 0 - + True - False + False True True - 12 + 12 True - False + False True - 0 - none + 0 + none - + True - False - 6 - 12 + False 12 6 + 6 + 12 True - False + False Data source: - True - datasource + True + datasource 1 - 0 - 0 + 0 + 0 True - False + False Table: - True - datatable + True + datatable 1 - 0 - 1 + 0 + 1 True - False + False True - True + True - True + True + True True - True @@ -145,21 +145,21 @@ - 1 - 0 + 1 + 0 True - False + False True - True + True - True + True + True True - True @@ -169,17 +169,17 @@ - 1 - 1 + 1 + 1 _Assign True - True - True - True + True + True + True Add a new data source to the Address Book Source list. @@ -187,8 +187,8 @@ - 2 - 0 + 2 + 0 @@ -199,7 +199,7 @@ True - False + False Address Book Source @@ -208,331 +208,331 @@ - 0 - 0 + 0 + 0 True - False + False True True - 0 - none + 0 + none True - True - True - True - never - always - in + True 12 6 + True + True + never + always + in True - False + False True - False + False - + True - False + False True - 6 - 18 - True + 6 + 18 + True - + True - False + False True True - 6 - 12 + 6 + 12 True - False - label - True - box0 + False + label + True + box0 1 - 0 - 0 + 0 + 0 True - False + False True - 1 - 0 + 1 + 0 True - False - label - True - box2 + False + label + True + box2 1 - 0 - 1 + 0 + 1 True - False - label - True - box4 + False + label + True + box4 1 - 0 - 2 + 0 + 2 True - False - label - True - box6 + False + label + True + box6 1 - 0 - 3 + 0 + 3 True - False - label - True - box8 + False + label + True + box8 1 - 0 - 4 + 0 + 4 True - False + False True - 1 - 1 + 1 + 1 True - False + False True - 1 - 2 + 1 + 2 True - False + False True - 1 - 3 + 1 + 3 True - False + False True - 1 - 4 + 1 + 4 - 0 - 0 + 0 + 0 - + True - False + False True True - 6 - 12 + 6 + 12 True - False - label - True - box1 + False + label + True + box1 1 - 0 - 0 + 0 + 0 True - False + False True - 1 - 0 + 1 + 0 True - False - label - True - box3 + False + label + True + box3 1 - 0 - 1 + 0 + 1 True - False - label - True - box5 + False + label + True + box5 1 - 0 - 2 + 0 + 2 True - False - label - True - box7 + False + label + True + box7 1 - 0 - 3 + 0 + 3 True - False - label - True - box9 + False + label + True + box9 1 - 0 - 4 + 0 + 4 True - False + False True - 1 - 1 + 1 + 1 True - False + False True - 1 - 2 + 1 + 2 True - False + False True - 1 - 3 + 1 + 3 True - False + False True - 1 - 4 + 1 + 4 - 1 - 0 + 1 + 0 - 0 - 0 + 0 + 0 @@ -544,7 +544,7 @@ True - False + False Field Assignment @@ -558,8 +558,8 @@ - 0 - 1 + 0 + 1 @@ -576,9 +576,6 @@ cancel help - - - Edit the field assignments and the data source for your address book. diff --git a/svtools/uiconfig/ui/calendar.ui b/svtools/uiconfig/ui/calendar.ui index 1273369878c6..976a311def23 100644 --- a/svtools/uiconfig/ui/calendar.ui +++ b/svtools/uiconfig/ui/calendar.ui @@ -1,16 +1,16 @@ - + True - False + False vertical 6 True - True + True 2019 1 14 @@ -24,7 +24,7 @@ True - False + False False @@ -35,17 +35,17 @@ True - False + False 6 - spread + spread Today - True - True - True - True - True + True + True + True + True + True True @@ -56,9 +56,9 @@ None - True - True - True + True + True + True True diff --git a/svtools/uiconfig/ui/checkboxcontrol.ui b/svtools/uiconfig/ui/checkboxcontrol.ui index 2dcc79fac6e6..aeeb59ba2f05 100644 --- a/svtools/uiconfig/ui/checkboxcontrol.ui +++ b/svtools/uiconfig/ui/checkboxcontrol.ui @@ -1,24 +1,24 @@ - + True - False + False True True vertical True - True - False + True + False center center True True - True - True + True + True True diff --git a/svtools/uiconfig/ui/combocontrol.ui b/svtools/uiconfig/ui/combocontrol.ui index 38a0d6af1206..d68dd4cf9903 100644 --- a/svtools/uiconfig/ui/combocontrol.ui +++ b/svtools/uiconfig/ui/combocontrol.ui @@ -1,22 +1,22 @@ - + True - False + False vertical True - False + False True - True + True - True - True + True False + True - 0 - 1 + 0 + 1 2 - True - True + True + True True True - False - True + False + True + 1 True - 1 - 0 - 0 + 0 + 0 - True - True - True + True + True + True end - image7 1 - True + image7 + True Pick Date @@ -77,8 +77,8 @@ - 1 - 0 + 1 + 0 diff --git a/svx/source/svdraw/svdedxv.cxx b/svx/source/svdraw/svdedxv.cxx index 6071fbc042bd..fe647da817a1 100644 --- a/svx/source/svdraw/svdedxv.cxx +++ b/svx/source/svdraw/svdedxv.cxx @@ -1577,6 +1577,8 @@ bool SdrObjEditView::SdrBeginTextEdit(SdrObject* pObj_, SdrPageView* pPV, vcl::W SdrHint aHint(SdrHintKind::BeginEdit, *pTextObj); GetModel().Broadcast(aHint); + if (auto pBroadcaster = pTextObj->GetBroadcaster()) + pBroadcaster->Broadcast(aHint); mpTextEditOutliner->setVisualizedPage(nullptr); @@ -1715,6 +1717,8 @@ SdrEndTextEditKind SdrObjEditView::SdrEndTextEdit(bool bDontDeleteReally) { SdrHint aHint(SdrHintKind::EndEdit, *pTextEditObj); GetModel().Broadcast(aHint); + if (auto pBroadcaster = pTextEditObj->GetBroadcaster()) + pBroadcaster->Broadcast(aHint); } // if new mechanism was used, clean it up. At cleanup no need to check @@ -1895,7 +1899,7 @@ SdrEndTextEditKind SdrObjEditView::SdrEndTextEdit(bool bDontDeleteReally) if (pTEObj && !pTEObj->getSdrModelFromSdrObject().isLocked() && pTEObj->GetBroadcaster()) { SdrHint aHint(SdrHintKind::EndEdit, *pTEObj); - const_cast(pTEObj->GetBroadcaster())->Broadcast(aHint); + pTEObj->GetBroadcaster()->Broadcast(aHint); } if (pUndoEditUndoManager) diff --git a/svx/source/svdraw/svdmodel.cxx b/svx/source/svdraw/svdmodel.cxx index 835689a00726..3c43cf2c81bc 100644 --- a/svx/source/svdraw/svdmodel.cxx +++ b/svx/source/svdraw/svdmodel.cxx @@ -44,6 +44,7 @@ #include #include #include +#include #include #include #include @@ -222,7 +223,6 @@ SdrModel::~SdrModel() implDtorClearModel(); #ifdef DBG_UTIL - // SdrObjectLifetimeWatchDog: if(!maAllIncarnatedObjects.empty()) { SAL_WARN("svx", @@ -580,6 +580,25 @@ void SdrModel::ClearModel(bool bCalledFromDestructor) mbInDestruction = true; } + // Disconnect all SvxShape's from their SdrObjects to prevent the SdrObjects + // from hanging around and causing use-after-free. + // Make a copy because it might modified during InvalidateSdrObject calls. + std::vector> allObjs(maAllIncarnatedObjects.begin(), maAllIncarnatedObjects.end()); + for (const auto & pSdrObj : allObjs) + { + uno::Reference xShape = pSdrObj->getWeakUnoShape().get(); + rtl::Reference pSvxShape = dynamic_cast(xShape.get()); + // calling getWeakUnoShape so we don't accidentally create new UNO shapes + if (pSvxShape) + pSvxShape->InvalidateSdrObject(); + else + { + // because some things like SwXShape don't subclass SvxShape + uno::Reference xComp(xShape, uno::UNO_QUERY); + if (xComp) + xComp->dispose(); + } + } sal_Int32 i; // delete all drawing pages sal_Int32 nCount=GetPageCount(); diff --git a/svx/source/svdraw/svdobj.cxx b/svx/source/svdraw/svdobj.cxx index a598517d6893..fe95f30b6532 100644 --- a/svx/source/svdraw/svdobj.cxx +++ b/svx/source/svdraw/svdobj.cxx @@ -119,6 +119,7 @@ #include #include #include +#include using namespace ::com::sun::star; @@ -321,8 +322,6 @@ void SdrObject::SetBoundRectDirty() resetOutRectangle(); } -#ifdef DBG_UTIL -// SdrObjectLifetimeWatchDog: void impAddIncarnatedSdrObjectToSdrModel(SdrObject& rSdrObject, SdrModel& rSdrModel) { rSdrModel.maAllIncarnatedObjects.insert(&rSdrObject); @@ -334,7 +333,6 @@ void impRemoveIncarnatedSdrObjectToSdrModel(SdrObject& rSdrObject, SdrModel& rSd assert(false && "SdrObject::~SdrObject: Destructed incarnation of SdrObject not member of this SdrModel (!)"); } } -#endif SdrObject::SdrObject(SdrModel& rSdrModel) : mpFillGeometryDefiningShape(nullptr) @@ -369,10 +367,7 @@ SdrObject::SdrObject(SdrModel& rSdrModel) m_bIs3DObj=false; m_bMarkProt=false; m_bIsUnoObj=false; -#ifdef DBG_UTIL - // SdrObjectLifetimeWatchDog: impAddIncarnatedSdrObjectToSdrModel(*this, getSdrModelFromSdrObject()); -#endif } SdrObject::SdrObject(SdrModel& rSdrModel, SdrObject const & rSource) @@ -440,10 +435,7 @@ SdrObject::SdrObject(SdrModel& rSdrModel, SdrObject const & rSource) m_pGrabBagItem.reset(); if (rSource.m_pGrabBagItem!=nullptr) m_pGrabBagItem.reset(rSource.m_pGrabBagItem->Clone()); -#ifdef DBG_UTIL - // SdrObjectLifetimeWatchDog: impAddIncarnatedSdrObjectToSdrModel(*this, getSdrModelFromSdrObject()); -#endif } SdrObject::~SdrObject() @@ -470,10 +462,7 @@ SdrObject::~SdrObject() m_pGrabBagItem.reset(); mpProperties.reset(); mpViewContact.reset(); -#ifdef DBG_UTIL - // SdrObjectLifetimeWatchDog: impRemoveIncarnatedSdrObjectToSdrModel(*this, getSdrModelFromSdrObject()); -#endif } void SdrObject::acquire() noexcept @@ -517,45 +506,20 @@ void SdrObject::handlePageChange(SdrPage*, SdrPage* ) } -// global static ItemPool for not-yet-inserted items -static rtl::Reference mpGlobalItemPool; - -/** If we let the libc runtime clean us up, we trigger a crash */ -namespace -{ -class TerminateListener : public ::cppu::WeakImplHelper< css::frame::XTerminateListener > -{ - void SAL_CALL queryTermination( const lang::EventObject& ) override - {} - void SAL_CALL notifyTermination( const lang::EventObject& ) override - { - mpGlobalItemPool.clear(); - } - virtual void SAL_CALL disposing( const ::css::lang::EventObject& ) override - {} -}; -}; - // init global static itempool SdrItemPool& SdrObject::GetGlobalDrawObjectItemPool() { - if(!mpGlobalItemPool) - { - mpGlobalItemPool = new SdrItemPool(); + static vcl::DeleteRtlReferenceOnDeinit xGlobalItemPool( []() { + rtl::Reference xNewPool(new SdrItemPool()); rtl::Reference pGlobalOutlPool = EditEngine::CreatePool(); - mpGlobalItemPool->SetSecondaryPool(pGlobalOutlPool.get()); - mpGlobalItemPool->SetDefaultMetric(SdrEngineDefaults::GetMapUnit()); + xNewPool->SetSecondaryPool(pGlobalOutlPool.get()); + xNewPool->SetDefaultMetric(SdrEngineDefaults::GetMapUnit()); if (comphelper::IsFuzzing()) - mpGlobalItemPool->acquire(); - else - { - uno::Reference< frame::XDesktop2 > xDesktop = frame::Desktop::create(comphelper::getProcessComponentContext()); - uno::Reference< frame::XTerminateListener > xListener( new TerminateListener ); - xDesktop->addTerminateListener( xListener ); - } - } + xNewPool->acquire(); + return xNewPool; + }() ); - return *mpGlobalItemPool; + return *xGlobalItemPool.get(); } void SdrObject::SetRelativeWidth( double nValue ) @@ -684,7 +648,7 @@ void SdrObject::RemoveListener(SfxListener& rListener) } } -const SfxBroadcaster* SdrObject::GetBroadcaster() const +SfxBroadcaster* SdrObject::GetBroadcaster() const { return m_pPlusData!=nullptr ? m_pPlusData->pBroadcast.get() : nullptr; } diff --git a/svx/source/svdraw/svdoedge.cxx b/svx/source/svdraw/svdoedge.cxx index 948b39a1d3b5..b37385a93c73 100644 --- a/svx/source/svdraw/svdoedge.cxx +++ b/svx/source/svdraw/svdoedge.cxx @@ -1708,13 +1708,13 @@ void SdrEdgeObj::Reformat() if( nullptr != m_aCon1.m_pSdrObj ) { SfxHint aHint( SfxHintId::DataChanged ); - Notify( *const_cast(m_aCon1.m_pSdrObj->GetBroadcaster()), aHint ); + Notify( *m_aCon1.m_pSdrObj->GetBroadcaster(), aHint ); } if( nullptr != m_aCon2.m_pSdrObj ) { SfxHint aHint( SfxHintId::DataChanged ); - Notify( *const_cast(m_aCon2.m_pSdrObj->GetBroadcaster()), aHint ); + Notify( *m_aCon2.m_pSdrObj->GetBroadcaster(), aHint ); } } diff --git a/svx/source/svdraw/svdundo.cxx b/svx/source/svdraw/svdundo.cxx index defe2b362f79..b711a5f4398a 100644 --- a/svx/source/svdraw/svdundo.cxx +++ b/svx/source/svdraw/svdundo.cxx @@ -521,12 +521,12 @@ void SdrUndoMoveObj::Undo() // Trigger PageChangeCall ImpShowPageOfThisObject(); - mxObj->Move(Size(-aDistance.Width(),-aDistance.Height())); + mxObj->Move(Size(-m_aDistance.Width(),-m_aDistance.Height())); } void SdrUndoMoveObj::Redo() { - mxObj->Move(Size(aDistance.Width(),aDistance.Height())); + mxObj->Move(Size(m_aDistance.Width(),m_aDistance.Height())); // Trigger PageChangeCall ImpShowPageOfThisObject(); @@ -539,7 +539,7 @@ OUString SdrUndoMoveObj::GetComment() const void SdrUndoMoveObj::SdrRepeat(SdrView& rView) { - rView.MoveMarkedObj(aDistance); + rView.MoveMarkedObj(m_aDistance); } bool SdrUndoMoveObj::CanSdrRepeat(SdrView& rView) const diff --git a/svx/source/tbxctrls/fontworkgallery.cxx b/svx/source/tbxctrls/fontworkgallery.cxx index 7e54f1a3f932..c7cbec22e647 100644 --- a/svx/source/tbxctrls/fontworkgallery.cxx +++ b/svx/source/tbxctrls/fontworkgallery.cxx @@ -229,10 +229,7 @@ void FontWorkGalleryDialog::insertSelectedFontwork() SfxViewShell::Current() : nullptr; if (pKitViewShell) { - aPagePos = pKitViewShell->getLOKVisibleArea().Center(); - - aPagePos.setX(convertTwipToMm100(aPagePos.X())); - aPagePos.setY(convertTwipToMm100(aPagePos.Y())); + aPagePos = convertTwipToMm100(pKitViewShell->getLOKVisibleArea().Center()); sal_Int32 nLOKViewWidth = 0.8 * convertTwipToMm100(pKitViewShell->getLOKVisibleArea().getOpenWidth()); if (aFontworkSize.getWidth() > nLOKViewWidth) diff --git a/svx/source/tbxctrls/tbunosearchcontrollers.cxx b/svx/source/tbxctrls/tbunosearchcontrollers.cxx index c2070618d69e..94ac6c8fde8c 100644 --- a/svx/source/tbxctrls/tbunosearchcontrollers.cxx +++ b/svx/source/tbxctrls/tbunosearchcontrollers.cxx @@ -178,7 +178,8 @@ void impl_executeSearch( const css::uno::Reference< css::uno::XComponentContext { "SearchItem.Command", css::uno::Any( static_cast(aFindAll ?SvxSearchCmd::FIND_ALL : SvxSearchCmd::FIND ) ) }, { "SearchItem.AlgorithmType", css::uno::Any( sal_Int16(css::util::SearchAlgorithms_ABSOLUTE) ) }, { "SearchItem.AlgorithmType2", css::uno::Any( sal_Int16(css::util::SearchAlgorithms2::ABSOLUTE) ) }, - { "SearchItem.SearchFormatted", css::uno::Any( bSearchFormatted ) } + { "SearchItem.SearchFormatted", css::uno::Any( bSearchFormatted ) }, + { "UseAttrItemList", css::uno::Any(false) } } ) ); css::uno::Reference< css::frame::XDispatchProvider > xDispatchProvider(xFrame, css::uno::UNO_QUERY); diff --git a/svx/source/unodraw/unoshape.cxx b/svx/source/unodraw/unoshape.cxx index 5c3807817a6f..b547db4b436a 100644 --- a/svx/source/unodraw/unoshape.cxx +++ b/svx/source/unodraw/unoshape.cxx @@ -192,7 +192,7 @@ SvxShape::~SvxShape() noexcept if ( mxSdrObject ) { - EndListening(mxSdrObject->getSdrModelFromSdrObject()); + mxSdrObject->RemoveListener(*this); mxSdrObject->setUnoShape(nullptr); mxSdrObject.clear(); } @@ -205,7 +205,7 @@ void SvxShape::InvalidateSdrObject() { if(mxSdrObject) { - EndListening(mxSdrObject->getSdrModelFromSdrObject()); + mxSdrObject->RemoveListener(*this); mxSdrObject.clear(); } }; @@ -285,7 +285,7 @@ void SvxShape::impl_construct() { if ( HasSdrObject() ) { - StartListening(GetSdrObject()->getSdrModelFromSdrObject()); + GetSdrObject()->AddListener(*this); impl_initFromSdrObject(); } } @@ -355,14 +355,14 @@ void SvxShape::Create( SdrObject* pNewObj, SvxDrawPage* /*pNewPage*/ ) if( HasSdrObject() ) { - EndListening( GetSdrObject()->getSdrModelFromSdrObject() ); + GetSdrObject()->RemoveListener( *this ); } mxSdrObject = pNewObj; if( HasSdrObject() ) { - StartListening( GetSdrObject()->getSdrModelFromSdrObject() ); + GetSdrObject()->AddListener( *this ); } OSL_ENSURE( !mbIsMultiPropertyCall, "SvxShape::Create: hmm?" ); @@ -929,8 +929,7 @@ void SvxShape::Notify( SfxBroadcaster&, const SfxHint& rHint ) noexcept return; const SdrHint* pSdrHint = static_cast(&rHint); // #i55919# SdrHintKind::ObjectChange is only interesting if it's for this object - if ((pSdrHint->GetKind() != SdrHintKind::ModelCleared) && - (pSdrHint->GetKind() != SdrHintKind::ObjectChange || pSdrHint->GetObject() != mxSdrObject.get() )) + if (pSdrHint->GetKind() != SdrHintKind::ObjectChange || pSdrHint->GetObject() != mxSdrObject.get()) return; // prevent object being deleted from under us @@ -938,24 +937,12 @@ void SvxShape::Notify( SfxBroadcaster&, const SfxHint& rHint ) noexcept uno::Reference< uno::XInterface > xSelf( mxSdrObject->getWeakUnoShape() ); if( !xSelf.is() ) { - EndListening(mxSdrObject->getSdrModelFromSdrObject()); + mxSdrObject->RemoveListener(*this); mxSdrObject.clear(); return; } - if (pSdrHint->GetKind() == SdrHintKind::ObjectChange) - { - updateShapeKind(); - } - else // (pSdrHint->GetKind() == SdrHintKind::ModelCleared) - { - EndListening(mxSdrObject->getSdrModelFromSdrObject()); - mxSdrObject->setUnoShape(nullptr); - mxSdrObject.clear(); - - if(!mpImpl->mbDisposing) - dispose(); - } + updateShapeKind(); } // XShape @@ -1190,7 +1177,7 @@ void SAL_CALL SvxShape::dispose() if (!pObject) return; - EndListening( pObject->getSdrModelFromSdrObject() ); + pObject->RemoveListener( *this ); if ( pObject->IsInserted() && pObject->getSdrPageFromSdrObject() ) { diff --git a/svx/source/unodraw/unoshtxt.cxx b/svx/source/unodraw/unoshtxt.cxx index 37314e6f1bb6..afc987da6cf2 100644 --- a/svx/source/unodraw/unoshtxt.cxx +++ b/svx/source/unodraw/unoshtxt.cxx @@ -175,11 +175,11 @@ SvxTextEditSourceImpl::SvxTextEditSourceImpl( SdrObject* pObject, SdrText* pText mpText = pTextObj->getText( 0 ); } - if( mpModel ) - StartListening( *mpModel ); - if( mpObject ) + { + mpObject->AddListener( *this ); mpObject->AddObjectUser( *this ); + } } @@ -206,7 +206,7 @@ SvxTextEditSourceImpl::SvxTextEditSourceImpl( SdrObject& rObject, SdrText* pText mpText = pTextObj->getText( 0 ); } - StartListening( *mpModel ); + rObject.AddListener( *this ); StartListening( *mpView ); mpObject->AddObjectUser( *this ); @@ -366,9 +366,6 @@ void SvxTextEditSourceImpl::Notify(SfxBroadcaster& rBC, const SfxHint& rHint) } break; - case SdrHintKind::ModelCleared: - dispose(); - break; default: break; } @@ -407,10 +404,7 @@ void SvxTextEditSourceImpl::dispose() } if( mpModel ) - { - EndListening( *mpModel ); mpModel = nullptr; - } if( mpView ) { @@ -426,6 +420,7 @@ void SvxTextEditSourceImpl::dispose() if( mpObject ) { + mpObject->RemoveListener( *this ); mpObject->RemoveObjectUser( *this ); mpObject = nullptr; } diff --git a/svx/uiconfig/ui/addinstancedialog.ui b/svx/uiconfig/ui/addinstancedialog.ui index ebde1185103f..c76f217bba08 100644 --- a/svx/uiconfig/ui/addinstancedialog.ui +++ b/svx/uiconfig/ui/addinstancedialog.ui @@ -1,35 +1,32 @@ - + - False - 6 + False + 6 Add Instance True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -42,8 +39,8 @@ _Cancel True - True - True + True + True True @@ -56,8 +53,8 @@ _Help True - True - True + True + True True @@ -71,115 +68,115 @@ False True - end + end 0 - + True - False + False True - 6 - 12 + 6 + 12 True - True - True + True + True + 46 True - 46 - 1 - 0 + 1 + 0 2 True - False + False _Name: - True - name + True + name 1 - 0 - 0 + 0 + 0 - False - True + False + True Edit Instance - 0 - 3 + 0 + 3 3 True - False + False _URL: - True - url + True + url 1 - 0 - 1 + 0 + 1 True - False + False True - True + True + True True - True - 1 - 1 + 1 + 1 _Browse... True - True - True - True + True + True + True - 2 - 1 + 2 + 1 _Link instance True - True - False - True - True + True + False + True + True - 0 - 2 + 0 + 2 3 diff --git a/svx/uiconfig/ui/addnamespacedialog.ui b/svx/uiconfig/ui/addnamespacedialog.ui index 4ac8da6a2767..8220683d99a9 100644 --- a/svx/uiconfig/ui/addnamespacedialog.ui +++ b/svx/uiconfig/ui/addnamespacedialog.ui @@ -163,4 +163,4 @@ help - \ No newline at end of file + diff --git a/svx/uiconfig/ui/addsubmissiondialog.ui b/svx/uiconfig/ui/addsubmissiondialog.ui index ed708a477c81..ea603f26617e 100644 --- a/svx/uiconfig/ui/addsubmissiondialog.ui +++ b/svx/uiconfig/ui/addsubmissiondialog.ui @@ -1,35 +1,32 @@ - + - False - 6 + False + 6 Add Submission True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -42,8 +39,8 @@ _Cancel True - True - True + True + True True @@ -56,8 +53,8 @@ _Help True - True - True + True + True True @@ -71,193 +68,193 @@ False True - end + end 0 - + True - False + False True - 6 - 12 + 6 + 12 True - True + True center - True + True + 46 True - 46 - 1 - 0 + 1 + 0 2 True - False + False _Name: - True - name + True + name 1 - 0 - 0 + 0 + 0 True - False + False Binding e_xpression: - True - expression + True + expression 1 - 0 - 3 + 0 + 3 _Add... True - True - True + True + True center - True + True - 2 - 3 + 2 + 3 True - False + False _Action: - True - action + True + action 1 - 0 - 1 + 0 + 1 True - True + True center - True + True + 46 True - 46 - 1 - 1 + 1 + 1 2 True - False + False _Method: - True - method + True + method 1 - 0 - 2 + 0 + 2 True - False + False center - 1 - 2 + 1 + 2 2 True - True + True center - True + True + 46 True - 46 - 1 - 3 + 1 + 3 True - False + False _Binding: - True - binding + True + binding 1 - 0 - 4 + 0 + 4 True - False + False _Replace: - True - replace + True + replace 1 - 0 - 5 + 0 + 5 True - False + False center - 1 - 4 + 1 + 4 2 True - False + False center - 1 - 5 + 1 + 5 2 diff --git a/svx/uiconfig/ui/savemodifieddialog.ui b/svx/uiconfig/ui/savemodifieddialog.ui index 51877e552163..c9038761ef57 100644 --- a/svx/uiconfig/ui/savemodifieddialog.ui +++ b/svx/uiconfig/ui/savemodifieddialog.ui @@ -1,31 +1,31 @@ - + - False + False False True - dialog - True - question + dialog + True + question Do you want to save your changes? - The content of the current form has been modified. + The content of the current form has been modified. - False + False vertical 12 - False + False _No True - True - True - True + True + True + True False @@ -37,11 +37,11 @@ _Yes True - True - True - True - True - True + True + True + True + True + True False @@ -53,8 +53,8 @@ _Cancel True - True - True + True + True True @@ -67,7 +67,7 @@ False True - end + end 0 diff --git a/svx/uiconfig/ui/xformspage.ui b/svx/uiconfig/ui/xformspage.ui index 69bd495ffab4..255439c41264 100644 --- a/svx/uiconfig/ui/xformspage.ui +++ b/svx/uiconfig/ui/xformspage.ui @@ -1,5 +1,5 @@ - + @@ -14,27 +14,28 @@ True - False + False True True - 6 + 6 vertical 6 True - True + True True - icons - False + icons + False 2 True + False start Add Item - True - res/tb01.png + True + res/tb01.png False @@ -44,10 +45,11 @@ True + False start Add Element - True - res/tb02.png + True + res/tb02.png False @@ -57,10 +59,11 @@ True + False start Add Attribute - True - res/tb03.png + True + res/tb03.png False @@ -70,10 +73,11 @@ True + False start Edit - True - res/tb04.png + True + res/tb04.png False @@ -83,7 +87,7 @@ True - False + False False @@ -93,10 +97,11 @@ True + False start Delete - True - res/tb05.png + True + res/tb05.png False @@ -118,22 +123,22 @@ True - True + True True True - in + in True - True - True + True + True True True liststore1 - False + False True - 1 - True + 1 + True diff --git a/svx/uiconfig/ui/xmlsecstatmenu.ui b/svx/uiconfig/ui/xmlsecstatmenu.ui index 11695ccaf46b..cdc26ae2c864 100644 --- a/svx/uiconfig/ui/xmlsecstatmenu.ui +++ b/svx/uiconfig/ui/xmlsecstatmenu.ui @@ -14,4 +14,4 @@ - \ No newline at end of file + diff --git a/sw/CppunitTest_sw_autocorrect.mk b/sw/CppunitTest_sw_autocorrect.mk new file mode 100644 index 000000000000..7122b48b3d45 --- /dev/null +++ b/sw/CppunitTest_sw_autocorrect.mk @@ -0,0 +1,78 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_CppunitTest_CppunitTest,sw_autocorrect)) + +$(eval $(call gb_CppunitTest_use_common_precompiled_header,sw_autocorrect)) + +$(eval $(call gb_CppunitTest_add_exception_objects,sw_autocorrect, \ + sw/qa/extras/autocorrect/autocorrect \ +)) + +$(eval $(call gb_CppunitTest_use_libraries,sw_autocorrect, \ + comphelper \ + cppu \ + cppuhelper \ + editeng \ + sal \ + sfx \ + subsequenttest \ + svl \ + svx \ + svxcore \ + sw \ + swqahelper \ + test \ + unotest \ + utl \ + vcl \ + tl \ +)) + +$(eval $(call gb_CppunitTest_use_externals,sw_autocorrect,\ + boost_headers \ + libxml2 \ +)) + +$(eval $(call gb_CppunitTest_set_include,sw_autocorrect,\ + -I$(SRCDIR)/sw/inc \ + -I$(SRCDIR)/sw/source/core/inc \ + -I$(SRCDIR)/sw/source/uibase/inc \ + -I$(SRCDIR)/sw/qa/inc \ + $$(INCLUDE) \ +)) + +$(eval $(call gb_CppunitTest_use_api,sw_autocorrect,\ + udkapi \ + offapi \ + oovbaapi \ +)) + +$(eval $(call gb_CppunitTest_use_ure,sw_autocorrect)) +$(eval $(call gb_CppunitTest_use_vcl,sw_autocorrect)) + +$(eval $(call gb_CppunitTest_use_rdb,sw_autocorrect,services)) + +$(eval $(call gb_CppunitTest_use_custom_headers,sw_autocorrect,\ + officecfg/registry \ +)) + +$(eval $(call gb_CppunitTest_use_configuration,sw_autocorrect)) + +$(eval $(call gb_CppunitTest_use_uiconfigs,sw_autocorrect, \ + modules/swriter \ +)) + +$(eval $(call gb_CppunitTest_use_more_fonts,sw_autocorrect)) + +ifneq ($(filter MORE_FONTS,$(BUILD_TYPE)),) +$(eval $(call gb_CppunitTest_set_non_application_font_use,sw_autocorrect,abort)) +endif + +# vim: set noet sw=4 ts=4: diff --git a/sw/CppunitTest_sw_writerfilter_dmapper.mk b/sw/CppunitTest_sw_writerfilter_dmapper.mk index d865706c2b50..a56d02e4b71d 100644 --- a/sw/CppunitTest_sw_writerfilter_dmapper.mk +++ b/sw/CppunitTest_sw_writerfilter_dmapper.mk @@ -23,6 +23,7 @@ $(eval $(call gb_CppunitTest_add_exception_objects,sw_writerfilter_dmapper, \ sw/qa/writerfilter/dmapper/DomainMapper \ sw/qa/writerfilter/dmapper/DomainMapper_Impl \ sw/qa/writerfilter/dmapper/GraphicImport \ + sw/qa/writerfilter/dmapper/NumberingManager \ sw/qa/writerfilter/dmapper/TableManager \ sw/qa/writerfilter/dmapper/TextEffectsHandler \ sw/qa/writerfilter/dmapper/PropertyMap \ diff --git a/sw/Module_sw.mk b/sw/Module_sw.mk index 2db6fbace5f5..941de1a43ff7 100644 --- a/sw/Module_sw.mk +++ b/sw/Module_sw.mk @@ -136,6 +136,7 @@ $(eval $(call gb_Module_add_slowcheck_targets,sw,\ CppunitTest_sw_accessible_relation_set \ CppunitTest_sw_apiterminate \ CppunitTest_sw_apitests \ + CppunitTest_sw_autocorrect \ CppunitTest_sw_unowriter \ CppunitTest_sw_core_text \ CppunitTest_sw_core_doc \ diff --git a/sw/UIConfig_swriter.mk b/sw/UIConfig_swriter.mk index 27b7248d74e5..262123969dae 100644 --- a/sw/UIConfig_swriter.mk +++ b/sw/UIConfig_swriter.mk @@ -292,6 +292,7 @@ $(eval $(call gb_UIConfig_add_uifiles,modules/swriter,\ sw/uiconfig/swriter/ui/sidebartableedit \ sw/uiconfig/swriter/ui/sidebartheme \ sw/uiconfig/swriter/ui/sidebarquickfind \ + sw/uiconfig/swriter/ui/sidebarquickfindoptionsdialog \ sw/uiconfig/swriter/ui/sortdialog \ sw/uiconfig/swriter/ui/spellmenu \ sw/uiconfig/swriter/ui/splittable \ diff --git a/sw/inc/AccessibilityCheckStrings.hrc b/sw/inc/AccessibilityCheckStrings.hrc index 8073f9cc1c73..11a5b5299ab1 100644 --- a/sw/inc/AccessibilityCheckStrings.hrc +++ b/sw/inc/AccessibilityCheckStrings.hrc @@ -19,6 +19,7 @@ #define STR_FAKE_NUMBERING NC_("STR_FAKE_NUMBERING", "Simulated numbering “%NUMBERING%”.") #define STR_HYPERLINK_TEXT_IS_LINK NC_("STR_HYPERLINK_TEXT_IS_LINK", "Hyperlink text is the same as the link address “%LINK%”.") #define STR_HYPERLINK_TEXT_IS_SHORT NC_("STR_HYPERLINK_TEXT_IS_SHORT", "Hyperlink text is too short.") +#define STR_HYPERLINK_NO_NAME NC_("STR_HYPERLINK_NO_NAME", "Missing 'Name' property of hyperlink.") #define STR_TEXT_CONTRAST NC_("STR_TEXT_CONTRAST", "Text contrast is too low.") #define STR_TEXT_BLINKING NC_("STR_TEXT_BLINKING", "Blinking text.") #define STR_AVOID_FOOTNOTES NC_("STR_AVOID_FOOTNOTES", "Avoid footnotes.") @@ -45,6 +46,7 @@ #define STR_DOCUMENT_TITLE NC_("STR_DOCUMENT_TITLE", "Document title is not set.") #define STR_DOCUMENT_TITLE_DLG_TITLE NC_("STR_DOCUMENT_TITLE_DLG_TITLE", "Document title") #define STR_DOCUMENT_TITLE_DLG_DESC NC_("STR_DOCUMENT_TITLE_DLG_DESC", "Enter document title:") +#define STR_HYPERLINK_NO_NAME_DLG NC_("STR_HYPERLINK_NO_NAME_DLG", "Enter a name of the hyperlink:") #define STR_ENTER_ALT NC_("STR_ENTER_ALT", "Enter alternative text:") diff --git a/sw/inc/fmtfsize.hxx b/sw/inc/fmtfsize.hxx index 66aea1e78e50..4607d2c83579 100644 --- a/sw/inc/fmtfsize.hxx +++ b/sw/inc/fmtfsize.hxx @@ -87,10 +87,12 @@ public: virtual bool PutValue( const css::uno::Any& rVal, sal_uInt8 nMemberId ) override; SwFrameSize GetHeightSizeType() const { return m_eFrameHeightType; } - void SetHeightSizeType( SwFrameSize eSize ) { m_eFrameHeightType = eSize; } + void SetHeightSizeType( SwFrameSize eSize ) + { ASSERT_CHANGE_REFCOUNTED_ITEM; m_eFrameHeightType = eSize; } SwFrameSize GetWidthSizeType() const { return m_eFrameWidthType; } - void SetWidthSizeType( SwFrameSize eSize ) { m_eFrameWidthType = eSize; } + void SetWidthSizeType( SwFrameSize eSize ) + { ASSERT_CHANGE_REFCOUNTED_ITEM; m_eFrameWidthType = eSize; } enum PercentFlags { SYNCED = 0xff }; //0xff is reserved to indicate height is synced to width @@ -99,12 +101,19 @@ public: //0xff is reserved to indicate width is synced to height sal_uInt8 GetWidthPercent() const { return m_nWidthPercent; } sal_Int16 GetWidthPercentRelation() const { return m_eWidthPercentRelation; } - void SetHeightPercent( sal_uInt8 n ) { m_nHeightPercent = n; } - void SetHeightPercentRelation ( sal_Int16 n ) { m_eHeightPercentRelation = n; } - void SetWidthPercent ( sal_uInt8 n ) { m_nWidthPercent = n; } - void SetWidthPercentRelation ( sal_Int16 n ) { m_eWidthPercentRelation = n; } + void SetHeightPercent( sal_uInt8 n ) + { ASSERT_CHANGE_REFCOUNTED_ITEM; m_nHeightPercent = n; } + void SetHeightPercentRelation ( sal_Int16 n ) + { ASSERT_CHANGE_REFCOUNTED_ITEM; m_eHeightPercentRelation = n; } + void SetWidthPercent ( sal_uInt8 n ) + { ASSERT_CHANGE_REFCOUNTED_ITEM; m_nWidthPercent = n; } + void SetWidthPercentRelation ( sal_Int16 n ) + { ASSERT_CHANGE_REFCOUNTED_ITEM; m_eWidthPercentRelation = n; } void dumpAsXml(xmlTextWriterPtr pWriter) const override; + +protected: + virtual ItemInstanceManager* getItemInstanceManager() const override; }; inline const SwFormatFrameSize &SwAttrSet::GetFrameSize(bool bInP) const diff --git a/sw/inc/fmtornt.hxx b/sw/inc/fmtornt.hxx index 0a993243cf7a..9e4ef933c97e 100644 --- a/sw/inc/fmtornt.hxx +++ b/sw/inc/fmtornt.hxx @@ -56,13 +56,19 @@ public: sal_Int16 GetVertOrient() const { return m_eOrient; } sal_Int16 GetRelationOrient() const { return m_eRelation; } - void SetVertOrient( sal_Int16 eNew ) { m_eOrient = eNew; } - void SetRelationOrient( sal_Int16 eNew ) { m_eRelation = eNew; } + void SetVertOrient( sal_Int16 eNew ) + { ASSERT_CHANGE_REFCOUNTED_ITEM; m_eOrient = eNew; } + void SetRelationOrient( sal_Int16 eNew ) + { ASSERT_CHANGE_REFCOUNTED_ITEM; m_eRelation = eNew; } SwTwips GetPos() const { return m_nYPos; } - void SetPos( SwTwips nNew ) { m_nYPos = nNew; } + void SetPos( SwTwips nNew ) + { ASSERT_CHANGE_REFCOUNTED_ITEM; m_nYPos = nNew; } void dumpAsXml(xmlTextWriterPtr pWriter) const override; + +protected: + virtual ItemInstanceManager* getItemInstanceManager() const override; }; /// Defines the horizontal position of a fly frame. @@ -93,16 +99,19 @@ public: sal_Int16 GetHoriOrient() const { return m_eOrient; } sal_Int16 GetRelationOrient() const { return m_eRelation; } - void SetHoriOrient( sal_Int16 eNew ) { m_eOrient = eNew; } - void SetRelationOrient( sal_Int16 eNew ) { m_eRelation = eNew; } + void SetHoriOrient( sal_Int16 eNew ) { ASSERT_CHANGE_REFCOUNTED_ITEM; m_eOrient = eNew; } + void SetRelationOrient( sal_Int16 eNew ) { ASSERT_CHANGE_REFCOUNTED_ITEM; m_eRelation = eNew; } SwTwips GetPos() const { return m_nXPos; } - void SetPos( SwTwips nNew ) { m_nXPos = nNew; } + void SetPos( SwTwips nNew ) { ASSERT_CHANGE_REFCOUNTED_ITEM; m_nXPos = nNew; } bool IsPosToggle() const { return m_bPosToggle; } - void SetPosToggle( bool bNew ) { m_bPosToggle = bNew; } + void SetPosToggle( bool bNew ) { ASSERT_CHANGE_REFCOUNTED_ITEM; m_bPosToggle = bNew; } void dumpAsXml(xmlTextWriterPtr pWriter) const override; + +protected: + virtual ItemInstanceManager* getItemInstanceManager() const override; }; inline const SwFormatVertOrient &SwAttrSet::GetVertOrient(bool bInP) const diff --git a/sw/inc/strings.hrc b/sw/inc/strings.hrc index 298b861eecf6..97b7b4545054 100644 --- a/sw/inc/strings.hrc +++ b/sw/inc/strings.hrc @@ -134,7 +134,7 @@ #define STR_POOLCOLL_BULLET_LEVEL5 NC_("STR_POOLCOLL_BULLET_LEVEL5", "List 5") #define STR_POOLCOLL_BULLET_LEVEL5E NC_("STR_POOLCOLL_BULLET_LEVEL5E", "List 5 End") #define STR_POOLCOLL_BULLET_NONUM5 NC_("STR_POOLCOLL_BULLET_NONUM5", "List 5 Cont.") -#define STR_POOLCOLL_HEADERFOOTER NC_("STR_POOLCOLL_HEADER", "Header and Footer") +#define STR_POOLCOLL_HEADERFOOTER NC_("STR_POOLCOLL_HEADERFOOTER", "Header and Footer") #define STR_POOLCOLL_HEADER NC_("STR_POOLCOLL_HEADER", "Header") #define STR_POOLCOLL_HEADERL NC_("STR_POOLCOLL_HEADERL", "Header Left") #define STR_POOLCOLL_HEADERR NC_("STR_POOLCOLL_HEADERR", "Header Right") @@ -717,6 +717,8 @@ #define STR_NEW_FILE NC_("STR_NEW_FILE", "New Document") #define STR_INSERT_TEXT NC_("STR_INSERT_TEXT", "Text") #define STR_DELETE NC_("STR_DELETE", "Delete") +#define STR_DELETE_CONTENT_TYPE NC_("STR_DELETE_CONTENT_TYPE", "Delete All %1") +#define STR_DELETE_CONTENT NC_("STR_DELETE_CONTENT", "Delete %1") #define STR_DELETE_ENTRY NC_("STR_DELETE_ENTRY", "~Delete") #define STR_UPDATE_SEL NC_("STR_UPDATE_SEL", "Selection") #define STR_UPDATE_INDEX NC_("STR_UPDATE_INDEX", "Indexes") @@ -1396,7 +1398,7 @@ #define STR_NUM_OUTLINE NC_("STR_NUM_OUTLINE", "Outline ") #define STR_EDIT_FOOTNOTE NC_("STR_EDIT_FOOTNOTE", "Edit Footnote/Endnote") #define STR_NB_REPLACED NC_("STR_NB_REPLACED", "Search key replaced XX times.") -#define STR_SEARCH_KEY_FOUND_TIMES NC_("STR_SEARCH_KEY_FOUND_TIMES", "Search key found %1 times.") +#define STR_SEARCH_KEY_FOUND_TIMES NNC_("STR_SEARCH_KEY_FOUND_TIMES", "One match found.", "%1 matches found.") #define STR_SRCVIEW_ROW NC_("STR_SRCVIEW_ROW", "Row ") #define STR_SRCVIEW_COL NC_("STR_SRCVIEW_COL", "Column ") #define STR_SAVEAS_SRC NC_("STR_SAVEAS_SRC", "~Export source...") diff --git a/sw/inc/unoframe.hxx b/sw/inc/unoframe.hxx index 46963a85c425..3760bb311200 100644 --- a/sw/inc/unoframe.hxx +++ b/sw/inc/unoframe.hxx @@ -29,6 +29,7 @@ #include #include +#include #include #include #include @@ -38,6 +39,7 @@ #include "unotext.hxx" #include +#include class SdrObject; class SwDoc; @@ -58,8 +60,8 @@ class SAL_DLLPUBLIC_RTTI SAL_LOPLUGIN_ANNOTATE("crosscast") SwXFrame : public cp public SvtListener { private: - class Impl; - ::sw::UnoImplPtr m_pImpl; + std::mutex m_Mutex; // just for OInterfaceContainerHelper4 + ::comphelper::OInterfaceContainerHelper4 m_EventListeners; SwFrameFormat* m_pFrameFormat; const SfxItemPropertySet* m_pPropSet; diff --git a/sw/inc/unoparagraph.hxx b/sw/inc/unoparagraph.hxx index cbdfe202a1cb..a4936991fd60 100644 --- a/sw/inc/unoparagraph.hxx +++ b/sw/inc/unoparagraph.hxx @@ -21,6 +21,7 @@ #define INCLUDED_SW_INC_UNOPARAGRAPH_HXX #include +#include #include #include @@ -32,12 +33,16 @@ #include #include +#include #include #include +#include #include "unobaseclass.hxx" +class SfxItemPropertySet; +struct SfxItemPropertyMapEntry; class SwPaM; class SwUnoCursor; class SwStartNode; @@ -65,9 +70,6 @@ class SwXParagraph final private: - class Impl; - ::sw::UnoImplPtr m_pImpl; - virtual ~SwXParagraph() override; SwXParagraph(css::uno::Reference< SwXText > const & xParent, @@ -77,6 +79,31 @@ private: /// descriptor SwXParagraph(); + /// @throws beans::UnknownPropertyException + /// @throws beans::PropertyVetoException + /// @throws lang::IllegalArgumentException + /// @throws lang::WrappedTargetException + /// @throws uno::RuntimeException + void SetPropertyValues_Impl( + const css::uno::Sequence< OUString >& rPropertyNames, + const css::uno::Sequence< css::uno::Any >& rValues ); + /// @throws beans::UnknownPropertyException + /// @throws lang::WrappedTargetException + /// @throws uno::RuntimeException + css::uno::Sequence< css::uno::Any > GetPropertyValues_Impl( + const css::uno::Sequence< OUString >& rPropertyNames); + SwTextNode& GetTextNodeOrThrow(); + /// @throws uno::RuntimeException + static void GetSinglePropertyValue_Impl( + const SfxItemPropertyMapEntry& rEntry, + const SfxItemSet& rSet, + css::uno::Any& rAny ); + /// @throws uno::RuntimeException + css::uno::Sequence< css::beans::GetDirectPropertyTolerantResult > + GetPropertyValuesTolerant_Impl( + const css::uno::Sequence< OUString >& rPropertyNames, + bool bDirectValuesOnly); + public: static rtl::Reference @@ -84,8 +111,8 @@ public: css::uno::Reference const& xParentText, const sal_Int32 nSelStart = -1, const sal_Int32 nSelEnd = - 1); - const SwTextNode * GetTextNode() const; - bool IsDescriptor() const; + const SwTextNode * GetTextNode() const { return m_pTextNode; } + bool IsDescriptor() const { return m_bIsDescriptor; } /// make rPaM select the paragraph bool SelectPaM(SwPaM & rPaM); /// for SwXText @@ -200,6 +227,24 @@ public: /// tries to return less data, but may return more than just text fields rtl::Reference createTextFieldsEnumeration(); + +private: + std::mutex m_Mutex; // just for OInterfaceContainerHelper4 + ::comphelper::OInterfaceContainerHelper4 m_EventListeners; + SfxItemPropertySet const& m_rPropSet; + bool m_bIsDescriptor; + sal_Int32 m_nSelectionStartPos; + sal_Int32 m_nSelectionEndPos; + OUString m_sText; + css::uno::Reference m_xParentText; + SwTextNode* m_pTextNode; + struct MySvtListener : public SvtListener + { + SwXParagraph& m_rThis; + MySvtListener(SwXParagraph& rThis) : m_rThis(rThis) {} + virtual void Notify(const SfxHint& rHint) override; + }; + std::optional moSvtListener; }; diff --git a/sw/qa/core/accessibilitycheck/AccessibilityCheckTest.cxx b/sw/qa/core/accessibilitycheck/AccessibilityCheckTest.cxx index d3355bcfdd43..77330b9a8157 100644 --- a/sw/qa/core/accessibilitycheck/AccessibilityCheckTest.cxx +++ b/sw/qa/core/accessibilitycheck/AccessibilityCheckTest.cxx @@ -104,9 +104,11 @@ CPPUNIT_TEST_FIXTURE(AccessibilityCheckTest, testCheckNewlineSpace) sw::AccessibilityCheck aCheck(pDoc); aCheck.check(); auto& aIssues = aCheck.getIssueCollection().getIssues(); - CPPUNIT_ASSERT_EQUAL(size_t(2), aIssues.size()); - CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::TEXT_FORMATTING, aIssues[0]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(size_t(4), aIssues.size()); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::DIRECT_FORMATTING, aIssues[0]->m_eIssueID); CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::TEXT_FORMATTING, aIssues[1]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::DIRECT_FORMATTING, aIssues[2]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::TEXT_FORMATTING, aIssues[3]->m_eIssueID); } CPPUNIT_TEST_FIXTURE(AccessibilityCheckTest, testCheckSpacebarSpace) @@ -117,8 +119,10 @@ CPPUNIT_TEST_FIXTURE(AccessibilityCheckTest, testCheckSpacebarSpace) sw::AccessibilityCheck aCheck(pDoc); aCheck.check(); auto& aIssues = aCheck.getIssueCollection().getIssues(); - CPPUNIT_ASSERT_EQUAL(size_t(1), aIssues.size()); - CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::TEXT_FORMATTING, aIssues[0]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(size_t(3), aIssues.size()); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::DIRECT_FORMATTING, aIssues[0]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::TEXT_FORMATTING, aIssues[1]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::DIRECT_FORMATTING, aIssues[2]->m_eIssueID); } CPPUNIT_TEST_FIXTURE(AccessibilityCheckTest, testHyperlinks) @@ -129,9 +133,11 @@ CPPUNIT_TEST_FIXTURE(AccessibilityCheckTest, testHyperlinks) sw::AccessibilityCheck aCheck(pDoc); aCheck.check(); auto& aIssues = aCheck.getIssueCollection().getIssues(); - CPPUNIT_ASSERT_EQUAL(size_t(2), aIssues.size()); + CPPUNIT_ASSERT_EQUAL(size_t(4), aIssues.size()); CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::HYPERLINK_SHORT, aIssues[0]->m_eIssueID); - CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::HYPERLINK_IS_TEXT, aIssues[1]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::HYPERLINK_NO_NAME, aIssues[1]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::HYPERLINK_IS_TEXT, aIssues[2]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::HYPERLINK_NO_NAME, aIssues[3]->m_eIssueID); } CPPUNIT_TEST_FIXTURE(AccessibilityCheckTest, testCheckHighlightedText) @@ -142,8 +148,10 @@ CPPUNIT_TEST_FIXTURE(AccessibilityCheckTest, testCheckHighlightedText) sw::AccessibilityCheck aCheck(pDoc); aCheck.check(); auto& aIssues = aCheck.getIssueCollection().getIssues(); - CPPUNIT_ASSERT_EQUAL(size_t(1), aIssues.size()); + CPPUNIT_ASSERT_EQUAL(size_t(3), aIssues.size()); CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::DIRECT_FORMATTING, aIssues[0]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::DIRECT_FORMATTING, aIssues[1]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::DIRECT_FORMATTING, aIssues[2]->m_eIssueID); } CPPUNIT_TEST_FIXTURE(AccessibilityCheckTest, testNumberingCheck) @@ -170,9 +178,13 @@ CPPUNIT_TEST_FIXTURE(AccessibilityCheckTest, testCheckFakeFootnote) sw::AccessibilityCheck aCheck(pDoc); aCheck.check(); auto& aIssues = aCheck.getIssueCollection().getIssues(); - CPPUNIT_ASSERT_EQUAL(size_t(2), aIssues.size()); - CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::FAKE_FOOTNOTE, aIssues[0]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(size_t(6), aIssues.size()); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::DIRECT_FORMATTING, aIssues[0]->m_eIssueID); CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::FAKE_FOOTNOTE, aIssues[1]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::DIRECT_FORMATTING, aIssues[2]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::FAKE_FOOTNOTE, aIssues[3]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::DIRECT_FORMATTING, aIssues[4]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::DIRECT_FORMATTING, aIssues[5]->m_eIssueID); } CPPUNIT_TEST_FIXTURE(AccessibilityCheckTest, testCheckFakeCaption) @@ -207,11 +219,15 @@ CPPUNIT_TEST_FIXTURE(AccessibilityCheckTest, testCheckTabsFormatting) sw::AccessibilityCheck aCheck(pDoc); aCheck.check(); auto& aIssues = aCheck.getIssueCollection().getIssues(); - CPPUNIT_ASSERT_EQUAL(size_t(4), aIssues.size()); + CPPUNIT_ASSERT_EQUAL(size_t(8), aIssues.size()); CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::TEXT_FORMATTING, aIssues[0]->m_eIssueID); - CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::TEXT_FORMATTING, aIssues[1]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::DIRECT_FORMATTING, aIssues[1]->m_eIssueID); CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::TEXT_FORMATTING, aIssues[2]->m_eIssueID); - CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::TEXT_FORMATTING, aIssues[3]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::DIRECT_FORMATTING, aIssues[3]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::TEXT_FORMATTING, aIssues[4]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::DIRECT_FORMATTING, aIssues[5]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::TEXT_FORMATTING, aIssues[6]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::DIRECT_FORMATTING, aIssues[7]->m_eIssueID); } //tdf#156550 - Accessibility sidebar complains about TOC hyperlinks diff --git a/sw/qa/core/data/docm/testTables.docm b/sw/qa/core/data/docm/testTables.docm index 5d4502ade055..d78f9a0abcfa 100644 Binary files a/sw/qa/core/data/docm/testTables.docm and b/sw/qa/core/data/docm/testTables.docm differ diff --git a/sw/qa/core/macros-test.cxx b/sw/qa/core/macros-test.cxx index 0e764eb1f3aa..21798735cd09 100644 --- a/sw/qa/core/macros-test.cxx +++ b/sw/qa/core/macros-test.cxx @@ -116,7 +116,7 @@ void SwMacrosTest::testVba() OUString("testFontColor.docm"), OUString("vnd.sun.Star.script:Project.ThisDocument.testAll?language=Basic&location=document") - } + }, // TODO - make these pass in Writer { OUString("testSentences.docm"), @@ -133,8 +133,7 @@ void SwMacrosTest::testVba() { u"testTables.docm"_ustr, u"vnd.sun.Star.script:Project.ThisDocument.TestAll?language=Basic&location=document"_ustr - } - + }, }; for (auto const & [ sFileBaseName, sMacroUrl ] : testInfo) { diff --git a/sw/qa/core/text/itrform2.cxx b/sw/qa/core/text/itrform2.cxx index 8753a797e9f8..5612863a0ddf 100644 --- a/sw/qa/core/text/itrform2.cxx +++ b/sw/qa/core/text/itrform2.cxx @@ -11,6 +11,9 @@ #include +#include + +#include #include #include @@ -258,6 +261,59 @@ CPPUNIT_TEST_FIXTURE(Test, testContentControlPDFFontColor) // i.e. the custom color was lost, the font color was black, not orange. CPPUNIT_ASSERT_EQUAL(nOrange, pAnnotation->getFontColor(pPdfDocument.get())); } + +CPPUNIT_TEST_FIXTURE(Test, testContentControlPDFDropDownText) +{ + std::shared_ptr pPDFium = vcl::pdf::PDFiumLibrary::get(); + if (!pPDFium) + return; + + // Given a document with a dropdown: custom default text and 3 items: + createSwDoc(); + uno::Reference xMSF(mxComponent, uno::UNO_QUERY); + uno::Reference xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference xText = xTextDocument->getText(); + uno::Reference xCursor = xText->createTextCursor(); + xText->insertString(xCursor, u"test"_ustr, /*bAbsorb=*/false); + xCursor->gotoStart(/*bExpand=*/false); + xCursor->gotoEnd(/*bExpand=*/true); + uno::Reference xContentControl( + xMSF->createInstance(u"com.sun.star.text.ContentControl"_ustr), uno::UNO_QUERY); + uno::Reference xContentControlProps(xContentControl, uno::UNO_QUERY); + { + uno::Sequence aListItems = { + { + comphelper::makePropertyValue(u"DisplayText"_ustr, uno::Any(u"red"_ustr)), + comphelper::makePropertyValue(u"Value"_ustr, uno::Any(u"R"_ustr)), + }, + { + comphelper::makePropertyValue(u"DisplayText"_ustr, uno::Any(u"green"_ustr)), + comphelper::makePropertyValue(u"Value"_ustr, uno::Any(u"G"_ustr)), + }, + { + comphelper::makePropertyValue(u"DisplayText"_ustr, uno::Any(u"blue"_ustr)), + comphelper::makePropertyValue(u"Value"_ustr, uno::Any(u"B"_ustr)), + }, + }; + xContentControlProps->setPropertyValue(u"ListItems"_ustr, uno::Any(aListItems)); + } + xText->insertTextContent(xCursor, xContentControl, /*bAbsorb=*/true); + + // When exporting that to PDF: + save(u"writer_pdf_Export"_ustr); + + // Then make sure that the custom default is not lost: + std::unique_ptr pPdfDocument = parsePDFExport(); + std::unique_ptr pPage = pPdfDocument->openPage(0); + pPage->onAfterLoadPage(pPdfDocument.get()); + CPPUNIT_ASSERT_EQUAL(1, pPage->getAnnotationCount()); + std::unique_ptr pAnnotation = pPage->getAnnotation(0); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 4 + // - Actual : 3 + // i.e. only the 3 colors were exported, the default "test" text was not. + CPPUNIT_ASSERT_EQUAL(4, pAnnotation->getOptionCount(pPdfDocument.get())); +} } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/extras/autocorrect/autocorrect.cxx b/sw/qa/extras/autocorrect/autocorrect.cxx new file mode 100644 index 000000000000..bc06aaece662 --- /dev/null +++ b/sw/qa/extras/autocorrect/autocorrect.cxx @@ -0,0 +1,43 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include + +#include +#include + +// If you want to add a test for a language that doesn't exists yet +// copy an existing document and adapt "fo:language" and "fo:country" + +class SwAutoCorrect : public SwModelTestBase +{ +public: + SwAutoCorrect() + : SwModelTestBase(u"/sw/qa/extras/autocorrect/data/"_ustr) + { + } +}; + +CPPUNIT_TEST_FIXTURE(SwAutoCorrect, nl_BE) +{ + createSwDoc("nl-BE.fodt"); + + SwXTextDocument* pTextDoc = dynamic_cast(mxComponent.get()); + + // tdf#92029: Without the fix in place, this test would have failed with + // - Expected: Ik ben ’s morgens opgestaan + // - Actual : Ik ben ‘s morgens opgestaan + emulateTyping(*pTextDoc, u"Ik ben 's morgens opgestaan"); + OUString sReplaced(u"Ik ben ’s morgens opgestaan"_ustr); + CPPUNIT_ASSERT_EQUAL(sReplaced, getParagraph(1)->getString()); +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/extras/autocorrect/data/nl-BE.fodt b/sw/qa/extras/autocorrect/data/nl-BE.fodt new file mode 100644 index 000000000000..06843555cb5d --- /dev/null +++ b/sw/qa/extras/autocorrect/data/nl-BE.fodt @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/sw/qa/extras/layout/data/fdo48718-1.docx b/sw/qa/extras/layout/data/fdo48718-1.docx new file mode 100644 index 000000000000..373aa357fd5c Binary files /dev/null and b/sw/qa/extras/layout/data/fdo48718-1.docx differ diff --git a/sw/qa/extras/layout/data/tdf161718.docx b/sw/qa/extras/layout/data/tdf161718.docx new file mode 100644 index 000000000000..240192e07a71 Binary files /dev/null and b/sw/qa/extras/layout/data/tdf161718.docx differ diff --git a/sw/qa/extras/layout/layout3.cxx b/sw/qa/extras/layout/layout3.cxx index c5885be4c6ca..3ee4953e52cc 100644 --- a/sw/qa/extras/layout/layout3.cxx +++ b/sw/qa/extras/layout/layout3.cxx @@ -195,6 +195,23 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf128966) xmlXPathFreeObject(pXmlObj); } +CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf161718) +{ + createSwDoc("tdf161718.docx"); + + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + + // everything on one page + assertXPath(pXmlDoc, "/root/page/header"_ostr, 1); + assertXPath(pXmlDoc, "/root/page/header/txt/anchored"_ostr, 1); + assertXPath(pXmlDoc, "/root/page/footer"_ostr, 1); + assertXPath(pXmlDoc, "/root/page/ftncont/ftn"_ostr, 1); + assertXPath(pXmlDoc, "/root/page/ftncont/ftn/txt"_ostr, 1); + assertXPath(pXmlDoc, "/root/page/body/txt"_ostr, 27); + assertXPath(pXmlDoc, "/root/page/body/txt/anchored"_ostr, 1); + assertXPath(pXmlDoc, "/root/page"_ostr, 1); +} + CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf119908) { createSwDoc("tdf130088.docx"); @@ -567,8 +584,7 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf158658b) xmlDocUniquePtr pXmlDoc = parseLayoutDump(); // Word 2013 puts all tabs and the field following into one line - // but also puts the field off the page, while in Writer it's - // aligned to the right margin; should be good enough for now... + // and also puts the field off the page assertXPath(pXmlDoc, "/root/page[1]/footer/txt[1]/SwParaPortion/SwLineLayout"_ostr, 1); assertXPath( pXmlDoc, @@ -578,6 +594,10 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf158658b) pXmlDoc, "/root/page[1]/footer/txt[1]/SwParaPortion/SwLineLayout/child::*[@type='PortionType::TabRight']"_ostr, 1); + assertXPath( + pXmlDoc, + "/root/page[1]/footer/txt[1]/SwParaPortion/SwLineLayout/child::*[@type='PortionType::TabRight']"_ostr, + "width"_ostr, u"4446"_ustr); // was very small: 24 assertXPath( pXmlDoc, "/root/page[1]/footer/txt[1]/SwParaPortion/SwLineLayout/child::*[@type='PortionType::TabLeft']"_ostr, @@ -2270,6 +2290,18 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf138124) 1); } +CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, TestTdf161348) +{ + createSwDoc("fdo48718-1.docx"); + + xmlDocUniquePtr pXml = parseLayoutDump(); + + // the floating table is on page 1 + // apparently both parts of the split table are on this text frame + assertXPath(pXml, "/root/page[1]/body/txt[2]/anchored/fly"_ostr, 2); + assertXPath(pXml, "/root/page[1]/body/txt[2]/anchored/fly/tab"_ostr, 2); +} + CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf154113) { createSwDoc("three_sections.fodt"); diff --git a/sw/qa/extras/ooxmlexport/data/tdf43767_caseMapNumbering.odt b/sw/qa/extras/ooxmlexport/data/tdf43767_caseMapNumbering.odt new file mode 100644 index 000000000000..9b9c9a299503 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf43767_caseMapNumbering.odt differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx index 9a19ca827700..76a7c11a310e 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx @@ -742,8 +742,8 @@ DECLARE_OOXMLEXPORT_TEST(testTdf83309, "tdf83309.docx") CPPUNIT_ASSERT_EQUAL(2, getPages()); // First paragraph does not have tab before - // (same applies to all paragraphs in doc, but lets assume they are - // behave same way) + // (same applies to all paragraphs in doc, but let's assume they are + // behaving same way) OUString sNodeType = parseDump("(/root/page[1]/body/txt[1]/SwParaPortion/SwLineLayout/child::*)[1]"_ostr, "type"_ostr); CPPUNIT_ASSERT_EQUAL(u"PortionType::Text"_ustr, sNodeType); diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport21.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport21.cxx index 43dff8ae68cf..9ef569e47683 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport21.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport21.cxx @@ -327,6 +327,72 @@ DECLARE_OOXMLEXPORT_TEST(testTdf158597, "tdf158597.docx") } } +DECLARE_OOXMLEXPORT_TEST(testTdf43767_caseMapNumbering, "tdf43767_caseMapNumbering.odt") +{ + // given a document with 2 numbered Lists [each entry restarts numbering for visual comparison] + xmlDocUniquePtr pDump = parseLayoutDump(); + + // using the relative width difference between "A)" and "a)" as the test comparison + // since ListLabelString etc. does not output the actual string that is displayed on the screen + + // When the entire paragraph has a certain character attribute, that property is also applied + // to the list numbering itself (with some differing exceptions) for both ODT and DOCX. + + // ESTABLISH A BASELINE: these baseline paragraphs have no special character attributes. + // Paragraph 1/list 1(uppercase): no formatting applied to list numbering. Width is 253 for me + const sal_Int32 nUpperCaseWidth + = getXPath(pDump, "//body/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion"_ostr, + "width"_ostr) + .toInt32(); + // Paragraph 4/list 2(lowercase): no formatting applied to list numbering. Width is 186 for me. + const sal_Int32 nLowerCaseWidth + = getXPath(pDump, "//body/txt[5]/SwParaPortion/SwLineLayout/SwFieldPortion"_ostr, + "width"_ostr) + .toInt32(); + + // UPPERCASE LIST + // Paragraph 2: ODF should honour "lowercase". MSO doesn't know about lowercase + sal_Int32 nWidth + = getXPath(pDump, "//body/txt[2]/SwParaPortion/SwLineLayout/SwFieldPortion"_ostr, + "width"_ostr) + .toInt32(); + CPPUNIT_ASSERT_EQUAL(isExported() ? nUpperCaseWidth : nLowerCaseWidth, nWidth); + + // Paragraph 3: ODF should honour "superscript" (for consistency). MSO ignores superscript + nWidth = getXPath(pDump, "//body/txt[3]/SwParaPortion/SwLineLayout/SwFieldPortion"_ostr, + "width"_ostr) + .toInt32(); + if (!isExported()) + CPPUNIT_ASSERT_LESS(nLowerCaseWidth, nWidth); + else + CPPUNIT_ASSERT_EQUAL(nUpperCaseWidth, nWidth); + + // LOWERCASE LIST + //Paragraph 6: ODF should honour "titlecase". MSO doesn't know about titlecase + nWidth = getXPath(pDump, "//body/txt[6]/SwParaPortion/SwLineLayout/SwFieldPortion"_ostr, + "width"_ostr) + .toInt32(); + CPPUNIT_ASSERT_EQUAL(isExported() ? nLowerCaseWidth : nUpperCaseWidth, nWidth); + + // Paragraph 7: ODF should honour "smallcaps". MSO apparently has an exception for small caps + nWidth = getXPath(pDump, "//body/txt[7]/SwParaPortion/SwLineLayout/SwFieldPortion"_ostr, + "width"_ostr) + .toInt32(); + if (!isExported()) + { + CPPUNIT_ASSERT_GREATER(nLowerCaseWidth, nWidth); + CPPUNIT_ASSERT_LESS(nUpperCaseWidth, nWidth); + } + else + CPPUNIT_ASSERT_EQUAL(nLowerCaseWidth, nWidth); + + // Paragraph 8: ODF should honour "uppercase". MSO also honours uppercase + nWidth = getXPath(pDump, "//body/txt[8]/SwParaPortion/SwLineLayout/SwFieldPortion"_ostr, + "width"_ostr) + .toInt32(); + CPPUNIT_ASSERT_EQUAL(nUpperCaseWidth, nWidth); +} + DECLARE_OOXMLEXPORT_TEST(testTdf156105_percentSuffix, "tdf156105_percentSuffix.odt") { // given a numbered list with a non-escaping percent symbol in the prefix and suffix diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx index d30d607061d3..14170bf3f23f 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx @@ -1153,7 +1153,7 @@ CPPUNIT_TEST_FIXTURE(Test, testArrowPosition) // This is the correct Y coordinate, the incorrect was 817880. assertXPathContent(pXmlDocument, "/w:document/w:body/w:p/w:r/mc:AlternateContent/mc:Choice/w:drawing/wp:anchor" - "/wp:positionV/wp:posOffset"_ostr, u"516255"_ustr); + "/wp:positionV/wp:posOffset"_ostr, u"516890"_ustr); } CPPUNIT_TEST_FIXTURE(Test, testArrowMarker) diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport8.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport8.cxx index 61a11908563f..8e25f62f46ea 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport8.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport8.cxx @@ -451,20 +451,20 @@ CPPUNIT_TEST_FIXTURE(Test, testFdo76803) CPPUNIT_ASSERT_EQUAL(sal_uInt32(4), aPolygon.count()); - CPPUNIT_ASSERT_EQUAL(double(-149), aPolygon.getB2DPoint(0).getX()); + CPPUNIT_ASSERT_EQUAL(double(-150), aPolygon.getB2DPoint(0).getX()); // Without the accompanying fix in place, this test would have failed with: // - Expected: -35 // - Actual : -67 // i.e. the cropping did not influence the wrap polygon during export. CPPUNIT_ASSERT_EQUAL(double(-35), aPolygon.getB2DPoint(0).getY()); - CPPUNIT_ASSERT_EQUAL(double(-149), aPolygon.getB2DPoint(1).getX()); - CPPUNIT_ASSERT_EQUAL(double(3511), aPolygon.getB2DPoint(1).getY()); + CPPUNIT_ASSERT_EQUAL(double(-150), aPolygon.getB2DPoint(1).getX()); + CPPUNIT_ASSERT_EQUAL(double(3514), aPolygon.getB2DPoint(1).getY()); - CPPUNIT_ASSERT_EQUAL(double(16889), aPolygon.getB2DPoint(2).getX()); - CPPUNIT_ASSERT_EQUAL(double(3511), aPolygon.getB2DPoint(2).getY()); + CPPUNIT_ASSERT_EQUAL(double(16891), aPolygon.getB2DPoint(2).getX()); + CPPUNIT_ASSERT_EQUAL(double(3514), aPolygon.getB2DPoint(2).getY()); - CPPUNIT_ASSERT_EQUAL(double(16889), aPolygon.getB2DPoint(3).getX()); + CPPUNIT_ASSERT_EQUAL(double(16891), aPolygon.getB2DPoint(3).getX()); CPPUNIT_ASSERT_EQUAL(double(-35), aPolygon.getB2DPoint(3).getY()); } diff --git a/sw/qa/uitest/findBar/tdf115665.py b/sw/qa/uitest/findBar/tdf115665.py new file mode 100644 index 000000000000..94409589e427 --- /dev/null +++ b/sw/qa/uitest/findBar/tdf115665.py @@ -0,0 +1,55 @@ +# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +from uitest.framework import UITestCase +from libreoffice.uno.propertyvalue import mkPropertyValues +from uitest.uihelper.common import select_pos +from uitest.uihelper.common import select_by_text +from uitest.uihelper.common import get_state_as_dict + +class tdf115665(UITestCase): + + def test_tdf115665(self): + + with self.ui_test.create_doc_in_start_center("writer"): + xWriterDoc = self.xUITest.getTopFocusWindow() + xWriterEdit = xWriterDoc.getChild("writer_edit") + + # Type a line to use for search + xWriterEdit.executeAction("TYPE", mkPropertyValues({"TEXT": "This is happiness."})) + + # Open the F&R dialog and set to find search term with attribute format UPPERCASE + with self.ui_test.execute_modeless_dialog_through_command(".uno:SearchDialog", close_button="close") as xDialog: + format = xDialog.getChild("format") + with self.ui_test.execute_blocking_action(format.executeAction, args=('CLICK', ())) as dialog: + xTabs = dialog.getChild("tabcontrol") + select_pos(xTabs, "1") + xEffectsLb = dialog.getChild("effectslb") + select_by_text(xEffectsLb, "UPPERCASE") + + # Open the find bar + xWriterEdit.executeAction("TYPE", mkPropertyValues({"KEYCODE": "CTRL+f"})) + + # Type "happiness" in the find bar search edit box + xfind = xWriterDoc.getChild("find") + xfind.executeAction("TYPE", mkPropertyValues({"TEXT": "happiness"})) + + xfind_bar = xWriterDoc.getChild("FindBar") + + # Press on Find All in the find bar + xfind_bar.executeAction("CLICK", mkPropertyValues({"POS": "4"})) # 4 is Find All + + # Without the fix in place the test would fail with + # AssertionError: '' != 'happiness' + self.assertEqual(get_state_as_dict(xWriterEdit)["SelectedText"], "happiness") + + # Close the find bar + xfind_bar.executeAction("CLICK", mkPropertyValues({"POS": "0"})) # 0 is pos for close + +# vim: set shiftwidth=4 softtabstop=4 expandtab: diff --git a/sw/qa/uitest/navigator/movechapterupdown.py b/sw/qa/uitest/navigator/movechapterupdown.py index 0b4c7ef5f540..d90400ef89b8 100644 --- a/sw/qa/uitest/navigator/movechapterupdown.py +++ b/sw/qa/uitest/navigator/movechapterupdown.py @@ -62,8 +62,8 @@ class movechapterupdown(UITestCase): # Click on the 'Move chapter up' button in the Navigator tool box xNavigatorPanel = xWriterEdit.getChild("NavigatorPanel") - xToolBarContent6 = xNavigatorPanel.getChild("content6") - xToolBarContent6.executeAction("CLICK", mkPropertyValues({"POS": "4"})) + xToolBar = xNavigatorPanel.getChild("HeadingsContentFunctionButtonsToolbar") + xToolBar.executeAction("CLICK", mkPropertyValues({"POS": "2"})) # Expected chapter order: # 2. Two (H1) @@ -104,8 +104,8 @@ class movechapterupdown(UITestCase): # Click on the 'Move chapter down' button in the Navigator tool box xNavigatorPanel = xWriterEdit.getChild("NavigatorPanel") - xToolBarContent6 = xNavigatorPanel.getChild("content6") - xToolBarContent6.executeAction("CLICK", mkPropertyValues({"POS": "5"})) + xToolBar = xNavigatorPanel.getChild("HeadingsContentFunctionButtonsToolbar") + xToolBar.executeAction("CLICK", mkPropertyValues({"POS": "3"})) # Expected chapter order is the original order xNavigatorPanelContentTreeHeadings = xNavigatorPanelContentTree.getChild('0') @@ -146,8 +146,8 @@ class movechapterupdown(UITestCase): # Click on the 'Move chapter down' button in the Navigator tool box xNavigatorPanel = xWriterEdit.getChild("NavigatorPanel") - xToolBarContent6 = xNavigatorPanel.getChild("content6") - xToolBarContent6.executeAction("CLICK", mkPropertyValues({"POS": "5"})) + xToolBar = xNavigatorPanel.getChild("HeadingsContentFunctionButtonsToolbar") + xToolBar.executeAction("CLICK", mkPropertyValues({"POS": "3"})) # Expected chapter order: # 1. One (H1) @@ -188,8 +188,8 @@ class movechapterupdown(UITestCase): # Click on the 'Move chapter up' button in the Navigator tool box xNavigatorPanel = xWriterEdit.getChild("NavigatorPanel") - xToolBarContent6 = xNavigatorPanel.getChild("content6") - xToolBarContent6.executeAction("CLICK", mkPropertyValues({"POS": "4"})) + xToolBar = xNavigatorPanel.getChild("HeadingsContentFunctionButtonsToolbar") + xToolBar.executeAction("CLICK", mkPropertyValues({"POS": "2"})) # Expected chapter order is the original order xNavigatorPanelContentTreeHeadings = xNavigatorPanelContentTree.getChild('0') @@ -231,8 +231,8 @@ class movechapterupdown(UITestCase): # Click on the 'Move chapter up' button in the Navigator tool box xNavigatorPanel = xWriterEdit.getChild("NavigatorPanel") - xToolBarContent6 = xNavigatorPanel.getChild("content6") - xToolBarContent6.executeAction("CLICK", mkPropertyValues({"POS": "4"})) + xToolBar = xNavigatorPanel.getChild("HeadingsContentFunctionButtonsToolbar") + xToolBar.executeAction("CLICK", mkPropertyValues({"POS": "2"})) # Expected chapter order: # 1. One H1 @@ -275,8 +275,8 @@ class movechapterupdown(UITestCase): # Click on the 'Move chapter down' button in the Navigator tool box xNavigatorPanel = xWriterEdit.getChild("NavigatorPanel") - xToolBarContent6 = xNavigatorPanel.getChild("content6") - xToolBarContent6.executeAction("CLICK", mkPropertyValues({"POS": "5"})) + xToolBar = xNavigatorPanel.getChild("HeadingsContentFunctionButtonsToolbar") + xToolBar.executeAction("CLICK", mkPropertyValues({"POS": "3"})) # Expected chapter order: # 1. One H1 @@ -327,13 +327,13 @@ class movechapterupdown(UITestCase): # Click on the 'Move chapter up' button in the Navigator tool box xNavigatorPanel = xWriterEdit.getChild("NavigatorPanel") - xToolBarContent6 = xNavigatorPanel.getChild("content6") - xToolBarContent6.executeAction("CLICK", mkPropertyValues({"POS": "4"})) + xToolBar = xNavigatorPanel.getChild("HeadingsContentFunctionButtonsToolbar") + xToolBar.executeAction("CLICK", mkPropertyValues({"POS": "2"})) # Click on the 'Move chapter up' button in the Navigator tool box xNavigatorPanel = xWriterEdit.getChild("NavigatorPanel") - xToolBarContent6 = xNavigatorPanel.getChild("content6") - xToolBarContent6.executeAction("CLICK", mkPropertyValues({"POS": "4"})) + xToolBar = xNavigatorPanel.getChild("HeadingsContentFunctionButtonsToolbar") + xToolBar.executeAction("CLICK", mkPropertyValues({"POS": "2"})) # Expected chapter order: # 1. One H1 @@ -384,8 +384,8 @@ class movechapterupdown(UITestCase): # Click on the 'Move chapter down' button in the Navigator tool box xNavigatorPanel = xWriterEdit.getChild("NavigatorPanel") - xToolBarContent6 = xNavigatorPanel.getChild("content6") - xToolBarContent6.executeAction("CLICK", mkPropertyValues({"POS": "5"})) + xToolBar = xNavigatorPanel.getChild("HeadingsContentFunctionButtonsToolbar") + xToolBar.executeAction("CLICK", mkPropertyValues({"POS": "3"})) # Expected chapter order is the original order xNavigatorPanelContentTreeHeadings = xNavigatorPanelContentTree.getChild('0') @@ -427,8 +427,8 @@ class movechapterupdown(UITestCase): # Click on the 'Move chapter up' button in the Navigator tool box xNavigatorPanel = xWriterEdit.getChild("NavigatorPanel") - xToolBarContent6 = xNavigatorPanel.getChild("content6") - xToolBarContent6.executeAction("CLICK", mkPropertyValues({"POS": "4"})) + xToolBar = xNavigatorPanel.getChild("HeadingsContentFunctionButtonsToolbar") + xToolBar.executeAction("CLICK", mkPropertyValues({"POS": "2"})) # Expected chapter order: # 1.1. One_A (H2) @@ -470,8 +470,8 @@ class movechapterupdown(UITestCase): # Click on the 'Move chapter down' button in the Navigator tool box xNavigatorPanel = xWriterEdit.getChild("NavigatorPanel") - xToolBarContent6 = xNavigatorPanel.getChild("content6") - xToolBarContent6.executeAction("CLICK", mkPropertyValues({"POS": "5"})) + xToolBar = xNavigatorPanel.getChild("HeadingsContentFunctionButtonsToolbar") + xToolBar.executeAction("CLICK", mkPropertyValues({"POS": "3"})) # Expected chapter order is the original order xNavigatorPanelContentTreeHeadings = xNavigatorPanelContentTree.getChild('0') diff --git a/sw/qa/uitest/navigator/tdf151051.py b/sw/qa/uitest/navigator/tdf151051.py index 03889c7f49fb..2005a85414da 100644 --- a/sw/qa/uitest/navigator/tdf151051.py +++ b/sw/qa/uitest/navigator/tdf151051.py @@ -41,8 +41,8 @@ class tdf151051(UITestCase): self.assertEqual('0', get_state_as_dict(xChild)['Children']) xNavigatorPanel = xWriterEdit.getChild("NavigatorPanel") - xToolBar = xNavigatorPanel.getChild("content6") - xToolBar.executeAction("CLICK", mkPropertyValues({"POS": "2"})) # 'promote' button + xToolBar = xNavigatorPanel.getChild("HeadingsContentFunctionButtonsToolbar") + xToolBar.executeAction("CLICK", mkPropertyValues({"POS": "0"})) # 'promote' button xHeadings = xContentTree.getChild('0') xHeadings.executeAction("EXPAND", tuple()) diff --git a/sw/qa/uitest/navigator/tdf154212.py b/sw/qa/uitest/navigator/tdf154212.py index 00a39a73b980..0aaa8e04b23f 100644 --- a/sw/qa/uitest/navigator/tdf154212.py +++ b/sw/qa/uitest/navigator/tdf154212.py @@ -48,8 +48,8 @@ class tdf154212(UITestCase): # click on the 'move chapter down' button in the Navigator tool box xNavigatorPanel = xWriterEdit.getChild("NavigatorPanel") - xToolBarContent6 = xNavigatorPanel.getChild("content6") - xToolBarContent6.executeAction("CLICK", mkPropertyValues({"POS": "5"})) + xToolBar = xNavigatorPanel.getChild("HeadingsContentFunctionButtonsToolbar") + xToolBar.executeAction("CLICK", mkPropertyValues({"POS": "3"})) self.ui_test.wait_until_property_is_updated(xNavigatorPanelContentTree, "SelectEntryText", "MOVE THIS Heading level 2") @@ -62,8 +62,8 @@ class tdf154212(UITestCase): # click on the 'move chapter up' button in the Navigator tool box xNavigatorPanel = xWriterEdit.getChild("NavigatorPanel") - xToolBarContent6 = xNavigatorPanel.getChild("content6") - xToolBarContent6.executeAction("CLICK", mkPropertyValues({"POS": "4"})) + xToolBar = xNavigatorPanel.getChild("HeadingsContentFunctionButtonsToolbar") + xToolBar.executeAction("CLICK", mkPropertyValues({"POS": "2"})) self.ui_test.wait_until_property_is_updated(xNavigatorPanelContentTree, "SelectEntryText", "MOVE THIS Heading level 2") diff --git a/sw/qa/writerfilter/dmapper/DomainMapper.cxx b/sw/qa/writerfilter/dmapper/DomainMapper.cxx index 3e7acdd3b495..05e6029c8c21 100644 --- a/sw/qa/writerfilter/dmapper/DomainMapper.cxx +++ b/sw/qa/writerfilter/dmapper/DomainMapper.cxx @@ -14,8 +14,13 @@ #include #include #include +#include +#include +#include #include +#include +#include using namespace ::com::sun::star; @@ -185,6 +190,41 @@ CPPUNIT_TEST_FIXTURE(Test, testTableStyleParaBorder) // i.e. the 0 para border distance was applied on the cell instead. CPPUNIT_ASSERT_EQUAL(static_cast(203), nLeftBorderDistance); } + +CPPUNIT_TEST_FIXTURE(Test, testRTFStylePaste) +{ + // Given an empty Writer document: + mxComponent + = loadFromDesktop(u"private:factory/swriter"_ustr, u"com.sun.star.text.TextDocument"_ustr); + + // When pasting RTF that has unreferenced paragraph styles: + uno::Reference xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference xText = xTextDocument->getText(); + uno::Reference xBodyEnd = xText->getEnd(); + uno::Reference xFilter( + m_xSFactory->createInstance(u"com.sun.star.comp.Writer.RtfFilter"_ustr), uno::UNO_QUERY); + uno::Reference xImporter(xFilter, uno::UNO_QUERY); + xImporter->setTargetDocument(mxComponent); + std::unique_ptr pStream( + new SvFileStream(createFileURL(u"clipboard.rtf"), StreamMode::READ)); + uno::Reference xStream(new utl::OStreamWrapper(std::move(pStream))); + uno::Sequence aDescriptor{ comphelper::makePropertyValue(u"InputStream"_ustr, xStream), + comphelper::makePropertyValue(u"InsertMode"_ustr, true), + comphelper::makePropertyValue(u"TextInsertModeRange"_ustr, + xBodyEnd) }; + CPPUNIT_ASSERT(xFilter->filter(aDescriptor)); + + // Then make sure those paragraph styles don't show up in the past result: + uno::Reference xStyleFamiliesSupplier(mxComponent, + uno::UNO_QUERY); + uno::Reference xStyleFamilies + = xStyleFamiliesSupplier->getStyleFamilies(); + uno::Reference xStyleFamily( + xStyleFamilies->getByName(u"ParagraphStyles"_ustr), uno::UNO_QUERY); + // Without the accompanying fix in place, this test would have failed, 'Default Drawing Style' + // was imported, even if no pasted content referenced it. + CPPUNIT_ASSERT(!xStyleFamily->hasByName(u"Default Drawing Style"_ustr)); +} } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/writerfilter/dmapper/GraphicImport.cxx b/sw/qa/writerfilter/dmapper/GraphicImport.cxx index e7e3998061d3..548f09b92da5 100644 --- a/sw/qa/writerfilter/dmapper/GraphicImport.cxx +++ b/sw/qa/writerfilter/dmapper/GraphicImport.cxx @@ -167,9 +167,9 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf141540GroupLinePosSize) // Without fix in place, you had got Position = (19|6498), Size = 5001 x 2 // i.e. the line was nearly horizontal instead of vertical CPPUNIT_ASSERT_EQUAL(static_cast(5022), aPosition.X); - CPPUNIT_ASSERT_EQUAL(static_cast(2963), aPosition.Y); + CPPUNIT_ASSERT_EQUAL(static_cast(2965), aPosition.Y); CPPUNIT_ASSERT_EQUAL(static_cast(0), aSize.Width); - CPPUNIT_ASSERT_EQUAL(static_cast(7073), aSize.Height); + CPPUNIT_ASSERT_EQUAL(static_cast(7071), aSize.Height); // Test group uno::Reference xGroupShape(xDrawPage->getByIndex(1), uno::UNO_QUERY); @@ -283,11 +283,11 @@ CPPUNIT_TEST_FIXTURE(Test, testWrapPolyCrop) // Then there is a 15 twips shift from the origo, so it's 2351.55 + 26.46 = 2378.01 in mm100. // // Without the accompanying fix in place, this test would have failed with: - // - Expected: 2368 + // - Expected: 2369 // - Actual : 3542 // i.e. the wrap polygon covered a larger-than-correct area, which end the end means 3 lines // were wrapping around the image, not only 2 as Word does it. - CPPUNIT_ASSERT_EQUAL(2368., aPolygon.getB2DPoint(0).getY()); + CPPUNIT_ASSERT_EQUAL(2369., aPolygon.getB2DPoint(0).getY()); } CPPUNIT_TEST_FIXTURE(Test, testTextboxTextline) diff --git a/sw/qa/writerfilter/dmapper/NumberingManager.cxx b/sw/qa/writerfilter/dmapper/NumberingManager.cxx new file mode 100644 index 000000000000..8c60033a74d7 --- /dev/null +++ b/sw/qa/writerfilter/dmapper/NumberingManager.cxx @@ -0,0 +1,75 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include + +#include +#include + +#include +#include +#include +#include +#include + +using namespace com::sun::star; + +namespace +{ +/// Tests for sw/source/writerfilter/dmapper/NumberingManager.cxx. +class Test : public UnoApiTest +{ +public: + Test() + : UnoApiTest(u"/sw/qa/writerfilter/dmapper/data/"_ustr) + { + } +}; + +CPPUNIT_TEST_FIXTURE(Test, testPasteBulletListStyleName) +{ + // Given a document with a WWNum1 list style: + mxComponent + = loadFromDesktop(u"private:factory/swriter"_ustr, u"com.sun.star.text.TextDocument"_ustr); + uno::Reference xStyleFamiliesSupplier(mxComponent, + uno::UNO_QUERY); + uno::Reference xStyleFamilies + = xStyleFamiliesSupplier->getStyleFamilies(); + uno::Reference xStyles; + xStyleFamilies->getByName(u"NumberingStyles"_ustr) >>= xStyles; + uno::Reference xFactory(mxComponent, uno::UNO_QUERY); + uno::Reference xStyle + = xFactory->createInstance("com.sun.star.style.NumberingStyle"); + xStyles->insertByName(u"WWNum1"_ustr, uno::Any(xStyle)); + + // When pasting bullets to that document: + uno::Reference xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference xText = xTextDocument->getText(); + uno::Reference xBodyEnd = xText->getEnd(); + uno::Reference xFilter( + m_xSFactory->createInstance(u"com.sun.star.comp.Writer.RtfFilter"_ustr), uno::UNO_QUERY); + uno::Reference xImporter(xFilter, uno::UNO_QUERY); + xImporter->setTargetDocument(mxComponent); + std::unique_ptr pStream( + new SvFileStream(createFileURL(u"clipboard-bullets.rtf"), StreamMode::READ)); + uno::Reference xStream(new utl::OStreamWrapper(std::move(pStream))); + uno::Sequence aDescriptor{ comphelper::makePropertyValue(u"InputStream"_ustr, xStream), + comphelper::makePropertyValue(u"InsertMode"_ustr, true), + comphelper::makePropertyValue(u"TextInsertModeRange"_ustr, + xBodyEnd) }; + CPPUNIT_ASSERT(xFilter->filter(aDescriptor)); + + // Then make sure we don't create new list styles, but reuse the existing ones: + // Without the accompanying fix in place, this test would have failed, new character styles were + // created again and again on each paste. + CPPUNIT_ASSERT(!xStyles->hasByName(u"WWNum1a"_ustr)); +} +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/writerfilter/dmapper/data/clipboard-bullets.rtf b/sw/qa/writerfilter/dmapper/data/clipboard-bullets.rtf new file mode 100644 index 000000000000..1e9202125ad8 --- /dev/null +++ b/sw/qa/writerfilter/dmapper/data/clipboard-bullets.rtf @@ -0,0 +1,48 @@ +{\rtf1\ansi\deff4\adeflang1025 +{\fonttbl +{\f0\froman\fprq2\fcharset0 Times New Roman;} +{\f1\froman\fprq2\fcharset2 Symbol;} +{\f2\fswiss\fprq2\fcharset0 Arial;} +{\f3\froman\fprq2\fcharset0 Liberation Serif +{\*\falt Times New Roman} +;} +{\f4\froman\fprq2\fcharset0 Calibri;} +} +{\stylesheet +{\s0\snext0\rtlch\afs22\alang1025 \ltrch\lang1033\langfe1033\hich\af4\loch\sl259\slmult1\ql\widctlpar\sb0\sa160\ltrpar\hyphpar0\cf0\f4\fs22\lang1033\kerning1\dbch\af10\langfe1033 Normal;} +{\*\cs21\snext21 ListLabel 3;} +{\*\cs22\snext22 ListLabel 2;} +{\*\cs23\snext23 ListLabel 1;} +{\s25\sbasedon0\snext25\loch\li720\lin720\sb0\sa160\contextualspace List Paragraph;} +{\s26\sbasedon0\snext26\rtlch\af8 \ltrch\loch\noline Index;} +{\s27\sbasedon0\snext27\rtlch\af8\afs24\ai \ltrch\loch\sb120\sa120\noline\fs24\i caption;} +{\s28\sbasedon29\snext28\rtlch\af8 \ltrch List;} +{\s29\sbasedon0\snext29\loch\sl276\slmult1\sb0\sa140 Body Text;} +} +{\*\listtable +{\list\listtemplateid1 +{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0 +{\leveltext \'01\u61623 ?;} +{\levelnumbers;} +\fi-360\li720} +{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0 +{\leveltext \'01\u111 ?;} +{\levelnumbers;} +\rtlch\af7 \ltrch\loch\fi-360\li1440} +{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0 +{\leveltext \'01\u61607 ?;} +{\levelnumbers;} +\fi-360\li2160} +\listid1} +} +{\listoverridetable +{\listoverride\listid1\listoverridecount0\ls1} +} +\pard\plain before\par +\pard\plain \s25\loch\li720\lin720\sb0\sa160\contextualspace +\ilvl0\ls1 \fi-360\li1440\lin1440 A +\par \pard\plain \s25\loch\li720\lin720\sb0\sa160\contextualspace +\ilvl1\ls1 \fi-360\li2160\lin2160 B +\par \pard\plain \s25\loch\li720\lin720\sb0\sa160\contextualspace +\ilvl2\ls1 \fi-360\li2880\lin2880\sb0\sa160\contextualspace C +} diff --git a/sw/qa/writerfilter/dmapper/data/clipboard.rtf b/sw/qa/writerfilter/dmapper/data/clipboard.rtf new file mode 100644 index 000000000000..0ebaa3aee0e9 --- /dev/null +++ b/sw/qa/writerfilter/dmapper/data/clipboard.rtf @@ -0,0 +1,7 @@ +{\rtf\ansi +{\stylesheet +{\s1 Default Drawing Style;} +{\s37 Beehive~LT~Titel;} +} +\s37 beehive\par +} diff --git a/sw/qa/writerfilter/misc/misc.cxx b/sw/qa/writerfilter/misc/misc.cxx index 1063cfd7fadc..506fc282999d 100644 --- a/sw/qa/writerfilter/misc/misc.cxx +++ b/sw/qa/writerfilter/misc/misc.cxx @@ -37,22 +37,22 @@ public: void WriterfilterMiscTest::testTwipConversions() { - using writerfilter::dmapper::ConversionHelper::convertTwipToMM100; - using writerfilter::dmapper::ConversionHelper::convertTwipToMM100Unsigned; + using writerfilter::dmapper::ConversionHelper::convertTwipToMm100_Limited; + using writerfilter::dmapper::ConversionHelper::convertTwipToMm100_LimitedUnsigned; - CPPUNIT_ASSERT_EQUAL(sal_Int32(-2), convertTwipToMM100(-1)); - CPPUNIT_ASSERT_EQUAL(sal_Int32(-17639), convertTwipToMM100(-10000)); - CPPUNIT_ASSERT_EQUAL(sal_Int32(-70556), convertTwipToMM100(-40000)); - CPPUNIT_ASSERT_EQUAL(sal_Int32(2), convertTwipToMM100(1)); - CPPUNIT_ASSERT_EQUAL(sal_Int32(17639), convertTwipToMM100(10000)); - CPPUNIT_ASSERT_EQUAL(sal_Int32(0), convertTwipToMM100(40000)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(-2), convertTwipToMm100_Limited(-1)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(-17639), convertTwipToMm100_Limited(-10000)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(-70556), convertTwipToMm100_Limited(-40000)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(2), convertTwipToMm100_Limited(1)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(17639), convertTwipToMm100_Limited(10000)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(0), convertTwipToMm100_Limited(40000)); - CPPUNIT_ASSERT_EQUAL(sal_uInt32(0), convertTwipToMM100Unsigned(-1)); - CPPUNIT_ASSERT_EQUAL(sal_uInt32(0), convertTwipToMM100Unsigned(-10000)); - CPPUNIT_ASSERT_EQUAL(sal_uInt32(0), convertTwipToMM100Unsigned(-40000)); - CPPUNIT_ASSERT_EQUAL(sal_uInt32(2), convertTwipToMM100Unsigned(1)); - CPPUNIT_ASSERT_EQUAL(sal_uInt32(17639), convertTwipToMM100Unsigned(10000)); - CPPUNIT_ASSERT_EQUAL(sal_uInt32(0), convertTwipToMM100Unsigned(40000)); + CPPUNIT_ASSERT_EQUAL(sal_uInt32(0), convertTwipToMm100_LimitedUnsigned(-1)); + CPPUNIT_ASSERT_EQUAL(sal_uInt32(0), convertTwipToMm100_LimitedUnsigned(-10000)); + CPPUNIT_ASSERT_EQUAL(sal_uInt32(0), convertTwipToMm100_LimitedUnsigned(-40000)); + CPPUNIT_ASSERT_EQUAL(sal_uInt32(2), convertTwipToMm100_LimitedUnsigned(1)); + CPPUNIT_ASSERT_EQUAL(sal_uInt32(17639), convertTwipToMm100_LimitedUnsigned(10000)); + CPPUNIT_ASSERT_EQUAL(sal_uInt32(0), convertTwipToMm100_LimitedUnsigned(40000)); } void WriterfilterMiscTest::testFieldParameters() diff --git a/sw/source/core/access/AccessibilityCheck.cxx b/sw/source/core/access/AccessibilityCheck.cxx index cd75edac31db..723d20566f24 100644 --- a/sw/source/core/access/AccessibilityCheck.cxx +++ b/sw/source/core/access/AccessibilityCheck.cxx @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -406,6 +407,32 @@ private: pIssue->setStart(nStart); pIssue->setEnd(nStart + sText.getLength()); } + + if (aHyperlink.GetProtocol() != INetProtocol::NotValid) + { + // Check if the Hyperlink have Name settled. + if (!xProperties->getPropertySetInfo()->hasPropertyByName(u"HyperLinkName"_ustr)) + return; + + OUString sHyperlinkName; + xProperties->getPropertyValue(u"HyperLinkName"_ustr) >>= sHyperlinkName; + if (sHyperlinkName.isEmpty()) + { + std::shared_ptr pNameIssue + = lclAddIssue(m_rIssueCollection, SwResId(STR_HYPERLINK_NO_NAME), + sfx::AccessibilityIssueID::HYPERLINK_NO_NAME); + + if (pNameIssue) + { + pNameIssue->setIssueObject(IssueObject::HYPERLINKTEXT); + pNameIssue->setNode(pTextNode); + SwDoc& rDocument = pTextNode->GetDoc(); + pNameIssue->setDoc(rDocument); + pNameIssue->setStart(nStart); + pNameIssue->setEnd(nStart + sText.getLength()); + } + } + } } } @@ -780,6 +807,25 @@ public: pIssue->setEnd(nParagraphLength); } } + + // paragraph direct formats (TODO: add more paragraph direct format) + sal_Int32 nParagraphLength = pTextNode->GetText().getLength(); + if (nParagraphLength != 0 && pTextNode->HasSwAttrSet()) + { + const SvxULSpaceItem& rULSpace = pTextNode->SwContentNode::GetAttr(RES_UL_SPACE, false); + bool bULSpace = rULSpace.GetLower() > 0 || rULSpace.GetUpper() > 0; + if (bULSpace) + { + auto pIssue + = lclAddIssue(m_rIssueCollection, SwResId(STR_TEXT_FORMATTING_CONVEYS_MEANING), + sfx::AccessibilityIssueID::DIRECT_FORMATTING); + pIssue->setIssueObject(IssueObject::TEXT); + pIssue->setNode(pTextNode); + SwDoc& rDocument = pTextNode->GetDoc(); + pIssue->setDoc(rDocument); + pIssue->setEnd(nParagraphLength); + } + } } }; diff --git a/sw/source/core/access/AccessibilityIssue.cxx b/sw/source/core/access/AccessibilityIssue.cxx index 7347559221a6..5c34449f6e40 100644 --- a/sw/source/core/access/AccessibilityIssue.cxx +++ b/sw/source/core/access/AccessibilityIssue.cxx @@ -29,6 +29,7 @@ #include #include +#include #include #include @@ -185,6 +186,7 @@ void AccessibilityIssue::gotoIssue() const } break; case IssueObject::TEXT: + case IssueObject::HYPERLINKTEXT: { SwContentNode* pContentNode = TempIssueObject.m_pNode->GetContentNode(); SwPosition aStart(*pContentNode, TempIssueObject.m_nStart); @@ -241,7 +243,8 @@ bool AccessibilityIssue::canQuickFixIssue() const || m_eIssueObject == IssueObject::SHAPE || m_eIssueObject == IssueObject::FORM || m_eIssueObject == IssueObject::DOCUMENT_TITLE || m_eIssueObject == IssueObject::DOCUMENT_BACKGROUND - || m_eIssueObject == IssueObject::LANGUAGE_NOT_SET; + || m_eIssueObject == IssueObject::LANGUAGE_NOT_SET + || m_eIssueObject == IssueObject::HYPERLINKTEXT; } void AccessibilityIssue::quickFixIssue() const @@ -323,6 +326,33 @@ void AccessibilityIssue::quickFixIssue() const } } break; + case IssueObject::HYPERLINKTEXT: + { + SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); + SwWrtShell* pWrtShell = m_pDoc->GetDocShell()->GetWrtShell(); + ScopedVclPtr aNameDialog(pFact->CreateSvxNameDialog( + pWrtShell->GetView().GetFrameWeld(), OUString(), SwResId(STR_HYPERLINK_NO_NAME_DLG), + SwResId(STR_HYPERLINK_NO_NAME_DLG))); + if (aNameDialog->Execute() == RET_OK) + { + SwContentNode* pContentNode = m_pNode->GetContentNode(); + SwPosition aStart(*pContentNode, m_nStart); + SwPosition aEnd(*pContentNode, m_nEnd); + uno::Reference xRun + = SwXTextRange::CreateXTextRange(*m_pDoc, aStart, &aEnd); + if (xRun.is()) + { + uno::Reference xProperties(xRun, uno::UNO_QUERY); + if (xProperties->getPropertySetInfo()->hasPropertyByName(u"HyperLinkName"_ustr)) + { + xProperties->setPropertyValue(u"HyperLinkName"_ustr, + uno::Any(aNameDialog->GetName())); + } + } + pWrtShell->SetModified(); + } + } + break; case IssueObject::DOCUMENT_TITLE: { SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); diff --git a/sw/source/core/crsr/viscrs.cxx b/sw/source/core/crsr/viscrs.cxx index cd8c17ff5441..5a67e7192d0d 100644 --- a/sw/source/core/crsr/viscrs.cxx +++ b/sw/source/core/crsr/viscrs.cxx @@ -988,8 +988,20 @@ void SwShellCursor::Show(SfxViewShell const * pViewShell) } else { - GetShell()->GetSfxViewShell()->libreOfficeKitViewCallback(LOK_CALLBACK_TEXT_SELECTION, sRect); - SfxLokHelper::notifyOtherViews(GetShell()->GetSfxViewShell(), LOK_CALLBACK_TEXT_VIEW_SELECTION, "selection", sRect); + const SwCursorShell* pShell = GetShell(); + if (!pShell) + { + return; + } + + SfxViewShell* pSfxViewShell = pShell->GetSfxViewShell(); + if (!pSfxViewShell) + { + return; + } + + pSfxViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_TEXT_SELECTION, sRect); + SfxLokHelper::notifyOtherViews(pSfxViewShell, LOK_CALLBACK_TEXT_VIEW_SELECTION, "selection", sRect); } } diff --git a/sw/source/core/doc/doclay.cxx b/sw/source/core/doc/doclay.cxx index 26431d2df24c..b5ea2bf9fe9a 100644 --- a/sw/source/core/doc/doclay.cxx +++ b/sw/source/core/doc/doclay.cxx @@ -1370,8 +1370,7 @@ static OUString lcl_GetUniqueFlyName(const SwDoc& rDoc, TranslateId pDefStrId, s lcl_collectUsedNums(aUsedNums, nNmLen, *pObj, aName); } - OUString sName = pFlyFormat->GetName(); - lcl_collectUsedNums(aUsedNums, nNmLen, sName, aName); + lcl_collectUsedNums(aUsedNums, nNmLen, pFlyFormat->GetName(), aName); } // All numbers are flagged accordingly, so determine the right one diff --git a/sw/source/core/doc/textboxhelper.cxx b/sw/source/core/doc/textboxhelper.cxx index a1391fe34a5b..4bc8b08092e6 100644 --- a/sw/source/core/doc/textboxhelper.cxx +++ b/sw/source/core/doc/textboxhelper.cxx @@ -1536,26 +1536,14 @@ bool SwTextBoxHelper::DoTextBoxZOrderCorrection(SwFrameFormat* pShape, const Sdr auto pPage = pDrawModel->GetPage(0); // Recalc all Z-orders pPage->RecalcObjOrdNums(); - // Here is a counter avoiding running to in infinity: - sal_uInt16 nIterator = 0; // If the shape is behind the frame, is good, but if there are some objects // between of them that is wrong so put the frame exactly one level higher // than the shape. - if (pFrmObj->GetOrdNum() > pShpObj->GetOrdNum()) + if (pFrmObj->GetOrdNum() != pShpObj->GetOrdNum() + 1) + { pPage->SetObjectOrdNum(pFrmObj->GetOrdNum(), pShpObj->GetOrdNum() + 1); - else - // Else, if the frame is behind the shape, bring to the front of it. - while (pFrmObj->GetOrdNum() <= pShpObj->GetOrdNum()) - { - pPage->SetObjectOrdNum(pFrmObj->GetOrdNum(), pFrmObj->GetOrdNum() + 1); - // If there is any problem with the indexes, do not run over the infinity - if (pPage->GetObjCount() == pFrmObj->GetOrdNum()) - break; - ++nIterator; - if (nIterator > 300) - break; // Do not run to infinity - } - pPage->RecalcObjOrdNums(); + pPage->RecalcObjOrdNums(); + } return true; // Success } SAL_WARN("sw.core", "SwTextBoxHelper::DoTextBoxZOrderCorrection(): " diff --git a/sw/source/core/edit/edundo.cxx b/sw/source/core/edit/edundo.cxx index 1e7f93dfc141..9fa5342f08d7 100644 --- a/sw/source/core/edit/edundo.cxx +++ b/sw/source/core/edit/edundo.cxx @@ -110,7 +110,6 @@ void SwEditShell::Undo(sal_uInt16 const nCount, sal_uInt16 nOffset) // current undo state was not saved ::sw::UndoGuard const undoGuard(GetDoc()->GetIDocumentUndoRedo()); - bool bRet = false; StartAllAction(); { @@ -138,7 +137,7 @@ void SwEditShell::Undo(sal_uInt16 const nCount, sal_uInt16 nOffset) try { for (sal_uInt16 i = 0; i < nCount; ++i) { - bRet = GetDoc()->GetIDocumentUndoRedo().UndoWithOffset(nOffset) || bRet; + GetDoc()->GetIDocumentUndoRedo().UndoWithOffset(nOffset); } } catch (const css::uno::Exception &) { TOOLS_WARN_EXCEPTION("sw.core", "SwEditShell::Undo()"); @@ -165,8 +164,6 @@ void SwEditShell::Redo(sal_uInt16 const nCount) CurrShell aCurr( this ); - bool bRet = false; - // undo state was not saved ::sw::UndoGuard const undoGuard(GetDoc()->GetIDocumentUndoRedo()); @@ -192,8 +189,7 @@ void SwEditShell::Redo(sal_uInt16 const nCount) try { for (sal_uInt16 i = 0; i < nCount; ++i) { - bRet = GetDoc()->GetIDocumentUndoRedo().Redo() - || bRet; + GetDoc()->GetIDocumentUndoRedo().Redo(); } } catch (const css::uno::Exception &) { TOOLS_WARN_EXCEPTION("sw.core", "SwEditShell::Redo()"); diff --git a/sw/source/core/inc/AccessibilityIssue.hxx b/sw/source/core/inc/AccessibilityIssue.hxx index 5fe9857b9941..e4c1b3206c76 100644 --- a/sw/source/core/inc/AccessibilityIssue.hxx +++ b/sw/source/core/inc/AccessibilityIssue.hxx @@ -26,6 +26,7 @@ enum class IssueObject FORM, TABLE, TEXT, + HYPERLINKTEXT, DOCUMENT_TITLE, DOCUMENT_BACKGROUND, LANGUAGE_NOT_SET, diff --git a/sw/source/core/layout/atrfrm.cxx b/sw/source/core/layout/atrfrm.cxx index c3534b19534a..8c44f2ac893b 100644 --- a/sw/source/core/layout/atrfrm.cxx +++ b/sw/source/core/layout/atrfrm.cxx @@ -216,6 +216,34 @@ static void lcl_DelHFFormat( SwClient *pToRemove, SwFrameFormat *pFormat ) delete pFormat; } +namespace +{ + class SwFormatFrameSizeInstanceManager : public TypeSpecificItemInstanceManager + { + protected: + virtual size_t hashCode(const SfxPoolItem& rItem) const override + { + auto const & rFormatItem = static_cast(rItem); + std::size_t seed(0); + o3tl::hash_combine(seed, rFormatItem.GetHeightSizeType()); + o3tl::hash_combine(seed, rFormatItem.GetWidthSizeType()); + o3tl::hash_combine(seed, rFormatItem.GetWidthPercent()); + o3tl::hash_combine(seed, rFormatItem.GetWidthPercentRelation()); + o3tl::hash_combine(seed, rFormatItem.GetHeightPercent()); + o3tl::hash_combine(seed, rFormatItem.GetHeightPercentRelation()); + o3tl::hash_combine(seed, rFormatItem.GetSize().Width()); + o3tl::hash_combine(seed, rFormatItem.GetSize().Height()); + return seed; + } + }; +} + +ItemInstanceManager* SwFormatFrameSize::getItemInstanceManager() const +{ + static SwFormatFrameSizeInstanceManager aInstanceManager; + return &aInstanceManager; +} + void SwFormatFrameSize::ScaleMetrics(tools::Long lMult, tools::Long lDiv) { // Don't inherit the SvxSizeItem override (might or might not be relevant; added "just in case" // when changing SwFormatFrameSize to derive from SvxSizeItem instead of directly from @@ -1375,6 +1403,29 @@ void SwFormatSurround::dumpAsXml(xmlTextWriterPtr pWriter) const (void)xmlTextWriterEndElement(pWriter); } +namespace +{ + class SwFormatVertOrientInstanceManager : public TypeSpecificItemInstanceManager + { + protected: + virtual size_t hashCode(const SfxPoolItem& rItem) const override + { + auto const & rFormatItem = static_cast(rItem); + std::size_t seed(0); + o3tl::hash_combine(seed, rFormatItem.GetPos()); + o3tl::hash_combine(seed, rFormatItem.GetVertOrient()); + o3tl::hash_combine(seed, rFormatItem.GetRelationOrient()); + return seed; + } + }; +} + +ItemInstanceManager* SwFormatVertOrient::getItemInstanceManager() const +{ + static SwFormatVertOrientInstanceManager aInstanceManager; + return &aInstanceManager; +} + // Partially implemented inline in hxx SwFormatVertOrient::SwFormatVertOrient( SwTwips nY, sal_Int16 eVert, sal_Int16 eRel ) @@ -1467,6 +1518,30 @@ void SwFormatVertOrient::dumpAsXml(xmlTextWriterPtr pWriter) const (void)xmlTextWriterEndElement(pWriter); } +namespace +{ + class SwFormatHoriOrientInstanceManager : public TypeSpecificItemInstanceManager + { + protected: + virtual size_t hashCode(const SfxPoolItem& rItem) const override + { + auto const & rFormatItem = static_cast(rItem); + std::size_t seed(0); + o3tl::hash_combine(seed, rFormatItem.GetPos()); + o3tl::hash_combine(seed, rFormatItem.GetHoriOrient()); + o3tl::hash_combine(seed, rFormatItem.GetRelationOrient()); + o3tl::hash_combine(seed, rFormatItem.IsPosToggle()); + return seed; + } + }; +} + +ItemInstanceManager* SwFormatHoriOrient::getItemInstanceManager() const +{ + static SwFormatHoriOrientInstanceManager aInstanceManager; + return &aInstanceManager; +} + // Partially implemented inline in hxx SwFormatHoriOrient::SwFormatHoriOrient( SwTwips nX, sal_Int16 eHori, sal_Int16 eRel, bool bPos ) diff --git a/sw/source/core/layout/tabfrm.cxx b/sw/source/core/layout/tabfrm.cxx index efc716052fe0..42116672708f 100644 --- a/sw/source/core/layout/tabfrm.cxx +++ b/sw/source/core/layout/tabfrm.cxx @@ -807,7 +807,8 @@ static bool lcl_RecalcSplitLine( SwRowFrame& rLastLine, SwRowFrame& rFollowLine, bRet = false; // apparently checking nFootnoteHeight here does *not* guarantee that it fits into the body - if (bRet && nDistanceToFootnoteBodyPrtBottom + nFollowFootnotes < 0) + if (bRet && rTab.IsInDocBody() + && nDistanceToFootnoteBodyPrtBottom + nFollowFootnotes < 0) { assert(rTab.GetUpper() != rTab.FindFootnoteBossFrame()->FindBodyCont()); SAL_INFO("sw.layout", "SwTabFrame Split failed because of footnote growth"); diff --git a/sw/source/core/text/atrstck.cxx b/sw/source/core/text/atrstck.cxx index eafce865e9ed..85689a2c82a8 100644 --- a/sw/source/core/text/atrstck.cxx +++ b/sw/source/core/text/atrstck.cxx @@ -696,7 +696,7 @@ void SwAttrHandler::FontChg(const SfxPoolItem& rItem, SwFont& rFnt, bool bPush ) break; case RES_CHRATR_NOHYPHEN : if ( m_pShell && m_pShell->GetWin() && - m_pShell->GetViewOptions()->IsShowHiddenChar() ) + m_pShell->GetViewOptions()->IsViewMetaChars() ) { if ( rItem.StaticWhichCast(RES_CHRATR_NOHYPHEN).GetValue() ) { diff --git a/sw/source/core/text/inftxt.cxx b/sw/source/core/text/inftxt.cxx index e27af27ac5eb..5f9ac5597934 100644 --- a/sw/source/core/text/inftxt.cxx +++ b/sw/source/core/text/inftxt.cxx @@ -2005,11 +2005,10 @@ SwTwips SwTextFormatInfo::GetLineWidth() if (pLastTab->GetWhichPor() == PortionType::TabLeft) nLineWidth = nTextFrameWidth - pLastTab->GetTabPos(); } - else if (GetLast() == pLastTab) + else { // tdf#158658 Put content after tab into margin like Word. - // FIXME using Width() is entirely arbitrary here, Word adds even more - // width but not infinitely much. - nLineWidth = std::max(Width(), nLineWidth); + // Try to limit the paragraph to 55.87cm, it's max tab pos in Word UI. + nLineWidth = o3tl::toTwips(558, o3tl::Length::mm) - X(); } return nLineWidth; } @@ -2156,7 +2155,8 @@ SwFontSave::SwFontSave(const SwTextSizeInfo &rInf, SwFont *pNew, ( ! pNew->GetBackColor() && pFnt->GetBackColor() ) || ( pNew->GetBackColor() && ! pFnt->GetBackColor() ) || ( pNew->GetBackColor() && pFnt->GetBackColor() && - ( *pNew->GetBackColor() != *pFnt->GetBackColor() ) ) ) + ( *pNew->GetBackColor() != *pFnt->GetBackColor() ) ) + || !pNew->GetActualFont().SvxFontSubsetEquals(pFnt->GetActualFont())) { pNew->SetTransparent( true ); pNew->SetAlign( ALIGN_BASELINE ); diff --git a/sw/source/core/text/itrform2.cxx b/sw/source/core/text/itrform2.cxx index 621294528767..bfb7c6ed7a2c 100644 --- a/sw/source/core/text/itrform2.cxx +++ b/sw/source/core/text/itrform2.cxx @@ -1038,13 +1038,24 @@ bool SwContentControlPortion::DescribePDFControl(const SwTextPaintInfo& rInf) co auto pListWidget = static_cast(pDescriptor.get()); pListWidget->DropDown = true; sal_Int32 nIndex = 0; + bool bTextFound = false; for (const auto& rItem : pContentControl->GetListItems()) { pListWidget->Entries.push_back(rItem.m_aDisplayText); if (rItem.m_aDisplayText == aText) + { pListWidget->SelectedEntries.push_back(nIndex); + bTextFound = true; + } ++nIndex; } + if (!aText.isEmpty() && !bTextFound) + { + // The selected entry has to be an index, if there is no index for it, insert one at + // the start. + pListWidget->Entries.insert(pListWidget->Entries.begin(), aText); + pListWidget->SelectedEntries.push_back(0); + } break; } case SwContentControlType::COMBO_BOX: @@ -1116,6 +1127,14 @@ bool SwContentControlPortion::DescribePDFControl(const SwTextPaintInfo& rInf) co aLocation = aStartRect; aLocation.Union(aEndRect); + + // PDF spec 12.5.2 Annotation Dictionaries says the default border with is 1pt wide, increase + // the rectangle to compensate for that, otherwise the text will be cut off at the end. + aLocation.AddTop(-20); + aLocation.AddBottom(20); + aLocation.AddLeft(-20); + aLocation.AddRight(20); + pDescriptor->Location = aLocation.SVRect(); pPDFExtOutDevData->WrapBeginStructureElement(vcl::PDFWriter::Form); diff --git a/sw/source/core/text/txtfld.cxx b/sw/source/core/text/txtfld.cxx index e3abe96cab00..43e4b9e906de 100644 --- a/sw/source/core/text/txtfld.cxx +++ b/sw/source/core/text/txtfld.cxx @@ -55,6 +55,7 @@ #include #include #include +#include #include #include #include @@ -396,6 +397,13 @@ static void checkApplyParagraphMarkFormatToNumbering(SwFont* pNumFnt, SwTextForm pCleanedSet->ClearItem(pItem->Which()); } } + else if (pItem->Which() == RES_CHRATR_CASEMAP) + { + SvxCaseMap eCaseMap = static_cast(pItem)->GetCaseMap(); + // MS only knows about "all caps" and "small caps". Small caps is not set on numbering + if (eCaseMap == SvxCaseMap::SmallCaps) + pCleanedSet->ClearItem(pItem->Which()); + } pItem = aIter.NextItem(); }; diff --git a/sw/source/core/text/txtftn.cxx b/sw/source/core/text/txtftn.cxx index 745d40ce23bc..787ea1390e78 100644 --- a/sw/source/core/text/txtftn.cxx +++ b/sw/source/core/text/txtftn.cxx @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -246,6 +247,12 @@ static SwTwips lcl_GetFootnoteLower( const SwTextFrame* pFrame, SwTwips nLower ) const SwSortedObjs &rObjs = *pStartFrame->GetDrawObjs(); for (SwAnchoredObject* pAnchoredObj : rObjs) { + if (pAnchoredObj->GetFrameFormat()->GetSurround().GetSurround() + == text::WrapTextMode_THROUGH) + { + continue; // tdf#161718 no effect on text flow, skip + } + SwRect aRect( pAnchoredObj->GetObjRect() ); auto pFlyFrame = pAnchoredObj->DynCastFlyFrame(); diff --git a/sw/source/core/text/txttab.cxx b/sw/source/core/text/txttab.cxx index 19ec92c6425b..14d8b9072693 100644 --- a/sw/source/core/text/txttab.cxx +++ b/sw/source/core/text/txttab.cxx @@ -175,7 +175,12 @@ SwTabPortion *SwTextFormatter::NewTabPortion( SwTextFormatInfo &rInf, bool bAuto // since up till now these were just treated as automatic tabstops. eAdj = SvxTabAdjust::Right; bAbsoluteNextPos = true; - nNextPos = rInf.Width(); + // TODO: unclear if old Word has an upper limit for center/right + // tabs, UI allows setting 55.87cm max which is still one line + if (!bTabOverMargin || o3tl::toTwips(558, o3tl::Length::mm) < nNextPos) + { + nNextPos = rInf.Width(); + } } bAutoTabStop = false; } diff --git a/sw/source/core/unocore/unoframe.cxx b/sw/source/core/unocore/unoframe.cxx index 85d1eee41ece..5c3eb85ea8c1 100644 --- a/sw/source/core/unocore/unoframe.cxx +++ b/sw/source/core/unocore/unoframe.cxx @@ -99,7 +99,6 @@ #include #include #include -#include #include #include #include @@ -112,7 +111,6 @@ #include #include #include -#include #include #include #include @@ -1183,14 +1181,6 @@ bool SwOLEProperties_Impl::AnyToItemSet( return true; } -class SwXFrame::Impl -{ -public: - uno::WeakReference m_wThis; - std::mutex m_Mutex; // just for OInterfaceContainerHelper4 - ::comphelper::OInterfaceContainerHelper4 m_EventListeners; -}; - OUString SwXFrame::getImplementationName() { return u"SwXFrame"_ustr; @@ -1207,8 +1197,7 @@ uno::Sequence< OUString > SwXFrame::getSupportedServiceNames() } SwXFrame::SwXFrame(FlyCntType eSet, const ::SfxItemPropertySet* pSet, SwDoc *pDoc) - : m_pImpl(new Impl) - , m_pFrameFormat(nullptr) + : m_pFrameFormat(nullptr) , m_pPropSet(pSet) , m_pDoc(pDoc) , m_eType(eSet) @@ -1262,8 +1251,7 @@ SwXFrame::SwXFrame(FlyCntType eSet, const ::SfxItemPropertySet* pSet, SwDoc *pDo } SwXFrame::SwXFrame(SwFrameFormat& rFrameFormat, FlyCntType eSet, const ::SfxItemPropertySet* pSet) - : m_pImpl(new Impl) - , m_pFrameFormat(&rFrameFormat) + : m_pFrameFormat(&rFrameFormat) , m_pPropSet(pSet) , m_pDoc(nullptr) , m_eType(eSet) @@ -1301,9 +1289,6 @@ SwXFrame::CreateXFrame(SwDoc & rDoc, SwFrameFormat *const pFrameFormat) } else xFrame = new NameLookupIsHard(&rDoc); - - // need a permanent Reference to initialize m_wThis - xFrame->SwXFrame::m_pImpl->m_wThis = uno::Reference(xFrame.get()); } return xFrame; } @@ -2641,15 +2626,15 @@ uno::Any SwXFrame::getPropertyDefault( const OUString& rPropertyName ) void SAL_CALL SwXFrame::addEventListener( const uno::Reference & xListener) { - std::unique_lock aGuard(m_pImpl->m_Mutex); - m_pImpl->m_EventListeners.addInterface(aGuard, xListener); + std::unique_lock aGuard(m_Mutex); + m_EventListeners.addInterface(aGuard, xListener); } void SAL_CALL SwXFrame::removeEventListener( const uno::Reference & xListener) { - std::unique_lock aGuard(m_pImpl->m_Mutex); - m_pImpl->m_EventListeners.removeInterface(aGuard, xListener); + std::unique_lock aGuard(m_Mutex); + m_EventListeners.removeInterface(aGuard, xListener); } void SwXFrame::DisposeInternal() @@ -2657,15 +2642,14 @@ void SwXFrame::DisposeInternal() mxStyleData.clear(); mxStyleFamily.clear(); m_pDoc = nullptr; - uno::Reference const xThis(m_pImpl->m_wThis); - if (!xThis.is()) + if (m_refCount == 0) { // fdo#72695: if UNO object is already dead, don't revive it with event return; } { - lang::EventObject const ev(xThis); - std::unique_lock aGuard(m_pImpl->m_Mutex); - m_pImpl->m_EventListeners.disposeAndClear(aGuard, ev); + lang::EventObject const ev(static_cast(this)); + std::unique_lock aGuard(m_Mutex); + m_EventListeners.disposeAndClear(aGuard, ev); } m_pFrameFormat = nullptr; EndListeningAll(); diff --git a/sw/source/core/unocore/unoparagraph.cxx b/sw/source/core/unocore/unoparagraph.cxx index 8c2ec47bd6fd..5e1f0e26ddeb 100644 --- a/sw/source/core/unocore/unoparagraph.cxx +++ b/sw/source/core/unocore/unoparagraph.cxx @@ -19,7 +19,6 @@ #include -#include #include #include #include @@ -57,7 +56,6 @@ #include #include #include -#include #include #include #include @@ -113,88 +111,21 @@ static beans::PropertyState lcl_SwXParagraph_getPropertyState( const SfxItemPropertyMapEntry& rEntry, bool &rAttrSetFetched ); -class SwXParagraph::Impl - : public SvtListener +SwTextNode& SwXParagraph::GetTextNodeOrThrow() { -public: - SwXParagraph& m_rThis; - unotools::WeakReference m_wThis; - std::mutex m_Mutex; // just for OInterfaceContainerHelper4 - ::comphelper::OInterfaceContainerHelper4 m_EventListeners; - SfxItemPropertySet const& m_rPropSet; - bool m_bIsDescriptor; - sal_Int32 m_nSelectionStartPos; - sal_Int32 m_nSelectionEndPos; - OUString m_sText; - css::uno::Reference m_xParentText; - SwTextNode* m_pTextNode; - - Impl(SwXParagraph& rThis, - SwTextNode* const pTextNode = nullptr, css::uno::Reference xParent = nullptr, - const sal_Int32 nSelStart = -1, const sal_Int32 nSelEnd = -1) - : m_rThis(rThis) - , m_rPropSet(*aSwMapProvider.GetPropertySet(PROPERTY_MAP_PARAGRAPH)) - , m_bIsDescriptor(nullptr == pTextNode) - , m_nSelectionStartPos(nSelStart) - , m_nSelectionEndPos(nSelEnd) - , m_xParentText(std::move(xParent)) - , m_pTextNode(pTextNode) - { - m_pTextNode && StartListening(m_pTextNode->GetNotifier()); + if (!m_pTextNode) { + throw uno::RuntimeException(u"SwXParagraph: disposed or invalid"_ustr, nullptr); } + return *m_pTextNode; +} - SwTextNode* GetTextNode() { - return m_pTextNode; - } - - SwTextNode& GetTextNodeOrThrow() { - if (!m_pTextNode) { - throw uno::RuntimeException(u"SwXParagraph: disposed or invalid"_ustr, nullptr); - } - return *m_pTextNode; - } - - bool IsDescriptor() const { return m_bIsDescriptor; } - - /// @throws beans::UnknownPropertyException - /// @throws beans::PropertyVetoException - /// @throws lang::IllegalArgumentException - /// @throws lang::WrappedTargetException - /// @throws uno::RuntimeException - void SetPropertyValues_Impl( - const uno::Sequence< OUString >& rPropertyNames, - const uno::Sequence< uno::Any >& rValues); - - /// @throws beans::UnknownPropertyException - /// @throws lang::WrappedTargetException - /// @throws uno::RuntimeException - uno::Sequence< uno::Any > - GetPropertyValues_Impl( - const uno::Sequence< OUString >& rPropertyNames); - - /// @throws uno::RuntimeException - static void GetSinglePropertyValue_Impl( - const SfxItemPropertyMapEntry& rEntry, - const SfxItemSet& rSet, - uno::Any& rAny ); - - /// @throws uno::RuntimeException - uno::Sequence< beans::GetDirectPropertyTolerantResult > - GetPropertyValuesTolerant_Impl( - const uno::Sequence< OUString >& rPropertyNames, - bool bDirectValuesOnly); -protected: - virtual void Notify(const SfxHint& rHint) override; - -}; - -void SwXParagraph::Impl::Notify(const SfxHint& rHint) +void SwXParagraph::MySvtListener::Notify(const SfxHint& rHint) { if(rHint.GetId() == SfxHintId::Dying) { - m_pTextNode = nullptr; - std::unique_lock aGuard(m_Mutex); - if (m_EventListeners.getLength(aGuard) != 0) + m_rThis.m_pTextNode = nullptr; + std::unique_lock aGuard(m_rThis.m_Mutex); + if (m_rThis.m_EventListeners.getLength(aGuard) != 0) { // fdo#72695: if UNO object is already dead, don't revive it with event // The specific pattern we are guarding against is this: @@ -203,19 +134,23 @@ void SwXParagraph::Impl::Notify(const SfxHint& rHint) // SwXParagraph destructor, which tries to take the SolarMutex, and blocks // [3] Thread1 destroys a SwTextNode, which calls this Notify event, which results // in a double-free if we construct the xThis object. - uno::Reference const xThis(m_wThis); - if (!xThis.is()) + if (m_rThis.m_refCount == 0) { // fdo#72695: if UNO object is already dead, don't revive it with event return; } - lang::EventObject const ev(xThis); - m_EventListeners.disposeAndClear(aGuard, ev); + lang::EventObject const ev(static_cast(&m_rThis)); + m_rThis.m_EventListeners.disposeAndClear(aGuard, ev); } } } SwXParagraph::SwXParagraph() - : m_pImpl( new SwXParagraph::Impl(*this) ) + : m_rPropSet(*aSwMapProvider.GetPropertySet(PROPERTY_MAP_PARAGRAPH)) + , m_bIsDescriptor(true) + , m_nSelectionStartPos(-1) + , m_nSelectionEndPos(-1) + , m_pTextNode(nullptr) + , moSvtListener(std::in_place, *this) { } @@ -223,23 +158,22 @@ SwXParagraph::SwXParagraph( css::uno::Reference< SwXText > const & xParent, SwTextNode & rTextNode, const sal_Int32 nSelStart, const sal_Int32 nSelEnd) - : m_pImpl( - new SwXParagraph::Impl(*this, &rTextNode, xParent, nSelStart, nSelEnd)) + : m_rPropSet(*aSwMapProvider.GetPropertySet(PROPERTY_MAP_PARAGRAPH)) + , m_bIsDescriptor(false) + , m_nSelectionStartPos(nSelStart) + , m_nSelectionEndPos(nSelEnd) + , m_xParentText(xParent) + , m_pTextNode(&rTextNode) + , moSvtListener(std::in_place, *this) { + moSvtListener->StartListening(rTextNode.GetNotifier()); } SwXParagraph::~SwXParagraph() { -} - -const SwTextNode * SwXParagraph::GetTextNode() const -{ - return m_pImpl->GetTextNode(); -} - -bool SwXParagraph::IsDescriptor() const -{ - return m_pImpl->IsDescriptor(); + // need to hold solar mutex while destructing SvtListener + SolarMutexGuard aGuard; + moSvtListener.reset(); } rtl::Reference @@ -276,8 +210,6 @@ SwXParagraph::CreateXParagraph(SwDoc & rDoc, SwTextNode *const pTextNode, { pTextNode->SetXParagraph(xParagraph); } - // need a permanent Reference to initialize m_wThis - pXPara->m_pImpl->m_wThis = xParagraph.get(); return xParagraph; } @@ -327,20 +259,20 @@ SwXParagraph::getSupportedServiceNames() void SwXParagraph::attachToText(SwXText & rParent, SwTextNode & rTextNode) { - OSL_ENSURE(m_pImpl->m_bIsDescriptor, "Paragraph is not a descriptor"); - if (!m_pImpl->m_bIsDescriptor) + OSL_ENSURE(m_bIsDescriptor, "Paragraph is not a descriptor"); + if (!m_bIsDescriptor) return; - m_pImpl->m_bIsDescriptor = false; - m_pImpl->EndListeningAll(); - m_pImpl->StartListening(rTextNode.GetNotifier()); + m_bIsDescriptor = false; + moSvtListener->EndListeningAll(); + moSvtListener->StartListening(rTextNode.GetNotifier()); rTextNode.SetXParagraph(this); - m_pImpl->m_xParentText = &rParent; - if (!m_pImpl->m_sText.isEmpty()) + m_xParentText = &rParent; + if (!m_sText.isEmpty()) { - try { setString(m_pImpl->m_sText); } + try { setString(m_sText); } catch(...){} - m_pImpl->m_sText.clear(); + m_sText.clear(); } } @@ -349,8 +281,7 @@ SwXParagraph::getPropertySetInfo() { SolarMutexGuard g; - static uno::Reference< beans::XPropertySetInfo > xRef = - m_pImpl->m_rPropSet.getPropertySetInfo(); + static uno::Reference< beans::XPropertySetInfo > xRef = m_rPropSet.getPropertySetInfo(); return xRef; } @@ -359,7 +290,7 @@ SwXParagraph::setPropertyValue(const OUString& rPropertyName, const uno::Any& rValue) { SolarMutexGuard aGuard; - m_pImpl->SetPropertyValues_Impl( { rPropertyName }, { rValue } ); + SetPropertyValues_Impl( { rPropertyName }, { rValue } ); } uno::Any @@ -367,12 +298,11 @@ SwXParagraph::getPropertyValue(const OUString& rPropertyName) { SolarMutexGuard aGuard; uno::Sequence aPropertyNames { rPropertyName }; - const uno::Sequence< uno::Any > aRet = - m_pImpl->GetPropertyValues_Impl(aPropertyNames); + const uno::Sequence< uno::Any > aRet = GetPropertyValues_Impl(aPropertyNames); return aRet.getConstArray()[0]; } -void SwXParagraph::Impl::SetPropertyValues_Impl( +void SwXParagraph::SetPropertyValues_Impl( const uno::Sequence< OUString >& rPropertyNames, const uno::Sequence< uno::Any >& rValues ) { @@ -389,13 +319,11 @@ void SwXParagraph::Impl::SetPropertyValues_Impl( { if (SfxItemPropertyMapEntry const* const pEntry = rMap.getByName(name); !pEntry) { - throw beans::UnknownPropertyException("Unknown property: " + name, - m_rThis.getXWeak()); + throw beans::UnknownPropertyException("Unknown property: " + name, getXWeak()); } else if (pEntry->nFlags & beans::PropertyAttribute::READONLY) { - throw beans::PropertyVetoException("Property is read-only: " + name, - m_rThis.getXWeak()); + throw beans::PropertyVetoException("Property is read-only: " + name, getXWeak()); } return comphelper::makePropertyValue(name, value); }); @@ -415,7 +343,7 @@ void SAL_CALL SwXParagraph::setPropertyValues( // workaround for bad designed API try { - m_pImpl->SetPropertyValues_Impl( rPropertyNames, rValues ); + SetPropertyValues_Impl( rPropertyNames, rValues ); } catch (const beans::UnknownPropertyException &rException) { @@ -429,7 +357,7 @@ void SAL_CALL SwXParagraph::setPropertyValues( // Support for DrawingLayer FillStyles for GetPropertyValue() usages // static -void SwXParagraph::Impl::GetSinglePropertyValue_Impl( +void SwXParagraph::GetSinglePropertyValue_Impl( const SfxItemPropertyMapEntry& rEntry, const SfxItemSet& rSet, uno::Any& rAny ) @@ -517,7 +445,7 @@ void SwXParagraph::Impl::GetSinglePropertyValue_Impl( } } -uno::Sequence< uno::Any > SwXParagraph::Impl::GetPropertyValues_Impl( +uno::Sequence< uno::Any > SwXParagraph::GetPropertyValues_Impl( const uno::Sequence< OUString > & rPropertyNames ) { SwTextNode & rTextNode(GetTextNodeOrThrow()); @@ -574,8 +502,7 @@ uno::Sequence< uno::Any > SwXParagraph::Impl::GetPropertyValues_Impl( if (!pEntry) { throw beans::UnknownPropertyException( - "Unknown property: " + pPropertyNames[nProp], - m_rThis.getXWeak()); + "Unknown property: " + pPropertyNames[nProp], getXWeak()); } if (! ::sw::GetDefaultTextContentValue( pValues[nProp], pPropertyNames[nProp], pEntry->nWID)) @@ -601,7 +528,7 @@ SwXParagraph::getPropertyValues(const uno::Sequence< OUString >& rPropertyNames) // workaround for bad designed API try { - aValues = m_pImpl->GetPropertyValues_Impl( rPropertyNames ); + aValues = GetPropertyValues_Impl( rPropertyNames ); } catch (beans::UnknownPropertyException &) { @@ -653,7 +580,7 @@ SwXParagraph::setPropertyValuesTolerant( throw lang::IllegalArgumentException(); } - SwTextNode & rTextNode(m_pImpl->GetTextNodeOrThrow()); + SwTextNode & rTextNode(GetTextNodeOrThrow()); //SwNode& rTextNode = pUnoCursor->GetPoint()->GetNode(); //const SwAttrSet& rAttrSet = static_cast(rTextNode).GetSwAttrSet(); @@ -670,8 +597,7 @@ SwXParagraph::setPropertyValuesTolerant( beans::SetPropertyTolerantFailed *pFailed = aFailed.getArray(); // get entry to start with - const SfxItemPropertyMap &rPropMap = - m_pImpl->m_rPropSet.getPropertyMap(); + const SfxItemPropertyMap &rPropMap = m_rPropSet.getPropertyMap(); SwPosition aPos( rTextNode ); SwCursor aCursor( aPos, nullptr ); @@ -701,7 +627,7 @@ SwXParagraph::setPropertyValuesTolerant( else { SwUnoCursorHelper::SetPropertyValue( - aCursor, m_pImpl->m_rPropSet, pProp[i], pValue[i]); + aCursor, m_rPropSet, pProp[i], pValue[i]); } } } @@ -740,7 +666,7 @@ SwXParagraph::getPropertyValuesTolerant( SolarMutexGuard aGuard; const uno::Sequence< beans::GetDirectPropertyTolerantResult > aTmpRes( - m_pImpl->GetPropertyValuesTolerant_Impl( rPropertyNames, false ) ); + GetPropertyValuesTolerant_Impl( rPropertyNames, false ) ); // copy temporary result to final result type const sal_Int32 nLen = aTmpRes.getLength(); @@ -755,11 +681,11 @@ SwXParagraph::getDirectPropertyValuesTolerant( { SolarMutexGuard aGuard; - return m_pImpl->GetPropertyValuesTolerant_Impl( rPropertyNames, true ); + return GetPropertyValuesTolerant_Impl( rPropertyNames, true ); } uno::Sequence< beans::GetDirectPropertyTolerantResult > -SwXParagraph::Impl::GetPropertyValuesTolerant_Impl( +SwXParagraph::GetPropertyValuesTolerant_Impl( const uno::Sequence< OUString >& rPropertyNames, bool bDirectValuesOnly ) { @@ -1041,11 +967,11 @@ SwXParagraph::getPropertyState(const OUString& rPropertyName) { SolarMutexGuard aGuard; - SwTextNode & rTextNode(m_pImpl->GetTextNodeOrThrow()); + SwTextNode & rTextNode(GetTextNodeOrThrow()); const SwAttrSet* pSet = nullptr; SfxItemPropertyMapEntry const*const pEntry = - m_pImpl->m_rPropSet.getPropertyMap().getByName(rPropertyName); + m_rPropSet.getPropertyMap().getByName(rPropertyName); if (!pEntry) { throw beans::UnknownPropertyException( @@ -1064,12 +990,12 @@ SwXParagraph::getPropertyStates( { SolarMutexGuard aGuard; - SwTextNode & rTextNode(m_pImpl->GetTextNodeOrThrow()); + SwTextNode & rTextNode(GetTextNodeOrThrow()); const OUString* pNames = PropertyNames.getConstArray(); uno::Sequence< beans::PropertyState > aRet(PropertyNames.getLength()); beans::PropertyState* pStates = aRet.getArray(); - const SfxItemPropertyMap &rMap = m_pImpl->m_rPropSet.getPropertyMap(); + const SfxItemPropertyMap &rMap = m_rPropSet.getPropertyMap(); const SwAttrSet* pSet = nullptr; bool bAttrSetFetched = false; @@ -1104,7 +1030,7 @@ SwXParagraph::setPropertyToDefault(const OUString& rPropertyName) { SolarMutexGuard aGuard; - SwTextNode & rTextNode(m_pImpl->GetTextNodeOrThrow()); + SwTextNode & rTextNode(GetTextNodeOrThrow()); SwPosition aPos( rTextNode ); SwCursor aCursor( aPos, nullptr ); @@ -1118,7 +1044,7 @@ SwXParagraph::setPropertyToDefault(const OUString& rPropertyName) // select paragraph SwParaSelection aParaSel( aCursor ); SfxItemPropertyMapEntry const*const pEntry = - m_pImpl->m_rPropSet.getPropertyMap().getByName( rPropertyName ); + m_rPropSet.getPropertyMap().getByName( rPropertyName ); if (!pEntry) { throw beans::UnknownPropertyException( @@ -1192,7 +1118,7 @@ SwXParagraph::getPropertyDefault(const OUString& rPropertyName) { SolarMutexGuard g; - SwTextNode & rTextNode(m_pImpl->GetTextNodeOrThrow()); + SwTextNode & rTextNode(GetTextNodeOrThrow()); uno::Any aRet; if (::sw::GetDefaultTextContentValue(aRet, rPropertyName)) @@ -1201,7 +1127,7 @@ SwXParagraph::getPropertyDefault(const OUString& rPropertyName) } SfxItemPropertyMapEntry const*const pEntry = - m_pImpl->m_rPropSet.getPropertyMap().getByName(rPropertyName); + m_rPropSet.getPropertyMap().getByName(rPropertyName); if (!pEntry) { throw beans::UnknownPropertyException( @@ -1236,14 +1162,14 @@ SwXParagraph::getAnchor() { SolarMutexGuard aGuard; - SwTextNode & rTextNode(m_pImpl->GetTextNodeOrThrow()); + SwTextNode & rTextNode(GetTextNodeOrThrow()); SwPosition aPos( rTextNode ); SwCursor aCursor( aPos, nullptr ); // select paragraph SwParaSelection aParaSel( aCursor ); const uno::Reference< text::XTextRange > xRet = - new SwXTextRange(aCursor, m_pImpl->m_xParentText); + new SwXTextRange(aCursor, m_xParentText); return xRet; } @@ -1251,14 +1177,14 @@ void SAL_CALL SwXParagraph::dispose() { SolarMutexGuard aGuard; - SwTextNode *const pTextNode( m_pImpl->GetTextNode() ); + SwTextNode *const pTextNode( m_pTextNode ); if (pTextNode) { SwCursor aCursor( SwPosition( *pTextNode ), nullptr ); pTextNode->GetDoc().getIDocumentContentOperations().DelFullPara(aCursor); lang::EventObject const ev(getXWeak()); - std::unique_lock aGuard2(m_pImpl->m_Mutex); - m_pImpl->m_EventListeners.disposeAndClear(aGuard2, ev); + std::unique_lock aGuard2(m_Mutex); + m_EventListeners.disposeAndClear(aGuard2, ev); } } @@ -1266,16 +1192,16 @@ void SAL_CALL SwXParagraph::addEventListener( const uno::Reference< lang::XEventListener > & xListener) { // no need to lock here as m_pImpl is const and container threadsafe - std::unique_lock aGuard(m_pImpl->m_Mutex); - m_pImpl->m_EventListeners.addInterface(aGuard, xListener); + std::unique_lock aGuard(m_Mutex); + m_EventListeners.addInterface(aGuard, xListener); } void SAL_CALL SwXParagraph::removeEventListener( const uno::Reference< lang::XEventListener > & xListener) { // no need to lock here as m_pImpl is const and container threadsafe - std::unique_lock aGuard(m_pImpl->m_Mutex); - m_pImpl->m_EventListeners.removeInterface(aGuard, xListener); + std::unique_lock aGuard(m_Mutex); + m_EventListeners.removeInterface(aGuard, xListener); } uno::Reference< container::XEnumeration > SAL_CALL @@ -1283,12 +1209,12 @@ SwXParagraph::createEnumeration() { SolarMutexGuard aGuard; - SwTextNode & rTextNode(m_pImpl->GetTextNodeOrThrow()); + SwTextNode & rTextNode(GetTextNodeOrThrow()); SwPaM aPam ( rTextNode ); const uno::Reference< container::XEnumeration > xRef = - new SwXTextPortionEnumeration(aPam, m_pImpl->m_xParentText, - m_pImpl->m_nSelectionStartPos, m_pImpl->m_nSelectionEndPos); + new SwXTextPortionEnumeration(aPam, m_xParentText, + m_nSelectionStartPos, m_nSelectionEndPos); return xRef; } @@ -1298,11 +1224,11 @@ SwXParagraph::createTextFieldsEnumeration() { SolarMutexGuard aGuard; - SwTextNode & rTextNode(m_pImpl->GetTextNodeOrThrow()); + SwTextNode & rTextNode(GetTextNodeOrThrow()); SwPaM aPam ( rTextNode ); - return new SwXTextPortionEnumeration(aPam, m_pImpl->m_xParentText, - m_pImpl->m_nSelectionStartPos, m_pImpl->m_nSelectionEndPos, /*bOnlyTextFields*/true); + return new SwXTextPortionEnumeration(aPam, m_xParentText, + m_nSelectionStartPos, m_nSelectionEndPos, /*bOnlyTextFields*/true); } uno::Type SAL_CALL SwXParagraph::getElementType() @@ -1321,7 +1247,7 @@ SwXParagraph::getText() { SolarMutexGuard g; - return m_pImpl->m_xParentText; + return m_xParentText; } uno::Reference< text::XTextRange > SAL_CALL @@ -1329,7 +1255,7 @@ SwXParagraph::getStart() { SolarMutexGuard aGuard; - SwTextNode & rTextNode(m_pImpl->GetTextNodeOrThrow()); + SwTextNode & rTextNode(GetTextNodeOrThrow()); SwPosition aPos( rTextNode ); SwCursor aCursor( aPos, nullptr ); @@ -1346,7 +1272,7 @@ SwXParagraph::getEnd() { SolarMutexGuard aGuard; - SwTextNode & rTextNode(m_pImpl->GetTextNodeOrThrow()); + SwTextNode & rTextNode(GetTextNodeOrThrow()); SwPosition aPos( rTextNode ); SwCursor aCursor( aPos, nullptr ); @@ -1370,9 +1296,9 @@ OUString SAL_CALL SwXParagraph::getString() SwParaSelection aParaSel( aCursor ); SwUnoCursorHelper::GetTextFromPam(aCursor, aRet); } - else if (m_pImpl->IsDescriptor()) + else if (IsDescriptor()) { - aRet = m_pImpl->m_sText; + aRet = m_sText; } else { @@ -1402,9 +1328,9 @@ void SAL_CALL SwXParagraph::setString(const OUString& aString) SwUnoCursorHelper::SetString(aCursor, aString); SwUnoCursorHelper::SelectPam(aCursor, false); } - else if (m_pImpl->IsDescriptor()) + else if (IsDescriptor()) { - m_pImpl->m_sText = aString; + m_sText = aString; } else { @@ -1422,7 +1348,7 @@ SwXParagraph::createContentEnumeration(const OUString& rServiceName) throw uno::RuntimeException(); } - SwTextNode & rTextNode(m_pImpl->GetTextNodeOrThrow()); + SwTextNode & rTextNode(GetTextNodeOrThrow()); SwPaM aPam( rTextNode ); uno::Reference< container::XEnumeration > xRet = @@ -1440,13 +1366,12 @@ SwXParagraph::getAvailableServiceNames() // MetadatableMixin ::sfx2::Metadatable* SwXParagraph::GetCoreObject() { - SwTextNode *const pTextNode( m_pImpl->GetTextNode() ); - return pTextNode; + return m_pTextNode; } uno::Reference SwXParagraph::GetModel() { - SwTextNode *const pTextNode( m_pImpl->GetTextNode() ); + SwTextNode *const pTextNode( m_pTextNode ); if (pTextNode) { SwDocShell const*const pShell( pTextNode->GetDoc().GetDocShell() ); diff --git a/sw/source/core/unocore/unosett.cxx b/sw/source/core/unocore/unosett.cxx index a28fc1f1b4c4..2ad966a57b78 100644 --- a/sw/source/core/unocore/unosett.cxx +++ b/sw/source/core/unocore/unosett.cxx @@ -932,7 +932,7 @@ Any SwXLineNumberingProperties::getPropertyValue(const OUString& rPropertyName) break; case WID_DISTANCE : { - sal_uInt32 nPos = rInfo.GetPosFromLeft(); + sal_uInt16 nPos = rInfo.GetPosFromLeft(); if(USHRT_MAX == nPos) nPos = 0; aRet <<= static_cast < sal_Int32 >(convertTwipToMm100(nPos)); diff --git a/sw/source/core/unocore/unotext.cxx b/sw/source/core/unocore/unotext.cxx index edfeaf1e98c1..41653997fd47 100644 --- a/sw/source/core/unocore/unotext.cxx +++ b/sw/source/core/unocore/unotext.cxx @@ -77,51 +77,6 @@ using namespace ::com::sun::star; constexpr OUString cInvalidObject = u"this object is invalid"_ustr; -//class SwXText::Impl -//{ -// -//public: -// SwXText & m_rThis; -// SfxItemPropertySet const& m_rPropSet; -// const CursorType m_eType; -// SwDoc * m_pDoc; -// bool m_bIsValid; -// -// Impl( SwXText & rThis, -// SwDoc *const pDoc, const CursorType eType) -// : m_rThis(rThis) -// , m_rPropSet(*aSwMapProvider.GetPropertySet(PROPERTY_MAP_TEXT)) -// , m_eType(eType) -// , m_pDoc(pDoc) -// , m_bIsValid(nullptr != pDoc) -// { -// } -// -// /// @throws lang::IllegalArgumentException -// /// @throws uno::RuntimeException -// rtl::Reference -// finishOrAppendParagraph( -// const uno::Sequence< beans::PropertyValue >& -// rCharacterAndParagraphProperties, -// const uno::Reference< text::XTextRange >& xInsertPosition); -// -// /// @throws lang::IllegalArgumentException -// /// @throws uno::RuntimeException -// sal_Int16 ComparePositions( -// const uno::Reference& xPos1, -// const uno::Reference& xPos2); -// -// /// @throws lang::IllegalArgumentException -// /// @throws uno::RuntimeException -// bool CheckForOwnMember(const SwPaM & rPaM); -// -// void ConvertCell( -// const uno::Sequence< uno::Reference< text::XTextRange > > & rCell, -// std::vector & rRowNodes, -// SwNodeRange *const pLastCell); -// -//}; - SwXText::SwXText(SwDoc *const pDoc, const CursorType eType) : m_rPropSet(*aSwMapProvider.GetPropertySet(PROPERTY_MAP_TEXT)) , m_eType(eType) diff --git a/sw/source/filter/ww8/rtfexport.cxx b/sw/source/filter/ww8/rtfexport.cxx index 4eb04d4f8bbf..41a9cc4b9908 100644 --- a/sw/source/filter/ww8/rtfexport.cxx +++ b/sw/source/filter/ww8/rtfexport.cxx @@ -273,10 +273,9 @@ void RtfExport::WriteRevTab() GetRedline(SW_MOD()->GetRedlineAuthor(pRedl->GetAuthor())); } - bool bRemoveCommentAuthorDates + bool bRemoveChangesInfo = SvtSecurityOptions::IsOptionSet(SvtSecurityOptions::EOption::DocWarnRemovePersonalInfo) - && !SvtSecurityOptions::IsOptionSet( - SvtSecurityOptions::EOption::DocWarnKeepNoteAuthorDateInfo); + && !SvtSecurityOptions::IsOptionSet(SvtSecurityOptions::EOption::DocWarnKeepRedlineInfo); // Now write the table Strm() @@ -290,9 +289,8 @@ void RtfExport::WriteRevTab() Strm().WriteChar('{'); if (pAuthor) { - OUString sAuthor(bRemoveCommentAuthorDates - ? "Author" + OUString::number(GetInfoID(*pAuthor)) - : *pAuthor); + OUString sAuthor(bRemoveChangesInfo ? "Author" + OUString::number(GetInfoID(*pAuthor)) + : *pAuthor); Strm().WriteOString(msfilter::rtfutil::OutString(sAuthor, m_eDefaultEncoding)); } Strm().WriteOString(";}"); diff --git a/sw/source/filter/ww8/wrtw8nds.cxx b/sw/source/filter/ww8/wrtw8nds.cxx index a42fc133ebb3..c2f47666ba23 100644 --- a/sw/source/filter/ww8/wrtw8nds.cxx +++ b/sw/source/filter/ww8/wrtw8nds.cxx @@ -50,6 +50,7 @@ #include #include #include +#include #include #include #include @@ -3668,6 +3669,11 @@ void WW8AttributeOutput::Redline( const SwRedlineData* pRedline ) NS_sprm::CFRMarkDel::val, NS_sprm::CIbstRMarkDel::val, NS_sprm::CDttmRMarkDel::val, }; + bool bRemovePersonalInfo + = SvtSecurityOptions::IsOptionSet(SvtSecurityOptions::EOption::DocWarnRemovePersonalInfo) + && !SvtSecurityOptions::IsOptionSet( + SvtSecurityOptions::EOption::DocWarnKeepRedlineInfo); + const sal_uInt16* pSprmIds = nullptr; switch( pRedline->GetType() ) { @@ -3684,7 +3690,8 @@ void WW8AttributeOutput::Redline( const SwRedlineData* pRedline ) m_rWW8Export.m_pO->push_back( 7 ); // len m_rWW8Export.m_pO->push_back( 1 ); m_rWW8Export.InsUInt16( m_rWW8Export.AddRedlineAuthor( pRedline->GetAuthor() ) ); - m_rWW8Export.InsUInt32( sw::ms::DateTime2DTTM( pRedline->GetTimeStamp() )); + m_rWW8Export.InsUInt32(sw::ms::DateTime2DTTM( + bRemovePersonalInfo ? DateTime(DateTime::EMPTY) : pRedline->GetTimeStamp())); break; default: OSL_ENSURE(false, "Unhandled redline type for export"); @@ -3700,7 +3707,8 @@ void WW8AttributeOutput::Redline( const SwRedlineData* pRedline ) m_rWW8Export.InsUInt16( m_rWW8Export.AddRedlineAuthor( pRedline->GetAuthor() ) ); m_rWW8Export.InsUInt16( pSprmIds[2] ); - m_rWW8Export.InsUInt32( sw::ms::DateTime2DTTM( pRedline->GetTimeStamp() )); + m_rWW8Export.InsUInt32(sw::ms::DateTime2DTTM( + bRemovePersonalInfo ? DateTime(DateTime::EMPTY) : pRedline->GetTimeStamp())); } } diff --git a/sw/source/filter/ww8/wrtw8sty.cxx b/sw/source/filter/ww8/wrtw8sty.cxx index 28309d9546d7..6cbc2702e02d 100644 --- a/sw/source/filter/ww8/wrtw8sty.cxx +++ b/sw/source/filter/ww8/wrtw8sty.cxx @@ -31,6 +31,7 @@ #include #include #include +#include #include #include "wrtww8.hxx" @@ -2193,27 +2194,41 @@ void WW8_WrPlcFootnoteEdn::Append( WW8_CP nCp, const SwFormatFootnote& rFootnote WW8_Annotation::WW8_Annotation(const SwPostItField* pPostIt, WW8_CP nRangeStart, WW8_CP nRangeEnd) : - maDateTime( DateTime::EMPTY ), m_nRangeStart(nRangeStart), - m_nRangeEnd(nRangeEnd) + m_nRangeEnd(nRangeEnd), + mpAuthorIDs(new SvtSecurityMapPersonalInfo) { mpRichText = pPostIt->GetTextObject(); if (!mpRichText) msSimpleText = pPostIt->GetText(); - msOwner = pPostIt->GetPar1(); - m_sInitials = pPostIt->GetInitials(); - maDateTime = DateTime(pPostIt->GetDate(), pPostIt->GetTime()); + initPersonalInfo(pPostIt->GetPar1(), pPostIt->GetInitials(), + DateTime(pPostIt->GetDate(), pPostIt->GetTime())); } WW8_Annotation::WW8_Annotation(const SwRedlineData* pRedline) : mpRichText(nullptr), msSimpleText(pRedline->GetComment()), - msOwner(SW_MOD()->GetRedlineAuthor(pRedline->GetAuthor())), - maDateTime(pRedline->GetTimeStamp()), m_nRangeStart(0), - m_nRangeEnd(0) + m_nRangeEnd(0), + mpAuthorIDs(new SvtSecurityMapPersonalInfo) { + initPersonalInfo(SW_MOD()->GetRedlineAuthor(pRedline->GetAuthor()), u""_ustr, + pRedline->GetTimeStamp()); +} + +void WW8_Annotation::initPersonalInfo(const OUString& sAuthor, const OUString& sInitials, + DateTime aDateTime) +{ + bool bRemovePersonalInfo + = SvtSecurityOptions::IsOptionSet(SvtSecurityOptions::EOption::DocWarnRemovePersonalInfo) + && !SvtSecurityOptions::IsOptionSet( + SvtSecurityOptions::EOption::DocWarnKeepNoteAuthorDateInfo); + msOwner = bRemovePersonalInfo ? "Author" + OUString::number(mpAuthorIDs->GetInfoID(sAuthor)) + : sAuthor; + m_sInitials = bRemovePersonalInfo ? "A" + OUString::number(mpAuthorIDs->GetInfoID(sAuthor)) + : sInitials; + maDateTime = bRemovePersonalInfo ? DateTime(DateTime::EMPTY) : aDateTime; } bool WW8_Annotation::HasRange() const diff --git a/sw/source/filter/ww8/wrtww8.cxx b/sw/source/filter/ww8/wrtww8.cxx index 467a7c18949a..a8404aa61396 100644 --- a/sw/source/filter/ww8/wrtww8.cxx +++ b/sw/source/filter/ww8/wrtww8.cxx @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -1680,7 +1681,12 @@ sal_uInt16 WW8Export::AddRedlineAuthor( std::size_t nId ) m_pRedlAuthors.reset(new WW8_WrtRedlineAuthor); m_pRedlAuthors->AddName(u"Unknown"_ustr); } - return m_pRedlAuthors->AddName( SW_MOD()->GetRedlineAuthor( nId ) ); + bool bRemovePersonalInfo + = SvtSecurityOptions::IsOptionSet(SvtSecurityOptions::EOption::DocWarnRemovePersonalInfo) + && !SvtSecurityOptions::IsOptionSet(SvtSecurityOptions::EOption::DocWarnKeepRedlineInfo); + OUString sName(SW_MOD()->GetRedlineAuthor(nId)); + return m_pRedlAuthors->AddName( + bRemovePersonalInfo ? "Author" + OUString::number(mpAuthorIDs->GetInfoID(sName)) : sName); } void WW8Export::WriteAsStringTable(const std::vector& rStrings, @@ -4040,6 +4046,7 @@ WW8Export::WW8Export( SwWW8Writer *pWriter, , m_bDot(bDot) , m_pWriter(pWriter) , m_pAttrOutput(new WW8AttributeOutput(*this)) + , mpAuthorIDs(new SvtSecurityMapPersonalInfo) { } diff --git a/sw/source/filter/ww8/wrtww8.hxx b/sw/source/filter/ww8/wrtww8.hxx index 000ea3580b20..94a7b56dc07b 100644 --- a/sw/source/filter/ww8/wrtww8.hxx +++ b/sw/source/filter/ww8/wrtww8.hxx @@ -27,6 +27,7 @@ #include #include #include +#include #include @@ -1024,6 +1025,8 @@ protected: private: rtl::Reference m_xEscherStg; /// memory leak #i120098#, to hold the reference to unnamed SotStorage obj + /// map authors to remove personal info + std::unique_ptr mpAuthorIDs; public: /// Access to the attribute output class. @@ -1271,13 +1274,16 @@ struct WW8_Annotation OUString msSimpleText; OUString msOwner; OUString m_sInitials; - DateTime maDateTime; + DateTime maDateTime = DateTime(DateTime::EMPTY); WW8_CP m_nRangeStart, m_nRangeEnd; bool m_bIgnoreEmpty = true; + /// map authors to remove personal info + std::unique_ptr mpAuthorIDs; WW8_Annotation(const SwPostItField* pPostIt, WW8_CP nRangeStart, WW8_CP nRangeEnd); explicit WW8_Annotation(const SwRedlineData* pRedline); /// An annotation has a range if start != end or the m_bIgnoreEmpty flag is cleared. bool HasRange() const; + void initPersonalInfo(const OUString& sAuthor, const OUString& sInitials, DateTime aDateTime); }; class WW8_WrPlcAnnotations : public WW8_WrPlcSubDoc // double Plc for Postits diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx index c2377fbb916b..639f43a47a95 100644 --- a/sw/source/filter/ww8/ww8atr.cxx +++ b/sw/source/filter/ww8/ww8atr.cxx @@ -644,7 +644,7 @@ void MSWordExportBase::OutputSectionBreaks( const SfxItemSet *pSet, const SwNode /* #i9301# - No explicit page break, lets see if the style had one and we've moved to a + No explicit page break, let's see if the style had one and we've moved to a new page style because of it, if we have to then we take the opportunity to set the equivalent word section here. We *could* do it for every paragraph that moves onto a new page because of layout, but that would be insane. diff --git a/sw/source/filter/ww8/ww8graf.cxx b/sw/source/filter/ww8/ww8graf.cxx index 97420da84945..71906dea342e 100644 --- a/sw/source/filter/ww8/ww8graf.cxx +++ b/sw/source/filter/ww8/ww8graf.cxx @@ -176,10 +176,10 @@ void wwFrameNamer::SetUniqueGraphName(SwFrameFormat *pFrameFormat, std::u16strin bool SwWW8ImplReader::ReadGrafStart(void* pData, short nDataSiz, WW8_DPHEAD const * pHd, SfxAllItemSet &rSet) { - if (SVBT16ToUInt16(pHd->cb) < sizeof(WW8_DPHEAD) + nDataSiz) + if (sal_uInt16 n = SVBT16ToUInt16(pHd->cb); n < sizeof(WW8_DPHEAD) + nDataSiz) { OSL_ENSURE( false, "+graphic element: too short?" ); - m_pStrm->SeekRel(SVBT16ToUInt16(pHd->cb) - sizeof(WW8_DPHEAD)); + m_pStrm->SeekRel(n - sizeof(WW8_DPHEAD)); return false; } @@ -202,19 +202,19 @@ bool SwWW8ImplReader::ReadGrafStart(void* pData, short nDataSiz, static void SetStdAttr( SfxItemSet& rSet, WW8_DP_LINETYPE& rL, WW8_DP_SHADOW const & rSh ) { - if( SVBT16ToUInt16( rL.lnps ) == 5 ){ // invisible + if( sal_uInt16 n = SVBT16ToUInt16( rL.lnps ); n == 5 ){ // invisible rSet.Put( XLineStyleItem( drawing::LineStyle_NONE ) ); }else{ // visible Color aCol( WW8TransCol( rL.lnpc ) ); // line color rSet.Put( XLineColorItem( OUString(), aCol ) ); - rSet.Put( XLineWidthItem( SVBT16ToUInt16( rL.lnpw ) ) ); + sal_uInt16 nLen = SVBT16ToUInt16( rL.lnpw ); + rSet.Put( XLineWidthItem( nLen ) ); // line thickness - if( SVBT16ToUInt16( rL.lnps ) >= 1 - && SVBT16ToUInt16(rL.lnps ) <= 4 ){ // line style + if( n >= 1 + && n <= 4 ){ // line style rSet.Put( XLineStyleItem( drawing::LineStyle_DASH ) ); - sal_Int16 nLen = SVBT16ToUInt16( rL.lnpw ); XDash aD( css::drawing::DashStyle_RECT, 1, 2 * nLen, 1, 5 * nLen, 5 * nLen ); - switch( SVBT16ToUInt16( rL.lnps ) ){ + switch( n ){ case 1: aD.SetDots( 0 ); // Dash aD.SetDashLen( 6 * nLen ); aD.SetDistance( 4 * nLen ); @@ -322,13 +322,13 @@ rtl::Reference SwWW8ImplReader::ReadLine(WW8_DPHEAD const * pHd, SfxA Point& rP0 = aP[0]; Point& rP1 = aP[1]; - rP0.setX( static_cast(SVBT16ToUInt16( pHd->xa )) + m_nDrawXOfs2 ); - rP0.setY( static_cast(SVBT16ToUInt16( pHd->ya )) + m_nDrawYOfs2 ); + rP0.setX(SVBT16ToInt16(pHd->xa) + m_nDrawXOfs2); + rP0.setY(SVBT16ToInt16(pHd->ya) + m_nDrawYOfs2); rP1 = rP0; - rP0.AdjustX(static_cast(SVBT16ToUInt16( aLine.xaStart )) ); - rP0.AdjustY(static_cast(SVBT16ToUInt16( aLine.yaStart )) ); - rP1.AdjustX(static_cast(SVBT16ToUInt16( aLine.xaEnd )) ); - rP1.AdjustY(static_cast(SVBT16ToUInt16( aLine.yaEnd )) ); + rP0.AdjustX(SVBT16ToInt16(aLine.xaStart)); + rP0.AdjustY(SVBT16ToInt16(aLine.yaStart)); + rP1.AdjustX(SVBT16ToInt16(aLine.xaEnd)); + rP1.AdjustY(SVBT16ToInt16(aLine.yaEnd)); } ::basegfx::B2DPolygon aPolygon; @@ -352,11 +352,10 @@ rtl::Reference SwWW8ImplReader::ReadRect(WW8_DPHEAD const * pHd, SfxA if( !ReadGrafStart( static_cast(&aRect), sizeof( aRect ), pHd, rSet ) ) return nullptr; - Point aP0( static_cast(SVBT16ToUInt16( pHd->xa )) + m_nDrawXOfs2, - static_cast(SVBT16ToUInt16( pHd->ya )) + m_nDrawYOfs2 ); + Point aP0(SVBT16ToInt16(pHd->xa) + m_nDrawXOfs2, SVBT16ToInt16(pHd->ya) + m_nDrawYOfs2); Point aP1( aP0 ); - aP1.AdjustX(static_cast(SVBT16ToUInt16( pHd->dxa )) ); - aP1.AdjustY(static_cast(SVBT16ToUInt16( pHd->dya )) ); + aP1.AdjustX(SVBT16ToInt16(pHd->dxa)); + aP1.AdjustY(SVBT16ToInt16(pHd->dya)); rtl::Reference pObj = new SdrRectObj( *m_pDrawModel, @@ -375,11 +374,10 @@ rtl::Reference SwWW8ImplReader::ReadEllipse(WW8_DPHEAD const * pHd, S if( !ReadGrafStart( static_cast(&aEllipse), sizeof( aEllipse ), pHd, rSet ) ) return nullptr; - Point aP0( static_cast(SVBT16ToUInt16( pHd->xa )) + m_nDrawXOfs2, - static_cast(SVBT16ToUInt16( pHd->ya )) + m_nDrawYOfs2 ); + Point aP0(SVBT16ToInt16(pHd->xa) + m_nDrawXOfs2, SVBT16ToInt16(pHd->ya) + m_nDrawYOfs2); Point aP1( aP0 ); - aP1.AdjustX(static_cast(SVBT16ToUInt16( pHd->dxa )) ); - aP1.AdjustY(static_cast(SVBT16ToUInt16( pHd->dya )) ); + aP1.AdjustX(SVBT16ToInt16(pHd->dxa)); + aP1.AdjustY(SVBT16ToInt16(pHd->dya)); rtl::Reference pObj = new SdrCircObj( *m_pDrawModel, @@ -399,21 +397,20 @@ rtl::Reference SwWW8ImplReader::ReadArc(WW8_DPHEAD const * pHd, SfxAl if( !ReadGrafStart( static_cast(&aArc), sizeof( aArc ), pHd, rSet ) ) return nullptr; - Point aP0( static_cast(SVBT16ToUInt16( pHd->xa )) + m_nDrawXOfs2, - static_cast(SVBT16ToUInt16( pHd->ya )) + m_nDrawYOfs2 ); + Point aP0(SVBT16ToInt16(pHd->xa) + m_nDrawXOfs2, SVBT16ToInt16(pHd->ya) + m_nDrawYOfs2); Point aP1( aP0 ); - aP1.AdjustX(static_cast(SVBT16ToUInt16( pHd->dxa )) * 2 ); - aP1.AdjustY(static_cast(SVBT16ToUInt16( pHd->dya )) * 2 ); + aP1.AdjustX(SVBT16ToInt16(pHd->dxa) * 2); + aP1.AdjustY(SVBT16ToInt16(pHd->dya) * 2); short nA[] = { 2, 3, 1, 0 }; short nW = nA[ ( ( aArc.fLeft & 1 ) << 1 ) + ( aArc.fUp & 1 ) ]; if( !aArc.fLeft ){ - aP0.AdjustY( -static_cast(SVBT16ToUInt16( pHd->dya )) ); - aP1.AdjustY( -static_cast(SVBT16ToUInt16( pHd->dya )) ); + aP0.AdjustY(-SVBT16ToInt16(pHd->dya)); + aP1.AdjustY(-SVBT16ToInt16(pHd->dya)); } if( aArc.fUp ){ - aP0.AdjustX( -static_cast(SVBT16ToUInt16( pHd->dxa )) ); - aP1.AdjustX( -static_cast(SVBT16ToUInt16( pHd->dxa )) ); + aP0.AdjustX(-SVBT16ToInt16(pHd->dxa)); + aP1.AdjustX(-SVBT16ToInt16(pHd->dxa)); } rtl::Reference pObj = new SdrCircObj( @@ -448,10 +445,8 @@ rtl::Reference SwWW8ImplReader::ReadPolyLine(WW8_DPHEAD const * pHd, Point aPt; for (sal_uInt16 i=0; i(SVBT16ToUInt16( pHd->xa )) ); - aPt.setY( SVBT16ToUInt16( xP[( i << 1 ) + 1] ) + m_nDrawYOfs2 - + static_cast(SVBT16ToUInt16( pHd->ya )) ); + aPt.setX(SVBT16ToUInt16(xP[i << 1]) + m_nDrawXOfs2 + SVBT16ToInt16(pHd->xa)); + aPt.setY(SVBT16ToUInt16(xP[(i << 1) + 1]) + m_nDrawYOfs2 + SVBT16ToInt16(pHd->ya)); aP[i] = aPt; } xP.reset(); @@ -1305,11 +1300,10 @@ rtl::Reference SwWW8ImplReader::ReadTextBox(WW8_DPHEAD const * pHd, S if( !ReadGrafStart( static_cast(&aTextB), sizeof( aTextB ), pHd, rSet ) ) return nullptr; - Point aP0( static_cast(SVBT16ToUInt16( pHd->xa )) + m_nDrawXOfs2, - static_cast(SVBT16ToUInt16( pHd->ya )) + m_nDrawYOfs2 ); + Point aP0(SVBT16ToInt16(pHd->xa) + m_nDrawXOfs2, SVBT16ToInt16(pHd->ya) + m_nDrawYOfs2); Point aP1( aP0 ); - aP1.AdjustX(static_cast(SVBT16ToUInt16( pHd->dxa )) ); - aP1.AdjustY(static_cast(SVBT16ToUInt16( pHd->dya )) ); + aP1.AdjustX(SVBT16ToInt16(pHd->dxa)); + aP1.AdjustY(SVBT16ToInt16(pHd->dya)); rtl::Reference pObj = new SdrRectObj( *m_pDrawModel, @@ -1317,8 +1311,7 @@ rtl::Reference SwWW8ImplReader::ReadTextBox(WW8_DPHEAD const * pHd, S tools::Rectangle(aP0, aP1)); pObj->NbcSetSnapRect(tools::Rectangle(aP0, aP1)); - Size aSize( static_cast(SVBT16ToUInt16( pHd->dxa )) , - static_cast(SVBT16ToUInt16( pHd->dya )) ); + Size aSize(SVBT16ToInt16(pHd->dxa), SVBT16ToInt16(pHd->dya)); tools::Long nStartCpFly,nEndCpFly; bool bContainsGraphics; @@ -1369,19 +1362,17 @@ rtl::Reference SwWW8ImplReader::ReadCaptionBox(WW8_DPHEAD const * pHd if( nTyp == 1 && SVBT16ToUInt16( xP[0] ) == SVBT16ToUInt16( xP[2] ) ) nTyp = 0; - Point aP0( static_cast(SVBT16ToUInt16( pHd->xa )) + - static_cast(SVBT16ToUInt16( aCallB.dpheadTxbx.xa )) + m_nDrawXOfs2, - static_cast(SVBT16ToUInt16( pHd->ya )) - + static_cast(SVBT16ToUInt16( aCallB.dpheadTxbx.ya )) + m_nDrawYOfs2 ); + Point aP0(SVBT16ToInt16(pHd->xa) + SVBT16ToInt16(aCallB.dpheadTxbx.xa) + m_nDrawXOfs2, + SVBT16ToInt16(pHd->ya) + SVBT16ToInt16(aCallB.dpheadTxbx.ya) + m_nDrawYOfs2); Point aP1( aP0 ); - aP1.AdjustX(static_cast(SVBT16ToUInt16( aCallB.dpheadTxbx.dxa )) ); - aP1.AdjustY(static_cast(SVBT16ToUInt16( aCallB.dpheadTxbx.dya )) ); - Point aP2( static_cast(SVBT16ToUInt16( pHd->xa )) - + static_cast(SVBT16ToUInt16( aCallB.dpheadPolyLine.xa )) - + m_nDrawXOfs2 + static_cast(SVBT16ToUInt16( xP[0] )), - static_cast(SVBT16ToUInt16( pHd->ya )) - + static_cast(SVBT16ToUInt16( aCallB.dpheadPolyLine.ya )) - + m_nDrawYOfs2 + static_cast(SVBT16ToUInt16( xP[1] )) ); + aP1.AdjustX(SVBT16ToInt16(aCallB.dpheadTxbx.dxa)); + aP1.AdjustY(SVBT16ToInt16(aCallB.dpheadTxbx.dya)); + Point aP2( SVBT16ToInt16( pHd->xa ) + + SVBT16ToInt16( aCallB.dpheadPolyLine.xa ) + + m_nDrawXOfs2 + SVBT16ToInt16( xP[0] ), + SVBT16ToInt16( pHd->ya ) + + SVBT16ToInt16( aCallB.dpheadPolyLine.ya ) + + m_nDrawYOfs2 + SVBT16ToInt16( xP[1] ) ); xP.reset(); rtl::Reference pObj = new SdrCaptionObj( @@ -1390,8 +1381,7 @@ rtl::Reference SwWW8ImplReader::ReadCaptionBox(WW8_DPHEAD const * pHd aP2); pObj->NbcSetSnapRect(tools::Rectangle(aP0, aP1)); - Size aSize( static_cast(SVBT16ToUInt16( aCallB.dpheadTxbx.dxa )), - static_cast(SVBT16ToUInt16( aCallB.dpheadTxbx.dya )) ); + Size aSize(SVBT16ToInt16(aCallB.dpheadTxbx.dxa), SVBT16ToInt16(aCallB.dpheadTxbx.dya)); bool bEraseThisObject; InsertTxbxText(pObj.get(), &aSize, 0, 0, 0, nullptr, false, bEraseThisObject ); @@ -1417,12 +1407,12 @@ rtl::Reference SwWW8ImplReader::ReadGroup(WW8_DPHEAD const * pHd, Sfx nGrouped = (sal_Int16)OSL_SWAPWORD( nGrouped ); #endif - m_nDrawXOfs = m_nDrawXOfs + static_cast(SVBT16ToUInt16( pHd->xa )); - m_nDrawYOfs = m_nDrawYOfs + static_cast(SVBT16ToUInt16( pHd->ya )); + m_nDrawXOfs = m_nDrawXOfs + SVBT16ToInt16(pHd->xa); + m_nDrawYOfs = m_nDrawYOfs + SVBT16ToInt16(pHd->ya); rtl::Reference pObj = new SdrObjGroup(*m_pDrawModel); - short nLeft = static_cast(SVBT16ToUInt16( pHd->cb )) - sizeof( WW8_DPHEAD ); + short nLeft = SVBT16ToInt16(pHd->cb) - sizeof(WW8_DPHEAD); for (int i = 0; i < nGrouped && nLeft >= static_cast(sizeof(WW8_DPHEAD)); ++i) { SfxAllItemSet aSet(m_pDrawModel->GetItemPool()); @@ -1437,8 +1427,8 @@ rtl::Reference SwWW8ImplReader::ReadGroup(WW8_DPHEAD const * pHd, Sfx } } - m_nDrawXOfs = m_nDrawXOfs - static_cast(SVBT16ToUInt16( pHd->xa )); - m_nDrawYOfs = m_nDrawYOfs - static_cast(SVBT16ToUInt16( pHd->ya )); + m_nDrawXOfs = m_nDrawXOfs - SVBT16ToInt16(pHd->xa); + m_nDrawYOfs = m_nDrawYOfs - SVBT16ToInt16(pHd->ya); return pObj; } diff --git a/sw/source/filter/ww8/ww8par2.cxx b/sw/source/filter/ww8/ww8par2.cxx index 6765b4487522..bdaedc02dfa1 100644 --- a/sw/source/filter/ww8/ww8par2.cxx +++ b/sw/source/filter/ww8/ww8par2.cxx @@ -568,7 +568,7 @@ static void SetBaseAnlv(SwNumFormat &rNum, WW8_ANLV const &rAV, sal_uInt8 nSwLev rNum.SetNumAdjust( eAdjA[ rAV.aBits1 & 0x3] ); rNum.SetCharTextDistance( SVBT16ToUInt16( rAV.dxaSpace ) ); - sal_Int16 nIndent = std::abs(static_cast(SVBT16ToUInt16( rAV.dxaIndent ))); + sal_Int16 nIndent = std::abs(SVBT16ToInt16(rAV.dxaIndent)); if( rAV.aBits1 & 0x08 ) //fHang { rNum.SetFirstLineOffset( -nIndent ); @@ -1122,7 +1122,7 @@ void WW8TabBandDesc::ReadDef(bool bVer67, const sal_uInt8* pS, short nLen) const sal_uInt8* pT = &pS[1]; for (int i = 0; i <= nCols; i++, pT+=2) - nCenter[i] = static_cast(SVBT16ToUInt16( pT )); // X-borders + nCenter[i] = SVBT16ToInt16(pT); // X-borders if( nCols != nOldCols ) // different column count { @@ -1346,7 +1346,7 @@ void WW8TabBandDesc::ProcessSprmTDxaCol(const sal_uInt8* pParamsTDxaCol) sal_uInt8 nitcFirst= pParamsTDxaCol[0]; // first col to be changed sal_uInt8 nitcLim = pParamsTDxaCol[1]; // (last col to be changed)+1 - short nDxaCol = static_cast(SVBT16ToUInt16( pParamsTDxaCol + 2 )); + short nDxaCol = SVBT16ToInt16(pParamsTDxaCol + 2); for( int i = nitcFirst; (i < nitcLim) && (i < nWwCols); i++ ) { @@ -1897,10 +1897,10 @@ WW8TabDesc::WW8TabDesc(SwWW8ImplReader* pIoClass, WW8_CP nStartCp) : m_bIsBiDi = SVBT16ToUInt16(pParams) != 0; break; case sprmTDxaGapHalf: - pNewBand->nGapHalf = static_cast(SVBT16ToUInt16( pParams )); + pNewBand->nGapHalf = SVBT16ToInt16(pParams); break; case sprmTDyaRowHeight: - pNewBand->nLineHeight = static_cast(SVBT16ToUInt16( pParams )); + pNewBand->nLineHeight = SVBT16ToInt16(pParams); m_bClaimLineFormat = true; break; case sprmTDefTable: @@ -1925,7 +1925,7 @@ WW8TabDesc::WW8TabDesc(SwWW8ImplReader* pIoClass, WW8_CP nStartCp) : // parameter (meaning the left-most position) and then // shift the whole table to that margin (see below) { - short nDxaNew = static_cast(SVBT16ToUInt16( pParams )); + short nDxaNew = SVBT16ToInt16(pParams); if( nDxaNew < nTabeDxaNew ) nTabeDxaNew = nDxaNew; } diff --git a/sw/source/filter/ww8/ww8par6.cxx b/sw/source/filter/ww8/ww8par6.cxx index 021445724647..e772ed9017d1 100644 --- a/sw/source/filter/ww8/ww8par6.cxx +++ b/sw/source/filter/ww8/ww8par6.cxx @@ -1620,7 +1620,7 @@ static bool SetValSprm( sal_Int16* pVar, WW8PLCFx_Cp_FKP* pPap, sal_uInt16 nId ) { SprmResult aS = pPap->HasSprm(nId); if (aS.pSprm && aS.nRemainingData >= 2) - *pVar = static_cast(SVBT16ToUInt16(aS.pSprm)); + *pVar = SVBT16ToInt16(aS.pSprm); return aS.pSprm != nullptr; } @@ -1628,7 +1628,7 @@ static bool SetValSprm( sal_Int16* pVar, const WW8RStyle* pStyle, sal_uInt16 nId { SprmResult aS = pStyle->HasParaSprm(nId); if (aS.pSprm && aS.nRemainingData >= 2) - *pVar = static_cast(SVBT16ToUInt16(aS.pSprm)); + *pVar = SVBT16ToInt16(aS.pSprm); return aS.pSprm != nullptr; } @@ -3568,7 +3568,7 @@ void SwWW8ImplReader::Read_SubSuperProp( sal_uInt16, const sal_uInt8* pData, sho } // font position in HalfPoints - short nPos = eVersion <= ww::eWW2 ? static_cast< sal_Int8 >( *pData ) : SVBT16ToInt16( pData ); + short nPos = eVersion <= ww::eWW2 ? static_cast(*pData) : SVBT16ToInt16(pData); sal_Int32 nPos2 = nPos * ( 10 * 100 ); // HalfPoints in 100 * tw const SvxFontHeightItem* pF = GetFormatAttr(RES_CHRATR_FONTSIZE); OSL_ENSURE(pF, "Expected to have the fontheight available here"); diff --git a/sw/source/ui/misc/glossary.cxx b/sw/source/ui/misc/glossary.cxx index a1c6e69fa980..985c597efefa 100644 --- a/sw/source/ui/misc/glossary.cxx +++ b/sw/source/ui/misc/glossary.cxx @@ -85,7 +85,7 @@ static OUString lcl_GetValidShortCut( const OUString& rName ) while( rName[nStart-1]==' ' && nStart < nSz ) nStart++; - OUStringBuffer aBuf(OUString::number(rName[nStart-1])); + OUStringBuffer aBuf(rName.subView(nStart-1, 1)); for( ; nStart < nSz; ++nStart ) { diff --git a/sw/source/ui/vba/vbatable.cxx b/sw/source/ui/vba/vbatable.cxx index 0cec73e88975..12825a7fadde 100644 --- a/sw/source/ui/vba/vbatable.cxx +++ b/sw/source/ui/vba/vbatable.cxx @@ -95,17 +95,17 @@ SwVbaTable::Borders( const uno::Any& index ) return uno::Any( xCol ); } -double SAL_CALL +float SAL_CALL SwVbaTable::getBottomPadding() { uno::Reference< beans::XPropertySet > xPropertySet( mxTextTable, uno::UNO_QUERY_THROW); table::TableBorderDistances aTableBorderDistances; xPropertySet->getPropertyValue(u"TableBorderDistances"_ustr) >>= aTableBorderDistances; - return convertMm100ToPoint(aTableBorderDistances.BottomDistance); + return convertMm100ToPoint(aTableBorderDistances.BottomDistance); } void SAL_CALL -SwVbaTable::setBottomPadding( double fValue ) +SwVbaTable::setBottomPadding( float fValue ) { uno::Reference< beans::XPropertySet > xPropertySet( mxTextTable, uno::UNO_QUERY_THROW); table::TableBorderDistances aTableBorderDistances; @@ -114,17 +114,17 @@ SwVbaTable::setBottomPadding( double fValue ) xPropertySet->setPropertyValue( u"TableBorderDistances"_ustr, uno::Any( aTableBorderDistances ) ); } -double SAL_CALL +float SAL_CALL SwVbaTable::getLeftPadding() { uno::Reference< beans::XPropertySet > xPropertySet( mxTextTable, uno::UNO_QUERY_THROW); table::TableBorderDistances aTableBorderDistances; xPropertySet->getPropertyValue(u"TableBorderDistances"_ustr) >>= aTableBorderDistances; - return convertMm100ToPoint(aTableBorderDistances.LeftDistance); + return convertMm100ToPoint(aTableBorderDistances.LeftDistance); } void SAL_CALL -SwVbaTable::setLeftPadding( double fValue ) +SwVbaTable::setLeftPadding( float fValue ) { uno::Reference< beans::XPropertySet > xPropertySet( mxTextTable, uno::UNO_QUERY_THROW); table::TableBorderDistances aTableBorderDistances; @@ -133,17 +133,17 @@ SwVbaTable::setLeftPadding( double fValue ) xPropertySet->setPropertyValue( u"TableBorderDistances"_ustr, uno::Any( aTableBorderDistances ) ); } -double SAL_CALL +float SAL_CALL SwVbaTable::getRightPadding() { uno::Reference< beans::XPropertySet > xPropertySet( mxTextTable, uno::UNO_QUERY_THROW); table::TableBorderDistances aTableBorderDistances; xPropertySet->getPropertyValue(u"TableBorderDistances"_ustr) >>= aTableBorderDistances; - return convertMm100ToPoint(aTableBorderDistances.RightDistance); + return convertMm100ToPoint(aTableBorderDistances.RightDistance); } void SAL_CALL -SwVbaTable::setRightPadding( double fValue ) +SwVbaTable::setRightPadding( float fValue ) { uno::Reference< beans::XPropertySet > xPropertySet( mxTextTable, uno::UNO_QUERY_THROW); table::TableBorderDistances aTableBorderDistances; @@ -152,17 +152,17 @@ SwVbaTable::setRightPadding( double fValue ) xPropertySet->setPropertyValue( u"TableBorderDistances"_ustr, uno::Any( aTableBorderDistances ) ); } -double SAL_CALL +float SAL_CALL SwVbaTable::getTopPadding() { uno::Reference< beans::XPropertySet > xPropertySet( mxTextTable, uno::UNO_QUERY_THROW); table::TableBorderDistances aTableBorderDistances; xPropertySet->getPropertyValue(u"TableBorderDistances"_ustr) >>= aTableBorderDistances; - return convertMm100ToPoint(aTableBorderDistances.TopDistance); + return convertMm100ToPoint(aTableBorderDistances.TopDistance); } void SAL_CALL -SwVbaTable::setTopPadding( double fValue ) +SwVbaTable::setTopPadding( float fValue ) { uno::Reference< beans::XPropertySet > xPropertySet( mxTextTable, uno::UNO_QUERY_THROW); table::TableBorderDistances aTableBorderDistances; diff --git a/sw/source/ui/vba/vbatable.hxx b/sw/source/ui/vba/vbatable.hxx index 2bb802b5c605..0cd2502e07b0 100644 --- a/sw/source/ui/vba/vbatable.hxx +++ b/sw/source/ui/vba/vbatable.hxx @@ -39,14 +39,14 @@ public: virtual void SAL_CALL Delete( ) override; virtual OUString SAL_CALL getName( ) override; virtual css::uno::Any SAL_CALL Borders( const css::uno::Any& aIndex ) override; - virtual double SAL_CALL getBottomPadding( ) override; - virtual void SAL_CALL setBottomPadding( double fValue ) override; - virtual double SAL_CALL getLeftPadding( ) override; - virtual void SAL_CALL setLeftPadding( double fValue ) override; - virtual double SAL_CALL getRightPadding( ) override; - virtual void SAL_CALL setRightPadding( double fValue ) override; - virtual double SAL_CALL getTopPadding( ) override; - virtual void SAL_CALL setTopPadding( double fValue ) override; + virtual float SAL_CALL getBottomPadding( ) override; + virtual void SAL_CALL setBottomPadding( float fValue ) override; + virtual float SAL_CALL getLeftPadding( ) override; + virtual void SAL_CALL setLeftPadding( float fValue ) override; + virtual float SAL_CALL getRightPadding( ) override; + virtual void SAL_CALL setRightPadding( float fValue ) override; + virtual float SAL_CALL getTopPadding( ) override; + virtual void SAL_CALL setTopPadding( float fValue ) override; virtual css::uno::Any SAL_CALL Rows( const css::uno::Any& aIndex ) override; virtual css::uno::Any SAL_CALL Columns( const css::uno::Any& aIndex ) override; diff --git a/sw/source/uibase/inc/conttree.hxx b/sw/source/uibase/inc/conttree.hxx index d58123287e07..a06ef17c1bdf 100644 --- a/sw/source/uibase/inc/conttree.hxx +++ b/sw/source/uibase/inc/conttree.hxx @@ -88,6 +88,8 @@ public: /** TreeListBox for content indicator */ class SwContentTree final : public SfxListener { + friend class SwNavigationPI; + std::unique_ptr m_xTreeView; SwContentTreeDropTarget m_aDropTargetHelper; SwNavigationPI* m_pDialog; @@ -199,6 +201,12 @@ class SwContentTree final : public SfxListener void UpdateLastSelType(); + bool IsDeletable(const weld::TreeIter& rEntry); + bool IsDeletable(const SwContent* pContent); + void DeleteAllContentOfEntryContentType(const weld::TreeIter& rEntry); + + bool IsSelectedEntryCurrentDocCursorPosition(const weld::TreeIter& rEntry); + /** Expand - Remember the state for content types */ DECL_LINK(ExpandHdl, const weld::TreeIter&, bool); /** Collapse - Remember the state for content types. */ @@ -266,7 +274,7 @@ public: const SwWrtShell* GetActiveWrtShell() const {return m_pActiveShell;} SwWrtShell* GetHiddenWrtShell() {return m_pHiddenShell;} - void Select(); + void UpdateContentFunctionsToolbar(); void UpdateTracking(); void SelectOutlinesWithSelection(); diff --git a/sw/source/uibase/inc/navipi.hxx b/sw/source/uibase/inc/navipi.hxx index ff0731621b87..a90cbc667169 100644 --- a/sw/source/uibase/inc/navipi.hxx +++ b/sw/source/uibase/inc/navipi.hxx @@ -51,6 +51,8 @@ class SwNavigationPI final : public PanelLayout ::sfx2::sidebar::ControllerItem m_aPageStats; ::sfx2::sidebar::ControllerItem m_aNavElement; + css::uno::Reference m_xFrame; + std::unique_ptr m_xContent1ToolBox; std::unique_ptr m_xContent2ToolBox; std::unique_ptr m_xContent3ToolBox; @@ -89,6 +91,16 @@ class SwNavigationPI final : public PanelLayout weld::ComboBox* m_pNavigateByComboBox; + std::unique_ptr m_xHeadingsContentFunctionsToolbar; + std::unique_ptr m_xDeleteFunctionToolbar; + std::unordered_map> m_aContentTypeUnoToolbarMap; + std::unordered_map> m_aContentTypeToolbarUnoDispatcherMap; + std::unordered_map> m_aContentUnoToolbarMap; + std::unordered_map> m_aContentToolbarUnoDispatcherMap; + void InitContentFunctionsToolbar(); + void UpdateContentFunctionsToolbar(); + DECL_LINK(ContentFunctionsToolbarSelectHdl, const OUString&, void ); + bool IsZoomedIn() const {return m_bIsZoomedIn;} void ZoomOut(); void ZoomIn(); diff --git a/sw/source/uibase/ribbar/workctrl.cxx b/sw/source/uibase/ribbar/workctrl.cxx index 050c4f7bf840..be2039c3246b 100644 --- a/sw/source/uibase/ribbar/workctrl.cxx +++ b/sw/source/uibase/ribbar/workctrl.cxx @@ -91,6 +91,8 @@ void SwTbxAutoTextCtrl::CreatePopupWindow() for(size_t i = 1; i <= nGroupCount; ++i) { OUString sTitle = pGlossaryList->GetGroupTitle(i - 1); + if (sTitle == "My AutoText") + sTitle = SwResId(STR_MY_AUTOTEXT); const sal_uInt16 nBlockCount = pGlossaryList->GetBlockCount(i -1); auto const [it, _] = titles.insert(sTitle); size_t const menuIndex(::std::distance(titles.begin(), it)); diff --git a/sw/source/uibase/shells/grfsh.cxx b/sw/source/uibase/shells/grfsh.cxx index ca4e48b179d1..d7d53292a80a 100644 --- a/sw/source/uibase/shells/grfsh.cxx +++ b/sw/source/uibase/shells/grfsh.cxx @@ -189,8 +189,7 @@ void SwGrfShell::Execute(SfxRequest &rReq) if( pGraphic ) { Size aSize ( - convertTwipToMm100(rSh.GetAnyCurRect(CurRectType::FlyEmbedded).Width()), - convertTwipToMm100(rSh.GetAnyCurRect(CurRectType::FlyEmbedded).Height())); + convertTwipToMm100(rSh.GetAnyCurRect(CurRectType::FlyEmbedded).SSize())); SfxItemSetFixed aSet( rSh.GetAttrPool() ); rSh.GetCurAttr( aSet ); diff --git a/sw/source/uibase/sidebar/A11yCheckIssuesPanel.cxx b/sw/source/uibase/sidebar/A11yCheckIssuesPanel.cxx index a8de69432188..0dded3d952b4 100644 --- a/sw/source/uibase/sidebar/A11yCheckIssuesPanel.cxx +++ b/sw/source/uibase/sidebar/A11yCheckIssuesPanel.cxx @@ -295,6 +295,7 @@ void A11yCheckIssuesPanel::populateIssues() break; case sfx::AccessibilityIssueID::HYPERLINK_IS_TEXT: case sfx::AccessibilityIssueID::HYPERLINK_SHORT: + case sfx::AccessibilityIssueID::HYPERLINK_NO_NAME: { addEntryForGroup(AccessibilityCheckGroups::Hyperlink, nIndices, pIssue); } diff --git a/sw/source/uibase/sidebar/QuickFindPanel.cxx b/sw/source/uibase/sidebar/QuickFindPanel.cxx index cffca4511ef2..cdf7afa68947 100644 --- a/sw/source/uibase/sidebar/QuickFindPanel.cxx +++ b/sw/source/uibase/sidebar/QuickFindPanel.cxx @@ -12,8 +12,6 @@ #include #include #include -#include -#include #include #include #include @@ -21,8 +19,13 @@ #include #include #include +#include +#include +#include +#include +#include -const int MinimumPanelWidth = 250; +const int CharactersBeforeAndAfter = 40; namespace { @@ -46,27 +49,85 @@ void getAnchorPos(SwPosition& rPos) namespace sw::sidebar { -std::unique_ptr QuickFindPanel::Create(weld::Widget* pParent) +QuickFindPanel::SearchOptionsDialog::SearchOptionsDialog(weld::Window* pParent) + : GenericDialogController(pParent, u"modules/swriter/ui/sidebarquickfindoptionsdialog.ui"_ustr, + u"SearchOptionsDialog"_ustr) + , m_xMatchCaseCheckButton(m_xBuilder->weld_check_button(u"matchcase"_ustr)) + , m_xWholeWordsOnlyCheckButton(m_xBuilder->weld_check_button(u"wholewordsonly"_ustr)) + , m_xSimilarityCheckButton(m_xBuilder->weld_check_button(u"similarity"_ustr)) + , m_xSimilaritySettingsDialogButton(m_xBuilder->weld_button(u"similaritysettingsdialog"_ustr)) { - if (pParent == nullptr) - throw css::lang::IllegalArgumentException( - u"no parent Window given to QuickFindPanel::Create"_ustr, nullptr, 0); - return std::make_unique(pParent); + m_xSimilarityCheckButton->connect_toggled( + LINK(this, SearchOptionsDialog, SimilarityCheckButtonToggledHandler)); + m_xSimilaritySettingsDialogButton->connect_clicked( + LINK(this, SearchOptionsDialog, SimilaritySettingsDialogButtonClickedHandler)); } -QuickFindPanel::QuickFindPanel(weld::Widget* pParent) +short QuickFindPanel::SearchOptionsDialog::executeSubDialog(VclAbstractDialog* dialog) +{ + assert(!m_executingSubDialog); + comphelper::ScopeGuard g([this] { m_executingSubDialog = false; }); + m_executingSubDialog = true; + return dialog->Execute(); +} + +IMPL_LINK_NOARG(QuickFindPanel::SearchOptionsDialog, SimilarityCheckButtonToggledHandler, + weld::Toggleable&, void) +{ + m_xSimilaritySettingsDialogButton->set_sensitive(m_xSimilarityCheckButton->get_active()); +} + +IMPL_LINK_NOARG(QuickFindPanel::SearchOptionsDialog, SimilaritySettingsDialogButtonClickedHandler, + weld::Button&, void) +{ + SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); + ScopedVclPtr pDlg(pFact->CreateSvxSearchSimilarityDialog( + m_xDialog.get(), m_bIsLEVRelaxed, m_nLEVOther, m_nLEVShorter, m_nLEVLonger)); + + if (executeSubDialog(pDlg.get()) == RET_OK) + { + m_bIsLEVRelaxed = pDlg->IsRelaxed(); + m_nLEVOther = pDlg->GetOther(); + m_nLEVShorter = pDlg->GetShorter(); + m_nLEVLonger = pDlg->GetLonger(); + } +} + +std::unique_ptr +QuickFindPanel::Create(weld::Widget* pParent, + const css::uno::Reference& rxFrame) +{ + if (pParent == nullptr) + throw lang::IllegalArgumentException("no parent Window given to QuickFindPanel::Create", + nullptr, 0); + if (!rxFrame.is()) + throw lang::IllegalArgumentException("no XFrame given to QuickFindPanel::Create", nullptr, + 0); + return std::make_unique(pParent, rxFrame); +} + +QuickFindPanel::QuickFindPanel(weld::Widget* pParent, const uno::Reference& rxFrame) : PanelLayout(pParent, u"QuickFindPanel"_ustr, u"modules/swriter/ui/sidebarquickfind.ui"_ustr) , m_xSearchFindEntry(m_xBuilder->weld_entry(u"Find"_ustr)) + , m_xSearchOptionsToolbar(m_xBuilder->weld_toolbar(u"searchoptionstoolbar"_ustr)) + , m_xFindAndReplaceToolbar(m_xBuilder->weld_toolbar(u"findandreplacetoolbar"_ustr)) + , m_xFindAndReplaceToolbarDispatch( + new ToolbarUnoDispatcher(*m_xFindAndReplaceToolbar, *m_xBuilder, rxFrame)) , m_xSearchFindsList(m_xBuilder->weld_tree_view(u"searchfinds"_ustr)) - , m_nRowHeight(m_xSearchFindsList->get_height_rows(4)) + , m_xSearchFindFoundTimesLabel(m_xBuilder->weld_label("numberofsearchfinds")) , m_pWrtShell(::GetActiveWrtShell()) - { - m_xContainer->set_size_request(MinimumPanelWidth, -1); - m_xSearchFindsList->set_size_request(1, m_nRowHeight); + m_nMinimumPanelWidth + = m_xBuilder->weld_widget(u"box"_ustr)->get_preferred_size().getWidth() + (6 * 2) + 6; + m_xContainer->set_size_request(m_nMinimumPanelWidth, 1); + m_xSearchFindEntry->connect_activate( LINK(this, QuickFindPanel, SearchFindEntryActivateHandler)); m_xSearchFindEntry->connect_changed(LINK(this, QuickFindPanel, SearchFindEntryChangedHandler)); + + m_xSearchOptionsToolbar->connect_clicked( + LINK(this, QuickFindPanel, SearchOptionsToolbarClickedHandler)); + m_xSearchFindsList->connect_custom_get_size( LINK(this, QuickFindPanel, SearchFindsListCustomGetSizeHandler)); m_xSearchFindsList->connect_custom_render(LINK(this, QuickFindPanel, SearchFindsListRender)); @@ -75,6 +136,40 @@ QuickFindPanel::QuickFindPanel(weld::Widget* pParent) LINK(this, QuickFindPanel, SearchFindsListSelectionChangedHandler)); m_xSearchFindsList->connect_row_activated( LINK(this, QuickFindPanel, SearchFindsListRowActivatedHandler)); + m_xSearchFindsList->connect_mouse_press( + LINK(this, QuickFindPanel, SearchFindsListMousePressHandler)); +} + +IMPL_LINK_NOARG(QuickFindPanel, SearchOptionsToolbarClickedHandler, const OUString&, void) +{ + SearchOptionsDialog aDlg(GetFrameWeld()); + + aDlg.m_xMatchCaseCheckButton->set_active(m_bMatchCase); + aDlg.m_xWholeWordsOnlyCheckButton->set_active(m_bWholeWordsOnly); + aDlg.m_xSimilarityCheckButton->set_active(m_bSimilarity); + aDlg.m_xSimilaritySettingsDialogButton->set_sensitive(m_bSimilarity); + if (m_bSimilarity) + { + aDlg.m_bIsLEVRelaxed = m_bIsLEVRelaxed; + aDlg.m_nLEVOther = m_nLEVOther; + aDlg.m_nLEVShorter = m_nLEVShorter; + aDlg.m_nLEVLonger = m_nLEVLonger; + } + + if (aDlg.run() == RET_OK) + { + m_bMatchCase = aDlg.m_xMatchCaseCheckButton->get_active(); + m_bWholeWordsOnly = aDlg.m_xWholeWordsOnlyCheckButton->get_active(); + m_bSimilarity = aDlg.m_xSimilarityCheckButton->get_active(); + if (m_bSimilarity) + { + m_bIsLEVRelaxed = aDlg.m_bIsLEVRelaxed; + m_nLEVOther = aDlg.m_nLEVOther; + m_nLEVShorter = aDlg.m_nLEVShorter; + m_nLEVLonger = aDlg.m_nLEVLonger; + } + FillSearchFindsList(); + } } QuickFindPanel::~QuickFindPanel() @@ -83,16 +178,78 @@ QuickFindPanel::~QuickFindPanel() m_xSearchFindsList.reset(); } +IMPL_LINK_NOARG(QuickFindPanel, SearchFindEntryChangedHandler, weld::Entry&, void) +{ + m_xSearchFindEntry->set_message_type(weld::EntryMessageType::Normal); + m_xSearchFindsList->clear(); + m_xSearchFindFoundTimesLabel->set_label(OUString()); +} + IMPL_LINK_NOARG(QuickFindPanel, SearchFindEntryActivateHandler, weld::Entry&, bool) { FillSearchFindsList(); return true; } -IMPL_LINK_NOARG(QuickFindPanel, SearchFindsListCustomGetSizeHandler, weld::TreeView::get_size_args, - Size) +IMPL_LINK(QuickFindPanel, SearchFindsListMousePressHandler, const MouseEvent&, rMEvt, bool) { - return Size(1, m_nRowHeight); + if (std::unique_ptr xEntry(m_xSearchFindsList->make_iterator()); + m_xSearchFindsList->get_dest_row_at_pos(rMEvt.GetPosPixel(), xEntry.get(), false, false)) + { + return m_xSearchFindsList->get_id(*xEntry)[0] == '-'; + } + return false; +} + +IMPL_LINK(QuickFindPanel, SearchFindsListCustomGetSizeHandler, weld::TreeView::get_size_args, + aPayload, Size) +{ + vcl::RenderContext& rRenderContext = std::get<0>(aPayload); + const OUString& rId = std::get<1>(aPayload); + + const bool bPageEntry = rId[0] == '-'; + + OUString aEntry(rId); + if (!bPageEntry) + { + int nIndex = m_xSearchFindsList->find_id(rId); + aEntry = m_xSearchFindsList->get_text(nIndex); + } + + // To not have top and bottom clipping when the sidebar width is made smaller by the user + // calculate the text rectangle using the minimum width the rectangle can become. + int x, y, width, height; + m_xSearchFindsList->get_extents_relative_to(*m_xContainer, x, y, width, height); + + const int leftTextMargin = 6; + const int rightTextMargin = 6 + 3; + tools::Long nScrollBarThickness + = Application::GetSettings().GetStyleSettings().GetScrollBarSize(); + + tools::Rectangle aInRect(Point(), Size(m_nMinimumPanelWidth - (x * 2) - leftTextMargin + - nScrollBarThickness - rightTextMargin, + 1)); + + tools::Rectangle aRect; + if (!bPageEntry) + { + aRect = rRenderContext.GetTextRect(aInRect, aEntry, + DrawTextFlags::VCenter | DrawTextFlags::MultiLine + | DrawTextFlags::WordBreak); + } + else + { + aRect = rRenderContext.GetTextRect(aInRect, aEntry, + DrawTextFlags::Center | DrawTextFlags::VCenter); + } + + if (!bPageEntry) + { + aRect.AdjustTop(-3); + aRect.AdjustBottom(+3); + } + + return Size(1, aRect.GetHeight()); } IMPL_LINK(QuickFindPanel, SearchFindsListRender, weld::TreeView::render_args, aPayload, void) @@ -100,19 +257,85 @@ IMPL_LINK(QuickFindPanel, SearchFindsListRender, weld::TreeView::render_args, aP vcl::RenderContext& rRenderContext = std::get<0>(aPayload); const ::tools::Rectangle& rRect = std::get<1>(aPayload); const OUString& rId = std::get<3>(aPayload); - int nIndex = m_xSearchFindsList->find_id(rId); - OUString aEntry(m_xSearchFindsList->get_text(nIndex)); - DrawTextFlags const nTextStyle = DrawTextFlags::Left | DrawTextFlags::VCenter - | DrawTextFlags::MultiLine | DrawTextFlags::WordBreak; - tools::Rectangle aRect( - rRect.TopLeft(), - Size(rRenderContext.GetOutputSize().Width() - rRect.Left(), rRect.GetHeight())); - rRenderContext.DrawText(aRect, aEntry, nTextStyle); + + const bool bPageEntry = rId[0] == '-'; + + OUString aEntry(rId); + + if (!bPageEntry) + { + int nIndex = m_xSearchFindsList->find_id(rId); + aEntry = m_xSearchFindsList->get_text(nIndex); + } + + if (!bPageEntry) + { + const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings(); + rRenderContext.SetFillColor(rStyleSettings.GetDialogColor()); + rRenderContext.SetTextColor(rStyleSettings.GetDialogTextColor()); + } + + tools::Rectangle aRect(rRect.TopLeft(), + Size(rRenderContext.GetOutputSize().Width(), rRect.GetHeight())); + + if (!bPageEntry) + { + aRect.AdjustTop(+3); + aRect.AdjustBottom(-3); + } + + // adjust for scrollbar when not using gtk + if (m_pWrtShell->GetWin()->GetSystemData()->toolkit != SystemEnvData::Toolkit::Gtk) + { + tools::Long nScrollBarThickness + = Application::GetSettings().GetStyleSettings().GetScrollBarSize(); + aRect.AdjustRight(-nScrollBarThickness); + } + + if (!bPageEntry) + { + aRect.AdjustRight(-3); + rRenderContext.DrawRect(aRect, 6, 6); + + aRect.AdjustLeft(+6); + rRenderContext.DrawText(aRect, aEntry, + DrawTextFlags::VCenter | DrawTextFlags::MultiLine + | DrawTextFlags::WordBreak); + } + else + { + aEntry = aEntry.copy(1); // remove '-' + tools::Long aTextWidth = rRenderContext.GetTextWidth(aEntry); + tools::Long aTextHeight = rRenderContext.GetTextHeight(); + + rRenderContext.Push(); + rRenderContext.SetLineColor(COL_BLACK); + rRenderContext.DrawLine( + aRect.LeftCenter(), + Point(aRect.Center().AdjustX(-(aTextWidth / 2)) - 4, aRect.Center().getY())); + rRenderContext.DrawText(Point(aRect.Center().AdjustX(-(aTextWidth / 2)), + aRect.Center().AdjustY(-(aTextHeight / 2) - 1)), + aEntry); + rRenderContext.DrawLine( + Point(aRect.Center().AdjustX(aTextWidth / 2) + 5, aRect.Center().getY()), + aRect.RightCenter()); + rRenderContext.Pop(); + } } IMPL_LINK_NOARG(QuickFindPanel, SearchFindsListSelectionChangedHandler, weld::TreeView&, void) { - std::unique_ptr& rxPaM = m_vPaMs[m_xSearchFindsList->get_cursor_index()]; + std::unique_ptr xEntry(m_xSearchFindsList->make_iterator()); + if (!m_xSearchFindsList->get_cursor(xEntry.get())) + return; + + OUString sId = m_xSearchFindsList->get_id(*xEntry); + + // check for page number entry + if (sId[0] == '-') + return; + + std::unique_ptr& rxPaM = m_vPaMs[sId.toInt64()]; m_pWrtShell->StartAction(); bool bFound = false; @@ -144,157 +367,213 @@ IMPL_LINK_NOARG(QuickFindPanel, SearchFindsListSelectionChangedHandler, weld::Tr IMPL_LINK_NOARG(QuickFindPanel, SearchFindsListRowActivatedHandler, weld::TreeView&, bool) { + std::unique_ptr xEntry(m_xSearchFindsList->make_iterator()); + if (!m_xSearchFindsList->get_cursor(xEntry.get())) + return false; + + // check for page number entry + if (m_xSearchFindsList->get_id(*xEntry)[0] == '-') + return false; + m_pWrtShell->GetView().GetEditWin().GrabFocus(); return true; } -IMPL_LINK_NOARG(QuickFindPanel, SearchFindEntryChangedHandler, weld::Entry&, void) -{ - m_xSearchFindsList->clear(); -} - void QuickFindPanel::FillSearchFindsList() { m_vPaMs.clear(); m_xSearchFindsList->clear(); - const OUString& sText = m_xSearchFindEntry->get_text(); - css::uno::Sequence aPropertyValues(comphelper::InitPropertySequence({ - { "SearchItem.SearchString", css::uno::Any(sText) }, - { "SearchItem.Backward", css::uno::Any(false) }, - { "SearchItem.Command", css::uno::Any(sal_uInt16(SvxSearchCmd::FIND_ALL)) }, - })); + m_xSearchFindFoundTimesLabel->set_label(OUString()); - comphelper::dispatchCommand(u".uno:ExecuteSearch"_ustr, aPropertyValues); - - if (!m_pWrtShell->HasMark()) + const OUString& rsFindEntry = m_xSearchFindEntry->get_text(); + if (rsFindEntry.isEmpty()) return; - for (SwPaM& rPaM : m_pWrtShell->GetCursor()->GetRingContainer()) + SwWait aWait(*m_pWrtShell->GetDoc()->GetDocShell(), true); + + m_pWrtShell->AssureStdMode(); + + i18nutil::SearchOptions2 aSearchOptions; + aSearchOptions.Locale = GetAppLanguageTag().getLocale(); + aSearchOptions.searchString = rsFindEntry; + aSearchOptions.replaceString.clear(); + if (m_bWholeWordsOnly) + aSearchOptions.searchFlag |= css::util::SearchFlags::NORM_WORD_ONLY; + if (m_bSimilarity) { - SwPosition* pMarkPosition = rPaM.GetMark(); - SwPosition* pPointPosition = rPaM.GetPoint(); - std::unique_ptr xPaM(std::make_unique(*pMarkPosition, *pPointPosition)); - m_vPaMs.push_back(std::move(xPaM)); + aSearchOptions.AlgorithmType2 = css::util::SearchAlgorithms2::APPROXIMATE; + if (m_bIsLEVRelaxed) + aSearchOptions.searchFlag |= css::util::SearchFlags::LEV_RELAXED; + aSearchOptions.changedChars = m_nLEVOther; + aSearchOptions.insertedChars = m_nLEVShorter; + aSearchOptions.deletedChars = m_nLEVLonger; + } + else + aSearchOptions.AlgorithmType2 = css::util::SearchAlgorithms2::ABSOLUTE; + TransliterationFlags nTransliterationFlags = TransliterationFlags::IGNORE_WIDTH; + if (!m_bMatchCase) + nTransliterationFlags |= TransliterationFlags::IGNORE_CASE; + aSearchOptions.transliterateFlags = nTransliterationFlags; + + m_pWrtShell->SttSelect(); + /*sal_Int32 nFound =*/m_pWrtShell->SearchPattern( + aSearchOptions, false, SwDocPositions::Start, SwDocPositions::End, + FindRanges::InBody | FindRanges::InSelAll, false); + m_pWrtShell->EndSelect(); + + if (m_pWrtShell->HasMark()) + { + for (SwPaM& rPaM : m_pWrtShell->GetCursor()->GetRingContainer()) + { + SwPosition* pMarkPosition = rPaM.GetMark(); + SwPosition* pPointPosition = rPaM.GetPoint(); + std::unique_ptr xPaM(std::make_unique(*pMarkPosition, *pPointPosition)); + m_vPaMs.push_back(std::move(xPaM)); + } + + // tdf#160538 sort finds in frames and footnotes in the order they occur in the document + const SwNodeOffset nEndOfInsertsIndex + = m_pWrtShell->GetNodes().GetEndOfInserts().GetIndex(); + const SwNodeOffset nEndOfExtrasIndex = m_pWrtShell->GetNodes().GetEndOfExtras().GetIndex(); + std::stable_sort(m_vPaMs.begin(), m_vPaMs.end(), + [&nEndOfInsertsIndex, &nEndOfExtrasIndex, + this](const std::unique_ptr& a, const std::unique_ptr& b) { + SwPosition aPos(*a->Start()); + SwPosition bPos(*b->Start()); + // use page number for footnotes and endnotes + if (aPos.GetNodeIndex() >= nEndOfInsertsIndex + && bPos.GetNodeIndex() < nEndOfInsertsIndex) + return b->GetPageNum() >= a->GetPageNum(); + // use anchor position for finds that are located in flys + if (nEndOfExtrasIndex >= aPos.GetNodeIndex()) + getAnchorPos(aPos); + if (nEndOfExtrasIndex >= bPos.GetNodeIndex()) + getAnchorPos(bPos); + if (aPos == bPos) + { + // probably in same or nested fly frame + // sort using layout position + SwRect aCharRect, bCharRect; + if (SwContentFrame* pFrame + = a->GetMarkContentNode()->GetTextNode()->getLayoutFrame( + m_pWrtShell->GetLayout())) + { + pFrame->GetCharRect(aCharRect, *a->GetMark()); + } + if (SwContentFrame* pFrame + = b->GetMarkContentNode()->GetTextNode()->getLayoutFrame( + m_pWrtShell->GetLayout())) + { + pFrame->GetCharRect(bCharRect, *b->GetMark()); + } + return aCharRect.Top() < bCharRect.Top(); + } + return aPos < bPos; + }); + + // fill list + for (sal_uInt16 nPage = 0, i = 0; std::unique_ptr & xPaM : m_vPaMs) + { + SwPosition* pMarkPosition = xPaM->GetMark(); + SwPosition* pPointPosition = xPaM->GetPoint(); + + const SwContentNode* pContentNode = pMarkPosition->GetContentNode(); + const SwTextNode* pTextNode = pContentNode->GetTextNode(); + const OUString& sNodeText = pTextNode->GetText(); + + auto nMarkIndex = pMarkPosition->GetContentIndex(); + auto nPointIndex = pPointPosition->GetContentIndex(); + + // determine the text node text subview start index for the list entry text + auto nStartIndex = nMarkIndex - CharactersBeforeAndAfter; + if (nStartIndex < 0) + { + nStartIndex = 0; + } + else + { + // tdf#160539 format search finds results also to word boundaries + sal_Unicode ch; + do + { + ch = sNodeText[nStartIndex]; + } while (++nStartIndex < nMarkIndex && ch != ' ' && ch != '\t'); + if (nStartIndex < nMarkIndex) + { + // move past neighboring space and tab characters + ch = sNodeText[nStartIndex]; + while (nStartIndex < nMarkIndex && (ch == ' ' || ch == '\t')) + ch = sNodeText[++nStartIndex]; + } + if (nStartIndex == nMarkIndex) // no white space found + nStartIndex = nMarkIndex - CharactersBeforeAndAfter; + } + + // determine the text node text subview end index for the list entry text + auto nEndIndex = nPointIndex + CharactersBeforeAndAfter; + if (nEndIndex >= sNodeText.getLength()) + { + nEndIndex = sNodeText.getLength() - 1; + } + else + { + // tdf#160539 format search finds results also to word boundaries + sal_Unicode ch; + do + { + ch = sNodeText[nEndIndex]; + } while (--nEndIndex > nPointIndex && ch != ' ' && ch != '\t'); + if (nEndIndex > nPointIndex) + { + // move past neighboring space and tab characters + ch = sNodeText[nEndIndex]; + while (nEndIndex > nPointIndex && (ch == ' ' || ch == '\t')) + ch = sNodeText[--nEndIndex]; + } + if (nEndIndex == nPointIndex) // no white space found + { + nEndIndex = nPointIndex + CharactersBeforeAndAfter; + if (nEndIndex >= sNodeText.getLength()) + nEndIndex = sNodeText.getLength() - 1; + } + } + + // tdf#161291 indicate page of search finds + if (xPaM->GetPageNum() != nPage) + { + nPage = xPaM->GetPageNum(); + OUString sPageEntry(u"-"_ustr + SwResId(ST_PGE) + u" "_ustr + + OUString::number(nPage)); + m_xSearchFindsList->append(sPageEntry, sPageEntry); + } + + auto nCount = nMarkIndex - nStartIndex; + OUString sTextBeforeFind = OUString::Concat(sNodeText.subView(nStartIndex, nCount)); + auto nCount1 = nPointIndex - nMarkIndex; + OUString sFind = OUString::Concat(sNodeText.subView(nMarkIndex, nCount1)); + auto nCount2 = nEndIndex - nPointIndex + 1; + OUString sTextAfterFind = OUString::Concat(sNodeText.subView(nPointIndex, nCount2)); + OUString sStr = sTextBeforeFind + "[" + sFind + "]" + sTextAfterFind; + + OUString sId = OUString::number(i++); + m_xSearchFindsList->append(sId, sStr); + } } - // tdf#160538 sort finds in frames and footnotes in the order they occur in the document - const SwNodeOffset nEndOfInsertsIndex = m_pWrtShell->GetNodes().GetEndOfInserts().GetIndex(); - const SwNodeOffset nEndOfExtrasIndex = m_pWrtShell->GetNodes().GetEndOfExtras().GetIndex(); - std::stable_sort( - m_vPaMs.begin(), m_vPaMs.end(), - [&nEndOfInsertsIndex, &nEndOfExtrasIndex, this](const std::unique_ptr& a, - const std::unique_ptr& b) { - SwPosition aPos(*a->Start()); - SwPosition bPos(*b->Start()); - // use page number for footnotes and endnotes - if (aPos.GetNodeIndex() >= nEndOfInsertsIndex - && bPos.GetNodeIndex() < nEndOfInsertsIndex) - return b->GetPageNum() >= a->GetPageNum(); - // use anchor position for finds that are located in flys - if (nEndOfExtrasIndex >= aPos.GetNodeIndex()) - getAnchorPos(aPos); - if (nEndOfExtrasIndex >= bPos.GetNodeIndex()) - getAnchorPos(bPos); - if (aPos == bPos) - { - // probably in same or nested fly frame - // sort using layout position - SwRect aCharRect, bCharRect; - if (SwContentFrame* pFrame = a->GetMarkContentNode()->GetTextNode()->getLayoutFrame( - m_pWrtShell->GetLayout())) - { - pFrame->GetCharRect(aCharRect, *a->GetMark()); - } - if (SwContentFrame* pFrame = b->GetMarkContentNode()->GetTextNode()->getLayoutFrame( - m_pWrtShell->GetLayout())) - { - pFrame->GetCharRect(bCharRect, *b->GetMark()); - } - return aCharRect.Top() < bCharRect.Top(); - } - return aPos < bPos; - }); + // Any finds? + auto nSearchFindFoundTimes = m_vPaMs.size(); - // fill list - for (int i = 0; std::unique_ptr & xPaM : m_vPaMs) - { - SwPosition* pMarkPosition = xPaM->GetMark(); - SwPosition* pPointPosition = xPaM->GetPoint(); + // set the search term entry background + m_xSearchFindEntry->set_message_type(nSearchFindFoundTimes ? weld::EntryMessageType::Normal + : weld::EntryMessageType::Error); + // make the search finds list focusable or not + m_xSearchFindsList->set_sensitive(bool(nSearchFindFoundTimes)); - const SwContentNode* pContentNode = pMarkPosition->GetContentNode(); - const SwTextNode* pTextNode = pContentNode->GetTextNode(); - const OUString& sNodeText = pTextNode->GetText(); - - auto nMarkIndex = pMarkPosition->GetContentIndex(); - auto nPointIndex = pPointPosition->GetContentIndex(); - - // determine the text node text subview start index for the list entry text - auto nStartIndex = nMarkIndex - 50; - if (nStartIndex < 0) - { - nStartIndex = 0; - } - else - { - // tdf#160539 format search finds results also to word boundaries - sal_Unicode ch; - do - { - ch = sNodeText[nStartIndex]; - } while (++nStartIndex < nMarkIndex && ch != ' ' && ch != '\t'); - if (nStartIndex < nMarkIndex) - { - // move past neighboring space and tab characters - ch = sNodeText[nStartIndex]; - while (nStartIndex < nMarkIndex && (ch == ' ' || ch == '\t')) - ch = sNodeText[++nStartIndex]; - } - if (nStartIndex == nMarkIndex) // no white space found - nStartIndex = nMarkIndex - 50; - } - - // determine the text node text subview end index for the list entry text - auto nEndIndex = nPointIndex + 50; - if (nEndIndex >= sNodeText.getLength()) - { - nEndIndex = sNodeText.getLength() - 1; - } - else - { - // tdf#160539 format search finds results also to word boundaries - sal_Unicode ch; - do - { - ch = sNodeText[nEndIndex]; - } while (--nEndIndex > nPointIndex && ch != ' ' && ch != '\t'); - if (nEndIndex > nPointIndex) - { - // move past neighboring space and tab characters - ch = sNodeText[nEndIndex]; - while (nEndIndex > nPointIndex && (ch == ' ' || ch == '\t')) - ch = sNodeText[--nEndIndex]; - } - if (nEndIndex == nPointIndex) // no white space found - { - nEndIndex = nPointIndex + 50; - if (nEndIndex >= sNodeText.getLength()) - nEndIndex = sNodeText.getLength() - 1; - } - } - - auto nCount = nMarkIndex - nStartIndex; - OUString sTextBeforeFind = OUString::Concat(sNodeText.subView(nStartIndex, nCount)); - auto nCount1 = nPointIndex - nMarkIndex; - OUString sFind = OUString::Concat(sNodeText.subView(nMarkIndex, nCount1)); - auto nCount2 = nEndIndex - nPointIndex + 1; - OUString sTextAfterFind = OUString::Concat(sNodeText.subView(nPointIndex, nCount2)); - OUString sStr = sTextBeforeFind + "[" + sFind + "]" + sTextAfterFind; - - OUString sId = OUString::number(i++); - m_xSearchFindsList->append(sId, sStr); - } + // set the search term found label number of times found + OUString sText(SwResId(STR_SEARCH_KEY_FOUND_TIMES, nSearchFindFoundTimes)); + sText = sText.replaceFirst("%1", OUString::number(nSearchFindFoundTimes)); + m_xSearchFindFoundTimesLabel->set_label(sText); } } - // end of namespace ::sw::sidebar /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/uibase/sidebar/QuickFindPanel.hxx b/sw/source/uibase/sidebar/QuickFindPanel.hxx index af95bd18fb44..10d3664832cb 100644 --- a/sw/source/uibase/sidebar/QuickFindPanel.hxx +++ b/sw/source/uibase/sidebar/QuickFindPanel.hxx @@ -10,32 +10,77 @@ #pragma once #include +#include #include +#include namespace sw::sidebar { class QuickFindPanel : public PanelLayout { -public: - static std::unique_ptr Create(weld::Widget* pParent); + class SearchOptionsDialog final : public weld::GenericDialogController + { + friend class QuickFindPanel; - QuickFindPanel(weld::Widget* pParent); + std::unique_ptr m_xMatchCaseCheckButton; + std::unique_ptr m_xWholeWordsOnlyCheckButton; + std::unique_ptr m_xSimilarityCheckButton; + std::unique_ptr m_xSimilaritySettingsDialogButton; + + DECL_LINK(SimilarityCheckButtonToggledHandler, weld::Toggleable&, void); + DECL_LINK(SimilaritySettingsDialogButtonClickedHandler, weld::Button&, void); + + short executeSubDialog(VclAbstractDialog* pVclAbstractDialog); + + bool m_executingSubDialog = false; + + bool m_bIsLEVRelaxed = true; + sal_uInt16 m_nLEVOther = 2; + sal_uInt16 m_nLEVShorter = 2; + sal_uInt16 m_nLEVLonger = 2; + + public: + SearchOptionsDialog(weld::Window* pParent); + }; + +public: + static std::unique_ptr Create(weld::Widget* pParent, + const uno::Reference& rxFrame); + + QuickFindPanel(weld::Widget* pParent, const uno::Reference& rxFrame); virtual ~QuickFindPanel() override; private: - std::unique_ptr m_xSearchFindEntry; - std::unique_ptr m_xSearchFindsList; std::vector> m_vPaMs; - int m_nRowHeight; + + std::unique_ptr m_xSearchFindEntry; + std::unique_ptr m_xSearchOptionsToolbar; + std::unique_ptr m_xFindAndReplaceToolbar; + std::unique_ptr m_xFindAndReplaceToolbarDispatch; + std::unique_ptr m_xSearchFindsList; + std::unique_ptr m_xSearchFindFoundTimesLabel; SwWrtShell* m_pWrtShell; + int m_nMinimumPanelWidth; + + bool m_bMatchCase = false; + bool m_bWholeWordsOnly = false; + bool m_bSimilarity = false; + bool m_bIsLEVRelaxed = true; + sal_uInt16 m_nLEVOther = 2; + sal_uInt16 m_nLEVShorter = 2; + sal_uInt16 m_nLEVLonger = 2; + DECL_LINK(SearchFindEntryActivateHandler, weld::Entry&, bool); + DECL_LINK(SearchFindEntryChangedHandler, weld::Entry&, void); DECL_LINK(SearchFindsListCustomGetSizeHandler, weld::TreeView::get_size_args, Size); DECL_LINK(SearchFindsListRender, weld::TreeView::render_args, void); DECL_LINK(SearchFindsListSelectionChangedHandler, weld::TreeView&, void); - DECL_LINK(SearchFindEntryChangedHandler, weld::Entry&, void); DECL_LINK(SearchFindsListRowActivatedHandler, weld::TreeView&, bool); + DECL_LINK(SearchFindsListMousePressHandler, const MouseEvent&, bool); + DECL_LINK(SearchOptionsToolbarClickedHandler, const OUString&, void); + void FillSearchFindsList(); }; } diff --git a/sw/source/uibase/sidebar/SwPanelFactory.cxx b/sw/source/uibase/sidebar/SwPanelFactory.cxx index ee378d8e6461..4e5cd83d4116 100644 --- a/sw/source/uibase/sidebar/SwPanelFactory.cxx +++ b/sw/source/uibase/sidebar/SwPanelFactory.cxx @@ -206,7 +206,8 @@ Reference SAL_CALL SwPanelFactory::createUIElement ( } else if (rsResourceURL.endsWith("/QuickFindPanel")) { - std::unique_ptr xPanel = sw::sidebar::QuickFindPanel::Create(pParent); + std::unique_ptr xPanel + = sw::sidebar::QuickFindPanel::Create(pParent, xFrame); xElement = sfx2::sidebar::SidebarPanelBase::Create(rsResourceURL, xFrame, std::move(xPanel), ui::LayoutSize(-1, -1, -1)); } diff --git a/sw/source/uibase/uiview/viewsrch.cxx b/sw/source/uibase/uiview/viewsrch.cxx index d005899f8229..c03492adfc30 100644 --- a/sw/source/uibase/uiview/viewsrch.cxx +++ b/sw/source/uibase/uiview/viewsrch.cxx @@ -232,6 +232,18 @@ void SwView::ExecSearch(SfxRequest& rReq) s_pSrchItem = pArgs->Get(SID_SEARCH_ITEM).Clone(); } } + + // tdf#115665 Format in the CTRL+H search affects the CTRL+F search + if (pArgs) + { + if (const SfxBoolItem* pUseAttrItemListItem + = pArgs->GetItemIfSet(SID_SEARCH_USE_ATTR_ITEM_LIST, false)) + { + if (!pUseAttrItemListItem->GetValue()) + s_xSearchList.reset(); + } + } + SvxSearchCmd eCommand = s_pSrchItem->GetCommand(); switch (eCommand) { @@ -278,7 +290,7 @@ void SwView::ExecSearch(SfxRequest& rReq) lcl_emitSearchResultCallbacks(s_pSrchItem, m_pWrtShell.get(), /* bHighlightAll = */ true); if (!bQuiet) { - OUString sText(SwResId(STR_SEARCH_KEY_FOUND_TIMES)); + OUString sText(SwResId(STR_SEARCH_KEY_FOUND_TIMES, nFound)); sText = sText.replaceFirst("%1", OUString::number(nFound)); SvxSearchDialogWrapper::SetSearchLabel(sText); } diff --git a/sw/source/uibase/uiview/viewtab.cxx b/sw/source/uibase/uiview/viewtab.cxx index 24d5585137fa..a454b7fd87a6 100644 --- a/sw/source/uibase/uiview/viewtab.cxx +++ b/sw/source/uibase/uiview/viewtab.cxx @@ -1136,7 +1136,10 @@ void SwView::ExecTabWin( SfxRequest const & rReq ) { auto & rEntry = aTabCols.GetEntry(nIndex); tools::Long nNewPosition = rEntry.nPos + nOffset; - nNewPosition = std::clamp(nNewPosition, rEntry.nMin, rEntry.nMax - constDistanceOffset); + tools::Long nMax = rEntry.nMax - constDistanceOffset; + if (nMax < rEntry.nMin) + nMax = rEntry.nMin; + nNewPosition = std::clamp(nNewPosition, rEntry.nMin, nMax); rEntry.nPos = nNewPosition; } diff --git a/sw/source/uibase/utlui/content.cxx b/sw/source/uibase/utlui/content.cxx index 5c2b934997bd..b3e35752dde6 100644 --- a/sw/source/uibase/utlui/content.cxx +++ b/sw/source/uibase/utlui/content.cxx @@ -1833,9 +1833,7 @@ IMPL_LINK(SwContentTree, CommandHdl, const CommandEvent&, rCEvt, bool) const bool bEditable = !bReadonly && pType->IsEditable() && ((bVisible && !bProtected) || ContentTypeId::REGION == nContentType); - const bool bDeletable = !bReadonly && pType->IsDeletable() - && ((bVisible && !bProtected && !bProtectBM) - || ContentTypeId::REGION == nContentType); + const bool bDeletable = pType->IsDeletable() && IsDeletable(*xEntry); const bool bRenamable = !bReadonly && (pType->IsRenamable() @@ -1849,9 +1847,6 @@ IMPL_LINK(SwContentTree, CommandHdl, const CommandEvent&, rCEvt, bool) case ContentTypeId::OUTLINE: bRemoveDeleteChapterEntry = false; break; - case ContentTypeId::TABLE: - bRemoveDeleteTableEntry = false; - break; case ContentTypeId::FRAME: bRemoveDeleteFrameEntry = false; break; @@ -1933,11 +1928,13 @@ IMPL_LINK(SwContentTree, CommandHdl, const CommandEvent&, rCEvt, bool) bRemoveSelectEntry = false; bRemoveEditEntry = false; bRemoveUnprotectEntry = false; + bRemoveDeleteTableEntry = false; bool bFull = false; OUString sTableName = weld::fromId(m_xTreeView->get_id(*xEntry))->GetName(); bool bProt = m_pActiveShell->HasTableAnyProtection( &sTableName, &bFull ); xPop->set_sensitive(OUString::number(403), !bFull); xPop->set_sensitive(OUString::number(404), bProt); + xPop->set_sensitive(u"deletetable"_ustr, !bFull); } else if(ContentTypeId::REGION == nContentType) { @@ -3046,9 +3043,9 @@ void SwContentTree::Display( bool bActive ) // set_cursor unselects all entries, makes passed entry visible, and selects it m_xTreeView->set_cursor(*xSelEntry); } - } - Select(); + UpdateContentFunctionsToolbar(); + } if (!m_bIgnoreDocChange && GetEntryCount() == nOldEntryCount) { @@ -3726,7 +3723,7 @@ void SwContentTree::Notify(SfxBroadcaster & rBC, SfxHint const& rHint) if (m_xTreeView->get_cursor(xEntry.get())) { m_xTreeView->select(*xEntry); - Select(); + UpdateContentFunctionsToolbar(); } else m_xTreeView->unselect_all(); @@ -4041,7 +4038,7 @@ static void lcl_SelectByContentTypeAndAddress(SwContentTree* pThis, weld::TreeVi if (!ptr) { rContentTree.set_cursor(-1); - pThis->Select(); + pThis->UpdateContentFunctionsToolbar(); return; } @@ -4061,7 +4058,7 @@ static void lcl_SelectByContentTypeAndAddress(SwContentTree* pThis, weld::TreeVi if (!bFoundEntry) { rContentTree.set_cursor(-1); - pThis->Select(); + pThis->UpdateContentFunctionsToolbar(); return; } @@ -4118,14 +4115,14 @@ static void lcl_SelectByContentTypeAndAddress(SwContentTree* pThis, weld::TreeVi { // unselect all entries and make passed entry visible and selected rContentTree.set_cursor(*xIter); - pThis->Select(); + pThis->UpdateContentFunctionsToolbar(); } return; } } rContentTree.set_cursor(-1); - pThis->Select(); + pThis->UpdateContentFunctionsToolbar(); return; } @@ -4158,14 +4155,15 @@ static void lcl_SelectByContentTypeAndName(SwContentTree* pThis, weld::TreeView& { // unselect all entries and make passed entry visible and selected rContentTree.set_cursor(*xIter); - pThis->Select(); + pThis->UpdateContentFunctionsToolbar(); } break; } } } -static void lcl_SelectDrawObjectByName(weld::TreeView& rContentTree, std::u16string_view rName) +static void lcl_SelectDrawObjectByName(SwContentTree* pThis, weld::TreeView& rContentTree, + std::u16string_view rName) { if (rName.empty()) return; @@ -4187,6 +4185,7 @@ static void lcl_SelectDrawObjectByName(weld::TreeView& rContentTree, std::u16str { rContentTree.select(*xIter); rContentTree.scroll_to_row(*xIter); + pThis->UpdateContentFunctionsToolbar(); } break; } @@ -4327,15 +4326,15 @@ void SwContentTree::UpdateTracking() SdrObject* pSelected = pSdrView->GetMarkedObjectList().GetMark(nIdx)->GetMarkedSdrObj(); OUString aName(pSelected->GetName()); if (!aName.isEmpty()) - lcl_SelectDrawObjectByName(*m_xTreeView, aName); + lcl_SelectDrawObjectByName(this, *m_xTreeView, aName); } } else { // clear treeview selections m_xTreeView->unselect_all(); + UpdateContentFunctionsToolbar(); } - Select(); } return; } @@ -4497,7 +4496,7 @@ void SwContentTree::UpdateTracking() } // unselect all entries, make pEntry visible, and select m_xTreeView->set_cursor(rEntry); - Select(); + UpdateContentFunctionsToolbar(); // tdf#149279 show at least two outline entries before the set cursor entry std::unique_ptr xIter(m_xTreeView->make_iterator(&rEntry)); @@ -4587,10 +4586,265 @@ void SwContentTree::UpdateTracking() { m_xTreeView->unselect_all(); m_xTreeView->set_cursor(-1); - Select(); + UpdateContentFunctionsToolbar(); } } +static bool lcl_IsSelectedCompareByContentTypeAndAddress(const weld::TreeIter& rEntry, + weld::TreeView& rContentTree, + ContentTypeId eContentType, + const void* ptr) +{ + if (!ptr) + return false; + + std::unique_ptr xIter(rContentTree.make_iterator()); + + // find content type entry + bool bFoundEntry = rContentTree.get_iter_first(*xIter); + while (bFoundEntry) + { + assert(dynamic_cast(weld::fromId(rContentTree.get_id(*xIter)))); + SwContentType* pContentType = weld::fromId(rContentTree.get_id(*xIter)); + if (eContentType == pContentType->GetType()) + break; + bFoundEntry = rContentTree.iter_next_sibling(*xIter); + } + + if (!bFoundEntry) + return false; + + // find content type content entry and compare it to the passed entry + const void* p = nullptr; + while (rContentTree.iter_next(*xIter) && lcl_IsContent(*xIter, rContentTree)) + { + assert(dynamic_cast(weld::fromId(rContentTree.get_id(*xIter)))); + SwContent* pContent = weld::fromId(rContentTree.get_id(*xIter)); + switch (eContentType) + { + case ContentTypeId::FOOTNOTE: + case ContentTypeId::ENDNOTE: + { + assert(dynamic_cast(static_cast(pContent))); + SwTextFootnoteContent* pCnt = static_cast(pContent); + p = pCnt->GetTextFootnote(); + break; + } + case ContentTypeId::URLFIELD: + { + assert(dynamic_cast(static_cast(pContent))); + SwURLFieldContent* pCnt = static_cast(pContent); + p = static_cast(pCnt->GetINetAttr()); + break; + } + case ContentTypeId::TEXTFIELD: + { + assert(dynamic_cast(static_cast(pContent))); + SwTextFieldContent* pCnt = static_cast(pContent); + p = pCnt->GetFormatField()->GetField(); + break; + } + case ContentTypeId::POSTIT: + { + assert(dynamic_cast(static_cast(pContent))); + SwPostItContent* pCnt = static_cast(pContent); + p = pCnt->GetPostIt()->GetField(); + break; + } + case ContentTypeId::INDEX: + { + assert(dynamic_cast(static_cast(pContent))); + SwTOXBaseContent* pCnt = static_cast(pContent); + p = pCnt->GetTOXBase(); + break; + } + default: + break; + } + if (ptr == p) + return rContentTree.iter_compare(*xIter, rEntry) == 0; + } + return false; +} + +static bool lcl_IsSelectedCompareByContentTypeAndName(const weld::TreeIter& rEntry, + weld::TreeView& rContentTree, + ContentTypeId eContentType, + std::u16string_view rName) +{ + std::unique_ptr xIter(rContentTree.make_iterator()); + + // find content type entry + bool bFoundEntry = rContentTree.get_iter_first(*xIter); + while (bFoundEntry) + { + assert(dynamic_cast(weld::fromId(rContentTree.get_id(*xIter)))); + SwContentType* pContentType = weld::fromId(rContentTree.get_id(*xIter)); + if (eContentType == pContentType->GetType()) + break; + bFoundEntry = rContentTree.iter_next_sibling(*xIter); + } + + if (!bFoundEntry) + return false; + + // find content type content entry and compare it to the passed entry + while (rContentTree.iter_next(*xIter)) + { + if (rName == rContentTree.get_text(*xIter)) + { + if (rContentTree.iter_compare(*xIter, rEntry) == 0) + return true; + } + } + return false; +} + +bool SwContentTree::IsSelectedEntryCurrentDocCursorPosition(const weld::TreeIter& rEntry) +{ + if (State::HIDDEN == m_eState || !m_pActiveShell) + return false; + + // table + if (m_pActiveShell->IsCursorInTable()) + { + return lcl_IsSelectedCompareByContentTypeAndName( + rEntry, *m_xTreeView, ContentTypeId::TABLE, + m_pActiveShell->GetTableFormat()->GetName()); + } + // graphic, frame, and ole + if (m_pActiveShell->GetSelectionType() + & (SelectionType::Graphic | SelectionType::Frame | SelectionType::Ole)) + { + ContentTypeId eContentTypeId; + if (m_pActiveShell->GetSelectionType() == SelectionType::Graphic) + eContentTypeId = ContentTypeId::GRAPHIC; + else if (m_pActiveShell->GetSelectionType() == SelectionType::Frame) + eContentTypeId = ContentTypeId::FRAME; + else if (m_pActiveShell->GetSelectionType() == SelectionType::Ole) + eContentTypeId = ContentTypeId::OLE; + else // to quiet compiler warning/error + return false; + return lcl_IsSelectedCompareByContentTypeAndName(rEntry, *m_xTreeView, eContentTypeId, + m_pActiveShell->GetFlyName()); + } + // hyperlinks + // not in ToxContent tdf#148312 <- does this apply here? + if (const SwSection* pSection = m_pActiveShell->GetCurrSection(); + !pSection || (pSection && pSection->GetType() != SectionType::ToxContent)) + { + if (SwContentAtPos aContentAtPos(IsAttrAtPos::InetAttr); + m_pActiveShell->GetContentAtPos(m_pActiveShell->GetCursorDocPos(), aContentAtPos)) + { + // Because hyperlink item names do not need to be unique, finding the corresponding + // item in the tree by name may result in incorrect selection. Find the item in the + // tree by comparing the SwTextINetFormat pointer at the document cursor position to + // that stored in the item SwURLFieldContent. + return lcl_IsSelectedCompareByContentTypeAndAddress( + rEntry, *m_xTreeView, ContentTypeId::URLFIELD, aContentAtPos.pFndTextAttr); + } + } + // references + if (SwContentAtPos aContentAtPos(IsAttrAtPos::RefMark); + m_pActiveShell->GetContentAtPos(m_pActiveShell->GetCursorDocPos(), aContentAtPos) + && aContentAtPos.pFndTextAttr) + { + const SwFormatRefMark& rRefMark = aContentAtPos.pFndTextAttr->GetRefMark(); + return lcl_IsSelectedCompareByContentTypeAndName( + rEntry, *m_xTreeView, ContentTypeId::REFERENCE, rRefMark.GetRefName()); + } + // indexes + if (const SwTOXBase* pTOXBase = m_pActiveShell->GetCurTOX()) + { + return lcl_IsSelectedCompareByContentTypeAndAddress(rEntry, *m_xTreeView, + ContentTypeId::INDEX, pTOXBase); + // alternatively: + // return lcl_IsSelectedCompareByContentTypeAndName(rEntry, *m_xTreeView, + // ContentTypeId::INDEX, + // pTOX->GetTOXName()); + } + // fields, comments + if (SwField* pField = m_pActiveShell->GetCurField()) + { + ContentTypeId eContentTypeId = pField->GetTypeId() == SwFieldTypesEnum::Postit + ? ContentTypeId::POSTIT + : ContentTypeId::TEXTFIELD; + return lcl_IsSelectedCompareByContentTypeAndAddress(rEntry, *m_xTreeView, eContentTypeId, + pField); + } + // drawing + if (m_pActiveShell->GetSelectionType() + & (SelectionType::DrawObject | SelectionType::DrawObjectEditMode | SelectionType::DbForm)) + { + SdrView* pSdrView = m_pActiveShell->GetDrawView(); + if (!pSdrView) + return false; + // ONLY CHECKS FIRST MARKED OBJECT + for (size_t nIdx = 0; nIdx < pSdrView->GetMarkedObjectList().GetMarkCount(); nIdx++) + { + SdrObject* pObject = pSdrView->GetMarkedObjectList().GetMark(nIdx)->GetMarkedSdrObj(); + if (lcl_IsSelectedCompareByContentTypeAndName( + rEntry, *m_xTreeView, ContentTypeId::DRAWOBJECT, pObject->GetName())) + return true; + } + return false; + } + // footnotes and endnotes + if (SwContentAtPos aContentAtPos(IsAttrAtPos::Ftn); + m_pActiveShell->GetContentAtPos(m_pActiveShell->GetCursorDocPos(), aContentAtPos) + && aContentAtPos.pFndTextAttr) + { + ContentTypeId eContentTypeId = aContentAtPos.pFndTextAttr->GetFootnote().IsEndNote() + ? ContentTypeId::ENDNOTE + : ContentTypeId::FOOTNOTE; + return lcl_IsSelectedCompareByContentTypeAndAddress(rEntry, *m_xTreeView, eContentTypeId, + aContentAtPos.pFndTextAttr); + } + // section + if (const SwSection* pSection = m_pActiveShell->GetCurrSection()) + { + return lcl_IsSelectedCompareByContentTypeAndName( + rEntry, *m_xTreeView, ContentTypeId::REGION, pSection->GetSectionName()); + } + // bookmark (unsure about this) + if (m_pActiveShell->GetSelectionType() & SelectionType::Text) + { + SwPaM* pCursor = m_pActiveShell->GetCursor(); + IDocumentMarkAccess* const pMarkAccess = m_pActiveShell->getIDocumentMarkAccess(); + IDocumentMarkAccess::const_iterator_t ppBookmark = pMarkAccess->getBookmarksBegin(); + if (pCursor && ppBookmark != pMarkAccess->getBookmarksEnd()) + { + OUString sBookmarkName; + SwPosition* pCursorPoint = pCursor->GetPoint(); + while (ppBookmark != pMarkAccess->getBookmarksEnd()) + { + if (lcl_IsUiVisibleBookmark(*ppBookmark) + && *pCursorPoint >= (*ppBookmark)->GetMarkStart() + && *pCursorPoint <= (*ppBookmark)->GetMarkEnd()) + { + sBookmarkName = (*ppBookmark)->GetName(); + // keep previously selected bookmark instead + // of selecting a different bookmark inside of it + if (sBookmarkName == m_sSelectedItem) + return lcl_IsSelectedCompareByContentTypeAndName( + rEntry, *m_xTreeView, ContentTypeId::BOOKMARK, sBookmarkName); + } + else if (!sBookmarkName.isEmpty() && *pCursorPoint < (*ppBookmark)->GetMarkStart()) + { + // don't search a different bookmark inside the + // previous one, if the starting position of the next bookmarks + // is after the cursor position (assuming that the + // bookmark iterator jumps inside the same text by positions) + return lcl_IsSelectedCompareByContentTypeAndName( + rEntry, *m_xTreeView, ContentTypeId::BOOKMARK, sBookmarkName); + } + ++ppBookmark; + } + } + } + return false; +} + void SwContentTree::SelectOutlinesWithSelection() { SwCursor* pFirstCursor = m_pActiveShell->GetCursor(); @@ -4642,7 +4896,7 @@ void SwContentTree::SelectOutlinesWithSelection() }); } - Select(); + UpdateContentFunctionsToolbar(); } void SwContentTree::MoveOutline(SwOutlineNodes::size_type nTargetPos) @@ -4798,7 +5052,7 @@ IMPL_LINK(SwContentTree, KeyInputHdl, const KeyEvent&, rEvent, bool) && (pContentType->GetType() == ContentTypeId::FOOTNOTE || pContentType->GetType() == ContentTypeId::ENDNOTE)) { - ExecuteContextMenuAction(u"deleteallfootnotes"_ustr); + DeleteAllContentOfEntryContentType(*xEntry); } } } @@ -5037,17 +5291,6 @@ IMPL_LINK(SwContentTree, QueryTooltipHdl, const weld::TreeIter&, rEntry, OUStrin void SwContentTree::ExecuteContextMenuAction(const OUString& rSelectedPopupEntry) { - - if(rSelectedPopupEntry == "showcomments") - { - m_pActiveShell->GetView().GetViewFrame().GetDispatcher()->Execute(SID_TOGGLE_NOTES); - return; - } - if(rSelectedPopupEntry == "showresolvedcomments") - { - m_pActiveShell->GetView().GetViewFrame().GetDispatcher()->Execute(SID_TOGGLE_RESOLVED_NOTES); - return; - } if (rSelectedPopupEntry == "copy") { CopyOutlineSelections(); @@ -5098,46 +5341,7 @@ void SwContentTree::ExecuteContextMenuAction(const OUString& rSelectedPopupEntry if (rSelectedPopupEntry == "deleteallfootnotes" || rSelectedPopupEntry == "deleteallendnotes") { - if (!lcl_IsContentType(*xFirst, *m_xTreeView)) - return; - - //MakeAllOutlineContentTemporarilyVisible a(m_pActiveShell->GetDoc()); - - m_pActiveShell->AssureStdMode(); - - SwCursor* pCursor = m_pActiveShell->getShellCursor(true); - - SwContentType* pCntType = weld::fromId(m_xTreeView->get_id(*xFirst)); - const auto nCount = pCntType->GetMemberCount(); - - m_pActiveShell->StartAction(); - m_pActiveShell->EnterAddMode(); - for (size_t i = 0; i < nCount; i++) - { - const SwTextFootnoteContent* pTextFootnoteCnt = - static_cast(pCntType->GetMember(i)); - if (pTextFootnoteCnt && !pTextFootnoteCnt->IsInvisible()) - { - if (const SwTextAttr* pTextAttr = pTextFootnoteCnt->GetTextFootnote()) - { - const SwTextFootnote* pTextFootnote = pTextAttr->GetFootnote().GetTextFootnote(); - if (!pTextFootnote) - continue; - const SwTextNode& rTextNode = pTextFootnote->GetTextNode(); - auto nStart = pTextAttr->GetStart(); - pCursor->GetPoint()->Assign(rTextNode, nStart + 1); - m_pActiveShell->SetMark(); - m_pActiveShell->SttSelect(); - pCursor->GetPoint()->Assign(rTextNode, nStart); - m_pActiveShell->EndSelect(); - } - } - } - m_pActiveShell->LeaveAddMode(); - m_pActiveShell->EndAction(); - - m_pActiveShell->DelRight(); - + DeleteAllContentOfEntryContentType(*xFirst); return; } @@ -5519,7 +5723,7 @@ IMPL_LINK_NOARG(SwContentTree, SelectHdl, weld::TreeView&, void) ContentDoubleClickHdl(*m_xTreeView); grab_focus(); } - Select(); + UpdateContentFunctionsToolbar(); if (m_bIsRoot) return; // Select the content type in the Navigate By control @@ -5531,32 +5735,11 @@ IMPL_LINK_NOARG(SwContentTree, SelectHdl, weld::TreeView&, void) m_pDialog->SelectNavigateByContentType(m_xTreeView->get_text(*xEntry)); } -// Here the buttons for moving outlines are en-/disabled. -// The buttons for moving outlines are disabled when the Navigator is in "Zoom" mode or when -// the document is in read-only mode or when the outline content is displayed alphabetically -// sorted or when the selected entry is not outline content. -void SwContentTree::Select() +void SwContentTree::UpdateContentFunctionsToolbar() { SwNavigationPI* pNavi = GetParentWindow(); - - bool bEnable = false; - - if (!pNavi->IsZoomedIn() && !m_bIsLastReadOnly) - { - std::unique_ptr xEntry(m_xTreeView->make_iterator()); - if (m_xTreeView->get_selected(xEntry.get()) && lcl_IsContent(*xEntry, *m_xTreeView)) - { - const SwContentType* pCntType = - weld::fromId(m_xTreeView->get_id(*xEntry))->GetParent(); - if (pCntType->GetType() == ContentTypeId::OUTLINE && !pCntType->IsAlphabeticSort()) - bEnable = true; - } - } - - pNavi->m_xContent6ToolBox->set_item_sensitive(u"chapterup"_ustr, bEnable); - pNavi->m_xContent6ToolBox->set_item_sensitive(u"chapterdown"_ustr, bEnable); - pNavi->m_xContent6ToolBox->set_item_sensitive(u"promote"_ustr, bEnable); - pNavi->m_xContent6ToolBox->set_item_sensitive(u"demote"_ustr, bEnable); + if (pNavi) + pNavi->UpdateContentFunctionsToolbar(); } void SwContentTree::SetRootType(ContentTypeId nType) @@ -5607,8 +5790,7 @@ void SwContentTree::EditEntry(const weld::TreeIter& rEntry, EditEntryMode nMode) } else if(nMode == EditEntryMode::DELETE) { - m_pActiveShell->SelTable(); - m_pActiveShell->DeleteTable(); + nSlot = FN_TABLE_DELETE_TABLE; } else if(nMode == EditEntryMode::RENAME) { @@ -5868,6 +6050,342 @@ void SwContentTree::EditEntry(const weld::TreeIter& rEntry, EditEntryMode nMode) } } +bool SwContentTree::IsDeletable(const weld::TreeIter& rEntry) +{ + if (lcl_IsContentType(rEntry, *m_xTreeView)) + { + if (State::HIDDEN == m_eState || !m_pActiveShell) + return false; + if (m_pActiveShell->GetView().GetDocShell()->IsReadOnly()) + return false; + SwContentType* pContentType + = weld::fromId(m_xTreeView->get_id(rEntry)); + auto nCount = pContentType->GetMemberCount(); + if (nCount == 0) + return false; + for (size_t i = 0; i < nCount; i++) + { + const SwContent* pContent = pContentType->GetMember(i); + if (IsDeletable(pContent)) + return true; + } + return false; + } + return IsDeletable(weld::fromId(m_xTreeView->get_id(rEntry))); +} + +bool SwContentTree::IsDeletable(const SwContent* pContent) +{ + if (State::HIDDEN == m_eState || !m_pActiveShell) + return false; + if (m_pActiveShell->GetView().GetDocShell()->IsReadOnly()) + return false; + if (pContent->IsInvisible() || pContent->IsProtect()) + return false; + + ContentTypeId eContentTypeId = pContent->GetParent()->GetType(); + + // table + if (eContentTypeId == ContentTypeId::TABLE) + { + bool bFull; + m_pActiveShell->HasTableAnyProtection(&pContent->GetName(), &bFull); + return !bFull; + } + // bookmark + if (eContentTypeId == ContentTypeId::BOOKMARK) + return !m_pActiveShell->getIDocumentSettingAccess().get( + DocumentSettingId::PROTECT_BOOKMARKS); + // index + if (eContentTypeId == ContentTypeId::INDEX) + { + const SwTOXBase* pBase = static_cast(pContent)->GetTOXBase(); + return !SwEditShell::IsTOXBaseReadonly(*pBase); + } + + return true; +} + +void SwContentTree::DeleteAllContentOfEntryContentType(const weld::TreeIter& rEntry) +{ + weld::WaitObject aWait(m_xTreeView.get()); + + SwContentType* pContentType; + if (lcl_IsContentType(rEntry, *m_xTreeView)) + { + assert(dynamic_cast(weld::fromId(m_xTreeView->get_id(rEntry)))); + pContentType = weld::fromId(m_xTreeView->get_id(rEntry)); + } + else + { + assert(dynamic_cast(weld::fromId(m_xTreeView->get_id(rEntry)))); + pContentType = const_cast( + weld::fromId(m_xTreeView->get_id(rEntry))->GetParent()); + } + + const ContentTypeId eContentTypeId = pContentType->GetType(); + if (eContentTypeId == ContentTypeId::TABLE) + { + m_pActiveShell->AssureStdMode(); + + const auto nCount = pContentType->GetMemberCount(); + + m_pActiveShell->StartAction(); + SwRewriter aRewriter; + aRewriter.AddRule(UndoArg1, pContentType->GetName()); + m_pActiveShell->StartUndo(SwUndoId::DELETE, &aRewriter); + for (size_t i = 0; i < nCount; i++) + { + const SwContent* pContent = pContentType->GetMember(i); + m_pActiveShell->GotoTable(pContent->GetName()); + m_pActiveShell->SelTable(); + m_pActiveShell->DeleteTable(); + } + m_pActiveShell->EndUndo(); + m_pActiveShell->EndAction(); + } + else if (eContentTypeId == ContentTypeId::FRAME + || eContentTypeId == ContentTypeId::GRAPHIC + || eContentTypeId == ContentTypeId::OLE) + { + m_pActiveShell->AssureStdMode(); + + const auto nCount = pContentType->GetMemberCount(); + + m_pActiveShell->LockView(true); + SwRewriter aRewriter; + aRewriter.AddRule(UndoArg1, pContentType->GetName()); + m_pActiveShell->StartUndo(SwUndoId::DELETE, &aRewriter); + for (size_t i = 0; i < nCount; i++) + { + const OUString& rName(pContentType->GetMember(i)->GetName()); + m_pActiveShell->GotoFly(rName); + m_pActiveShell->DelRight(); + } + m_pActiveShell->EndUndo(); + m_pActiveShell->LockView(false); + } + else if (eContentTypeId == ContentTypeId::BOOKMARK) + { + m_pActiveShell->AssureStdMode(); + + const auto nCount = pContentType->GetMemberCount(); + + IDocumentMarkAccess* const pMarkAccess = m_pActiveShell->getIDocumentMarkAccess(); + + m_pActiveShell->StartAction(); + SwRewriter aRewriter; + aRewriter.AddRule(UndoArg1, pContentType->GetName()); + m_pActiveShell->StartUndo(SwUndoId::DELETE, &aRewriter); + for (size_t i = 0; i < nCount; i++) + { + const OUString& rName(pContentType->GetMember(i)->GetName()); + pMarkAccess->deleteMark(pMarkAccess->findMark(rName), false); + } + m_pActiveShell->EndUndo(); + m_pActiveShell->EndAction(); + } + else if (eContentTypeId == ContentTypeId::REGION) + { + const auto nCount = pContentType->GetMemberCount(); + + m_pActiveShell->StartAction(); + SwRewriter aRewriter; + aRewriter.AddRule(UndoArg1, pContentType->GetName()); + m_pActiveShell->StartUndo(SwUndoId::DELETE, &aRewriter); + for (size_t i = 0; i < nCount; i++) + { + const SwRegionContent* pRegionContent + = static_cast(pContentType->GetMember(i)); + SwSectionFormat* pSectionFormat + = const_cast(pRegionContent->GetSectionFormat()); + m_pActiveShell->GetDoc()->DelSectionFormat(pSectionFormat, false); + } + m_pActiveShell->EndUndo(); + m_pActiveShell->EndAction(); + } + else if (eContentTypeId == ContentTypeId::URLFIELD) // hyperlinks + { + m_pActiveShell->AssureStdMode(); + + const auto nCount = pContentType->GetMemberCount(); + + m_pActiveShell->LockView(true); + SwRewriter aRewriter; + aRewriter.AddRule(UndoArg1, pContentType->GetName()); + m_pActiveShell->StartUndo(SwUndoId::DELETE, &aRewriter); + for (size_t i = 0; i < nCount; i++) + { + if (m_pActiveShell->GotoINetAttr(*static_cast( + pContentType->GetMember(i))->GetINetAttr())) + { + m_pActiveShell->Right(SwCursorSkipMode::Chars, false, 1, false); + m_pActiveShell->SwCursorShell::SelectTextAttr(RES_TXTATR_INETFMT, true); + m_pActiveShell->DelRight(); + } + } + m_pActiveShell->EndUndo(); + m_pActiveShell->LockView(false); + } + else if (eContentTypeId == ContentTypeId::REFERENCE ) + { + m_pActiveShell->AssureStdMode(); + + const auto nCount = pContentType->GetMemberCount(); + + m_pActiveShell->StartAction(); + SwRewriter aRewriter; + aRewriter.AddRule(UndoArg1, pContentType->GetName()); + m_pActiveShell->StartUndo(SwUndoId::DELETE, &aRewriter); + for (size_t i = 0; i < nCount; i++) + { + const OUString& rName = pContentType->GetMember(i)->GetName(); + ItemSurrogates aSurrogates; + m_pActiveShell->GetDoc()->GetAttrPool().GetItemSurrogates(aSurrogates, RES_TXTATR_REFMARK); + for (const SfxPoolItem* pItem : aSurrogates) + { + assert(dynamic_cast(pItem)); + const auto pFormatRefMark = static_cast(pItem); + if (!pFormatRefMark) + continue; + const SwTextRefMark* pTextRef = pFormatRefMark->GetTextRefMark(); + if (pTextRef && &pTextRef->GetTextNode().GetNodes() == + &m_pActiveShell->GetNodes() && rName == pFormatRefMark->GetRefName()) + { + m_pActiveShell->GetDoc()->DeleteFormatRefMark(pFormatRefMark); + break; + } + } + } + m_pActiveShell->SwViewShell::UpdateFields(); + m_pActiveShell->EndUndo(); + m_pActiveShell->EndAction(); + } + else if (eContentTypeId == ContentTypeId::INDEX) + { + m_pActiveShell->AssureStdMode(); + + const auto nCount = pContentType->GetMemberCount(); + + m_pActiveShell->StartAction(); + SwRewriter aRewriter; + aRewriter.AddRule(UndoArg1, pContentType->GetName()); + m_pActiveShell->StartUndo(SwUndoId::DELETE, &aRewriter); + for (size_t i = 0; i < nCount; i++) + { + SwContent* pContent = const_cast(pContentType->GetMember(i)); + const SwTOXBase* pBase + = static_cast(pContent)->GetTOXBase(); + if (pBase) + m_pActiveShell->DeleteTOX(*pBase, true); + } + m_pActiveShell->EndUndo(); + m_pActiveShell->EndAction(); + } + else if (eContentTypeId == ContentTypeId::POSTIT) + { + m_pActiveShell->AssureStdMode(); + + const auto nCount = pContentType->GetMemberCount(); + + m_pActiveShell->StartAction(); + SwRewriter aRewriter; + aRewriter.AddRule(UndoArg1, pContentType->GetName()); + m_pActiveShell->StartUndo(SwUndoId::DELETE, &aRewriter); + for (size_t i = 0; i < nCount; i++) + { + const SwPostItContent* pPostItContent + = static_cast(pContentType->GetMember(i)); + m_pActiveShell->GotoFormatField(*pPostItContent->GetPostIt()); + m_pActiveShell->DelRight(); + } + m_pActiveShell->EndUndo(); + m_pActiveShell->EndAction(); + } + else if (eContentTypeId == ContentTypeId::DRAWOBJECT) + { + m_pActiveShell->AssureStdMode(); + + const auto nCount = pContentType->GetMemberCount(); + + m_pActiveShell->StartAction(); + SwRewriter aRewriter; + aRewriter.AddRule(UndoArg1, pContentType->GetName()); + m_pActiveShell->StartUndo(SwUndoId::DELETE, &aRewriter); + for (size_t i = 0; i < nCount; i++) + { + const OUString& rName(pContentType->GetMember(i)->GetName()); + m_pActiveShell->GotoDrawingObject(rName); + m_pActiveShell->DelRight(); + //m_pActiveShell->DelSelectedObj(); + } + m_pActiveShell->EndUndo(); + m_pActiveShell->EndAction(); + } + else if (eContentTypeId == ContentTypeId::TEXTFIELD) + { + m_pActiveShell->AssureStdMode(); + + const auto nCount = pContentType->GetMemberCount(); + + m_pActiveShell->StartAction(); + SwRewriter aRewriter; + aRewriter.AddRule(UndoArg1, pContentType->GetName()); + m_pActiveShell->StartUndo(SwUndoId::DELETE, &aRewriter); + for (size_t i = 0; i < nCount; i++) + { + const SwTextFieldContent* pTextFieldContent = + static_cast(pContentType->GetMember(i)); + const SwTextField* pTextField = pTextFieldContent->GetFormatField()->GetTextField(); + SwTextField::DeleteTextField(*pTextField); + } + m_pActiveShell->EndUndo(); + m_pActiveShell->EndAction(); + } + else if (eContentTypeId == ContentTypeId::FOOTNOTE || eContentTypeId == ContentTypeId::ENDNOTE) + { + //MakeAllOutlineContentTemporarilyVisible a(m_pActiveShell->GetDoc()); + + m_pActiveShell->AssureStdMode(); + + SwCursor* pCursor = m_pActiveShell->getShellCursor(true); + + const auto nCount = pContentType->GetMemberCount(); + + m_pActiveShell->StartAction(); + m_pActiveShell->EnterAddMode(); + for (size_t i = 0; i < nCount; i++) + { + const SwTextFootnoteContent* pTextFootnoteCnt = + static_cast(pContentType->GetMember(i)); + if (pTextFootnoteCnt && !pTextFootnoteCnt->IsInvisible()) + { + if (const SwTextAttr* pTextAttr = pTextFootnoteCnt->GetTextFootnote()) + { + const SwTextFootnote* pTextFootnote = pTextAttr->GetFootnote().GetTextFootnote(); + if (!pTextFootnote) + continue; + const SwTextNode& rTextNode = pTextFootnote->GetTextNode(); + auto nStart = pTextAttr->GetStart(); + pCursor->GetPoint()->Assign(rTextNode, nStart + 1); + m_pActiveShell->SetMark(); + m_pActiveShell->SttSelect(); + pCursor->GetPoint()->Assign(rTextNode, nStart); + m_pActiveShell->EndSelect(); + } + } + } + m_pActiveShell->LeaveAddMode(); + m_pActiveShell->EndAction(); + + SwRewriter aRewriter; + aRewriter.AddRule(UndoArg1, pContentType->GetName()); + m_pActiveShell->StartUndo(SwUndoId::DELETE, &aRewriter); + m_pActiveShell->DelRight(); + m_pActiveShell->EndUndo(); + } +} + void SwContentTree::CopyOutlineSelections() { m_pActiveShell->LockView(true); @@ -6015,8 +6533,7 @@ void SwContentTree::GotoContent(const SwContent* pCnt) if(m_pActiveShell->GotoINetAttr( *static_cast(pCnt)->GetINetAttr() )) { - m_pActiveShell->Right( SwCursorSkipMode::Chars, true, 1, false); - m_pActiveShell->SwCursorShell::SelectTextAttr( RES_TXTATR_INETFMT, true ); + m_pActiveShell->Right(SwCursorSkipMode::Chars, false, 1, false); } } break; @@ -6098,6 +6615,8 @@ void SwContentTree::GotoContent(const SwContent* pCnt) rView.SetVisArea(aPoint); } } + + UpdateContentFunctionsToolbar(); } NaviContentBookmark::NaviContentBookmark() : @@ -6156,7 +6675,7 @@ void SwContentTree::SelectContentType(std::u16string_view rContentTypeName) if (m_xTreeView->get_text(*xIter) == rContentTypeName) { m_xTreeView->set_cursor(*xIter); - Select(); + UpdateContentFunctionsToolbar(); break; } } while (m_xTreeView->iter_next_sibling(*xIter)); diff --git a/sw/source/uibase/utlui/navipi.cxx b/sw/source/uibase/utlui/navipi.cxx index 7db3f3d8c2df..4db946c53e5f 100644 --- a/sw/source/uibase/utlui/navipi.cxx +++ b/sw/source/uibase/utlui/navipi.cxx @@ -51,6 +51,9 @@ #include +#include +#include + using namespace ::com::sun::star::uno; using namespace ::com::sun::star::frame; @@ -273,23 +276,12 @@ IMPL_LINK(SwNavigationPI, ToolBoxSelectHdl, const OUString&, rCommand, void) { rSh.GetView().GetViewFrame().GetDispatcher()->Execute(FN_SET_REMINDER, SfxCallMode::ASYNCHRON); } - else if (rCommand == "chapterdown" || - rCommand == "movedown" || - rCommand == "chapterup" || + else if (rCommand == "movedown" || rCommand == "moveup" || - rCommand == "promote" || - rCommand == "demote" || rCommand == "edit") { if (IsGlobalMode()) m_xGlobalTree->ExecCommand(rCommand); - else - { - // Standard: sublevels are taken - // do not take sublevels with Ctrl - bool bOutlineWithChildren = (KEY_MOD1 != m_xContent6ToolBox->get_modifier_state()); - m_xContentTree->ExecCommand(rCommand, bOutlineWithChildren); - } } else if (rCommand == "contenttoggle" || rCommand == "globaltoggle") { @@ -371,7 +363,7 @@ void SwNavigationPI::ZoomOut() pNav->SetMinOutputSizePixel(aOptimalSize); pNav->SetOutputSizePixel(aNewSize); - m_xContentTree->Select(); // Enable toolbox + m_xContentTree->UpdateContentFunctionsToolbar(); // Enable toolbox m_pConfig->SetSmall(false); m_xContent6ToolBox->set_item_active(u"listbox"_ustr, true); } @@ -400,7 +392,7 @@ void SwNavigationPI::ZoomIn() pNav->SetMinOutputSizePixel(aOptimalSize); pNav->SetOutputSizePixel(aNewSize); - m_xContentTree->Select(); // Enable toolbox + m_xContentTree->UpdateContentFunctionsToolbar(); // Enable toolbox m_pConfig->SetSmall(true); m_xContent6ToolBox->set_item_active(u"listbox"_ustr, false); @@ -426,6 +418,7 @@ SwNavigationPI::SwNavigationPI(weld::Widget* pParent, , m_aDocFullName(SID_DOCFULLNAME, *_pBindings, *this) , m_aPageStats(FN_STAT_PAGE, *_pBindings, *this) , m_aNavElement(FN_NAV_ELEMENT, *_pBindings, *this) + , m_xFrame(rxFrame) , m_xContent1ToolBox(m_xBuilder->weld_toolbar(u"content1"_ustr)) , m_xContent2ToolBox(m_xBuilder->weld_toolbar(u"content2"_ustr)) , m_xContent3ToolBox(m_xBuilder->weld_toolbar(u"content3"_ustr)) @@ -454,6 +447,8 @@ SwNavigationPI::SwNavigationPI(weld::Widget* pParent, , m_bIsZoomedIn(false) , m_bGlobalMode(false) { + InitContentFunctionsToolbar(); + m_xContainer->connect_container_focus_changed(LINK(this, SwNavigationPI, SetFocusChildHdl)); Reference xController = @@ -585,6 +580,182 @@ SwNavigationPI::SwNavigationPI(weld::Widget* pParent, } } +void SwNavigationPI::InitContentFunctionsToolbar() +{ + m_xHeadingsContentFunctionsToolbar + = m_xBuilder->weld_toolbar("HeadingsContentFunctionButtonsToolbar"); + m_xDeleteFunctionToolbar = m_xBuilder->weld_toolbar("DeleteFunctionButtonToolbar"); + + const OUString sContentTypes[] + = { "Headings", "Tables", "Frames", "Images", "OLEobjects", + "Bookmarks", "Sections", "Hyperlinks", "References", "Indexes", + "Comments", "Drawingobjects", "Fields", "Footnotes", "Endnotes" }; + + for (ContentTypeId eContentTypeId : o3tl::enumrange()) + { + if (eContentTypeId == ContentTypeId::OUTLINE) + continue; + m_aContentTypeUnoToolbarMap[eContentTypeId] = m_xBuilder->weld_toolbar( + sContentTypes[static_cast(eContentTypeId)] + "ContentTypeUnoToolbar"); + m_aContentTypeToolbarUnoDispatcherMap[eContentTypeId] + = std::make_unique(*m_aContentTypeUnoToolbarMap[eContentTypeId], + *m_xBuilder, m_xFrame); + m_aContentUnoToolbarMap[eContentTypeId] = m_xBuilder->weld_toolbar( + sContentTypes[static_cast(eContentTypeId)] + "ContentUnoToolbar"); + m_aContentToolbarUnoDispatcherMap[eContentTypeId] = std::make_unique( + *m_aContentUnoToolbarMap[eContentTypeId], *m_xBuilder, m_xFrame); + } + + Link aLink + = LINK(this,SwNavigationPI, ContentFunctionsToolbarSelectHdl); + m_xHeadingsContentFunctionsToolbar->connect_clicked(aLink); + m_xDeleteFunctionToolbar->connect_clicked(aLink); +} + +namespace +{ +bool lcl_ToolbarHasItemWithIdent(weld::Toolbar& rToolbar, std::u16string_view rIdent) +{ + for (auto i = 0; i < rToolbar.get_n_items(); i++) + { + if (rToolbar.get_item_ident(i) == rIdent) + return true; + } + return false; +} +} + +void SwNavigationPI::UpdateContentFunctionsToolbar() +{ + m_xHeadingsContentFunctionsToolbar->hide(); + for (ContentTypeId eContentTypeId : o3tl::enumrange()) + { + if (eContentTypeId == ContentTypeId::OUTLINE) + continue; + m_aContentTypeUnoToolbarMap[eContentTypeId]->hide(); + m_aContentUnoToolbarMap[eContentTypeId]->hide(); + } + m_xDeleteFunctionToolbar->hide(); + + weld::TreeView& rTreeView = m_xContentTree->get_widget(); + + if (IsZoomedIn() || !rTreeView.is_visible()) + return; + + std::unique_ptr xEntry(rTreeView.make_iterator()); + if (!rTreeView.get_selected(xEntry.get())) + return; + + bool bUseDeleteFunctionsToolbar = true; + OUString aContentTypeName; // used in creation of delete button tooltip + + const bool bContentType + = weld::fromId(rTreeView.get_id(*xEntry))->GetTypeId() == 1; + + if (bContentType) + { + const SwContentType* pContentType = weld::fromId(rTreeView.get_id(*xEntry)); + + aContentTypeName = pContentType->GetName(); + + ContentTypeId eContentTypeId = pContentType->GetType(); + if (eContentTypeId == ContentTypeId::OUTLINE) + return; + weld::Toolbar& rContentTypeToolbar = *m_aContentTypeUnoToolbarMap[eContentTypeId]; + if (rContentTypeToolbar.get_n_items()) + { + if (eContentTypeId == ContentTypeId::POSTIT) + { + // prefer .uno:DeleteAllNotes over delete functions toolbar + bUseDeleteFunctionsToolbar + = !lcl_ToolbarHasItemWithIdent(rContentTypeToolbar, u".uno:DeleteAllNotes"); + } + rContentTypeToolbar.show(); + } + } + else + { + const SwContentType* pContentType + = weld::fromId(rTreeView.get_id(*xEntry))->GetParent(); + + aContentTypeName = pContentType->GetSingleName(); + + ContentTypeId eContentTypeId = pContentType->GetType(); + if (eContentTypeId == ContentTypeId::OUTLINE) + { + m_xHeadingsContentFunctionsToolbar->show(); + } + else if (m_xContentTree->IsSelectedEntryCurrentDocCursorPosition(*xEntry)) + { + weld::Toolbar& rContentTypeToolbar = *m_aContentUnoToolbarMap[eContentTypeId]; + if (rContentTypeToolbar.get_n_items()) + { + if (eContentTypeId == ContentTypeId::TABLE) + { + // prefer .uno:DeleteTable over delete functions toolbar + bUseDeleteFunctionsToolbar + = !lcl_ToolbarHasItemWithIdent(rContentTypeToolbar, u".uno:DeleteTable"); + } + else if (eContentTypeId == ContentTypeId::INDEX) + { + // prefer .uno:RemoveTableOf over delete functions toolbar + bUseDeleteFunctionsToolbar + = !lcl_ToolbarHasItemWithIdent(rContentTypeToolbar, u".uno:RemoveTableOf"); + } + rContentTypeToolbar.show(); + } + } + } + + if (bUseDeleteFunctionsToolbar && m_xContentTree->IsDeletable(*xEntry)) + { + OUString sToolTip = SwResId(bContentType ? STR_DELETE_CONTENT_TYPE : STR_DELETE_CONTENT); + sToolTip = sToolTip.replaceFirst("%1", aContentTypeName); + m_xDeleteFunctionToolbar->set_item_tooltip_text("delete", sToolTip); + m_xDeleteFunctionToolbar->show(); + } +} + +IMPL_LINK(SwNavigationPI, ContentFunctionsToolbarSelectHdl, const OUString&, rCommand, void) +{ + weld::TreeView& rTreeView = m_xContentTree->get_widget(); + + std::unique_ptr xEntry(rTreeView.make_iterator()); + if (!rTreeView.get_selected(xEntry.get())) + return; + + const bool bContentEntry + = weld::fromId(rTreeView.get_id(*xEntry))->GetTypeId() == 0; + + if (bContentEntry) + { + SwContent* pContent = weld::fromId(rTreeView.get_id(*xEntry)); + if (pContent) + m_xContentTree->GotoContent(pContent); + } + + if (rCommand == "chapterdown" || rCommand == "chapterup" || rCommand == "promote" + || rCommand == "demote") + { + // Get MouseModifier for Outline-Move + // Standard: sublevels are taken + // do not take sublevels with Ctrl + bool bOutlineWithChildren = (KEY_MOD1 != m_xContent6ToolBox->get_modifier_state()); + m_xContentTree->ExecCommand(rCommand, bOutlineWithChildren); + } + else if (rCommand == "delete") + { + if (!bContentEntry) + { + m_xContentTree->DeleteAllContentOfEntryContentType(*xEntry); + } + else + { + m_xContentTree->EditEntry(*xEntry, EditEntryMode::DELETE); + } + } +} + weld::Window* SwNavigationPI::GetFrameWeld() const { if (m_xNavigatorDlg) diff --git a/sw/source/writerfilter/dmapper/BorderHandler.cxx b/sw/source/writerfilter/dmapper/BorderHandler.cxx index ad37a1d46c35..c007ecf5e515 100644 --- a/sw/source/writerfilter/dmapper/BorderHandler.cxx +++ b/sw/source/writerfilter/dmapper/BorderHandler.cxx @@ -69,7 +69,7 @@ void BorderHandler::lcl_attribute(Id rName, Value & rVal) appendGrabBag(u"color"_ustr, msfilter::util::ConvertColorOU(Color(ColorTransparency, nIntValue))); break; case NS_ooxml::LN_CT_Border_space: // border distance in points - m_nLineDistance = ConversionHelper::convertTwipToMM100( nIntValue * 20 ); + m_nLineDistance = ConversionHelper::convertTwipToMm100_Limited(nIntValue * 20); appendGrabBag(u"space"_ustr, OUString::number(nIntValue)); break; case NS_ooxml::LN_CT_Border_shadow: diff --git a/sw/source/writerfilter/dmapper/CellMarginHandler.cxx b/sw/source/writerfilter/dmapper/CellMarginHandler.cxx index 8c014c093cf2..4f4b3011663a 100644 --- a/sw/source/writerfilter/dmapper/CellMarginHandler.cxx +++ b/sw/source/writerfilter/dmapper/CellMarginHandler.cxx @@ -55,7 +55,7 @@ void CellMarginHandler::lcl_attribute(Id rName, Value & rVal) { case NS_ooxml::LN_CT_TblWidth_w: m_nWidth = nIntValue; - m_nValue = ConversionHelper::convertTwipToMM100Unsigned( nIntValue ); + m_nValue = ConversionHelper::convertTwipToMm100_LimitedUnsigned(nIntValue); break; case NS_ooxml::LN_CT_TblWidth_type: SAL_WARN_IF(NS_ooxml::LN_Value_ST_TblWidth_dxa != sal::static_int_cast(nIntValue), "writerfilter", "CellMarginHandler: cell margins work for absolute values only"); diff --git a/sw/source/writerfilter/dmapper/ConversionHelper.cxx b/sw/source/writerfilter/dmapper/ConversionHelper.cxx index 7f3f11544c85..a4a784dccab0 100644 --- a/sw/source/writerfilter/dmapper/ConversionHelper.cxx +++ b/sw/source/writerfilter/dmapper/ConversionHelper.cxx @@ -16,6 +16,11 @@ * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ + +#include + +#include + #include "ConversionHelper.hxx" #include #include @@ -266,7 +271,7 @@ void MakeBorderLine( sal_Int32 nLineThickness, sal_Int32 nLineToken, double const fConverted( (SvxBorderLineStyle::NONE == nLineStyle) ? 0.0 : ::editeng::ConvertBorderWidthFromWord(nLineStyle, nLineThickness, nLineType)); - rToFill.LineWidth = convertTwipToMM100(fConverted); + rToFill.LineWidth = convertTwipToMm100_Limited(fConverted); rToFill.Color = nLineColor; } @@ -415,7 +420,7 @@ OUString ConvertMSFormatStringToSO( } -sal_Int32 convertTwipToMM100(sal_Int32 _t) +sal_Int32 convertTwipToMm100_Limited(sal_Int32 _t) { // It appears that MSO handles large twip values specially, probably legacy 16bit handling, // anything that's bigger than 32767 appears to be simply ignored. @@ -424,25 +429,20 @@ sal_Int32 convertTwipToMM100(sal_Int32 _t) return ::convertTwipToMm100( _t ); } -sal_Int32 convertTwipToMM100WithoutLimit(sal_Int32 _t) -{ - return ::convertTwipToMm100(_t); -} - -double convertTwipToMM100Double(sal_Int32 _t) +sal_Int32 convertTwipToMm100_LimitedRoundUp(sal_Int32 _t) { // It appears that MSO handles large twip values specially, probably legacy 16bit handling, // anything that's bigger than 32767 appears to be simply ignored. if( _t >= 0x8000 ) - return 0.0; - return o3tl::convert(_t, o3tl::Length::twip, o3tl::Length::mm100); + return 0; + return std::ceil(::convertTwipToMm100(_t)); } -sal_uInt32 convertTwipToMM100Unsigned(sal_Int32 _t) +sal_uInt32 convertTwipToMm100_LimitedUnsigned(sal_Int32 _t) { if( _t < 0 ) return 0; - return convertTwipToMM100( _t ); + return convertTwipToMm100_Limited(_t); } text::RubyAdjust convertRubyAlign( sal_Int32 nIntValue ) diff --git a/sw/source/writerfilter/dmapper/ConversionHelper.hxx b/sw/source/writerfilter/dmapper/ConversionHelper.hxx index c14c8033ea58..a4c67ce8d2b1 100644 --- a/sw/source/writerfilter/dmapper/ConversionHelper.hxx +++ b/sw/source/writerfilter/dmapper/ConversionHelper.hxx @@ -45,10 +45,9 @@ namespace writerfilter::dmapper::ConversionHelper{ //convert the number format string form MS format to SO format OUString ConvertMSFormatStringToSO(const OUString& rFormat, css::lang::Locale& rLocale, bool bHijri); // export just for test - SAL_DLLPUBLIC_EXPORT sal_Int32 convertTwipToMM100(sal_Int32 _t); - sal_Int32 convertTwipToMM100WithoutLimit(sal_Int32 _t); - double convertTwipToMM100Double(sal_Int32 _t); - SAL_DLLPUBLIC_EXPORT sal_uInt32 convertTwipToMM100Unsigned(sal_Int32 _t); + SAL_DLLPUBLIC_EXPORT sal_Int32 convertTwipToMm100_Limited(sal_Int32 _t); + sal_Int32 convertTwipToMm100_LimitedRoundUp(sal_Int32 _t); + SAL_DLLPUBLIC_EXPORT sal_uInt32 convertTwipToMm100_LimitedUnsigned(sal_Int32 _t); sal_Int16 convertTableJustification( sal_Int32 nIntValue ); css::text::RubyAdjust convertRubyAlign( sal_Int32 nIntValue ); sal_Int16 ConvertNumberingType(const sal_Int32 nFmt, const sal_Int16 nDefault = css::style::NumberingType::ARABIC); diff --git a/sw/source/writerfilter/dmapper/DomainMapper.cxx b/sw/source/writerfilter/dmapper/DomainMapper.cxx index 8e32f2e34569..6b60dd3bdffe 100644 --- a/sw/source/writerfilter/dmapper/DomainMapper.cxx +++ b/sw/source/writerfilter/dmapper/DomainMapper.cxx @@ -410,7 +410,7 @@ void DomainMapper::lcl_attribute(Id nName, Value & val) m_pImpl->m_aCurrentTabStop.FillChar = getFillCharFromValue(nIntValue); break; case NS_ooxml::LN_CT_TabStop_pos: - m_pImpl->m_aCurrentTabStop.Position = ConversionHelper::convertTwipToMM100(nIntValue); + m_pImpl->m_aCurrentTabStop.Position = ConversionHelper::convertTwipToMm100_Limited(nIntValue); break; case NS_ooxml::LN_CT_Fonts_ascii: @@ -480,14 +480,14 @@ void DomainMapper::lcl_attribute(Id nName, Value & val) // NS_ooxml::LN_CT_Spacing_before in parent styles before style // sheet support can be enabled. if (m_pImpl->GetTopContext() && !IsStyleSheetImport()) - m_pImpl->GetTopContext()->Insert(PROP_PARA_TOP_MARGIN, uno::Any(ConversionHelper::convertTwipToMM100(nIntValue * nSingleLineSpacing / 100)), false); + m_pImpl->GetTopContext()->Insert(PROP_PARA_TOP_MARGIN, uno::Any(ConversionHelper::convertTwipToMm100_Limited(nIntValue * nSingleLineSpacing / 100)), false); break; case NS_ooxml::LN_CT_Spacing_after: m_pImpl->appendGrabBag(m_pImpl->m_aSubInteropGrabBag, u"after"_ustr, OUString::number(nIntValue)); if (m_pImpl->GetTopContext()) { // Don't overwrite NS_ooxml::LN_CT_Spacing_afterAutospacing. - m_pImpl->GetTopContext()->Insert(PROP_PARA_BOTTOM_MARGIN, uno::Any( ConversionHelper::convertTwipToMM100( nIntValue ) ), false); + m_pImpl->GetTopContext()->Insert(PROP_PARA_BOTTOM_MARGIN, uno::Any( ConversionHelper::convertTwipToMm100_Limited( nIntValue ) ), false); uno::Any aContextualSpacingFromStyle = m_pImpl->GetPropertyFromParaStyleSheet(PROP_PARA_CONTEXT_MARGIN); if (aContextualSpacingFromStyle.hasValue()) @@ -502,7 +502,7 @@ void DomainMapper::lcl_attribute(Id nName, Value & val) // NS_ooxml::LN_CT_Spacing_after in parent styles before style // sheet support can be enabled. if (m_pImpl->GetTopContext() && !IsStyleSheetImport()) - m_pImpl->GetTopContext()->Insert(PROP_PARA_BOTTOM_MARGIN, uno::Any(ConversionHelper::convertTwipToMM100(nIntValue * nSingleLineSpacing / 100)), false); + m_pImpl->GetTopContext()->Insert(PROP_PARA_BOTTOM_MARGIN, uno::Any(ConversionHelper::convertTwipToMm100_Limited(nIntValue * nSingleLineSpacing / 100)), false); break; case NS_ooxml::LN_CT_Spacing_line: //91434 case NS_ooxml::LN_CT_Spacing_lineRule: //91435 @@ -518,7 +518,7 @@ void DomainMapper::lcl_attribute(Id nName, Value & val) { //default to single line spacing aSpacing.Mode = style::LineSpacingMode::FIX; - aSpacing.Height = sal_Int16(ConversionHelper::convertTwipToMM100( nSingleLineSpacing )); + aSpacing.Height = convertTwipToMm100(nSingleLineSpacing); } if( nName == NS_ooxml::LN_CT_Spacing_line ) { @@ -527,7 +527,7 @@ void DomainMapper::lcl_attribute(Id nName, Value & val) if( aSpacing.Mode == style::LineSpacingMode::PROP ) aSpacing.Height = sal_Int16(nIntValue * 100 / nSingleLineSpacing ); else - aSpacing.Height = sal_Int16(ConversionHelper::convertTwipToMM100( nIntValue )); + aSpacing.Height = sal_Int16(ConversionHelper::convertTwipToMm100_Limited( nIntValue )); } else //NS_ooxml::LN_CT_Spacing_lineRule: { @@ -539,7 +539,7 @@ void DomainMapper::lcl_attribute(Id nName, Value & val) { aSpacing.Mode = style::LineSpacingMode::PROP; //reinterpret the already set value - aSpacing.Height = sal_Int16( aSpacing.Height * 100 / ConversionHelper::convertTwipToMM100( nSingleLineSpacing )); + aSpacing.Height = sal_Int16( aSpacing.Height * 100 / ConversionHelper::convertTwipToMm100_Limited( nSingleLineSpacing )); } else { @@ -573,7 +573,7 @@ void DomainMapper::lcl_attribute(Id nName, Value & val) sal_Int32 nFirstLineIndent = m_pImpl->getCurrentNumberingProperty(u"FirstLineIndent"_ustr); sal_Int32 nIndentAt = m_pImpl->getCurrentNumberingProperty(u"IndentAt"_ustr); - sal_Int32 nParaLeftMargin = ConversionHelper::convertTwipToMM100(nIntValue); + sal_Int32 nParaLeftMargin = ConversionHelper::convertTwipToMm100_Limited(nIntValue); if (nParaLeftMargin != 0 && nIndentAt == nParaLeftMargin) // Avoid direct left margin when it's the same as from the // numbering. @@ -601,14 +601,14 @@ void DomainMapper::lcl_attribute(Id nName, Value & val) m_pImpl->GetTopContext()->Insert(PROP_PARA_LEFT_MARGIN, uno::Any(nParaLeftMargin), /*bOverwrite=*/false); m_pImpl->GetTopContext()->Insert( - PROP_PARA_RIGHT_MARGIN, uno::Any( ConversionHelper::convertTwipToMM100(nIntValue ) )); + PROP_PARA_RIGHT_MARGIN, uno::Any( ConversionHelper::convertTwipToMm100_Limited(nIntValue ) )); } m_pImpl->appendGrabBag(m_pImpl->m_aSubInteropGrabBag, u"right"_ustr, OUString::number(nIntValue)); break; case NS_ooxml::LN_CT_Ind_hanging: if (m_pImpl->GetTopContext()) { - sal_Int32 nValue = ConversionHelper::convertTwipToMM100( nIntValue ); + sal_Int32 nValue = ConversionHelper::convertTwipToMm100_Limited(nIntValue); m_pImpl->GetTopContext()->Insert( PROP_PARA_FIRST_LINE_INDENT, uno::Any( - nValue )); @@ -623,7 +623,7 @@ void DomainMapper::lcl_attribute(Id nName, Value & val) { sal_Int32 nFirstLineIndent = m_pImpl->getCurrentNumberingProperty(u"FirstLineIndent"_ustr); - sal_Int32 nParaFirstLineIndent = ConversionHelper::convertTwipToMM100(nIntValue); + sal_Int32 nParaFirstLineIndent = ConversionHelper::convertTwipToMm100_Limited(nIntValue); if (nParaFirstLineIndent != 0 && nFirstLineIndent == nParaFirstLineIndent) // Avoid direct first margin when it's the same as from the // numbering. @@ -667,7 +667,7 @@ void DomainMapper::lcl_attribute(Id nName, Value & val) break; case NS_ooxml::LN_CT_PageSz_h: { - sal_Int32 nHeight = ConversionHelper::convertTwipToMM100WithoutLimit(nIntValue); + sal_Int32 nHeight = convertTwipToMm100(nIntValue); CT_PageSz.h = PaperInfo::sloppyFitPageDimension(nHeight); } break; @@ -676,7 +676,7 @@ void DomainMapper::lcl_attribute(Id nName, Value & val) break; case NS_ooxml::LN_CT_PageSz_w: { - sal_Int32 nWidth = ConversionHelper::convertTwipToMM100WithoutLimit(nIntValue); + sal_Int32 nWidth = convertTwipToMm100(nIntValue); CT_PageSz.w = PaperInfo::sloppyFitPageDimension(nWidth); } break; @@ -759,43 +759,43 @@ void DomainMapper::lcl_attribute(Id nName, Value & val) // See SwWW8ImplReader::GetParagraphAutoSpace() on why these are 100 and 280 case NS_ooxml::LN_CT_Spacing_beforeAutospacing: { - sal_Int32 default_spacing = -1; + sal_Int32 default_spacing = convertTwipToMm100(-1); if (nIntValue) { m_pImpl->SetParaAutoBefore(true); - default_spacing = 100; + default_spacing = convertTwipToMm100(100); if (!m_pImpl->GetSettingsTable()->GetDoNotUseHTMLParagraphAutoSpacing()) { // 49 is just the old value that should be removed, once the // root cause in SwTabFrm::MakeAll() is fixed. if (m_pImpl->GetSettingsTable()->GetView() == NS_ooxml::LN_Value_doc_ST_View_web) - default_spacing = 49; + default_spacing = convertTwipToMm100(49); else - default_spacing = 280; + default_spacing = convertTwipToMm100(280); } // required at export (here mainly for StyleSheets) to determine if the setting has changed from grab_bag - m_pImpl->GetTopContext()->Insert(PROP_PARA_TOP_MARGIN, uno::Any(ConversionHelper::convertTwipToMM100(default_spacing))); + m_pImpl->GetTopContext()->Insert(PROP_PARA_TOP_MARGIN, uno::Any(default_spacing)); } - m_pImpl->GetTopContext()->Insert( PROP_PARA_TOP_MARGIN_BEFORE_AUTO_SPACING, uno::Any( ConversionHelper::convertTwipToMM100(default_spacing) ),true, PARA_GRAB_BAG ); + m_pImpl->GetTopContext()->Insert( PROP_PARA_TOP_MARGIN_BEFORE_AUTO_SPACING, uno::Any( default_spacing ),true, PARA_GRAB_BAG ); } break; case NS_ooxml::LN_CT_Spacing_afterAutospacing: { - sal_Int32 default_spacing = -1; + sal_Int32 default_spacing = convertTwipToMm100(-1); if (nIntValue) { - default_spacing = 100; + default_spacing = convertTwipToMm100(100); if (!m_pImpl->GetSettingsTable()->GetDoNotUseHTMLParagraphAutoSpacing()) { if (m_pImpl->GetSettingsTable()->GetView() == NS_ooxml::LN_Value_doc_ST_View_web) - default_spacing = 49; + default_spacing = convertTwipToMm100(49); else - default_spacing = 280; + default_spacing = convertTwipToMm100(280); } - m_pImpl->GetTopContext()->Insert(PROP_PARA_BOTTOM_MARGIN, uno::Any(ConversionHelper::convertTwipToMM100(default_spacing))); + m_pImpl->GetTopContext()->Insert(PROP_PARA_BOTTOM_MARGIN, uno::Any(default_spacing)); } - m_pImpl->GetTopContext()->Insert( PROP_PARA_BOTTOM_MARGIN_AFTER_AUTO_SPACING, uno::Any( ConversionHelper::convertTwipToMM100(default_spacing) ),true, PARA_GRAB_BAG ); + m_pImpl->GetTopContext()->Insert( PROP_PARA_BOTTOM_MARGIN_AFTER_AUTO_SPACING, uno::Any( default_spacing ),true, PARA_GRAB_BAG ); } break; case NS_ooxml::LN_CT_SmartTagRun_uri: @@ -906,7 +906,7 @@ void DomainMapper::lcl_attribute(Id nName, Value & val) break; case NS_ooxml::LN_CT_FramePr_x: pParaProperties->props().Setx( - ConversionHelper::convertTwipToMM100(nIntValue )); + ConversionHelper::convertTwipToMm100_Limited(nIntValue)); pParaProperties->props().SetxAlign( text::HoriOrientation::NONE ); break; case NS_ooxml::LN_CT_FramePr_xAlign: @@ -923,7 +923,7 @@ void DomainMapper::lcl_attribute(Id nName, Value & val) break; case NS_ooxml::LN_CT_FramePr_y: pParaProperties->props().Sety( - ConversionHelper::convertTwipToMM100(nIntValue )); + ConversionHelper::convertTwipToMm100_Limited(nIntValue)); pParaProperties->props().SetyAlign( text::VertOrientation::NONE ); break; case NS_ooxml::LN_CT_FramePr_yAlign: @@ -996,19 +996,19 @@ void DomainMapper::lcl_attribute(Id nName, Value & val) break; case NS_ooxml::LN_CT_FramePr_w: pParaProperties->props().Setw( - ConversionHelper::convertTwipToMM100(nIntValue)); + ConversionHelper::convertTwipToMm100_Limited(nIntValue)); break; case NS_ooxml::LN_CT_FramePr_h: pParaProperties->props().Seth( - ConversionHelper::convertTwipToMM100(nIntValue)); + ConversionHelper::convertTwipToMm100_Limited(nIntValue)); break; case NS_ooxml::LN_CT_FramePr_hSpace: pParaProperties->props().SethSpace( - ConversionHelper::convertTwipToMM100(nIntValue )); + ConversionHelper::convertTwipToMm100_Limited(nIntValue)); break; case NS_ooxml::LN_CT_FramePr_vSpace: pParaProperties->props().SetvSpace( - ConversionHelper::convertTwipToMM100(nIntValue )); + ConversionHelper::convertTwipToMm100_Limited(nIntValue)); break; default:; } @@ -1059,7 +1059,7 @@ void DomainMapper::lcl_attribute(Id nName, Value & val) pSectionContext->SetLnnMin( nIntValue ); break; case NS_ooxml::LN_CT_LineNumber_distance: - aSettings.nDistance = ConversionHelper::convertTwipToMM100( nIntValue ); + aSettings.nDistance = ConversionHelper::convertTwipToMm100_Limited(nIntValue); OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); if( pSectionContext ) pSectionContext->SetdxaLnn( nIntValue ); @@ -1087,7 +1087,7 @@ void DomainMapper::lcl_attribute(Id nName, Value & val) OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); if(pSectionContext) { - pSectionContext->SetGridLinePitch( ConversionHelper::convertTwipToMM100( nIntValue ) ); + pSectionContext->SetGridLinePitch( ConversionHelper::convertTwipToMm100_Limited( nIntValue ) ); } } break; @@ -2195,7 +2195,7 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, const PropertyMapPtr& rContext ) //Kerning half point values //TODO: there are two kerning values - // in ww8par6.cxx NS_sprm::LN_CHpsKern is used as boolean AutoKerning - sal_Int16 nResult = static_cast(ConversionHelper::convertTwipToMM100(nIntValue)); + sal_Int16 nResult = static_cast(ConversionHelper::convertTwipToMm100_Limited(nIntValue)); if (m_pImpl->IsInComments()) { nResult = static_cast(nIntValue); @@ -2280,7 +2280,7 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, const PropertyMapPtr& rContext ) case 165: { //page height, rounded to default values, default: 0x3dc0 twip - sal_Int32 nHeight = ConversionHelper::convertTwipToMM100( nIntValue ); + sal_Int32 nHeight = ConversionHelper::convertTwipToMm100_Limited(nIntValue); rContext->Insert( PROP_HEIGHT, uno::Any( PaperInfo::sloppyFitPageDimension( nHeight ) ) ); } break; @@ -2700,7 +2700,39 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, const PropertyMapPtr& rContext ) const OUString sConvertedStyleName = pStyleTable->ConvertStyleNameExt(sStringValue); m_pImpl->SetCurrentParaStyleName( sConvertedStyleName ); if (m_pImpl->GetTopContext() && m_pImpl->GetTopContextType() != CONTEXT_SECTION) + { m_pImpl->GetTopContext()->Insert( PROP_PARA_STYLE_NAME, uno::Any( sConvertedStyleName )); + + if (!m_pImpl->IsNewDoc()) + { + // Mark the paragraph style & its parent / follow as used. + pStyleTable->MarkParagraphStyleAsUsed(sConvertedStyleName); + + auto pStyle = pStyleTable->FindStyleSheetByConvertedStyleName(sConvertedStyleName); + if (pStyle) + { + if (!pStyle->m_sBaseStyleIdentifier.isEmpty()) + { + StyleSheetEntryPtr pParent = pStyleTable->FindStyleSheetByISTD(pStyle->m_sBaseStyleIdentifier); + if (pParent) + { + OUString sParent = StyleSheetTable::ConvertStyleName(pParent->m_sStyleName).first; + pStyleTable->MarkParagraphStyleAsUsed(sParent); + } + } + + if (!pStyle->m_sNextStyleIdentifier.isEmpty()) + { + StyleSheetEntryPtr pFollow = pStyleTable->FindStyleSheetByISTD(pStyle->m_sNextStyleIdentifier); + if (pFollow) + { + OUString sFollow = StyleSheetTable::ConvertStyleName(pFollow->m_sStyleName).first; + pStyleTable->MarkParagraphStyleAsUsed(sFollow); + } + } + } + } + } } break; case NS_ooxml::LN_EG_RPrBase_rStyle: @@ -5078,6 +5110,11 @@ OUString DomainMapper::GetUnusedCharacterStyleName() return m_pImpl->GetUnusedCharacterStyleName(); } +bool DomainMapper::IsNewDoc() const +{ + return m_pImpl->IsNewDoc(); +} + } //namespace writerfilter /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/writerfilter/dmapper/DomainMapper.hxx b/sw/source/writerfilter/dmapper/DomainMapper.hxx index ecd5c4459273..fb03a9a9fd8b 100644 --- a/sw/source/writerfilter/dmapper/DomainMapper.hxx +++ b/sw/source/writerfilter/dmapper/DomainMapper.hxx @@ -143,6 +143,7 @@ public: css::uno::Reference const & GetCharacterStyles(); OUString GetUnusedCharacterStyleName(); + bool IsNewDoc() const; private: // Stream diff --git a/sw/source/writerfilter/dmapper/DomainMapperTableManager.cxx b/sw/source/writerfilter/dmapper/DomainMapperTableManager.cxx index c38b6ae09e46..1ccdc5533645 100644 --- a/sw/source/writerfilter/dmapper/DomainMapperTableManager.cxx +++ b/sw/source/writerfilter/dmapper/DomainMapperTableManager.cxx @@ -621,7 +621,7 @@ void DomainMapperTableManager::endOfRowAction() } if (m_nTableWidth) // convert sum of grid twip values to 1/100 mm with rounding up to avoid table width loss - m_nTableWidth = static_cast(ceil(ConversionHelper::convertTwipToMM100Double(m_nTableWidth))); + m_nTableWidth = ConversionHelper::convertTwipToMm100_LimitedRoundUp(m_nTableWidth); if (m_nTableWidth > 0 && !m_bTableSizeTypeInserted) { @@ -780,7 +780,7 @@ void DomainMapperTableManager::endOfRowAction() * If table width property set earlier is smaller than the current table row width, * then replace the TABLE_WIDTH property, set earlier. */ - sal_Int32 nFullWidth = static_cast(ceil(ConversionHelper::convertTwipToMM100Double(nFullWidthRelative))); + sal_Int32 nFullWidth = ConversionHelper::convertTwipToMm100_LimitedRoundUp(nFullWidthRelative); sal_Int32 nTableWidth(0); sal_Int32 nTableWidthType(text::SizeType::VARIABLE); pTablePropMap->getValue(TablePropertyMap::TABLE_WIDTH, nTableWidth); diff --git a/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx b/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx index 47ef07610ca7..0f864625dc75 100644 --- a/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx +++ b/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx @@ -100,6 +100,7 @@ #include #include #include +#include #include #include #include @@ -435,6 +436,10 @@ DomainMapper_Impl::~DomainMapper_Impl() RemoveLastParagraph(); suppress_fun_call_w_exception(GetStyleSheetTable()->ApplyClonedTOCStyles()); } + else if (m_pStyleSheetTable) + { + m_pStyleSheetTable->RemoveUnusedParagraphStyles(); + } if (hasTableManager()) { getTableManager().endLevel(); @@ -2341,7 +2346,7 @@ void DomainMapper_Impl::finishParagraph( const PropertyMapPtr& pPropertyMap, con GetAnyProperty(PROP_PARA_TOP_MARGIN_BEFORE_AUTO_SPACING, pPropertyMap) >>= nBeforeAutospacing; // tdf#137655 only w:beforeAutospacing=0 was specified, but not PARA_TOP_MARGIN // (see default_spacing = -1 in processing of LN_CT_Spacing_beforeAutospacing) - if ( bNoTopmargin && nBeforeAutospacing == ConversionHelper::convertTwipToMM100(-1) ) + if (bNoTopmargin && nBeforeAutospacing == convertTwipToMm100(-1)) { sal_Int32 nStyleAuto = -1; GetPropertyFromParaStyleSheet(PROP_PARA_TOP_MARGIN_BEFORE_AUTO_SPACING) >>= nStyleAuto; @@ -2375,7 +2380,7 @@ void DomainMapper_Impl::finishParagraph( const PropertyMapPtr& pPropertyMap, con if (bIsAutoSet || bNoBottomMargin) { GetAnyProperty(PROP_PARA_BOTTOM_MARGIN_AFTER_AUTO_SPACING, pPropertyMap) >>= nAfterAutospacing; - if (bNoBottomMargin && nAfterAutospacing == ConversionHelper::convertTwipToMM100(-1)) + if (bNoBottomMargin && nAfterAutospacing == convertTwipToMm100(-1)) { sal_Int32 nStyleAuto = -1; GetPropertyFromParaStyleSheet(PROP_PARA_BOTTOM_MARGIN_AFTER_AUTO_SPACING) >>= nStyleAuto; @@ -3826,13 +3831,25 @@ void DomainMapper_Impl::PushPageHeaderFooter(PagePartType ePagePartType, PageTyp try { + // Note that the header property calls are very expensive, hence the need to check if the property needs + // setting before calling setPropertyValue. + // Turn on the headers - xPageStyle->setPropertyValue(getPropertyName(ePropIsOn), uno::Any(true)); + bool bPropIsOn = false; + xPageStyle->getPropertyValue(getPropertyName(ePropIsOn)) >>= bPropIsOn; + if (!bPropIsOn) + xPageStyle->setPropertyValue(getPropertyName(ePropIsOn), uno::Any(true)); // Set both sharing left and first to off so we can import the content regardless of what value // the "titlePage" or "evenAndOdd" flags are set (which decide what the sharing is set to in the document). - xPageStyle->setPropertyValue(getPropertyName(ePropShared), uno::Any(false)); - xPageStyle->setPropertyValue(getPropertyName(PROP_FIRST_IS_SHARED), uno::Any(false)); + bool bPropShared = false; + xPageStyle->getPropertyValue(getPropertyName(ePropShared)) >>= bPropShared; + if (bPropShared) + xPageStyle->setPropertyValue(getPropertyName(ePropShared), uno::Any(false)); + bool bFirstShared = false; + xPageStyle->getPropertyValue(getPropertyName(PROP_FIRST_IS_SHARED)) >>= bFirstShared; + if (bFirstShared) + xPageStyle->setPropertyValue(getPropertyName(PROP_FIRST_IS_SHARED), uno::Any(false)); if (eType == PageType::LEFT) { @@ -9441,7 +9458,7 @@ void DomainMapper_Impl::SetLineNumbering( sal_Int32 nLnnMod, sal_uInt32 nLnc, sa xProperties->setPropertyValue( getPropertyName( PROP_COUNT_EMPTY_LINES ), aTrue ); xProperties->setPropertyValue( getPropertyName( PROP_COUNT_LINES_IN_FRAMES ), uno::Any( false ) ); xProperties->setPropertyValue( getPropertyName( PROP_INTERVAL ), uno::Any( static_cast< sal_Int16 >( nLnnMod ))); - xProperties->setPropertyValue( getPropertyName( PROP_DISTANCE ), uno::Any( ConversionHelper::convertTwipToMM100(ndxaLnn) )); + xProperties->setPropertyValue( getPropertyName( PROP_DISTANCE ), uno::Any( ConversionHelper::convertTwipToMm100_Limited(ndxaLnn) )); xProperties->setPropertyValue( getPropertyName( PROP_NUMBER_POSITION ), uno::Any( style::LineNumberPosition::LEFT)); xProperties->setPropertyValue( getPropertyName( PROP_NUMBERING_TYPE ), uno::Any( style::NumberingType::ARABIC)); xProperties->setPropertyValue( getPropertyName( PROP_RESTART_AT_EACH_PAGE ), uno::Any( nLnc == NS_ooxml::LN_Value_ST_LineNumberRestart_newPage )); @@ -9460,7 +9477,7 @@ void DomainMapper_Impl::SetLineNumbering( sal_Int32 nLnnMod, sal_uInt32 nLnc, sa void DomainMapper_Impl::SetPageMarginTwip( PageMarElement eElement, sal_Int32 nValue ) { - nValue = ConversionHelper::convertTwipToMM100(nValue); + nValue = ConversionHelper::convertTwipToMm100_Limited(nValue); switch(eElement) { case PAGE_MAR_TOP : m_aPageMargins.top = nValue; break; @@ -9485,13 +9502,13 @@ void DomainMapper_Impl::SetPaperSource(PaperSourceElement eElement, sal_Int32 nV PageMar::PageMar() - : top(ConversionHelper::convertTwipToMM100( sal_Int32(1440))) + : top(convertTwipToMm100(1440)) // This is strange, the RTF spec says it's 1800, but it's clearly 1440 in Word // OOXML seems not to specify a default value - , right(ConversionHelper::convertTwipToMM100( sal_Int32(1440))) + , right(convertTwipToMm100(1440)) , bottom(top) , left(right) - , header(ConversionHelper::convertTwipToMM100(sal_Int32(720))) + , header(convertTwipToMm100(720)) , footer(header) , gutter(0) { @@ -9685,7 +9702,7 @@ void DomainMapper_Impl::ApplySettingsTable() if (m_pSettingsTable->GetLinkStyles()) { // If linked styles are enabled, set paragraph defaults from Word's default template - xTextDefaults->setPropertyValue(getPropertyName(PROP_PARA_BOTTOM_MARGIN), uno::Any(ConversionHelper::convertTwipToMM100(200))); + xTextDefaults->setPropertyValue(getPropertyName(PROP_PARA_BOTTOM_MARGIN), uno::Any(sal_Int32(convertTwipToMm100(200)))); style::LineSpacing aSpacing; aSpacing.Mode = style::LineSpacingMode::PROP; aSpacing.Height = sal_Int16(115); diff --git a/sw/source/writerfilter/dmapper/GraphicImport.cxx b/sw/source/writerfilter/dmapper/GraphicImport.cxx index b05e3f2334d5..d516d59c2120 100644 --- a/sw/source/writerfilter/dmapper/GraphicImport.cxx +++ b/sw/source/writerfilter/dmapper/GraphicImport.cxx @@ -795,12 +795,12 @@ void GraphicImport::lcl_attribute(Id nName, Value& rValue) } break; case NS_ooxml::LN_CT_Point2D_x: - m_pImpl->m_nLeftPosition = ConversionHelper::convertTwipToMM100(nIntValue); + m_pImpl->m_nLeftPosition = ConversionHelper::convertTwipToMm100_Limited(nIntValue); m_pImpl->m_nHoriRelation = text::RelOrientation::PAGE_FRAME; m_pImpl->m_nHoriOrient = text::HoriOrientation::NONE; break; case NS_ooxml::LN_CT_Point2D_y: - m_pImpl->m_nTopPosition = ConversionHelper::convertTwipToMM100(nIntValue); + m_pImpl->m_nTopPosition = ConversionHelper::convertTwipToMm100_Limited(nIntValue); m_pImpl->m_nVertRelation = text::RelOrientation::PAGE_FRAME; m_pImpl->m_nVertOrient = text::VertOrientation::NONE; break; @@ -1029,10 +1029,10 @@ void GraphicImport::lcl_attribute(Id nName, Value& rValue) if(pShape && pShape->IsGroupObject()) { tools::Rectangle aSnapRect = pShape->GetSnapRect(); // Twips - m_pImpl->m_nLeftPosition = ConversionHelper::convertTwipToMM100(aSnapRect.Left()); - m_pImpl->m_nTopPosition = ConversionHelper::convertTwipToMM100(aSnapRect.Top()); - aLOSize.Width = ConversionHelper::convertTwipToMM100(aSnapRect.getOpenWidth()); - aLOSize.Height = ConversionHelper::convertTwipToMM100(aSnapRect.getOpenHeight()); + m_pImpl->m_nLeftPosition = ConversionHelper::convertTwipToMm100_Limited(aSnapRect.Left()); + m_pImpl->m_nTopPosition = ConversionHelper::convertTwipToMm100_Limited(aSnapRect.Top()); + aLOSize.Width = ConversionHelper::convertTwipToMm100_Limited(aSnapRect.getOpenWidth()); + aLOSize.Height = ConversionHelper::convertTwipToMm100_Limited(aSnapRect.getOpenHeight()); } else { @@ -1097,10 +1097,10 @@ void GraphicImport::lcl_attribute(Id nName, Value& rValue) if (pShape) { tools::Rectangle aSnapRect = pShape->GetSnapRect(); // Twip - aLOSnapRect.X = ConversionHelper::convertTwipToMM100(aSnapRect.Left()); - aLOSnapRect.Y = ConversionHelper::convertTwipToMM100(aSnapRect.Top()); - aLOSnapRect.Width = ConversionHelper::convertTwipToMM100(aSnapRect.getOpenWidth()); - aLOSnapRect.Height = ConversionHelper::convertTwipToMM100(aSnapRect.getOpenHeight()); + aLOSnapRect.X = ConversionHelper::convertTwipToMm100_Limited(aSnapRect.Left()); + aLOSnapRect.Y = ConversionHelper::convertTwipToMm100_Limited(aSnapRect.Top()); + aLOSnapRect.Width = ConversionHelper::convertTwipToMm100_Limited(aSnapRect.getOpenWidth()); + aLOSnapRect.Height = ConversionHelper::convertTwipToMm100_Limited(aSnapRect.getOpenHeight()); } m_pImpl->m_nLeftMargin += aLOSnapRect.X - aMSOBaseLeftTop.X; @@ -1139,10 +1139,10 @@ void GraphicImport::lcl_attribute(Id nName, Value& rValue) if (pShape) { tools::Rectangle aBoundRect = pShape->GetCurrentBoundRect(); // Twip - aLOBoundRect.X = ConversionHelper::convertTwipToMM100(aBoundRect.Left()); - aLOBoundRect.Y = ConversionHelper::convertTwipToMM100(aBoundRect.Top()); - aLOBoundRect.Width = ConversionHelper::convertTwipToMM100(aBoundRect.getOpenWidth()); - aLOBoundRect.Height = ConversionHelper::convertTwipToMM100(aBoundRect.getOpenHeight()); + aLOBoundRect.X = ConversionHelper::convertTwipToMm100_Limited(aBoundRect.Left()); + aLOBoundRect.Y = ConversionHelper::convertTwipToMm100_Limited(aBoundRect.Top()); + aLOBoundRect.Width = ConversionHelper::convertTwipToMm100_Limited(aBoundRect.getOpenWidth()); + aLOBoundRect.Height = ConversionHelper::convertTwipToMm100_Limited(aBoundRect.getOpenHeight()); } m_pImpl->m_nLeftMargin += aLOBoundRect.X - aMSOBaseLeftTop.X; diff --git a/sw/source/writerfilter/dmapper/MeasureHandler.cxx b/sw/source/writerfilter/dmapper/MeasureHandler.cxx index 85aae7602732..63b719b790f5 100644 --- a/sw/source/writerfilter/dmapper/MeasureHandler.cxx +++ b/sw/source/writerfilter/dmapper/MeasureHandler.cxx @@ -109,7 +109,7 @@ sal_Int32 MeasureHandler::getMeasureValue() const // TODO m_nUnit 3 - twip, other values unknown :-( if( m_nUnit == 3 || sal::static_int_cast(m_nUnit) == NS_ooxml::LN_Value_ST_TblWidth_dxa) { - nRet = ConversionHelper::convertTwipToMM100( m_nMeasureValue ); + nRet = ConversionHelper::convertTwipToMm100_Limited(m_nMeasureValue); } //todo: handle additional width types: //NS_ooxml::LN_Value_ST_TblWidth_nil, NS_ooxml::LN_Value_ST_TblWidth_pct, diff --git a/sw/source/writerfilter/dmapper/NumberingManager.cxx b/sw/source/writerfilter/dmapper/NumberingManager.cxx index 6147af5e0228..726ba50dbdc0 100644 --- a/sw/source/writerfilter/dmapper/NumberingManager.cxx +++ b/sw/source/writerfilter/dmapper/NumberingManager.cxx @@ -421,7 +421,8 @@ ListDef::~ListDef( ) } const OUString & ListDef::GetStyleName(sal_Int32 const nId, - uno::Reference const& xStyles) + uno::Reference const& xStyles, + DomainMapper& rDMapper) { if (xStyles.is()) { @@ -429,6 +430,12 @@ const OUString & ListDef::GetStyleName(sal_Int32 const nId, while (xStyles->hasByName(sStyleName)) // unique { + if (!rDMapper.IsNewDoc()) + { + // When pasting, don't rename our style, just use the existing one. + break; + } + sStyleName += "a"; } @@ -538,12 +545,24 @@ void ListDef::CreateNumberingRules( DomainMapper& rDMapper, try { // Create the numbering style + bool bUpdate = true; if (GetId() == nOutline) m_StyleName = "Outline"; //SwNumRule.GetOutlineRuleName() else - xStyles->insertByName( - GetStyleName(GetId(), xStyles), - css::uno::Any(uno::Reference(xTextDoc->createNumberingStyle()))); + { + OUString aStyleName = GetStyleName(GetId(), xStyles, rDMapper); + if (xStyles->hasByName(aStyleName) && !rDMapper.IsNewDoc()) + { + // When pasting, don't update existing styles. + bUpdate = false; + } + else + { + xStyles->insertByName( + aStyleName, + css::uno::Any(uno::Reference(xTextDoc->createNumberingStyle()))); + } + } uno::Any oStyle = xStyles->getByName(GetStyleName()); uno::Reference< beans::XPropertySet > xStyle( oStyle, uno::UNO_QUERY_THROW ); @@ -551,6 +570,12 @@ void ListDef::CreateNumberingRules( DomainMapper& rDMapper, // Get the default OOo Numbering style rules uno::Any aRules = xStyle->getPropertyValue( getPropertyName( PROP_NUMBERING_RULES ) ); aRules >>= m_xNumRules; + if (!bUpdate) + { + // If it was requested that we don't update existing styles, we fetched the numbering + // rules, don't modify them. + return; + } uno::Sequence> aProps = GetMergedPropertyValues(); @@ -755,17 +780,17 @@ void ListsManager::lcl_attribute( Id nName, Value& rVal ) case NS_ooxml::LN_CT_Ind_left: if ( pCurrentLvl ) pCurrentLvl->Insert( - PROP_INDENT_AT, uno::Any( ConversionHelper::convertTwipToMM100( nIntValue ) )); + PROP_INDENT_AT, uno::Any( ConversionHelper::convertTwipToMm100_Limited( nIntValue ) )); break; case NS_ooxml::LN_CT_Ind_hanging: if ( pCurrentLvl ) pCurrentLvl->Insert( - PROP_FIRST_LINE_INDENT, uno::Any( - ConversionHelper::convertTwipToMM100( nIntValue ) )); + PROP_FIRST_LINE_INDENT, uno::Any( - ConversionHelper::convertTwipToMm100_Limited( nIntValue ) )); break; case NS_ooxml::LN_CT_Ind_firstLine: if ( pCurrentLvl ) pCurrentLvl->Insert( - PROP_FIRST_LINE_INDENT, uno::Any( ConversionHelper::convertTwipToMM100( nIntValue ) )); + PROP_FIRST_LINE_INDENT, uno::Any( ConversionHelper::convertTwipToMm100_Limited( nIntValue ) )); break; case NS_ooxml::LN_CT_Lvl_tplc: //template code - unsupported case NS_ooxml::LN_CT_Lvl_tentative: //marks level as unused in the document - unsupported @@ -775,7 +800,7 @@ void ListsManager::lcl_attribute( Id nName, Value& rVal ) //no paragraph attributes in ListTable char style sheets if ( pCurrentLvl ) pCurrentLvl->SetValue( nName, - ConversionHelper::convertTwipToMM100( nIntValue ) ); + ConversionHelper::convertTwipToMm100_Limited( nIntValue ) ); } break; case NS_ooxml::LN_CT_TabStop_val: diff --git a/sw/source/writerfilter/dmapper/NumberingManager.hxx b/sw/source/writerfilter/dmapper/NumberingManager.hxx index 36571bc87ec4..767b6b5d60e9 100644 --- a/sw/source/writerfilter/dmapper/NumberingManager.hxx +++ b/sw/source/writerfilter/dmapper/NumberingManager.hxx @@ -189,7 +189,7 @@ public: // Mapping functions const OUString & GetStyleName() const { return m_StyleName; }; - const OUString & GetStyleName(sal_Int32 nId, css::uno::Reference const& xStyles); + const OUString & GetStyleName(sal_Int32 nId, css::uno::Reference const& xStyles, DomainMapper& rDMapper); css::uno::Sequence< css::uno::Sequence > GetMergedPropertyValues(); diff --git a/sw/source/writerfilter/dmapper/PropertyMap.cxx b/sw/source/writerfilter/dmapper/PropertyMap.cxx index 3d071ff427bd..3eeaf79ce4f8 100644 --- a/sw/source/writerfilter/dmapper/PropertyMap.cxx +++ b/sw/source/writerfilter/dmapper/PropertyMap.cxx @@ -535,12 +535,21 @@ void SectionPropertyMap::setHeaderFooterProperties(DomainMapper_Impl& rDM_Impl) bool bHasHeader = false; bool bHasFooter = false; + bool bHeaderIsShared = false; + bool bFooterIsShared = false; + bool bFirstIsShared = false; const OUString& sHeaderIsOn = getPropertyName(PROP_HEADER_IS_ON); const OUString& sFooterIsOn = getPropertyName(PROP_FOOTER_IS_ON); + const OUString& sHeaderIsShared = getPropertyName(PROP_HEADER_IS_SHARED); + const OUString& sFooterIsShared = getPropertyName(PROP_FOOTER_IS_SHARED); + const OUString& sFirstIsShared = getPropertyName(PROP_FIRST_IS_SHARED); m_aPageStyle->getPropertyValue(sHeaderIsOn) >>= bHasHeader; m_aPageStyle->getPropertyValue(sFooterIsOn) >>= bHasFooter; + m_aPageStyle->getPropertyValue(sHeaderIsShared) >>= bHeaderIsShared; + m_aPageStyle->getPropertyValue(sFooterIsShared) >>= bFooterIsShared; + m_aPageStyle->getPropertyValue(sFirstIsShared) >>= bFirstIsShared; bool bEvenAndOdd = rDM_Impl.GetSettingsTable()->GetEvenAndOddHeaders(); @@ -576,9 +585,12 @@ void SectionPropertyMap::setHeaderFooterProperties(DomainMapper_Impl& rDM_Impl) SectionPropertyMap::removeXTextContent(xText); } - m_aPageStyle->setPropertyValue(getPropertyName(PROP_HEADER_IS_SHARED), uno::Any(!bEvenAndOdd)); - m_aPageStyle->setPropertyValue(getPropertyName(PROP_FOOTER_IS_SHARED), uno::Any(!bEvenAndOdd)); - m_aPageStyle->setPropertyValue(getPropertyName(PROP_FIRST_IS_SHARED), uno::Any(!m_bTitlePage)); + if ( bHeaderIsShared != !bEvenAndOdd ) + m_aPageStyle->setPropertyValue(sHeaderIsShared, uno::Any(!bEvenAndOdd)); + if ( bFooterIsShared != !bEvenAndOdd ) + m_aPageStyle->setPropertyValue(sFooterIsShared, uno::Any(!bEvenAndOdd)); + if ( bFirstIsShared != !m_bTitlePage ) + m_aPageStyle->setPropertyValue(sFirstIsShared, uno::Any(!m_bTitlePage)); bool bHadFirstHeader = m_bHadFirstHeader && m_bTitlePage; if (bHasHeader && !bHadFirstHeader && !m_bHadLeftHeader && !m_bHadRightHeader && rDM_Impl.IsNewDoc()) @@ -1813,7 +1825,7 @@ void SectionPropertyMap::CloseSectionGroup( DomainMapper_Impl& rDM_Impl ) { double fHeight = 0; if ( pPropHeight->second >>= fHeight ) - nCharWidth = ConversionHelper::convertTwipToMM100( static_cast(fHeight * 20.0 + 0.5) ); + nCharWidth = ConversionHelper::convertTwipToMm100_Limited( static_cast(fHeight * 20.0 + 0.5) ); } } @@ -1824,11 +1836,11 @@ void SectionPropertyMap::CloseSectionGroup( DomainMapper_Impl& rDM_Impl ) //main lives in top 20 bits, and is signed. sal_Int32 nMain = (nCharSpace & 0xFFFFF000); nMain /= 0x1000; - nCharWidth += ConversionHelper::convertTwipToMM100( nMain * 20 ); + nCharWidth += ConversionHelper::convertTwipToMm100_Limited(nMain * 20); sal_Int32 nFraction = (nCharSpace & 0x00000FFF); nFraction = (nFraction * 20) / 0xFFF; - nCharWidth += ConversionHelper::convertTwipToMM100( nFraction ); + nCharWidth += ConversionHelper::convertTwipToMm100_Limited(nFraction); } if ( m_nPageNumberType >= 0 ) diff --git a/sw/source/writerfilter/dmapper/SectionColumnHandler.cxx b/sw/source/writerfilter/dmapper/SectionColumnHandler.cxx index 9fed9c34a68e..363eee499d62 100644 --- a/sw/source/writerfilter/dmapper/SectionColumnHandler.cxx +++ b/sw/source/writerfilter/dmapper/SectionColumnHandler.cxx @@ -46,7 +46,7 @@ void SectionColumnHandler::lcl_attribute(Id rName, Value& rVal) m_bEqualWidth = (nIntValue != 0); break; case NS_ooxml::LN_CT_Columns_space: - m_nSpace = ConversionHelper::convertTwipToMM100(nIntValue); + m_nSpace = ConversionHelper::convertTwipToMm100_Limited(nIntValue); break; case NS_ooxml::LN_CT_Columns_num: m_nNum = nIntValue; @@ -56,10 +56,10 @@ void SectionColumnHandler::lcl_attribute(Id rName, Value& rVal) break; case NS_ooxml::LN_CT_Column_w: - m_aTempColumn.nWidth = ConversionHelper::convertTwipToMM100(nIntValue); + m_aTempColumn.nWidth = ConversionHelper::convertTwipToMm100_Limited(nIntValue); break; case NS_ooxml::LN_CT_Column_space: - m_aTempColumn.nSpace = ConversionHelper::convertTwipToMM100(nIntValue); + m_aTempColumn.nSpace = ConversionHelper::convertTwipToMm100_Limited(nIntValue); break; default: OSL_FAIL("SectionColumnHandler: unknown attribute"); diff --git a/sw/source/writerfilter/dmapper/SettingsTable.cxx b/sw/source/writerfilter/dmapper/SettingsTable.cxx index fa67518ced65..dcf42d370371 100644 --- a/sw/source/writerfilter/dmapper/SettingsTable.cxx +++ b/sw/source/writerfilter/dmapper/SettingsTable.cxx @@ -468,7 +468,7 @@ void SettingsTable::lcl_entry(const writerfilter::Reference::Pointer //returns default TabStop in 1/100th mm int SettingsTable::GetDefaultTabStop() const { - return ConversionHelper::convertTwipToMM100( m_pImpl->m_nDefaultTabStop ); + return ConversionHelper::convertTwipToMm100_Limited(m_pImpl->m_nDefaultTabStop); } bool SettingsTable::GetLinkStyles() const diff --git a/sw/source/writerfilter/dmapper/StyleSheetTable.cxx b/sw/source/writerfilter/dmapper/StyleSheetTable.cxx index 29f50ecbcf66..5c259de5ff38 100644 --- a/sw/source/writerfilter/dmapper/StyleSheetTable.cxx +++ b/sw/source/writerfilter/dmapper/StyleSheetTable.cxx @@ -285,6 +285,8 @@ struct StyleSheetTable_Impl std::vector< ListCharStylePropertyMap_t > m_aListCharStylePropertyVector; bool m_bHasImportedDefaultParaProps; bool m_bIsNewDoc; + std::set m_aInsertedParagraphStyles; + std::set m_aUsedParagraphStyles; StyleSheetTable_Impl(DomainMapper& rDMapper, rtl::Reference xTextDocument, bool bIsNewDoc); @@ -1422,6 +1424,13 @@ void StyleSheetTable::ApplyStyleSheetsImpl(const FontTablePtr& rFontTable, std:: aMissingParent.emplace_back( sParentStyle, xStyle ); xStyles->insertByName( sConvertedStyleName, uno::Any( xStyle) ); + + if (!m_pImpl->m_bIsNewDoc && bParaStyle) + { + // Remember the inserted style, which may or may not be referred during + // pasting content. + m_pImpl->m_aInsertedParagraphStyles.insert(sConvertedStyleName); + } } beans::PropertyValues aGrabBag = pEntry->GetInteropGrabBagSeq(); @@ -2165,6 +2174,27 @@ OUString StyleSheetTable::getOrCreateCharStyle( PropertyValueVector_t& rCharProp return sListLabel; } +void StyleSheetTable::MarkParagraphStyleAsUsed(const OUString& rName) +{ + m_pImpl->m_aUsedParagraphStyles.insert(rName); +} + +void StyleSheetTable::RemoveUnusedParagraphStyles() +{ + uno::Reference< container::XNameAccess > xStyleFamilies = m_pImpl->m_xTextDocument->getStyleFamilies(); + uno::Reference xParaStyles; + xStyleFamilies->getByName(getPropertyName(PROP_PARAGRAPH_STYLES)) >>= xParaStyles; + for (const auto& rName : m_pImpl->m_aInsertedParagraphStyles) + { + if (m_pImpl->m_aUsedParagraphStyles.contains(rName)) + { + continue; + } + + xParaStyles->removeByName(rName); + } +} + }//namespace writerfilter /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/writerfilter/dmapper/StyleSheetTable.hxx b/sw/source/writerfilter/dmapper/StyleSheetTable.hxx index d388032cdb46..fc2d2a0ba8fa 100644 --- a/sw/source/writerfilter/dmapper/StyleSheetTable.hxx +++ b/sw/source/writerfilter/dmapper/StyleSheetTable.hxx @@ -114,6 +114,10 @@ public: const StyleSheetEntryPtr & GetCurrentEntry() const; + void MarkParagraphStyleAsUsed(const OUString& rName); + /// In case of pasting, removes unused paragraph styles, inserted during the paste. + void RemoveUnusedParagraphStyles(); + private: // Properties virtual void lcl_attribute(Id Name, Value & val) override; diff --git a/sw/source/writerfilter/dmapper/TablePositionHandler.cxx b/sw/source/writerfilter/dmapper/TablePositionHandler.cxx index 97b531d2f9af..176dea0a877f 100644 --- a/sw/source/writerfilter/dmapper/TablePositionHandler.cxx +++ b/sw/source/writerfilter/dmapper/TablePositionHandler.cxx @@ -80,12 +80,14 @@ uno::Sequence TablePositionHandler::getTablePosition() con aFrameProperties[u"TopBorderDistance"_ustr] <<= sal_Int32(0); aFrameProperties[u"BottomBorderDistance"_ustr] <<= sal_Int32(0); - aFrameProperties[u"LeftMargin"_ustr] <<= ConversionHelper::convertTwipToMM100(m_nLeftFromText); + aFrameProperties[u"LeftMargin"_ustr] + <<= ConversionHelper::convertTwipToMm100_Limited(m_nLeftFromText); aFrameProperties[u"RightMargin"_ustr] - <<= ConversionHelper::convertTwipToMM100(m_nRightFromText); - aFrameProperties[u"TopMargin"_ustr] <<= ConversionHelper::convertTwipToMM100(m_nTopFromText); + <<= ConversionHelper::convertTwipToMm100_Limited(m_nRightFromText); + aFrameProperties[u"TopMargin"_ustr] + <<= ConversionHelper::convertTwipToMm100_Limited(m_nTopFromText); aFrameProperties[u"BottomMargin"_ustr] - <<= ConversionHelper::convertTwipToMM100(m_nBottomFromText); + <<= ConversionHelper::convertTwipToMm100_Limited(m_nBottomFromText); table::BorderLine2 aEmptyBorder; aFrameProperties[u"TopBorder"_ustr] <<= aEmptyBorder; @@ -116,7 +118,8 @@ uno::Sequence TablePositionHandler::getTablePosition() con aFrameProperties[u"HoriOrient"_ustr] <<= nHoriOrient; aFrameProperties[u"HoriOrientRelation"_ustr] <<= nHoriOrientRelation; - aFrameProperties[u"HoriOrientPosition"_ustr] <<= ConversionHelper::convertTwipToMM100(m_nX); + aFrameProperties[u"HoriOrientPosition"_ustr] + <<= ConversionHelper::convertTwipToMm100_Limited(m_nX); // Vertical positioning sal_Int16 nVertOrient = text::VertOrientation::NONE; @@ -138,7 +141,8 @@ uno::Sequence TablePositionHandler::getTablePosition() con aFrameProperties[u"VertOrient"_ustr] <<= nVertOrient; aFrameProperties[u"VertOrientRelation"_ustr] <<= nVertOrientRelation; - aFrameProperties[u"VertOrientPosition"_ustr] <<= ConversionHelper::convertTwipToMM100(m_nY); + aFrameProperties[u"VertOrientPosition"_ustr] + <<= ConversionHelper::convertTwipToMm100_Limited(m_nY); aFrameProperties[u"FillTransparence"_ustr] <<= sal_Int32(100); if (m_nTableOverlap == NS_ooxml::LN_Value_ST_TblOverlap_never) diff --git a/sw/source/writerfilter/dmapper/WrapPolygonHandler.cxx b/sw/source/writerfilter/dmapper/WrapPolygonHandler.cxx index 319fae5c4cb0..96d39fb4892f 100644 --- a/sw/source/writerfilter/dmapper/WrapPolygonHandler.cxx +++ b/sw/source/writerfilter/dmapper/WrapPolygonHandler.cxx @@ -17,6 +17,10 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include + +#include + #include #include #include @@ -75,7 +79,7 @@ WrapPolygon::Pointer_t WrapPolygon::move(const awt::Point & rPoint) const return pResult; } -WrapPolygon::Pointer_t WrapPolygon::scale(const Fraction & rFractionX, const Fraction & rFractionY) const +WrapPolygon::Pointer_t WrapPolygon::scale(double scaleX, double scaleY) const { WrapPolygon::Pointer_t pResult(new WrapPolygon); @@ -84,7 +88,7 @@ WrapPolygon::Pointer_t WrapPolygon::scale(const Fraction & rFractionX, const Fra while (aIt != aItEnd) { - awt::Point aPoint((Fraction(tools::Long(aIt->X)) * rFractionX).operator long(), (Fraction(tools::Long(aIt->Y)) * rFractionY).operator long()); + awt::Point aPoint(std::round(aIt->X * scaleX), std::round(aIt->Y * scaleY)); pResult->addPoint(aPoint); ++aIt; } @@ -96,20 +100,15 @@ WrapPolygon::Pointer_t WrapPolygon::correctWordWrapPolygon(const awt::Size & rSr { WrapPolygon::Pointer_t pResult; - const tools::Long nWrap100Percent = 21600; + const double nWrap100Percent = 21600; - Fraction aMove(nWrap100Percent, rSrcSize.Width); - aMove = aMove * Fraction(convertTwipToMm100(15), 1); - awt::Point aMovePoint(aMove.operator long(), 0); + double nMove(convertTwipToMm100(nWrap100Percent * 15) / rSrcSize.Width); + awt::Point aMovePoint(std::round(nMove), 0); pResult = move(aMovePoint); - Fraction aScaleX = nWrap100Percent / (nWrap100Percent + aMove); - Fraction aScaleY = nWrap100Percent / (nWrap100Percent - aMove); - pResult = pResult->scale(aScaleX, aScaleY); - - Fraction aScaleSrcX(rSrcSize.Width, nWrap100Percent); - Fraction aScaleSrcY(rSrcSize.Height, nWrap100Percent); - pResult = pResult->scale(aScaleSrcX, aScaleSrcY); + double nScaleX = rSrcSize.Width / (nWrap100Percent + nMove); + double nScaleY = rSrcSize.Height / (nWrap100Percent - nMove); + pResult = pResult->scale(nScaleX, nScaleY); return pResult; } @@ -128,10 +127,10 @@ WrapPolygon::Pointer_t WrapPolygon::correctWordWrapPolygonPixel(const awt::Size * polygon units to fit the size of the image. The 21600 value is a legacy * artifact from the drawing layer of early versions of Microsoft Office. */ - const tools::Long nWrap100Percent = 21600; + const double nWrap100Percent = 21600; - Fraction aScaleX(rSrcSize.Width, nWrap100Percent); - Fraction aScaleY(rSrcSize.Height, nWrap100Percent); + double aScaleX(rSrcSize.Width / nWrap100Percent); + double aScaleY(rSrcSize.Height / nWrap100Percent); pResult = scale(aScaleX, aScaleY); return pResult; @@ -142,10 +141,10 @@ WrapPolygon::Pointer_t WrapPolygon::correctCrop(const awt::Size& rGraphicSize, { WrapPolygon::Pointer_t pResult; - Fraction aScaleX(rGraphicSize.Width - rGraphicCrop.Left - rGraphicCrop.Right, - rGraphicSize.Width); - Fraction aScaleY(rGraphicSize.Height - rGraphicCrop.Top - rGraphicCrop.Bottom, - rGraphicSize.Height); + double aScaleX(double(rGraphicSize.Width - rGraphicCrop.Left - rGraphicCrop.Right) + / rGraphicSize.Width); + double aScaleY(double(rGraphicSize.Height - rGraphicCrop.Top - rGraphicCrop.Bottom) + / rGraphicSize.Height); pResult = scale(aScaleX, aScaleY); awt::Point aMove(rGraphicCrop.Left, rGraphicCrop.Top); diff --git a/sw/source/writerfilter/dmapper/WrapPolygonHandler.hxx b/sw/source/writerfilter/dmapper/WrapPolygonHandler.hxx index 8d3e1a3d8493..5af555682fdf 100644 --- a/sw/source/writerfilter/dmapper/WrapPolygonHandler.hxx +++ b/sw/source/writerfilter/dmapper/WrapPolygonHandler.hxx @@ -21,7 +21,6 @@ #include #include "LoggedResources.hxx" -#include #include namespace com::sun::star::text @@ -51,7 +50,7 @@ public: Points_t::const_iterator end() const; WrapPolygon::Pointer_t move(const css::awt::Point& rMove) const; - WrapPolygon::Pointer_t scale(const Fraction& rFractionX, const Fraction& rFractionY) const; + WrapPolygon::Pointer_t scale(double scaleX, double scaleY) const; WrapPolygon::Pointer_t correctWordWrapPolygon(const css::awt::Size& rSrcSize) const; WrapPolygon::Pointer_t correctWordWrapPolygonPixel(const css::awt::Size& rSrcSize) const; WrapPolygon::Pointer_t correctCrop(const css::awt::Size& rGraphicSize, diff --git a/sw/source/writerfilter/ooxml/OOXMLStreamImpl.cxx b/sw/source/writerfilter/ooxml/OOXMLStreamImpl.cxx index aa2567ad53b2..6ca6bb85a10b 100644 --- a/sw/source/writerfilter/ooxml/OOXMLStreamImpl.cxx +++ b/sw/source/writerfilter/ooxml/OOXMLStreamImpl.cxx @@ -122,7 +122,7 @@ bool OOXMLStreamImpl::lcl_getTarget(const uno::Reference xFac = uri::UriReferenceFactory::create(mxContext); - // use '/' to representent the root of the zip package ( and provide a 'file' scheme to + // use '/' to represent the root of the zip package ( and provide a 'file' scheme to // keep the XUriReference implementation happy ) // add mspath to represent the 'source' of this stream uno::Reference xBase = xFac->parse("file:///" + msPath); diff --git a/sw/uiconfig/swriter/ui/addentrydialog.ui b/sw/uiconfig/swriter/ui/addentrydialog.ui index 28d99dc2adb1..0e7b7b46e4ca 100644 --- a/sw/uiconfig/swriter/ui/addentrydialog.ui +++ b/sw/uiconfig/swriter/ui/addentrydialog.ui @@ -1,35 +1,32 @@ - + - False - 6 + False + 6 Add Element True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -42,8 +39,8 @@ _Cancel True - True - True + True + True True @@ -56,8 +53,8 @@ _Help True - True - True + True + True True @@ -70,33 +67,33 @@ False True - end + end 0 True - False + False True True - 0 - none + 0 + none True - True + True start - True 12 - True 6 + True + True True - False + False Element Name diff --git a/sw/uiconfig/swriter/ui/addressfragment.ui b/sw/uiconfig/swriter/ui/addressfragment.ui index 48496cc02625..ae7d1013b9a3 100644 --- a/sw/uiconfig/swriter/ui/addressfragment.ui +++ b/sw/uiconfig/swriter/ui/addressfragment.ui @@ -1,22 +1,22 @@ - + True - True + True True False - True + True + 14 True - 14 True - False + False end - True - entry + True + entry 0 diff --git a/sw/uiconfig/swriter/ui/asksearchdialog.ui b/sw/uiconfig/swriter/ui/asksearchdialog.ui index 78f1f73c6070..c1aab825b9b6 100644 --- a/sw/uiconfig/swriter/ui/asksearchdialog.ui +++ b/sw/uiconfig/swriter/ui/asksearchdialog.ui @@ -1,30 +1,30 @@ - + - False + False False True - dialog - True - question + dialog + True + question To proceed with this action, you must first turn off the "undo" function. Do you want to turn off the "undo" function? - False + False vertical 24 - False + False _No True - True - True - True + True + True + True False @@ -36,11 +36,11 @@ _Yes True - True - True - True - True - True + True + True + True + True + True False @@ -52,8 +52,8 @@ _Cancel True - True - True + True + True True @@ -66,7 +66,7 @@ False True - end + end 0 diff --git a/sw/uiconfig/swriter/ui/assignfragment.ui b/sw/uiconfig/swriter/ui/assignfragment.ui index 3d3598386f5d..77689bcb00d4 100644 --- a/sw/uiconfig/swriter/ui/assignfragment.ui +++ b/sw/uiconfig/swriter/ui/assignfragment.ui @@ -1,22 +1,22 @@ - + - - True - False - True - combobox - 0 - True - False + False True + + True + False + True + combobox + 0 + True - False + False 0 diff --git a/sw/uiconfig/swriter/ui/bibliofragment.ui b/sw/uiconfig/swriter/ui/bibliofragment.ui index 5ad84876f4e7..d3ea6b2b4426 100644 --- a/sw/uiconfig/swriter/ui/bibliofragment.ui +++ b/sw/uiconfig/swriter/ui/bibliofragment.ui @@ -166,4 +166,4 @@ - \ No newline at end of file + diff --git a/sw/uiconfig/swriter/ui/bulletsandnumbering.ui b/sw/uiconfig/swriter/ui/bulletsandnumbering.ui index 938aee878355..2d96992cc5fd 100644 --- a/sw/uiconfig/swriter/ui/bulletsandnumbering.ui +++ b/sw/uiconfig/swriter/ui/bulletsandnumbering.ui @@ -281,4 +281,4 @@ help - \ No newline at end of file + diff --git a/sw/uiconfig/swriter/ui/cannotsavelabeldialog.ui b/sw/uiconfig/swriter/ui/cannotsavelabeldialog.ui index 4a0173d6ea34..0cbea2f23a19 100644 --- a/sw/uiconfig/swriter/ui/cannotsavelabeldialog.ui +++ b/sw/uiconfig/swriter/ui/cannotsavelabeldialog.ui @@ -32,4 +32,4 @@ - \ No newline at end of file + diff --git a/sw/uiconfig/swriter/ui/captiondialog.ui b/sw/uiconfig/swriter/ui/captiondialog.ui index 9b4a91f7e1a2..bbe450df4a6d 100644 --- a/sw/uiconfig/swriter/ui/captiondialog.ui +++ b/sw/uiconfig/swriter/ui/captiondialog.ui @@ -1,36 +1,33 @@ - + - False - 6 + False + 6 Caption False True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -43,8 +40,8 @@ _Cancel True - True - True + True + True True @@ -57,8 +54,8 @@ _Help True - True - True + True + True True @@ -72,7 +69,7 @@ False True - end + end 0 diff --git a/sw/uiconfig/swriter/ui/checkbox.ui b/sw/uiconfig/swriter/ui/checkbox.ui index 96621977c296..cc0bdd340161 100644 --- a/sw/uiconfig/swriter/ui/checkbox.ui +++ b/sw/uiconfig/swriter/ui/checkbox.ui @@ -1,21 +1,21 @@ - + True - False + False True 6 True - True - False + True + False True True - True - True + True + True False diff --git a/sw/uiconfig/swriter/ui/columndialog.ui b/sw/uiconfig/swriter/ui/columndialog.ui index 5ac8b4aa17fa..bee23ed3e3d5 100644 --- a/sw/uiconfig/swriter/ui/columndialog.ui +++ b/sw/uiconfig/swriter/ui/columndialog.ui @@ -1,51 +1,31 @@ - + - False - 6 + False + 6 Columns False True - dialog - - - + dialog - False + False vertical 12 - - - True - False - vertical - 12 - - - - - - False - True - start - 0 - - - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -58,8 +38,8 @@ _Cancel True - True - True + True + True True @@ -72,8 +52,8 @@ _Help True - True - True + True + True True @@ -87,7 +67,23 @@ False True - end + end + 0 + + + + + True + False + vertical + 12 + + + + + + False + True 0 diff --git a/sw/uiconfig/swriter/ui/combobox.ui b/sw/uiconfig/swriter/ui/combobox.ui index 1f4134a2cc07..ec73974ed57d 100644 --- a/sw/uiconfig/swriter/ui/combobox.ui +++ b/sw/uiconfig/swriter/ui/combobox.ui @@ -1,5 +1,5 @@ - + @@ -15,20 +15,20 @@ - 150 + 150 True - False + False True 6 True - False + False True True liststore4 - 0 - 1 + 0 + 1 diff --git a/sw/uiconfig/swriter/ui/comboboxfragment.ui b/sw/uiconfig/swriter/ui/comboboxfragment.ui index e2a95e8cfe54..f81bce6480a0 100644 --- a/sw/uiconfig/swriter/ui/comboboxfragment.ui +++ b/sw/uiconfig/swriter/ui/comboboxfragment.ui @@ -1,14 +1,14 @@ - + True - False + False vertical - False + False False diff --git a/sw/uiconfig/swriter/ui/datasourcesunavailabledialog.ui b/sw/uiconfig/swriter/ui/datasourcesunavailabledialog.ui index b3aa206c7fa9..4a1686970767 100644 --- a/sw/uiconfig/swriter/ui/datasourcesunavailabledialog.ui +++ b/sw/uiconfig/swriter/ui/datasourcesunavailabledialog.ui @@ -1,31 +1,31 @@ - + - False + False Create a New Data Source? False True - dialog - True - question + dialog + True + question ok-cancel No data sources are available. Create a new one? - No data source has been set up yet. You need a data source, such as a database, to supply data (for example, names and addresses) for the fields. + No data source has been set up yet. You need a data source, such as a database, to supply data (for example, names and addresses) for the fields. - False + False vertical 12 - False + False False True - end + end 0 diff --git a/sw/uiconfig/swriter/ui/dateformfielddialog.ui b/sw/uiconfig/swriter/ui/dateformfielddialog.ui index b4c79879f722..a9ecbcd166db 100644 --- a/sw/uiconfig/swriter/ui/dateformfielddialog.ui +++ b/sw/uiconfig/swriter/ui/dateformfielddialog.ui @@ -1,5 +1,5 @@ - + @@ -11,27 +11,27 @@ - False - 6 + False + 6 Date Picker Content Control - dialog + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -44,8 +44,8 @@ _Cancel True - True - True + True + True True @@ -58,8 +58,8 @@ _Help True - True - True + True + True True @@ -73,48 +73,48 @@ False True - end + end 0 - + True - False - 12 + False + 12 True - False + False Date Format - True - date_formats_treeview + True + date_formats_treeview 0 - 0 - 0 + 0 + 0 True - True + True True True - in + in True - True + True True True liststore1 - False - False - 0 - False + False + False + 0 + False @@ -132,15 +132,15 @@ - 0 - 1 + 0 + 1 False True - end + end 1 @@ -151,8 +151,5 @@ cancel help - - - diff --git a/sw/uiconfig/swriter/ui/dropdownformfielddialog.ui b/sw/uiconfig/swriter/ui/dropdownformfielddialog.ui index ea6711540fc1..eacfe30d14de 100644 --- a/sw/uiconfig/swriter/ui/dropdownformfielddialog.ui +++ b/sw/uiconfig/swriter/ui/dropdownformfielddialog.ui @@ -1,5 +1,5 @@ - + @@ -11,30 +11,27 @@ - False - 6 + False + 6 Drop-down Form Field - dialog - - - + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -47,8 +44,8 @@ _Cancel True - True - True + True + True True @@ -61,8 +58,8 @@ _Help True - True - True + True + True True @@ -76,108 +73,108 @@ False True - end + end 0 - + True - False - 12 + False + 12 - + True - False + False True - 6 + 6 True - False + False Item - True - item_entry + True + item_entry 0 - 0 - 0 + 0 + 0 True - True + True True + True True - True - 0 - 1 + 0 + 1 - 0 - 0 + 0 + 0 _Add True - True - True + True + True start True - 0 - 1 + 0 + 1 - + True - False - 6 + False + 6 True - False + False Items on list - True - items_treeview + True + items_treeview 0 - 0 - 0 + 0 + 0 True - True + True True True - in + in True - True + True True True liststore1 - False - False - 0 - False + False + False + 0 + False @@ -195,23 +192,23 @@ - 0 - 1 + 0 + 1 True - False + False 6 - start + start _Remove True - True - True - True + True + True + True False @@ -223,9 +220,9 @@ Move Up True - True - True - True + True + True + True False @@ -237,9 +234,9 @@ Move Down True - True - True - True + True + True + True False @@ -249,21 +246,21 @@ - 0 - 2 + 0 + 2 - 0 - 2 + 0 + 2 False True - end + end 1 diff --git a/sw/uiconfig/swriter/ui/editbox.ui b/sw/uiconfig/swriter/ui/editbox.ui index d36884edc4b0..a91eb62367d9 100644 --- a/sw/uiconfig/swriter/ui/editbox.ui +++ b/sw/uiconfig/swriter/ui/editbox.ui @@ -1,20 +1,20 @@ - + True - False + False True 6 True - True + True True True + 4 True - 4 False diff --git a/sw/uiconfig/swriter/ui/envdialog.ui b/sw/uiconfig/swriter/ui/envdialog.ui index b608653dfbff..a0aa3428c1de 100644 --- a/sw/uiconfig/swriter/ui/envdialog.ui +++ b/sw/uiconfig/swriter/ui/envdialog.ui @@ -1,33 +1,33 @@ - + - False - 6 + False + 6 Envelope True - 0 - 0 - dialog + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _New Document True - True - True - True - True - True + True + True + True + True + True False @@ -39,9 +39,9 @@ _Insert True - True - True - True + True + True + True False @@ -52,10 +52,10 @@ _Modify - True - True - True - True + True + True + True + True False @@ -67,8 +67,8 @@ _Cancel True - True - True + True + True True @@ -81,8 +81,8 @@ _Help True - True - True + True + True True @@ -96,8 +96,8 @@ _Reset True - True - True + True + True True @@ -110,47 +110,23 @@ False True - end + end 0 True - True + True True True True - True + True True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -159,42 +135,18 @@ True - False + False Envelope - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -206,43 +158,19 @@ True - False + False Format 1 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -254,12 +182,12 @@ True - False + False Printer 2 - False + False @@ -279,8 +207,5 @@ help reset - - - diff --git a/sw/uiconfig/swriter/ui/footendnotedialog.ui b/sw/uiconfig/swriter/ui/footendnotedialog.ui index 832e55a6ac37..0d2b81aa2a33 100644 --- a/sw/uiconfig/swriter/ui/footendnotedialog.ui +++ b/sw/uiconfig/swriter/ui/footendnotedialog.ui @@ -1,30 +1,30 @@ - + - False - 6 + False + 6 Settings of Footnotes and Endnotes False True - 0 - 0 - dialog + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _Reset - True - True + True + True True @@ -37,10 +37,10 @@ _OK True - True - True - True - True + True + True + True + True True @@ -53,8 +53,8 @@ _Cancel True - True - True + True + True True @@ -67,8 +67,8 @@ _Help True - True - True + True + True True @@ -82,47 +82,23 @@ False True - end + end 0 True - True + True True True True - True + True True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -131,42 +107,18 @@ True - False + False Footnotes - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -178,12 +130,12 @@ True - False + False Endnotes 1 - False + False @@ -200,8 +152,5 @@ cancel help - - - diff --git a/sw/uiconfig/swriter/ui/formatsectiondialog.ui b/sw/uiconfig/swriter/ui/formatsectiondialog.ui index c9235b949ccc..19746f70e6de 100644 --- a/sw/uiconfig/swriter/ui/formatsectiondialog.ui +++ b/sw/uiconfig/swriter/ui/formatsectiondialog.ui @@ -1,37 +1,34 @@ - + - False - 6 + False + 6 Options False True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True - True + True + True + True + True + True False @@ -43,8 +40,8 @@ _Cancel True - True - True + True + True True @@ -57,8 +54,8 @@ _Help True - True - True + True + True True @@ -72,8 +69,8 @@ _Reset True - True - True + True + True True @@ -86,47 +83,23 @@ False True - end + end 0 True - True + True True True True - True + True True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -135,42 +108,18 @@ True - False + False Columns - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -182,43 +131,19 @@ True - False + False Indents 1 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -230,43 +155,19 @@ True - False + False Background 2 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -278,12 +179,12 @@ True - False + False Footnotes/Endnotes 3 - False + False diff --git a/sw/uiconfig/swriter/ui/infonotfounddialog.ui b/sw/uiconfig/swriter/ui/infonotfounddialog.ui index 9dd8d806d88e..32a9278aa128 100644 --- a/sw/uiconfig/swriter/ui/infonotfounddialog.ui +++ b/sw/uiconfig/swriter/ui/infonotfounddialog.ui @@ -1,29 +1,29 @@ - + - False + False Find False True - dialog - True + dialog + True ok Search key not found. - False + False vertical 12 - False + False False True - end + end 0 diff --git a/sw/uiconfig/swriter/ui/inforeadonlydialog.ui b/sw/uiconfig/swriter/ui/inforeadonlydialog.ui index 3714ddab248a..922197289bf5 100644 --- a/sw/uiconfig/swriter/ui/inforeadonlydialog.ui +++ b/sw/uiconfig/swriter/ui/inforeadonlydialog.ui @@ -1,30 +1,30 @@ - + - False + False Read-Only Content False True - dialog - True + dialog + True ok Write-protected content cannot be changed. - No modifications will be accepted. + No modifications will be accepted. - False + False vertical 12 - False + False False True - end + end 0 diff --git a/sw/uiconfig/swriter/ui/inputeditbox.ui b/sw/uiconfig/swriter/ui/inputeditbox.ui index ff3fbf5bb064..39bfb5029da7 100644 --- a/sw/uiconfig/swriter/ui/inputeditbox.ui +++ b/sw/uiconfig/swriter/ui/inputeditbox.ui @@ -1,20 +1,20 @@ - + True - False + False True 6 True - True + True True True + 0 True - 0 False diff --git a/sw/uiconfig/swriter/ui/insertautotextdialog.ui b/sw/uiconfig/swriter/ui/insertautotextdialog.ui index ef13a45b0ce5..f9bd640e62f6 100644 --- a/sw/uiconfig/swriter/ui/insertautotextdialog.ui +++ b/sw/uiconfig/swriter/ui/insertautotextdialog.ui @@ -1,5 +1,5 @@ - + @@ -11,34 +11,31 @@ - False - 6 + False + 6 Insert AutoText False True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -51,8 +48,8 @@ _Cancel True - True - True + True + True True @@ -65,8 +62,8 @@ _Help True - True - True + True + True True @@ -80,39 +77,39 @@ False True - end + end 0 True - False + False True True - 0 - none + 0 + none True - True - True - True - in + True 12 6 + True + True + in True - True - True + True + True True True liststore1 - False - False - 0 - False + False + False + 0 + False @@ -135,7 +132,7 @@ True - False + False Autotexts for Shortcut diff --git a/sw/uiconfig/swriter/ui/jumpposbox.ui b/sw/uiconfig/swriter/ui/jumpposbox.ui index 3e9838263daf..ec4046680002 100644 --- a/sw/uiconfig/swriter/ui/jumpposbox.ui +++ b/sw/uiconfig/swriter/ui/jumpposbox.ui @@ -1,19 +1,19 @@ - + True - False + False True 6 True - True + True True + 3 True - 3 False diff --git a/sw/uiconfig/swriter/ui/mailmergedialog.ui b/sw/uiconfig/swriter/ui/mailmergedialog.ui index 1ba60f22d1f4..f407b0c9fd2e 100644 --- a/sw/uiconfig/swriter/ui/mailmergedialog.ui +++ b/sw/uiconfig/swriter/ui/mailmergedialog.ui @@ -1,35 +1,32 @@ - + - False - 6 + False + 6 Mail Merge True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -42,8 +39,8 @@ _Cancel True - True - True + True + True True @@ -56,8 +53,8 @@ _Help True - True - True + True + True True @@ -70,55 +67,55 @@ False True - end + end 0 True - False + False True True - 0 - none + 0 + none - + True - False - True - 6 + False 12 6 + True + 6 From this _document True - True - False - True + True + False + True True - True + True - 0 - 0 + 0 + 0 From a _template True - True - False - True - True + True + False + True + True document - 0 - 1 + 0 + 1 @@ -126,7 +123,7 @@ True - False + False Create diff --git a/sw/uiconfig/swriter/ui/mastercontextmenu.ui b/sw/uiconfig/swriter/ui/mastercontextmenu.ui index a341e4173070..189d0ac43c5e 100644 --- a/sw/uiconfig/swriter/ui/mastercontextmenu.ui +++ b/sw/uiconfig/swriter/ui/mastercontextmenu.ui @@ -1,50 +1,50 @@ - + True - False + False True - False + False _Update - True + True True - False + False True - False + False Selection - True + True True - False + False Indexes - True + True True - False + False Links - True + True True - False + False All - True + True @@ -54,59 +54,59 @@ True - False + False Edit - True + True True - False + False Edit link - True + True True - False + False Insert - True + True True - False + False True - False + False _Index - True + True True - False + False File - True + True True - False + False New Document - True + True True - False + False Text - True + True @@ -116,15 +116,15 @@ True - False + False True - False + False _Delete - True + True diff --git a/sw/uiconfig/swriter/ui/mergeconnectdialog.ui b/sw/uiconfig/swriter/ui/mergeconnectdialog.ui index e8b02fa5328b..d416ece69f20 100644 --- a/sw/uiconfig/swriter/ui/mergeconnectdialog.ui +++ b/sw/uiconfig/swriter/ui/mergeconnectdialog.ui @@ -1,32 +1,29 @@ - + - False - 6 + False + 6 Data Source Connection - dialog - - - + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -39,8 +36,8 @@ _Cancel True - True - True + True + True True @@ -53,8 +50,8 @@ _Help True - True - True + True + True True @@ -68,73 +65,73 @@ False True - end + end 0 True - False + False True True - 0 - none + 0 + none - + True - False - True - 6 + False 12 6 + True + 6 _Use existing True - True - False - True + True + False + True True - True + True - 0 - 0 + 0 + 0 _Create new connection True - True - False - True - True + True + False + True + True existing - 0 - 1 + 0 + 1 True - False + False Fields are used to personalize form letters. The fields are placeholders for data from a data source, such as a database. The fields in the form letter must be connected to the data source. True - 52 + 52 0 0 - + - 0 - 2 + 0 + 2 @@ -142,7 +139,7 @@ True - False + False Connect diff --git a/sw/uiconfig/swriter/ui/mmsendmails.ui b/sw/uiconfig/swriter/ui/mmsendmails.ui index 15e97871639c..d403fdb61b88 100644 --- a/sw/uiconfig/swriter/ui/mmsendmails.ui +++ b/sw/uiconfig/swriter/ui/mmsendmails.ui @@ -1,5 +1,5 @@ - + @@ -15,35 +15,32 @@ - False + False True True - 6 + 6 Sending Email messages - 0 - 0 - dock - - - + 0 + 0 + dock - False + False True True vertical 12 - False - end + False + end _Pause True - True - True - True + True + True + True False @@ -55,8 +52,8 @@ _Cancel True - True - True + True + True True @@ -69,14 +66,14 @@ False True - end + end 0 True - False + False True True vertical @@ -84,26 +81,26 @@ True - False + False True - 0 - none + 0 + none True - False + False start + 12 + 6 The connection to the outgoing mail server has been established 0 0 - 12 - 6 True - False + False Connection Status @@ -120,31 +117,31 @@ True - False + False True True - 0 - none + 0 + none True - False + False + 12 + 6 True True vertical 6 - 12 - 6 True - False + False True 6 True - False + False start True %1 of %2 emails processed @@ -160,7 +157,7 @@ True - False + False start True Sending paused @@ -183,7 +180,7 @@ True - False + False True @@ -195,7 +192,7 @@ True - False + False start True Emails not sent: %1 @@ -211,25 +208,25 @@ True - True - True + True + True True - True + True True True - in + in True - True + True True True liststore1 - False - 0 - False + False + 0 + False @@ -272,9 +269,9 @@ True - False + False Details - True + True @@ -289,7 +286,7 @@ True - False + False Transfer Status diff --git a/sw/uiconfig/swriter/ui/navigatorpanel.ui b/sw/uiconfig/swriter/ui/navigatorpanel.ui index afb588a7a65d..5598ef1d938d 100644 --- a/sw/uiconfig/swriter/ui/navigatorpanel.ui +++ b/sw/uiconfig/swriter/ui/navigatorpanel.ui @@ -515,116 +515,812 @@ False True - 2 + 1 - + True - True - icons + False - + True - False - List Box On/Off - sw/res/sc20233.png - - - List Box On/Off - Shows or hides the Navigator list. + True + start + start + icons + + + True + False + List Box On/Off + sw/res/sc20233.png + + + List Box On/Off + Shows or hides the Navigator list. + + + + False + False + + + + + True + False + + + False + False + False - False + True + 0 - + True False - - - False - False - - - - - True - False - False - Promote Outline Level - sw/res/sc20172.png - - - Promote Outline Level - Increases the outline level of the selected heading, and the headings that occur below the heading, by one. To only increase the outline level of the selected heading, hold down Ctrl, and then click this icon. + + + True + True + start + start + icons + False + + + True + False + Promote Outline Level + start + start + sw/res/sc20172.png + + + False + False + + + + + True + False + Demote Outline Level + start + start + sw/res/sc20173.png + + + False + False + + + + + True + False + Move Heading Up + start + start + sw/res/sc20174.png + + + False + False + + + + + True + False + Move Heading Down + start + start + sw/res/sc20171.png + + + False + False + + + + False + True + 0 + + + + + True + True + start + start + icons + False + + + False + True + 1 + + + + + True + True + start + start + icons + False + + + True + False + start + start + + + False + False + + + + + True + False + start + start + + + False + False + + + + + True + False + start + start + + + False + False + + + + + False + True + 2 + + + + + True + True + start + start + icons + False + + + False + True + 3 + + + + + True + True + start + start + icons + False + + + True + False + start + start + + + False + False + + + + + False + True + 4 + + + + + True + True + start + start + icons + False + + + False + True + 5 + + + + + True + True + start + start + icons + False + + + True + False + start + start + + + False + False + + + + + False + True + 6 + + + + + True + True + start + start + icons + False + + + False + True + 7 + + + + + True + True + start + start + icons + False + + + True + False + start + start + + + False + False + + + + + False + True + 8 + + + + + True + True + start + start + icons + False + + + False + True + 9 + + + + + True + True + start + start + icons + False + + + True + False + start + start + + + False + False + + + + + False + True + 10 + + + + + True + True + start + start + icons + False + + + False + True + 11 + + + + + True + True + start + start + icons + False + + + True + False + start + start + + + False + False + + + + + False + True + 12 + + + + + True + True + start + start + icons + False + + + False + True + 13 + + + + + True + True + start + start + icons + False + + + True + False + start + start + + + False + False + + + + + True + False + start + start + + + False + False + + + + + False + True + 14 + + + + + True + True + start + start + icons + False + + + False + True + 15 + + + + + True + True + start + start + icons + False + + + False + True + 16 + + + + + True + True + start + start + icons + False + + + True + False + start + start + + + False + False + + + + + False + True + 17 + + + + + True + True + start + start + icons + False + + + True + False + start + start + + + False + False + + + + + True + False + start + start + + + False + False + + + + + False + True + 18 + + + + + True + True + start + start + icons + False + + + True + False + start + start + + + False + False + + + + + False + True + 19 + + + + + True + True + start + start + icons + False + + + False + True + 20 + + + + + True + True + start + start + icons + False + + + False + True + 21 + + + + + True + True + start + start + icons + False + + + True + False + start + start + + + False + False + + + + + False + True + 22 + + + + + True + True + start + start + icons + False + + + True + False + start + start + + + False + False + + + + + False + True + 23 + + + + + True + True + start + start + icons + False + + + True + False + start + start + + + False + False + + + + + False + True + 24 + + + + + True + True + start + start + icons + False + + + True + False + start + start + + + False + False + + + + + False + True + 25 + + + + + True + True + start + start + icons + False + + + False + True + 26 + + + + + True + True + start + start + icons + False + + + True + False + start + start + + + False + False + + + + + False + True + 27 + + + + + True + True + start + start + icons + False + + + False + True + 28 + + + + + True + True + start + start + icons + False + + + True + False + Delete + start + start + cmd/sc_delete.png + + + False + False + + + + + False + True + 29 + False - False - - - - - True - False - False - Demote Outline Level - sw/res/sc20173.png - - - Demote Outline Level - Decreases the outline level of the selected heading, and the headings that occur below the heading, by one. To only decrease the outline level of the selected heading, hold down Ctrl, and then click this icon. - - - - - False - False - - - - - True - False - False - Move Heading Up - sw/res/sc20174.png - - - Move Heading Up - Moves the selected heading, and the text below the heading, up one heading position in the Navigator and in the document. To move only the selected heading and not the text associated with the heading, hold down Ctrl, and then click this icon. - - - - - False - False - - - - - True - False - False - Move Heading Down - sw/res/sc20171.png - - - Move Heading Down - Moves the selected heading, and the text below the heading, down one heading position in the Navigator and in the document. To move only the selected heading and not the text associated with the heading, hold down Ctrl, and then click this icon. - - - - - False - False + True + 1 diff --git a/sw/uiconfig/swriter/ui/newuserindexdialog.ui b/sw/uiconfig/swriter/ui/newuserindexdialog.ui index 269b13d44d07..d8eeedb02650 100644 --- a/sw/uiconfig/swriter/ui/newuserindexdialog.ui +++ b/sw/uiconfig/swriter/ui/newuserindexdialog.ui @@ -1,32 +1,32 @@ - + - False - 6 + False + 6 Create New User-defined Index True - 0 - 0 - dialog + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -39,8 +39,8 @@ _Cancel True - True - True + True + True True @@ -53,8 +53,8 @@ _Help True - True - True + True + True True @@ -68,54 +68,54 @@ False True - end + end 0 True - False + False True True - 0 - none + 0 + none - + True - False - True - True - 6 - 12 + False 12 6 + True + True + 6 + 12 True - False + False _Name: - True - entry + True + entry 0 - 0 - 0 + 0 + 0 True - True + True True + True True - True - 1 - 0 + 1 + 0 @@ -123,7 +123,7 @@ True - False + False New User Index @@ -144,8 +144,5 @@ cancel help - - - diff --git a/sw/uiconfig/swriter/ui/objectdialog.ui b/sw/uiconfig/swriter/ui/objectdialog.ui index bbc2e88a4591..6ed97b84965b 100644 --- a/sw/uiconfig/swriter/ui/objectdialog.ui +++ b/sw/uiconfig/swriter/ui/objectdialog.ui @@ -1,31 +1,31 @@ - + - False - 6 + False + 6 OLE Object False - dialog True + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -38,8 +38,8 @@ _Cancel True - True - True + True + True True @@ -52,8 +52,8 @@ _Help True - True - True + True + True True @@ -67,8 +67,8 @@ _Reset True - True - True + True + True True @@ -81,23 +81,23 @@ False True - end + end 0 True - True + True True True True - True + True True - False + False @@ -106,18 +106,18 @@ True - False + False Position and Size - False + False True - False + False @@ -129,19 +129,19 @@ True - False + False Options 1 - False + False True - False + False @@ -153,19 +153,19 @@ True - False + False Wrap 2 - False + False True - False + False @@ -177,19 +177,19 @@ True - False + False Hyperlink 3 - False + False True - False + False @@ -201,19 +201,19 @@ True - False + False Borders 4 - False + False True - False + False @@ -225,19 +225,19 @@ True - False + False Area 5 - False + False True - False + False @@ -249,19 +249,19 @@ True - False + False Transparency 6 - False + False True - False + False @@ -273,12 +273,12 @@ True - False + False Macro 7 - False + False diff --git a/sw/uiconfig/swriter/ui/pagecolumncontrol.ui b/sw/uiconfig/swriter/ui/pagecolumncontrol.ui index 651f5b2540fe..b4cbd10833e7 100644 --- a/sw/uiconfig/swriter/ui/pagecolumncontrol.ui +++ b/sw/uiconfig/swriter/ui/pagecolumncontrol.ui @@ -1,16 +1,71 @@ - + + + True + False + sw/res/sidebar/pageproppanel/column_L_1_24x24.png + + + True + False + sw/res/sidebar/pageproppanel/column1_24x24.png + + + True + False + sw/res/sidebar/pageproppanel/column_L_2_24x24.png + + + True + False + sw/res/sidebar/pageproppanel/column2_24x24.png + + + True + False + sw/res/sidebar/pageproppanel/column_L_3_24x24.png + + + True + False + sw/res/sidebar/pageproppanel/column3_24x24.png + + + True + False + sw/res/sidebar/pageproppanel/column_L_left_24x24.png + + + True + False + sw/res/sidebar/pageproppanel/columnleft_24x24.png + + + True + False + sw/res/sidebar/pageproppanel/column_L_right_24x24.png + + + True + False + sw/res/sidebar/pageproppanel/columnright_24x24.png + + + True + False + cmd/lc_pagecolumntype.png + - False - True - 4 + False + True + 4 none True - False + False True True vertical @@ -18,13 +73,13 @@ 1 Column - True - True + True + True image_column1 none - True + True 0 - True + True False @@ -35,13 +90,13 @@ 2 Columns - True - True + True + True image_column2 none - True + True 0 - True + True False @@ -52,13 +107,13 @@ 3 Columns - True - True + True + True image_column3 none - True + True 0 - True + True False @@ -69,13 +124,13 @@ Left - True - True + True + True image_columnleft none - True + True 0 - True + True False @@ -86,13 +141,13 @@ Right - True - True + True + True image_columnright none - True + True 0 - True + True False @@ -103,13 +158,13 @@ 1 Column - True - True + True + True image_column1L none - True + True 0 - True + True False @@ -120,13 +175,13 @@ 2 Columns - True - True + True + True image_column2L none - True + True 0 - True + True False @@ -137,13 +192,13 @@ 3 Columns - True - True + True + True image_column3L none - True + True 0 - True + True False @@ -154,13 +209,13 @@ Left - True - True + True + True image_columnleftL none - True + True 0 - True + True False @@ -171,13 +226,13 @@ Right - True - True + True + True image_columnrightL none - True + True 0 - True + True False @@ -189,13 +244,13 @@ _More Options True - True - True + True + True + More Options image_pagecolumntype - More Options none - True - True + True + True False @@ -206,59 +261,4 @@ - - True - False - sw/res/sidebar/pageproppanel/column_L_1_24x24.png - - - True - False - sw/res/sidebar/pageproppanel/column1_24x24.png - - - True - False - sw/res/sidebar/pageproppanel/column_L_2_24x24.png - - - True - False - sw/res/sidebar/pageproppanel/column2_24x24.png - - - True - False - sw/res/sidebar/pageproppanel/column_L_3_24x24.png - - - True - False - sw/res/sidebar/pageproppanel/column3_24x24.png - - - True - False - sw/res/sidebar/pageproppanel/column_L_left_24x24.png - - - True - False - sw/res/sidebar/pageproppanel/columnleft_24x24.png - - - True - False - sw/res/sidebar/pageproppanel/column_L_right_24x24.png - - - True - False - sw/res/sidebar/pageproppanel/columnright_24x24.png - - - True - False - cmd/lc_pagecolumntype.png - diff --git a/sw/uiconfig/swriter/ui/pagemargincontrol.ui b/sw/uiconfig/swriter/ui/pagemargincontrol.ui index e83cd135a997..b61c2332dfe3 100644 --- a/sw/uiconfig/swriter/ui/pagemargincontrol.ui +++ b/sw/uiconfig/swriter/ui/pagemargincontrol.ui @@ -1,91 +1,91 @@ - + 9999 - 0.10000000000000001 - 10 + 0.10 + 10 9999 - 0.10000000000000001 - 10 + 0.10 + 10 9999 - 0.10000000000000001 - 10 + 0.10 + 10 9999 - 0.10000000000000001 - 10 + 0.10 + 10 9999 - 0.10000000000000001 - 10 + 0.10 + 10 True - False - sw/res/sidebar/pageproppanel/format_L_copy_24x24.png + False + sw/res/sidebar/pageproppanel/format_L_copy_24x24.png True - False - sw/res/sidebar/pageproppanel/formatcopy_24x24.png + False + sw/res/sidebar/pageproppanel/formatcopy_24x24.png True - False - sw/res/sidebar/pageproppanel/format_L_mirror_24x24.png + False + sw/res/sidebar/pageproppanel/format_L_mirror_24x24.png True - False - sw/res/sidebar/pageproppanel/formatmirror_24x24.png + False + sw/res/sidebar/pageproppanel/formatmirror_24x24.png True - False - sw/res/sidebar/pageproppanel/format_L_narrow_24x24.png + False + sw/res/sidebar/pageproppanel/format_L_narrow_24x24.png True - False - sw/res/sidebar/pageproppanel/formatnarrow_24x24.png + False + sw/res/sidebar/pageproppanel/formatnarrow_24x24.png True - False - sw/res/sidebar/pageproppanel/format_L_nomal_24x24.png + False + sw/res/sidebar/pageproppanel/format_L_nomal_24x24.png True - False - sw/res/sidebar/pageproppanel/formatnormal_24x24.png + False + sw/res/sidebar/pageproppanel/formatnormal_24x24.png True - False - sw/res/sidebar/pageproppanel/format_L_wide_24x24.png + False + sw/res/sidebar/pageproppanel/format_L_wide_24x24.png True - False - sw/res/sidebar/pageproppanel/formatwide_24x24.png + False + sw/res/sidebar/pageproppanel/formatwide_24x24.png - False - True - 4 + False + True + 4 none True - False + False True True vertical @@ -93,13 +93,13 @@ Narrow - True - True + True + True narrowImg none - True + True 0 - True + True False @@ -110,13 +110,13 @@ Normal - True - True + True + True normalImg none - True + True 0 - True + True False @@ -127,13 +127,13 @@ Wide - True - True + True + True wideImg none - True + True 0 - True + True False @@ -144,13 +144,13 @@ Mirrored - True - True + True + True mirrore none - True + True 0 - True + True False @@ -161,13 +161,13 @@ Last Custom Value - True - True + True + True lastImg none - True + True 0 - True + True False @@ -178,13 +178,13 @@ Narrow - True - True + True + True narrowLImg none - True + True 0 - True + True False @@ -195,13 +195,13 @@ Normal - True - True + True + True normalLImg none - True + True 0 - True + True False @@ -212,13 +212,13 @@ Wide - True - True + True + True wideLImg none - True + True 0 - True + True False @@ -229,13 +229,13 @@ Mirrored - True - True + True + True mirroredLImg none - True + True 0 - True + True False @@ -246,13 +246,13 @@ Last Custom Value - True - True + True + True lastLImg none - True + True 0 - True + True False @@ -263,56 +263,56 @@ True - False - 0 - none + False + 0 + none - + True - False - 6 - 6 + False 12 + 6 + 6 True - False + False _Top - True - top + True + top 0 - 0 - 2 + 0 + 2 True - False + False _Bottom - True - bottom + True + bottom 0 - 0 - 3 + 0 + 3 True - False + False True - False + False _Left - True - left + True + left 0 @@ -324,10 +324,10 @@ True - False + False I_nner - True - left + True + left 0 @@ -338,21 +338,21 @@ - 0 - 0 + 0 + 0 True - False + False True - False + False _Right - True - right + True + right 0 @@ -364,10 +364,10 @@ True - False + False O_uter - True - right + True + right 0 @@ -378,64 +378,64 @@ - 0 - 1 + 0 + 1 True - True + True True - adjustment1 True + adjustment1 2 - 1 - 0 + 1 + 0 True - True + True True - adjustment2 True + adjustment2 2 - 1 - 1 + 1 + 1 True - True + True True - adjustment3 True + adjustment3 2 - 1 - 2 + 1 + 2 True - True + True True - adjustment4 True + adjustment4 2 - 1 - 3 + 1 + 3 @@ -443,7 +443,7 @@ True - False + False Custom @@ -456,11 +456,11 @@ - True - True + True + True True - adjustment5 True + adjustment5 2 @@ -473,12 +473,12 @@ _More Options True - True - True - More Options + True + True + More Options none - True - True + True + True False diff --git a/sw/uiconfig/swriter/ui/pageorientationcontrol.ui b/sw/uiconfig/swriter/ui/pageorientationcontrol.ui index afb9c34cab47..36ebc7e5438b 100644 --- a/sw/uiconfig/swriter/ui/pageorientationcontrol.ui +++ b/sw/uiconfig/swriter/ui/pageorientationcontrol.ui @@ -1,16 +1,26 @@ - + + + True + False + sw/res/sidebar/pageproppanel/Landscapecopy_24x24.png + + + True + False + sw/res/sidebar/pageproppanel/portraitcopy_24x24.png + - False - True - 4 + False + True + 4 none True - False + False True True vertical @@ -19,13 +29,13 @@ Portrait True - True - True + True + True image_portrait none - True + True 0 - True + True False @@ -37,13 +47,13 @@ Landscape True - True - True + True + True image_landscape none - True + True 0 - True + True False @@ -54,14 +64,4 @@ - - True - False - sw/res/sidebar/pageproppanel/Landscapecopy_24x24.png - - - True - False - sw/res/sidebar/pageproppanel/portraitcopy_24x24.png - diff --git a/sw/uiconfig/swriter/ui/pagesizecontrol.ui b/sw/uiconfig/swriter/ui/pagesizecontrol.ui index 85c588d97312..3da778c6790f 100644 --- a/sw/uiconfig/swriter/ui/pagesizecontrol.ui +++ b/sw/uiconfig/swriter/ui/pagesizecontrol.ui @@ -1,26 +1,26 @@ - + 100 - 1 - 10 + 1 + 10 True - False - cmd/lc_attributepagesize.png + False + cmd/lc_attributepagesize.png - False - True - 4 + False + True + 4 none True - False + False True True vertical @@ -28,27 +28,27 @@ True - False + False True True vertical True - True + True True True - never - never - in + never + never + in True - False + False True - True + True GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_STRUCTURE_MASK True True @@ -65,8 +65,8 @@ - True - True + True + True True adjustment1 @@ -87,13 +87,13 @@ _More Options True - True - True - More Options + True + True + More Options image_portrait7 none - True - True + True + True False diff --git a/sw/uiconfig/swriter/ui/picturedialog.ui b/sw/uiconfig/swriter/ui/picturedialog.ui index 2a4b6f431056..f64223defb1f 100644 --- a/sw/uiconfig/swriter/ui/picturedialog.ui +++ b/sw/uiconfig/swriter/ui/picturedialog.ui @@ -1,31 +1,28 @@ - + - False - 6 + False + 6 Image True - dialog - - - + dialog - False + False vertical 12 - False - end + False + end _Reset True - True - True + True + True True @@ -38,10 +35,10 @@ _OK True - True - True - True - True + True + True + True + True True @@ -54,8 +51,8 @@ _Cancel True - True - True + True + True True @@ -68,8 +65,8 @@ _Help True - True - True + True + True True @@ -83,47 +80,23 @@ False True - end + end 0 True - True + True True True True - True + True True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -132,42 +105,18 @@ True - False + False Position and Size - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -179,43 +128,19 @@ True - False + False Options 1 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -227,43 +152,19 @@ True - False + False Wrap 2 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -275,43 +176,19 @@ True - False + False Hyperlink 3 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -323,43 +200,19 @@ True - False + False Rotation 4 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -371,43 +224,19 @@ True - False + False Crop 5 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -419,43 +248,19 @@ True - False + False Borders 6 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -467,43 +272,19 @@ True - False + False Area 7 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -515,43 +296,19 @@ True - False + False Transparency 8 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -563,12 +320,12 @@ True - False + False Macro 9 - False + False diff --git a/sw/uiconfig/swriter/ui/poseditbox.ui b/sw/uiconfig/swriter/ui/poseditbox.ui index 285531d5b72a..00533548f552 100644 --- a/sw/uiconfig/swriter/ui/poseditbox.ui +++ b/sw/uiconfig/swriter/ui/poseditbox.ui @@ -1,22 +1,22 @@ - + True - False + False True 6 True - True + True True True False - 8 - True + 8 0.5 + True False diff --git a/sw/uiconfig/swriter/ui/previewmenu.ui b/sw/uiconfig/swriter/ui/previewmenu.ui index f6c9a5eae309..e7eefee4e28d 100644 --- a/sw/uiconfig/swriter/ui/previewmenu.ui +++ b/sw/uiconfig/swriter/ui/previewmenu.ui @@ -1,43 +1,43 @@ - + True - False + False True - False - True + False + True True - False - True + False + True True - False - True + False + True True - False - True + False + True True - False - True + False + True diff --git a/sw/uiconfig/swriter/ui/printmonitordialog.ui b/sw/uiconfig/swriter/ui/printmonitordialog.ui index cde7ebd5736e..91d2a438b632 100644 --- a/sw/uiconfig/swriter/ui/printmonitordialog.ui +++ b/sw/uiconfig/swriter/ui/printmonitordialog.ui @@ -1,34 +1,31 @@ - + - False - 6 + False + 6 Print monitor - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _Cancel True - True - True - True - True + True + True + True + True True @@ -41,20 +38,20 @@ False True - end + end 0 True - False + False vertical 6 True - False + False False @@ -65,8 +62,8 @@ True - False - True + False + True is being prepared for printing on @@ -78,7 +75,7 @@ True - False + False False @@ -89,7 +86,7 @@ True - False + False False diff --git a/sw/uiconfig/swriter/ui/querycontinuebegindialog.ui b/sw/uiconfig/swriter/ui/querycontinuebegindialog.ui index 481cc4aff241..0c9c1359cb72 100644 --- a/sw/uiconfig/swriter/ui/querycontinuebegindialog.ui +++ b/sw/uiconfig/swriter/ui/querycontinuebegindialog.ui @@ -1,31 +1,31 @@ - + - False + False Continue at the beginning? False True - dialog - True - question + dialog + True + question yes-no Do you want to continue at the beginning? - %PRODUCTNAME Writer has searched to the end of the document. + %PRODUCTNAME Writer has searched to the end of the document. - False + False vertical 12 - False + False False True - end + end 0 diff --git a/sw/uiconfig/swriter/ui/querydefaultcompatdialog.ui b/sw/uiconfig/swriter/ui/querydefaultcompatdialog.ui index bc760c2744ba..212ff9ba91d0 100644 --- a/sw/uiconfig/swriter/ui/querydefaultcompatdialog.ui +++ b/sw/uiconfig/swriter/ui/querydefaultcompatdialog.ui @@ -1,31 +1,31 @@ - + - False + False Use as default? False True - dialog - True - question + dialog + True + question yes-no Do you want to change the compatibility options of the default template? - This will affect all new documents based on the default template. + This will affect all new documents based on the default template. - False + False vertical 12 - False + False False True - end + end 0 diff --git a/sw/uiconfig/swriter/ui/readonlymenu.ui b/sw/uiconfig/swriter/ui/readonlymenu.ui index 0c83d8a7616e..96ffe24346c2 100644 --- a/sw/uiconfig/swriter/ui/readonlymenu.ui +++ b/sw/uiconfig/swriter/ui/readonlymenu.ui @@ -1,132 +1,132 @@ - + True - False + False True - False + False _Open - True + True True - False + False Open in New Window - True + True True - False + False _Edit - True + True True - False + False Select Text - True + True True - False + False Re_load - True + True True - False + False Reload Frame - True + True True - False + False HT_ML Source - True + True True - False + False True - False + False Backwards - True + True True - False + False _Forward - True + True True - False + False True - False + False Save Image... - True + True True - False + False Add Image - True + True True - False + False True - False + False As Link - True + True True - False + False Copy - True + True True - False + False @@ -136,39 +136,39 @@ True - False + False Save Background... - True + True True - False + False True - False + False True - False + False As Link - True + True True - False + False Copy - True + True True - False + False @@ -178,65 +178,65 @@ True - False + False True - False + False Copy _Link - True + True True - False + False True - False + False Load Image - True + True True - False + False Image Off - True + True True - False + False True - False + False Leave Full-Screen Mode - True + True True - False + False True - False + False _Copy - True + True diff --git a/sw/uiconfig/swriter/ui/renameentrydialog.ui b/sw/uiconfig/swriter/ui/renameentrydialog.ui index 7f6d79d778ac..379ac52fcc62 100644 --- a/sw/uiconfig/swriter/ui/renameentrydialog.ui +++ b/sw/uiconfig/swriter/ui/renameentrydialog.ui @@ -1,35 +1,32 @@ - + - False - 6 + False + 6 Rename Element True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -42,8 +39,8 @@ _Cancel True - True - True + True + True True @@ -56,8 +53,8 @@ _Help True - True - True + True + True True @@ -70,33 +67,33 @@ False True - end + end 0 True - False + False True True - 0 - none + 0 + none True - True + True start - True 12 - True 6 + True + True True - False + False Element Name diff --git a/sw/uiconfig/swriter/ui/saveashtmldialog.ui b/sw/uiconfig/swriter/ui/saveashtmldialog.ui index 73ca53c3f0c0..80d887f078be 100644 --- a/sw/uiconfig/swriter/ui/saveashtmldialog.ui +++ b/sw/uiconfig/swriter/ui/saveashtmldialog.ui @@ -1,31 +1,31 @@ - + - False + False Save as HTML? False True - dialog - True - question + dialog + True + question yes-no Would you like to save the document as HTML? - The source code can only be displayed if the document is saved in HTML format. + The source code can only be displayed if the document is saved in HTML format. - False + False vertical 12 - False + False False True - end + end 0 diff --git a/sw/uiconfig/swriter/ui/savemonitordialog.ui b/sw/uiconfig/swriter/ui/savemonitordialog.ui index 72bd2c619978..f69b4114a89a 100644 --- a/sw/uiconfig/swriter/ui/savemonitordialog.ui +++ b/sw/uiconfig/swriter/ui/savemonitordialog.ui @@ -1,35 +1,32 @@ - + - False - 6 + False + 6 Save monitor True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _Cancel True - True - True - True - True + True + True + True + True True @@ -42,20 +39,20 @@ False True - end + end 0 True - False + False vertical 6 True - False + False False @@ -66,8 +63,8 @@ True - False - True + False + True is being saved to @@ -79,7 +76,7 @@ True - False + False False @@ -90,7 +87,7 @@ True - False + False False diff --git a/sw/uiconfig/swriter/ui/selectautotextdialog.ui b/sw/uiconfig/swriter/ui/selectautotextdialog.ui index ffc20185070c..89637a496db5 100644 --- a/sw/uiconfig/swriter/ui/selectautotextdialog.ui +++ b/sw/uiconfig/swriter/ui/selectautotextdialog.ui @@ -1,5 +1,5 @@ - + @@ -11,30 +11,30 @@ - False - 6 + False + 6 Select AutoText: True - 0 - 0 - dialog + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -47,8 +47,8 @@ _Cancel True - True - True + True + True True @@ -61,8 +61,8 @@ _Help True - True - True + True + True True @@ -76,37 +76,37 @@ False True - end + end 0 True - False + False True True - 0 - none + 0 + none True - True - True - True - in + True 12 6 + True + True + in True - True + True True liststore1 - False - False - 0 - False + False + False + 0 + False @@ -127,7 +127,7 @@ True - False + False AutoText - Group @@ -148,8 +148,5 @@ cancel help - - - diff --git a/sw/uiconfig/swriter/ui/sidebarquickfind.ui b/sw/uiconfig/swriter/ui/sidebarquickfind.ui index e2dfdb085fe2..cc9c1226e9c0 100644 --- a/sw/uiconfig/swriter/ui/sidebarquickfind.ui +++ b/sw/uiconfig/swriter/ui/sidebarquickfind.ui @@ -2,11 +2,9 @@ - + - - - + @@ -18,22 +16,89 @@ False True True - 6 - 6 True True - + True False + True + True 6 vertical - 2 + 6 - + True - True - Find + False + 2 + + + True + True + True + Find + + + True + True + 0 + + + + + True + False + icons + False + + + True + False + Search Options + sw/res/sr20006.png + + + More Search Options + Click here to open a dialog to set more search options. + + + + + False + False + + + + + False + False + 1 + + + + + True + False + icons + False + + + True + False + + + False + False + + + + + False + False + 2 + + False @@ -47,19 +112,18 @@ True True True + always in - -1 True True True True - 0 - liststore1 + liststore False - False - 1 + False + 0 False @@ -70,22 +134,38 @@ - + 0 + + + Lists the positions in the document that the searched term is found. + + - False + True True 1 + + + True + False + + + False + True + 3 + + 0 diff --git a/sw/uiconfig/swriter/ui/sidebarquickfindoptionsdialog.ui b/sw/uiconfig/swriter/ui/sidebarquickfindoptionsdialog.ui new file mode 100644 index 000000000000..d80bafa2629c --- /dev/null +++ b/sw/uiconfig/swriter/ui/sidebarquickfindoptionsdialog.ui @@ -0,0 +1,175 @@ + + + + + + False + 6 + Search Options + False + True + 0 + 0 + dialog + + + False + vertical + 2 + + + False + end + + + _OK + True + True + True + True + True + True + + + False + True + 0 + + + + + _Cancel + True + True + True + True + + + False + True + 1 + + + + + False + False + 1 + + + + + + True + False + True + 6 + + + True + False + 12 + + + Similarity + True + True + False + True + True + True + + + Find terms that are similar to the Find text. Select this checkbox, and then click the Similarities button to define the similarity options. + + + + + False + True + 0 + + + + + Similarities... + True + True + True + True + end + True + True + + + Set the options for the similarity search. + + + + + False + True + 1 + + + + + 0 + 2 + + + + + Match case + True + True + False + True + True + True + + + Finds only exact case matches. + + + + + 0 + 0 + + + + + Whole words only + True + True + False + True + True + True + + + Finds only whole words. + + + + + 0 + 1 + + + + + False + True + 0 + + + + + + ok + cancel + + + diff --git a/sw/uiconfig/swriter/ui/sidebarstylepresets.ui b/sw/uiconfig/swriter/ui/sidebarstylepresets.ui index 7df9c8eabba2..68c834217e2f 100644 --- a/sw/uiconfig/swriter/ui/sidebarstylepresets.ui +++ b/sw/uiconfig/swriter/ui/sidebarstylepresets.ui @@ -1,37 +1,37 @@ - + True - False - True - True + False + True + True True - False - 6 - 6 + False + 6 + 6 True - True + True True True - never - never - in + never + never + in True - False + False True - True + True GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_STRUCTURE_MASK True True @@ -41,14 +41,14 @@ - 0 - 0 + 0 + 0 - 0 - 0 + 0 + 0 diff --git a/sw/uiconfig/swriter/ui/subjectdialog.ui b/sw/uiconfig/swriter/ui/subjectdialog.ui index 30d3400a2e01..55fa1b857329 100644 --- a/sw/uiconfig/swriter/ui/subjectdialog.ui +++ b/sw/uiconfig/swriter/ui/subjectdialog.ui @@ -1,31 +1,31 @@ - + - False + False No Subject - 0 - 0 - dialog - question + 0 + 0 + dialog + question You did not specify a subject for this message. - If you would like to provide one, please type it now. + If you would like to provide one, please type it now. - False + False vertical 24 - False + False True _Cancel True - True - False + True + False True @@ -38,10 +38,10 @@ _OK True - True - True - True - True + True + True + True + True True @@ -58,37 +58,37 @@ - + True - False + False True - 7 + 7 True - True + True True + True True - True - 0 - 1 + 0 + 1 True - False + False Subject: - True - edit + True + edit 0 - 0 - 0 + 0 + 0 @@ -104,8 +104,5 @@ cancel ok - - - diff --git a/sw/uiconfig/swriter/ui/tablepreviewdialog.ui b/sw/uiconfig/swriter/ui/tablepreviewdialog.ui index e171b9d3d7f4..dafe8353d335 100644 --- a/sw/uiconfig/swriter/ui/tablepreviewdialog.ui +++ b/sw/uiconfig/swriter/ui/tablepreviewdialog.ui @@ -1,36 +1,33 @@ - + - False - 6 + False + 6 Mail Merge Recipients False True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _Close True - True - True - True - True + True + True + True + True True @@ -43,20 +40,20 @@ False True - end + end 0 True - False + False vertical 6 True - False + False start The list below shows the contents of: %1 @@ -69,22 +66,22 @@ True - True + True True True - never - never - in + never + never + in True - False + False True True True - False + False True True diff --git a/sw/uiconfig/swriter/ui/tableproperties.ui b/sw/uiconfig/swriter/ui/tableproperties.ui index fb3b271b9f0b..466782180da2 100644 --- a/sw/uiconfig/swriter/ui/tableproperties.ui +++ b/sw/uiconfig/swriter/ui/tableproperties.ui @@ -1,32 +1,29 @@ - + - False - 6 + False + 6 Table Properties False True - dialog - - - + dialog - False + False vertical 12 - False - end + False + end _Reset True - True - True + True + True True @@ -39,10 +36,10 @@ _OK True - True - True - True - True + True + True + True + True True @@ -55,8 +52,8 @@ _Cancel True - True - True + True + True True @@ -69,8 +66,8 @@ _Help True - True - True + True + True True @@ -84,47 +81,23 @@ False True - end + end 0 True - True + True True True True - True + True True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -133,42 +106,18 @@ True - False + False Table - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -180,43 +129,19 @@ True - False + False Text Flow 1 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -228,43 +153,19 @@ True - False + False Columns 2 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -276,43 +177,19 @@ True - False + False Borders 3 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -324,12 +201,12 @@ True - False + False Background 4 - False + False diff --git a/sw/uiconfig/swriter/ui/tocdialog.ui b/sw/uiconfig/swriter/ui/tocdialog.ui index b3fe4e0ca589..1d6a2d20c5fb 100644 --- a/sw/uiconfig/swriter/ui/tocdialog.ui +++ b/sw/uiconfig/swriter/ui/tocdialog.ui @@ -1,33 +1,30 @@ - + - False - 6 + False + 6 Table of Contents, Index or Bibliography True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _Reset True - True - True + True + True True @@ -40,11 +37,11 @@ _OK True - True - True - True - True - True + True + True + True + True + True False @@ -56,8 +53,8 @@ _Cancel True - True - True + True + True True @@ -70,8 +67,8 @@ _Help True - True - True + True + True True @@ -85,71 +82,47 @@ Preview True - True - False - True - True + True + False + True + True True True 4 True - True + True False True - end + end 0 True - False + False True True 12 True - True + True True True True - True + True True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -158,42 +131,18 @@ True - False + False Type - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -205,43 +154,19 @@ True - False + False Entries 1 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -253,43 +178,19 @@ True - False + False Styles 2 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -301,43 +202,19 @@ True - False + False Columns 3 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -349,12 +226,12 @@ True - False + False Background 4 - False + False @@ -366,9 +243,9 @@ - False + False GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_STRUCTURE_MASK - True + True Preview diff --git a/sw/uiconfig/swriter/ui/tokenwidget.ui b/sw/uiconfig/swriter/ui/tokenwidget.ui index cbf7bf62be6e..963e689a787d 100644 --- a/sw/uiconfig/swriter/ui/tokenwidget.ui +++ b/sw/uiconfig/swriter/ui/tokenwidget.ui @@ -1,27 +1,27 @@ - + True - False + False go-previous True - False + False go-next True - False + False True 12 True - True - True + True + True image1 True @@ -33,63 +33,39 @@ - 5 + 5 True - True + True True - external - never - in + external + never + in True - False + False True True - False + False True True True - False + False start True - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 0 + 0 + 0 @@ -106,8 +82,8 @@ True - True - True + True + True image2 True diff --git a/sw/uiconfig/swriter/ui/toxbuttonwidget.ui b/sw/uiconfig/swriter/ui/toxbuttonwidget.ui index 3e3d36010db3..7e96ddfa930b 100644 --- a/sw/uiconfig/swriter/ui/toxbuttonwidget.ui +++ b/sw/uiconfig/swriter/ui/toxbuttonwidget.ui @@ -1,10 +1,10 @@ - + True - True - True + True + True diff --git a/sw/uiconfig/swriter/ui/toxentrywidget.ui b/sw/uiconfig/swriter/ui/toxentrywidget.ui index 4dd0378caab2..0ed954c38e6d 100644 --- a/sw/uiconfig/swriter/ui/toxentrywidget.ui +++ b/sw/uiconfig/swriter/ui/toxentrywidget.ui @@ -1,12 +1,12 @@ - + True - True - True + True + True + 1 True - 1 diff --git a/sw/uiconfig/swriter/ui/warndatasourcedialog.ui b/sw/uiconfig/swriter/ui/warndatasourcedialog.ui index 31e08207571d..56bc44cd1aa2 100644 --- a/sw/uiconfig/swriter/ui/warndatasourcedialog.ui +++ b/sw/uiconfig/swriter/ui/warndatasourcedialog.ui @@ -1,34 +1,34 @@ - + - False + False Data Source Not Found False True - dialog - True - warning + dialog + True + warning The data source “%1” was not found. - The connection to the data source could not be established. Please check the connection settings. + The connection to the data source could not be established. Please check the connection settings. - False + False vertical 12 - False + False Check Connection Settings... True - True - True - True - True - True + True + True + True + True + True False @@ -40,10 +40,10 @@ _Cancel True - True - True + True + True True - right + right False @@ -55,7 +55,7 @@ False True - end + end 0 diff --git a/sw/uiconfig/swriter/ui/warnemaildialog.ui b/sw/uiconfig/swriter/ui/warnemaildialog.ui index e8a0c149b895..fe1dd4c0ac8f 100644 --- a/sw/uiconfig/swriter/ui/warnemaildialog.ui +++ b/sw/uiconfig/swriter/ui/warnemaildialog.ui @@ -1,33 +1,33 @@ - + - False + False Emails could not be sent False True - 0 - 0 - dialog - True - warning + 0 + 0 + dialog + True + warning ok Emails could not be sent - The following error occurred: + The following error occurred: - False + False vertical 12 - False + False False True - end + end 0 @@ -35,28 +35,28 @@ True - False + False True True True - True + True True True - in + in True - True + True False - False + False - 0 - 0 + 0 + 0 @@ -68,8 +68,5 @@ - - - diff --git a/sw/uiconfig/swriter/ui/warnhiddensectiondialog.ui b/sw/uiconfig/swriter/ui/warnhiddensectiondialog.ui index 19aeec830203..722e40bce639 100644 --- a/sw/uiconfig/swriter/ui/warnhiddensectiondialog.ui +++ b/sw/uiconfig/swriter/ui/warnhiddensectiondialog.ui @@ -1,31 +1,31 @@ - + - False + False Delete hidden section(s)? False True - dialog - True - question + dialog + True + question yes-no Would you like to delete the hidden section(s)? - There are hidden sections in the deleted area. + There are hidden sections in the deleted area. - False + False vertical 12 - False + False False True - end + end 0 diff --git a/sw/uiconfig/swriter/ui/wordcount-mobile.ui b/sw/uiconfig/swriter/ui/wordcount-mobile.ui index b5c3578e7edc..a1bb1dfdf70b 100644 --- a/sw/uiconfig/swriter/ui/wordcount-mobile.ui +++ b/sw/uiconfig/swriter/ui/wordcount-mobile.ui @@ -1,33 +1,32 @@ - + - False - 6 + False + 6 Word Count - 0 - 0 - True - dialog + 0 + 0 + True + dialog - False + False vertical 12 - False - end + False + end _Close - False - True - True - True - True - True + True + True + True + True + True True @@ -39,9 +38,8 @@ _Help - False - True - True + True + True True @@ -55,29 +53,29 @@ False True - end + end 0 - + True - False + False 6 6 True - 6 - 12 + 6 + 12 True - False + False vertical True - False + False end Selection @@ -92,19 +90,19 @@ - 1 - 0 + 1 + 0 True - False + False vertical True - False + False end Document @@ -119,19 +117,19 @@ - 1 - 6 + 1 + 6 True - False + False vertical True - False + False Words 1 @@ -143,19 +141,19 @@ - 0 - 1 + 0 + 1 True - False + False vertical True - False + False Characters including spaces 1 @@ -167,19 +165,19 @@ - 0 - 2 + 0 + 2 True - False + False vertical True - False + False Characters excluding spaces 1 @@ -191,19 +189,19 @@ - 0 - 3 + 0 + 3 True - False + False vertical - False - True + False + True Asian characters and Korean syllables 1 @@ -215,19 +213,19 @@ - 0 - 4 + 0 + 4 True - False + False vertical - False - True + False + True Standardized pages 1 @@ -239,19 +237,19 @@ - 0 - 5 + 0 + 5 True - False + False vertical - False - True + False + True Standardized pages 1 @@ -263,19 +261,19 @@ - 0 - 11 + 0 + 11 True - False + False vertical - False - True + False + True Asian characters and Korean syllables 1 @@ -287,19 +285,19 @@ - 0 - 10 + 0 + 10 True - False + False vertical True - False + False Characters excluding spaces 1 @@ -311,19 +309,19 @@ - 0 - 9 + 0 + 9 True - False + False vertical True - False + False Words 1 @@ -335,19 +333,19 @@ - 0 - 7 + 0 + 7 True - False + False vertical - False - True + False + True end True 0 @@ -362,19 +360,19 @@ - 1 - 11 + 1 + 11 True - False + False vertical - False - True + False + True end True 0 @@ -389,19 +387,19 @@ - 1 - 10 + 1 + 10 True - False + False vertical True - False + False end True 0 @@ -416,19 +414,19 @@ - 1 - 9 + 1 + 9 True - False + False vertical True - False + False end True 0 @@ -443,19 +441,19 @@ - 1 - 8 + 1 + 8 True - False + False vertical True - False + False end True 0 @@ -470,19 +468,19 @@ - 1 - 7 + 1 + 7 True - False + False vertical - False - True + False + True end True 0 @@ -497,19 +495,19 @@ - 1 - 5 + 1 + 5 True - False + False vertical - False - True + False + True end True 0 @@ -524,19 +522,19 @@ - 1 - 4 + 1 + 4 True - False + False vertical True - False + False end True 0 @@ -551,19 +549,19 @@ - 1 - 3 + 1 + 3 True - False + False vertical True - False + False end True 0 @@ -578,19 +576,19 @@ - 1 - 2 + 1 + 2 True - False + False vertical True - False + False end True 0 @@ -605,19 +603,19 @@ - 1 - 1 + 1 + 1 True - False + False vertical True - False + False Characters including spaces 1 @@ -629,8 +627,8 @@ - 0 - 8 + 0 + 8 @@ -652,11 +650,8 @@ close help - - - - True + True diff --git a/sw/uiconfig/swriter/ui/zoombox.ui b/sw/uiconfig/swriter/ui/zoombox.ui index a44fffe0d421..c32c926482da 100644 --- a/sw/uiconfig/swriter/ui/zoombox.ui +++ b/sw/uiconfig/swriter/ui/zoombox.ui @@ -27,4 +27,4 @@ - \ No newline at end of file + diff --git a/sysui/desktop/menus/writer.desktop b/sysui/desktop/menus/writer.desktop index 6d4ff815f956..200decb40918 100644 --- a/sysui/desktop/menus/writer.desktop +++ b/sysui/desktop/menus/writer.desktop @@ -22,7 +22,7 @@ Icon=writer Type=Application Categories=Office;WordProcessor;X-Red-Hat-Base; Exec=${UNIXBASISROOTNAME} --writer %%FILE%% -MimeType=application/clarisworks;application/docbook+xml;application/macwriteii;application/msword;application/prs.plucker;application/rtf;application/vnd.apple.pages;application/vnd.lotus-wordpro;application/vnd.ms-word;application/vnd.ms-word.document.macroEnabled.12;application/vnd.ms-word.template.macroEnabled.12;application/vnd.ms-works;application/vnd.oasis.opendocument.text;application/vnd.oasis.opendocument.text-flat-xml;application/vnd.oasis.opendocument.text-master;application/vnd.oasis.opendocument.text-master-template;application/vnd.oasis.opendocument.text-template;application/vnd.oasis.opendocument.text-web;application/vnd.openxmlformats-officedocument.wordprocessingml.document;application/vnd.openxmlformats-officedocument.wordprocessingml.template;application/vnd.palm;application/vnd.stardivision.writer-global;application/vnd.stardivision.writer-global;application/vnd.sun.xml.writer;application/vnd.sun.xml.writer.global;application/vnd.sun.xml.writer.template;application/vnd.wordperfect;application/wordperfect;application/x-abiword;application/x-aportisdoc;application/x-doc;application/x-extension-txt;application/x-fictionbook+xml;application/x-hwp;application/x-iwork-pages-sffpages;application/x-mswrite;application/x-pocket-word;application/x-sony-bbeb;application/x-starwriter;application/x-starwriter-global;application/x-t602;text/plain;text/rtf; +MimeType=application/clarisworks;application/docbook+xml;application/macwriteii;application/msword;application/prs.plucker;application/rtf;application/vnd.apple.pages;application/vnd.lotus-wordpro;application/vnd.ms-word;application/vnd.ms-word.document.macroEnabled.12;application/vnd.ms-word.template.macroEnabled.12;application/vnd.ms-works;application/vnd.oasis.opendocument.text;application/vnd.oasis.opendocument.text-flat-xml;application/vnd.oasis.opendocument.text-master;application/vnd.oasis.opendocument.text-master-template;application/vnd.oasis.opendocument.text-template;application/vnd.oasis.opendocument.text-web;application/vnd.openxmlformats-officedocument.wordprocessingml.document;application/vnd.openxmlformats-officedocument.wordprocessingml.template;application/vnd.palm;application/vnd.stardivision.writer-global;application/vnd.sun.xml.writer;application/vnd.sun.xml.writer.global;application/vnd.sun.xml.writer.template;application/vnd.wordperfect;application/wordperfect;application/x-abiword;application/x-aportisdoc;application/x-doc;application/x-extension-txt;application/x-fictionbook+xml;application/x-hwp;application/x-iwork-pages-sffpages;application/x-mswrite;application/x-pocket-word;application/x-sony-bbeb;application/x-starwriter;application/x-starwriter-global;application/x-t602;text/plain;text/rtf; Name=%PRODUCTNAME Writer GenericName=Word Processor Comment=Create and edit text and graphics in letters, reports, documents and Web pages. diff --git a/toolkit/inc/controls/controlmodelcontainerbase.hxx b/toolkit/inc/controls/controlmodelcontainerbase.hxx index ae414346c78f..d8efbcf700bc 100644 --- a/toolkit/inc/controls/controlmodelcontainerbase.hxx +++ b/toolkit/inc/controls/controlmodelcontainerbase.hxx @@ -259,7 +259,7 @@ public: void SAL_CALL setDesignMode( sal_Bool bOn ) override; // XModifyListener // Using a dummy/no-op implementation here, not sure if every container control needs - // to implement this, certainly Dialog does, lets see about others + // to implement this, certainly Dialog does, let's see about others virtual void SAL_CALL modified( const css::lang::EventObject& ) override {} protected: virtual void ImplModelPropertiesChanged( const css::uno::Sequence< css::beans::PropertyChangeEvent >& rEvents ) override; diff --git a/toolkit/source/awt/vclxtoolkit.cxx b/toolkit/source/awt/vclxtoolkit.cxx index b9d479e685fc..ecf3605c9e9c 100644 --- a/toolkit/source/awt/vclxtoolkit.cxx +++ b/toolkit/source/awt/vclxtoolkit.cxx @@ -987,8 +987,8 @@ css::awt::Rectangle VCLXToolkit::getWorkArea( ) css::awt::Rectangle aNotherRect; aNotherRect.X = aWorkRect.Left(); aNotherRect.Y = aWorkRect.Top(); - aNotherRect.Width = aWorkRect.getOpenWidth(); - aNotherRect.Height = aWorkRect.getOpenHeight(); + aNotherRect.Width = aWorkRect.GetWidth(); + aNotherRect.Height = aWorkRect.GetHeight(); return aNotherRect; } diff --git a/translations b/translations index 755fc723ca53..b87971d7ac97 160000 --- a/translations +++ b/translations @@ -1 +1 @@ -Subproject commit 755fc723ca53063e9481f8ca26b14e6b00d46d38 +Subproject commit b87971d7ac97460271cb13bd0e4cb2e554654a45 diff --git a/ucb/source/ucp/webdav-curl/CurlSession.cxx b/ucb/source/ucp/webdav-curl/CurlSession.cxx index 183f8ad6f96a..65f5f684b9fb 100644 --- a/ucb/source/ucp/webdav-curl/CurlSession.cxx +++ b/ucb/source/ucp/webdav-curl/CurlSession.cxx @@ -992,13 +992,16 @@ auto CurlProcessor::ProcessRequestImpl( switch (rc) { case CURLE_UNSUPPORTED_PROTOCOL: - throw DAVException(DAVException::DAV_UNSUPPORTED); + throw DAVException(DAVException::DAV_UNSUPPORTED, u""_ustr, + rtl::OStringToOUString(errorString, RTL_TEXTENCODING_UTF8)); case CURLE_COULDNT_RESOLVE_PROXY: - throw DAVException(DAVException::DAV_HTTP_LOOKUP, rSession.m_Proxy); + throw DAVException(DAVException::DAV_HTTP_LOOKUP, rSession.m_Proxy, + rtl::OStringToOUString(errorString, RTL_TEXTENCODING_UTF8)); case CURLE_COULDNT_RESOLVE_HOST: throw DAVException( DAVException::DAV_HTTP_LOOKUP, - ConnectionEndPointString(rSession.m_URI.GetHost(), rSession.m_URI.GetPort())); + ConnectionEndPointString(rSession.m_URI.GetHost(), rSession.m_URI.GetPort()), + rtl::OStringToOUString(errorString, RTL_TEXTENCODING_UTF8)); case CURLE_COULDNT_CONNECT: case CURLE_SSL_CONNECT_ERROR: case CURLE_SSL_CERTPROBLEM: @@ -1020,7 +1023,8 @@ auto CurlProcessor::ProcessRequestImpl( case CURLE_AUTH_ERROR: throw DAVException( DAVException::DAV_HTTP_AUTH, // probably? - ConnectionEndPointString(rSession.m_URI.GetHost(), rSession.m_URI.GetPort())); + ConnectionEndPointString(rSession.m_URI.GetHost(), rSession.m_URI.GetPort()), + rtl::OStringToOUString(errorString, RTL_TEXTENCODING_UTF8)); case CURLE_WRITE_ERROR: case CURLE_READ_ERROR: // error returned from our callbacks case CURLE_OUT_OF_MEMORY: @@ -1033,13 +1037,16 @@ auto CurlProcessor::ProcessRequestImpl( case CURLE_RECURSIVE_API_CALL: throw DAVException( DAVException::DAV_HTTP_FAILED, - ConnectionEndPointString(rSession.m_URI.GetHost(), rSession.m_URI.GetPort())); + ConnectionEndPointString(rSession.m_URI.GetHost(), rSession.m_URI.GetPort()), + rtl::OStringToOUString(errorString, RTL_TEXTENCODING_UTF8)); case CURLE_OPERATION_TIMEDOUT: throw DAVException( DAVException::DAV_HTTP_TIMEOUT, - ConnectionEndPointString(rSession.m_URI.GetHost(), rSession.m_URI.GetPort())); + ConnectionEndPointString(rSession.m_URI.GetHost(), rSession.m_URI.GetPort()), + rtl::OStringToOUString(errorString, RTL_TEXTENCODING_UTF8)); default: // lots of generic errors - throw DAVException(DAVException::DAV_HTTP_ERROR, u""_ustr, 0); + throw DAVException(DAVException::DAV_HTTP_ERROR, u""_ustr, + rtl::OStringToOUString(errorString, RTL_TEXTENCODING_UTF8)); } } // error handling part 2: HTTP status codes diff --git a/ucb/source/ucp/webdav-curl/webdavcontent.cxx b/ucb/source/ucp/webdav-curl/webdavcontent.cxx index e2533fee9bca..4b3589ea7bf9 100644 --- a/ucb/source/ucp/webdav-curl/webdavcontent.cxx +++ b/ucb/source/ucp/webdav-curl/webdavcontent.cxx @@ -2258,6 +2258,19 @@ uno::Any Content::open( && aDAVOptions.getHttpResponseStatusCode() != SC_INTERNAL_SERVER_ERROR) { // throws exception as if there was a server error, a DAV exception + switch (aDAVOptions.getHttpResponseStatusCode()) + { + case USC_CONNECT_FAILED: + { + CurlUri aUri(aTargetURL); + throw DAVException( + DAVException::DAV_HTTP_CONNECT, + ConnectionEndPointString(aUri.GetHost(), aUri.GetPort()), + aDAVOptions.getHttpResponseStatusText()); + } + default: + break; + } throw DAVException( DAVException::DAV_HTTP_ERROR, aDAVOptions.getHttpResponseStatusText(), aDAVOptions.getHttpResponseStatusCode() ); @@ -3913,6 +3926,9 @@ Content::ResourceType Content::getResourceType( break; case USC_CONNECTION_TIMED_OUT: e = DAVException::DAV_HTTP_TIMEOUT; + throw DAVException(e, + ConnectionEndPointString(aHostName, nPort), + aDAVOptions.getHttpResponseStatusText()); break; case USC_AUTH_FAILED: e = DAVException::DAV_HTTP_AUTH; @@ -4065,11 +4081,9 @@ void Content::getResourceOptions( // cache the internal unofficial status code aDAVOptions.setHttpResponseStatusCode(e.getError() == DAVException::DAV_HTTP_CONNECT ? USC_CONNECT_FAILED : USC_CONNECTION_TIMED_OUT); - if (e.getError() == DAVException::DAV_HTTP_CONNECT) - { // ugly: this is not a HTTP status from the server but message - // from libcurl but the string member is unused... - aDAVOptions.setHttpResponseStatusText(e.getMessage()); - } + // ugly: this is not a HTTP status from the server but message + // from libcurl but the string member is unused... + aDAVOptions.setHttpResponseStatusText(e.getMessage()); // used only internally, so the text doesn't really matter.. aStaticDAVOptionsCache.addDAVOptions( aDAVOptions, m_nOptsCacheLifeNotFound ); diff --git a/unotest/source/cpp/unobootstrapprotector/unobootstrapprotector.cxx b/unotest/source/cpp/unobootstrapprotector/unobootstrapprotector.cxx index 5ad175b9d0ef..98c5ea3cbe26 100644 --- a/unotest/source/cpp/unobootstrapprotector/unobootstrapprotector.cxx +++ b/unotest/source/cpp/unobootstrapprotector/unobootstrapprotector.cxx @@ -42,7 +42,7 @@ using namespace com::sun::star; //But we can't setup and tear down the root component context for //every test because all the uno singletons will be invalid after -//the first dispose. So lets setup the default context once before +//the first dispose. So let's setup the default context once before //all tests are run, and tear it down once after all have finished class Prot : public CppUnit::Protector diff --git a/unotools/source/ucbhelper/ucbstreamhelper.cxx b/unotools/source/ucbhelper/ucbstreamhelper.cxx index 72a3d7cbe64b..f68a503370c1 100644 --- a/unotools/source/ucbhelper/ucbstreamhelper.cxx +++ b/unotools/source/ucbhelper/ucbstreamhelper.cxx @@ -137,24 +137,37 @@ static std::unique_ptr lcl_CreateStream( const OUString& rFileName, St return pStream; } -std::unique_ptr UcbStreamHelper::CreateStream(const OUString& rFileName, StreamMode eOpenMode, css::uno::Reference xParentWin) +std::unique_ptr +UcbStreamHelper::CreateStream(const OUString& rFileName, StreamMode eOpenMode, + css::uno::Reference xParentWin, + bool bUseSimpleFileAccessInteraction) { // related tdf#99312 // create a specialized interaction handler to manages Web certificates and Web credentials when needed Reference< XInteractionHandler > xIH( css::task::InteractionHandler::createWithParent(comphelper::getProcessComponentContext(), xParentWin)); + + if (!bUseSimpleFileAccessInteraction) + return lcl_CreateStream(rFileName, eOpenMode, xIH, true /* bEnsureFileExists */); + Reference xIHScoped(new comphelper::SimpleFileAccessInteraction(xIH)); return lcl_CreateStream( rFileName, eOpenMode, xIHScoped, true /* bEnsureFileExists */ ); } -std::unique_ptr UcbStreamHelper::CreateStream(const OUString& rFileName, StreamMode eOpenMode, - bool bFileExists, css::uno::Reference xParentWin) +std::unique_ptr +UcbStreamHelper::CreateStream(const OUString& rFileName, StreamMode eOpenMode, bool bFileExists, + css::uno::Reference xParentWin, + bool bUseSimpleFileAccessInteraction) { // related tdf#99312 // create a specialized interaction handler to manages Web certificates and Web credentials when needed Reference< XInteractionHandler > xIH( css::task::InteractionHandler::createWithParent(comphelper::getProcessComponentContext(), xParentWin)); + + if (!bUseSimpleFileAccessInteraction) + return lcl_CreateStream(rFileName, eOpenMode, xIH, !bFileExists); + Reference xIHScoped(new comphelper::SimpleFileAccessInteraction(xIH)); return lcl_CreateStream( rFileName, eOpenMode, xIHScoped,!bFileExists ); } diff --git a/unoxml/source/dom/documentbuilder.cxx b/unoxml/source/dom/documentbuilder.cxx index 46232463497d..3be49adcd899 100644 --- a/unoxml/source/dom/documentbuilder.cxx +++ b/unoxml/source/dom/documentbuilder.cxx @@ -369,7 +369,7 @@ namespace DOM Reference< XDocument > xRet; - // if we failed to parse the URI as a simple file, lets try via a ucb stream. + // if we failed to parse the URI as a simple file, let's try via a ucb stream. // For Android file:///assets/ URLs which must go via the osl/ file API. if (pDoc == nullptr) { Reference < XSimpleFileAccess3 > xStreamAccess( diff --git a/uui/uiconfig/ui/authfallback.ui b/uui/uiconfig/ui/authfallback.ui index 85113cfadbe5..02b7c8f77632 100644 --- a/uui/uiconfig/ui/authfallback.ui +++ b/uui/uiconfig/ui/authfallback.ui @@ -1,36 +1,33 @@ - + - False - 6 + False + 6 Authentication Code True - 0 - 0 - dialog - True - - - + 0 + 0 + dialog + True - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -43,8 +40,8 @@ _Cancel True - True - True + True + True True @@ -57,30 +54,30 @@ False True - end + end 0 - + True - False + False - + True - False - 6 + False + 6 True - False + False center - False - G- + False + G- False @@ -91,11 +88,11 @@ True - True - 6 - True + True + 6 + True + 6 True - 6 False @@ -105,81 +102,81 @@ - 0 - 1 + 0 + 1 True - False + False Enter the 6 digit PIN: 0 - 0 - 0 + 0 + 0 - 0 - 1 + 0 + 1 - + True - False + False True True - 6 + 6 True - True - True + True + True + 0 True - 0 - 0 - 1 + 0 + 1 True - True + True False + True True - True - 0 - 2 + 0 + 2 True - False + False True - word-char - 70 - 70 + word-char + 70 + 70 0 - 0 - 0 + 0 + 0 - 0 - 0 + 0 + 0 diff --git a/uui/uiconfig/ui/filterselect.ui b/uui/uiconfig/ui/filterselect.ui index 48f85e8727ad..1d283dd67c71 100644 --- a/uui/uiconfig/ui/filterselect.ui +++ b/uui/uiconfig/ui/filterselect.ui @@ -1,5 +1,5 @@ - + @@ -11,30 +11,30 @@ - False - 6 + False + 6 Filter Selection True - 0 - 0 - dialog + 0 + 0 + dialog - False + False True True vertical 12 - False - end + False + end _OK True - True - True + True + True True @@ -47,8 +47,8 @@ _Cancel True - True - True + True + True True @@ -61,8 +61,8 @@ _Help True - True - True + True + True True @@ -76,14 +76,14 @@ False True - end + end 0 True - False + False True True vertical @@ -91,7 +91,7 @@ True - False + False start True 0 @@ -105,20 +105,20 @@ True - True + True True True - in + in True - True + True True liststore1 - False - False - 0 - False + False + False + 0 + False @@ -160,8 +160,5 @@ cancel help - - - diff --git a/uui/uiconfig/ui/logindialog.ui b/uui/uiconfig/ui/logindialog.ui index 2b4b2a39124b..b787560ffc7b 100644 --- a/uui/uiconfig/ui/logindialog.ui +++ b/uui/uiconfig/ui/logindialog.ui @@ -1,32 +1,32 @@ - + - False - 6 + False + 6 Authentication Required True - 0 - 0 - dialog + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -39,8 +39,8 @@ _Cancel True - True - True + True + True True @@ -53,8 +53,8 @@ _Help True - True - True + True + True True @@ -68,29 +68,29 @@ False True - end + end 0 - + True - False - 6 - 12 + False + 6 + 12 _Use system credentials True - True - False - True - True + True + False + True + True - 0 - 9 + 0 + 9 2 @@ -98,181 +98,181 @@ _Remember password True - True - False - True - True + True + False + True + True - 0 - 8 + 0 + 8 2 True - True + True True + True True - True - 1 - 7 + 1 + 7 True - False + False A_ccount: - True - accounted + True + accounted 0 - 0 - 7 + 0 + 7 True - False + False Pass_word: - True - passworded + True + passworded 0 - 0 - 6 + 0 + 6 True - True + True True False + True True - True - 1 - 6 + 1 + 6 True - True + True True + True True - True - 1 - 5 + 1 + 5 True - False + False _User name: - True - nameed + True + nameed 0 - 0 - 5 + 0 + 5 - False - True + False + True Enter user name and password for: “%2” on %1 0 - 0 - 3 + 0 + 3 2 - False - True + False + True Wrong user name and password for: “%2” on %1 0 - 0 - 3 + 0 + 3 2 - False - True + False + True Wrong user name and password for: %1 0 - 0 - 3 + 0 + 3 2 True - False + False Enter user name and password for: %1 0 - 0 - 2 + 0 + 2 2 True - False + False Message from server: - True - errorinfo + True + errorinfo 0 - 0 - 0 + 0 + 0 2 True - False + False True - 56 + 56 0 - 0 - 1 + 0 + 1 2 @@ -296,8 +296,5 @@ cancel help - - - diff --git a/uui/uiconfig/ui/masterpassworddlg.ui b/uui/uiconfig/ui/masterpassworddlg.ui index f5d2c5415dfb..bab8e93bc5ee 100644 --- a/uui/uiconfig/ui/masterpassworddlg.ui +++ b/uui/uiconfig/ui/masterpassworddlg.ui @@ -1,31 +1,31 @@ - + - False - 6 + False + 6 Enter Master Password True - 0 - 0 - dialog + 0 + 0 + dialog - False + False vertical 12 - False + False True - end + end _Help True - True - True + True + True True @@ -39,10 +39,10 @@ _OK True - True - True - True - True + True + True + True + True True @@ -55,8 +55,8 @@ _Cancel True - True - True + True + True True @@ -69,24 +69,24 @@ False True - end + end 0 True - False + False end vertical 6 True - False + False _Enter password: - True - password + True + password 0 0.5 @@ -99,12 +99,12 @@ True - True + True False - True - 35 - password + True + 35 True + password Type a password. A password is case sensitive. @@ -131,9 +131,6 @@ ok cancel - - - Enter the master password to continue. diff --git a/uui/uiconfig/ui/setmasterpassworddlg.ui b/uui/uiconfig/ui/setmasterpassworddlg.ui index 1fd06e0e5c57..0e5daab33ac4 100644 --- a/uui/uiconfig/ui/setmasterpassworddlg.ui +++ b/uui/uiconfig/ui/setmasterpassworddlg.ui @@ -1,30 +1,30 @@ - + - False - 6 + False + 6 Set Master Password True - 0 - 0 - dialog + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _Help True - True - True + True + True 6 True @@ -39,10 +39,10 @@ _OK True - True - True - True - True + True + True + True + True True @@ -55,8 +55,8 @@ _Cancel True - True - True + True + True True @@ -69,23 +69,23 @@ False True - end + end 0 True - False + False vertical 6 True - False + False Passwords for web connections are protected by a master password. You will be asked to enter it once per session, if %PRODUCTNAME retrieves a password from the protected password list. True - 62 + 62 0 @@ -142,10 +142,10 @@ True - True + True False - password True + password Enter the master password. @@ -188,11 +188,11 @@ True - True + True False - True - password + True True + password Enter the master password again. @@ -208,14 +208,14 @@ True - False - 6 + False + 6 Caution: If you forget the master password, you will be unable to access any of the information protected by it. Passwords are case sensitive. True - 62 + 62 0 - + @@ -238,9 +238,6 @@ ok cancel - - - Assign a master password to protect the access to a saved password. diff --git a/uui/uiconfig/ui/simplenameclash.ui b/uui/uiconfig/ui/simplenameclash.ui index 39a5aae5cab7..981a60bb1faf 100644 --- a/uui/uiconfig/ui/simplenameclash.ui +++ b/uui/uiconfig/ui/simplenameclash.ui @@ -1,33 +1,30 @@ - + - False - 6 + False + 6 File Exists True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _Help True - True - True + True + True True @@ -41,8 +38,8 @@ Replace True - True - True + True + True False @@ -54,10 +51,10 @@ Rename True - True - True - True - True + True + True + True + True False @@ -69,8 +66,8 @@ _Cancel True - True - True + True + True True @@ -83,20 +80,20 @@ False True - end + end 0 True - False + False vertical 6 True - False + False start True 0 @@ -110,10 +107,10 @@ True - True + True True + True True - True False diff --git a/uui/uiconfig/ui/sslwarndialog.ui b/uui/uiconfig/ui/sslwarndialog.ui index 01a7fd0d24f5..a9426c0fabd3 100644 --- a/uui/uiconfig/ui/sslwarndialog.ui +++ b/uui/uiconfig/ui/sslwarndialog.ui @@ -1,32 +1,32 @@ - + - False - 6 + False + 6 Security Warning: False True - dialog - True - warning + dialog + True + warning - False + False vertical 12 - False - end + False + end Continue True - True - True - True + True + True + True False @@ -38,9 +38,9 @@ Cancel Connection True - True - True - True + True + True + True False @@ -52,8 +52,8 @@ View Certificate True - True - True + True + True 6 @@ -67,7 +67,7 @@ False True - end + end 0 diff --git a/uui/uiconfig/ui/unknownauthdialog.ui b/uui/uiconfig/ui/unknownauthdialog.ui index fe44ae2b983a..5c5d5bf27bdc 100644 --- a/uui/uiconfig/ui/unknownauthdialog.ui +++ b/uui/uiconfig/ui/unknownauthdialog.ui @@ -1,31 +1,31 @@ - + - False - 6 + False + 6 Website Certified by an Unknown Authority False True - dialog - True - warning + dialog + True + warning - False + False vertical 12 - False - end + False + end _OK True - True - True + True + True True @@ -38,8 +38,8 @@ _Cancel True - True - True + True + True True @@ -52,8 +52,8 @@ _Help True - True - True + True + True True @@ -67,58 +67,58 @@ False True - end + end 0 - + True - False - 6 + False + 6 Accept this certificate temporarily for this session True - True - False - True + True + False + True True - True + True - 0 - 1 + 0 + 1 Do not accept this certificate and do not connect to this Web site True - True - False - True - True + True + False + True + True accept - 0 - 2 + 0 + 2 Examine Certificate… True - True - True + True + True start - True + True - 0 - 0 + 0 + 0 diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk index 361d55a0ae2c..dd3d9d48c8e3 100644 --- a/vcl/Library_vcl.mk +++ b/vcl/Library_vcl.mk @@ -319,7 +319,6 @@ $(eval $(call gb_Library_add_exception_objects,vcl,\ vcl/source/graphic/GraphicLoader \ vcl/source/graphic/GraphicObject \ vcl/source/graphic/GraphicObject2 \ - vcl/source/graphic/GraphicReader \ vcl/source/graphic/Manager \ vcl/source/graphic/UnoBinaryDataContainer \ vcl/source/graphic/UnoGraphic \ diff --git a/vcl/README.lifecycle.md b/vcl/README.lifecycle.md index 8b0e5de2d0fd..4f9c99d516fd 100644 --- a/vcl/README.lifecycle.md +++ b/vcl/README.lifecycle.md @@ -120,7 +120,7 @@ pointer for you. ### How does my familiar code change ? -Lets tweak the exemplary code above to fit the new model: +Let's tweak the exemplary code above to fit the new model: ``` - Dialog aDialog(... dialog params ... ); diff --git a/vcl/inc/impgraph.hxx b/vcl/inc/impgraph.hxx index fd6446e1972a..e15845c9d99a 100644 --- a/vcl/inc/impgraph.hxx +++ b/vcl/inc/impgraph.hxx @@ -70,7 +70,6 @@ private: Size maExPrefSize; ImpSwapInfo maSwapInfo; std::unique_ptr mpAnimation; - std::shared_ptr mpContext; std::shared_ptr mpSwapFile; std::shared_ptr mpGfxLink; std::shared_ptr maVectorGraphicData; @@ -189,8 +188,6 @@ private: bool swapOutGraphic(SvStream& rStream); // end swapping - std::shared_ptr& getContext() { return mpContext;} - void setContext( const std::shared_ptr& pReader ); void setDummyContext( bool value ) { mbDummyContext = value; } bool isDummyContext() const { return mbDummyContext; } void setGfxLink( const std::shared_ptr& ); diff --git a/vcl/inc/skia/osx/gdiimpl.hxx b/vcl/inc/skia/osx/gdiimpl.hxx index b97245e86e11..b60280a09e6b 100644 --- a/vcl/inc/skia/osx/gdiimpl.hxx +++ b/vcl/inc/skia/osx/gdiimpl.hxx @@ -44,11 +44,13 @@ public: virtual void Flush(const tools::Rectangle&) override; virtual void WindowBackingPropertiesChanged() override; + CGImageRef createCGImageFromRasterSurface(const NSRect& rDirtyRect, CGPoint& rImageOrigin, + bool& rImageFlipped); + private: virtual int getWindowScaling() const override; virtual void createWindowSurfaceInternal(bool forceRaster = false) override; virtual void flushSurfaceToWindowContext() override; - void flushSurfaceToScreenCG(); static inline sk_sp fontManager; }; diff --git a/vcl/osx/salgdiutils.cxx b/vcl/osx/salgdiutils.cxx index a9445293211c..d7f8ec48eaf0 100644 --- a/vcl/osx/salgdiutils.cxx +++ b/vcl/osx/salgdiutils.cxx @@ -29,6 +29,7 @@ #include #include #include +#include #include #include @@ -37,7 +38,7 @@ #if HAVE_FEATURE_SKIA #include -#include +#include #endif static bool bTotalScreenBounds = false; @@ -233,6 +234,10 @@ bool AquaSharedAttributes::checkContext() maLayer.set(nullptr); } + // tdf#159175 no CGLayer is needed for an NSWindow when using Skia + if (SkiaHelper::isVCLSkiaEnabled() && mpFrame->getNSWindow()) + return true; + if (!maContextHolder.isSet()) { const int nBitmapDepth = 32; @@ -297,7 +302,7 @@ bool AquaSharedAttributes::checkContext() * associated window, if any; cf. drawRect event handling * on the frame. */ -void AquaSalGraphics::UpdateWindow( NSRect& ) +void AquaSalGraphics::UpdateWindow( NSRect& rRect ) { if (!maShared.mpFrame) { @@ -305,26 +310,65 @@ void AquaSalGraphics::UpdateWindow( NSRect& ) } NSGraphicsContext* pContext = [NSGraphicsContext currentContext]; - if (maShared.maLayer.isSet() && pContext != nullptr) + if (!pContext) { + SAL_WARN_IF(!maShared.mpFrame->mbInitShow, "vcl", "UpdateWindow called with no NSGraphicsContext"); + return; + } + + CGImageRef img = nullptr; + CGPoint aImageOrigin = CGPointMake(0, 0); + bool bImageFlipped = false; +#if HAVE_FEATURE_SKIA + if (SkiaHelper::isVCLSkiaEnabled()) + { + // tdf#159175 no CGLayer is needed for an NSWindow when using Skia + // Get a CGImageRef directly from the Skia/Raster surface and draw + // that directly to the NSWindow. + // Note: Skia/Metal will always return a null CGImageRef since it + // draws directly to the NSWindow using the surface's CAMetalLayer. + AquaSkiaSalGraphicsImpl *pBackend = static_cast(mpBackend.get()); + if (pBackend) + img = pBackend->createCGImageFromRasterSurface(rRect, aImageOrigin, bImageFlipped); + } + else +#else + (void)rRect; +#endif + if (maShared.maLayer.isSet()) + { + maShared.applyXorContext(); + + const CGRect aRectPoints = { CGPointZero, maShared.maLayer.getSizePixels() }; + CGContextSetBlendMode(maShared.maCSContextHolder.get(), kCGBlendModeCopy); + CGContextDrawLayerInRect(maShared.maCSContextHolder.get(), aRectPoints, maShared.maLayer.get()); + + img = CGBitmapContextCreateImage(maShared.maCSContextHolder.get()); + } + + if (img) + { + const float fScale = sal::aqua::getWindowScaling(); CGContextHolder rCGContextHolder([pContext CGContext]); rCGContextHolder.saveState(); - // Related: tdf#155092 translate Y coordinate for height differences - // When in live resize, the NSView's height may have changed before - // the CGLayer has been resized. This causes the CGLayer's content - // to be drawn just above or below the top left corner of the view - // so translate the Y coordinate by any difference between the - // NSView's height and the CGLayer's height. - NSView *pView = maShared.mpFrame->mpNSView; - if (pView) + CGRect aRect = CGRectMake(aImageOrigin.x / fScale, aImageOrigin.y / fScale, CGImageGetWidth(img) / fScale, CGImageGetHeight(img) / fScale); + if (bImageFlipped) { + // Related: tdf#155092 translate Y coordinate of flipped images + // When in live resize, the NSView's height may have changed before + // the surface has been resized. This causes flipped content + // to be drawn just above or below the top left corner of the view + // so translate the Y coordinate using the NSView's height. // Use the NSView's bounds, not its frame, to properly handle // any rotation and/or scaling that might have been already - // applied to the view - CGFloat fTranslateY = [pView bounds].size.height - maShared.maLayer.getSizePoints().height; - CGContextTranslateCTM(rCGContextHolder.get(), 0, fTranslateY); + // applied to the view. + NSView *pView = maShared.mpFrame->mpNSView; + if (pView) + aRect.origin.y = [pView bounds].size.height - aRect.origin.y - aRect.size.height; + else if (maShared.maLayer.isSet()) + aRect.origin.y = maShared.maLayer.getSizePoints().height - aRect.origin.y - aRect.size.height; } CGMutablePathRef rClip = maShared.mpFrame->getClipPath(); @@ -335,23 +379,23 @@ void AquaSalGraphics::UpdateWindow( NSRect& ) CGContextClip(rCGContextHolder.get()); } - maShared.applyXorContext(); - - const CGSize aSize = maShared.maLayer.getSizePoints(); - const CGRect aRect = CGRectMake(0, 0, aSize.width, aSize.height); - const CGRect aRectPoints = { CGPointZero, maShared.maLayer.getSizePixels() }; - CGContextSetBlendMode(maShared.maCSContextHolder.get(), kCGBlendModeCopy); - CGContextDrawLayerInRect(maShared.maCSContextHolder.get(), aRectPoints, maShared.maLayer.get()); - - CGImageRef img = CGBitmapContextCreateImage(maShared.maCSContextHolder.get()); - CGImageRef displayColorSpaceImage = CGImageCreateCopyWithColorSpace(img, [[maShared.mpFrame->getNSWindow() colorSpace] CGColorSpace]); CGContextSetBlendMode(rCGContextHolder.get(), kCGBlendModeCopy); - CGContextDrawImage(rCGContextHolder.get(), aRect, displayColorSpaceImage); - CGImageRelease(img); - CGImageRelease(displayColorSpaceImage); + NSWindow *pWindow = maShared.mpFrame->getNSWindow(); + if (pWindow) + { + CGImageRef displayColorSpaceImage = CGImageCreateCopyWithColorSpace(img, [[maShared.mpFrame->getNSWindow() colorSpace] CGColorSpace]); + CGContextDrawImage(rCGContextHolder.get(), aRect, displayColorSpaceImage); + CGImageRelease(displayColorSpaceImage); + } + else + { + CGContextDrawImage(rCGContextHolder.get(), aRect, img); + } rCGContextHolder.restoreState(); + + CGImageRelease(img); } else { diff --git a/vcl/osx/salmacos.cxx b/vcl/osx/salmacos.cxx index 700b252cf4f3..14e2a80695d9 100644 --- a/vcl/osx/salmacos.cxx +++ b/vcl/osx/salmacos.cxx @@ -26,6 +26,7 @@ #include #include +#include #include #include @@ -506,6 +507,12 @@ bool AquaSalVirtualDevice::SetSize(tools::Long nDX, tools::Long nDY) nFlags = uint32_t(kCGImageAlphaNoneSkipFirst) | uint32_t(kCGBitmapByteOrder32Host); } + if (SkiaHelper::isVCLSkiaEnabled()) + { + mpGraphics->SetVirDevGraphics(this, maLayer, nullptr, mnBitmapDepth); + return true; + } + // Allocate buffer for virtual device graphics as bitmap context to store graphics with highest required (scaled) resolution size_t nScaledWidth = mnWidth * fScale; diff --git a/vcl/qa/cppunit/graphicfilter/data/gif/pass/afl-sample-short-read-1.gif b/vcl/qa/cppunit/graphicfilter/data/gif/fail/afl-sample-short-read-1.gif similarity index 100% rename from vcl/qa/cppunit/graphicfilter/data/gif/pass/afl-sample-short-read-1.gif rename to vcl/qa/cppunit/graphicfilter/data/gif/fail/afl-sample-short-read-1.gif diff --git a/vcl/qa/cppunit/graphicfilter/data/gif/pass/afl-sample-short-read-2.gif b/vcl/qa/cppunit/graphicfilter/data/gif/fail/afl-sample-short-read-2.gif similarity index 100% rename from vcl/qa/cppunit/graphicfilter/data/gif/pass/afl-sample-short-read-2.gif rename to vcl/qa/cppunit/graphicfilter/data/gif/fail/afl-sample-short-read-2.gif diff --git a/vcl/qa/cppunit/graphicfilter/data/gif/pass/crash-1.gif b/vcl/qa/cppunit/graphicfilter/data/gif/fail/crash-1.gif similarity index 100% rename from vcl/qa/cppunit/graphicfilter/data/gif/pass/crash-1.gif rename to vcl/qa/cppunit/graphicfilter/data/gif/fail/crash-1.gif diff --git a/vcl/qa/cppunit/graphicfilter/data/gif/pass/crash-2.gif b/vcl/qa/cppunit/graphicfilter/data/gif/fail/crash-2.gif similarity index 100% rename from vcl/qa/cppunit/graphicfilter/data/gif/pass/crash-2.gif rename to vcl/qa/cppunit/graphicfilter/data/gif/fail/crash-2.gif diff --git a/vcl/qa/cppunit/pdfexport/pdfexport2.cxx b/vcl/qa/cppunit/pdfexport/pdfexport2.cxx index 6c0f39e977bd..fb7ad3f97d85 100644 --- a/vcl/qa/cppunit/pdfexport/pdfexport2.cxx +++ b/vcl/qa/cppunit/pdfexport/pdfexport2.cxx @@ -4713,11 +4713,11 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf152246) CPPUNIT_ASSERT_EQUAL(size_t(1), aPages.size()); // Position array - constexpr double aPos[5][4] = { { 56.699, 707.701, 131.401, 721.499 }, - { 198.499, 707.701, 273.201, 721.499 }, - { 303.349, 680.101, 378.051, 693.899 }, - { 480.599, 680.101, 555.301, 693.899 }, - { 56.699, 652.501, 131.401, 666.299 } }; + constexpr double aPos[5][4] = { { 55.699, 706.701, 132.401, 722.499 }, + { 197.499, 706.701, 274.201, 722.499 }, + { 302.349, 679.101, 379.051, 694.899 }, + { 479.599, 679.101, 556.301, 694.899 }, + { 55.699, 651.501, 132.401, 667.299 } }; // Get page annotations. auto pAnnots = dynamic_cast(aPages[0]->Lookup("Annots"_ostr)); diff --git a/vcl/quartz/CoreTextFontFace.cxx b/vcl/quartz/CoreTextFontFace.cxx index 662b439a9eae..47792fff7a58 100644 --- a/vcl/quartz/CoreTextFontFace.cxx +++ b/vcl/quartz/CoreTextFontFace.cxx @@ -46,43 +46,46 @@ sal_IntPtr CoreTextFontFace::GetFontId() const const std::vector& CoreTextFontFace::GetVariations(const LogicalFontInstance&) const { - CTFontRef pFont = CTFontCreateWithFontDescriptor(mxFontDescriptor, 0.0, nullptr); - if (!mxVariations) { mxVariations.emplace(); - CFArrayRef pAxes = CTFontCopyVariationAxes(pFont); - if (pAxes) + CTFontRef pFont = CTFontCreateWithFontDescriptor(mxFontDescriptor, 0.0, nullptr); + if (pFont) { - CFDictionaryRef pVariations = CTFontCopyVariation(pFont); - if (pVariations) + CFArrayRef pAxes = CTFontCopyVariationAxes(pFont); + if (pAxes) { - CFIndex nAxes = CFArrayGetCount(pAxes); - for (CFIndex i = 0; i < nAxes; ++i) + CFDictionaryRef pVariations = CTFontCopyVariation(pFont); + if (pVariations) { - auto pAxis = static_cast(CFArrayGetValueAtIndex(pAxes, i)); - if (pAxis) + CFIndex nAxes = CFArrayGetCount(pAxes); + for (CFIndex i = 0; i < nAxes; ++i) { - hb_tag_t nTag; - auto pTag = static_cast( - CFDictionaryGetValue(pAxis, kCTFontVariationAxisIdentifierKey)); - if (!pTag) - continue; - CFNumberGetValue(pTag, kCFNumberIntType, &nTag); + auto pAxis = static_cast(CFArrayGetValueAtIndex(pAxes, i)); + if (pAxis) + { + hb_tag_t nTag; + auto pTag = static_cast( + CFDictionaryGetValue(pAxis, kCTFontVariationAxisIdentifierKey)); + if (!pTag) + continue; + CFNumberGetValue(pTag, kCFNumberIntType, &nTag); - float fValue; - auto pValue - = static_cast(CFDictionaryGetValue(pVariations, pTag)); - if (!pValue) - continue; - CFNumberGetValue(pValue, kCFNumberFloatType, &fValue); + float fValue; + auto pValue + = static_cast(CFDictionaryGetValue(pVariations, pTag)); + if (!pValue) + continue; + CFNumberGetValue(pValue, kCFNumberFloatType, &fValue); - mxVariations->push_back({ nTag, fValue }); + mxVariations->push_back({ nTag, fValue }); + } } + CFRelease(pVariations); } - CFRelease(pVariations); + CFRelease(pAxes); } - CFRelease(pAxes); + CFRelease(pFont); } } diff --git a/vcl/skia/gdiimpl.cxx b/vcl/skia/gdiimpl.cxx index e6fdff986eae..2fdccc772253 100644 --- a/vcl/skia/gdiimpl.cxx +++ b/vcl/skia/gdiimpl.cxx @@ -730,11 +730,20 @@ void SkiaSalGraphicsImpl::drawPixel(tools::Long nX, tools::Long nY, Color nColor // Apparently drawPixel() is actually expected to set the pixel and not draw it. paint.setBlendMode(SkBlendMode::kSrc); // set as is, including alpha +#ifdef MACOSX // tdf#148569 set extra drawing constraints when scaling // Previously, setting stroke width and cap was only done when running // unit tests. But the same drawing constraints are necessary when running // with a Retina display on macOS. if (mScaling != 1) +#else + // Related tdf#148569: do not apply macOS fix to non-macOS platforms + // Setting the stroke width and cap has a noticeable performance penalty + // when running on GTK3. Since tdf#148569 only appears to occur on macOS + // Retina displays, revert commit a4488013ee6c87a97501b620dbbf56622fb70246 + // for non-macOS platforms. + if (mScaling != 1 && isUnitTestRunning()) +#endif { // On HiDPI displays, draw a square on the entire non-hidpi "pixel" when running unittests, // since tests often require precise pixel drawing. diff --git a/vcl/skia/osx/gdiimpl.cxx b/vcl/skia/osx/gdiimpl.cxx index 9b511ad4469b..ffe1ebc42d65 100644 --- a/vcl/skia/osx/gdiimpl.cxx +++ b/vcl/skia/osx/gdiimpl.cxx @@ -37,6 +37,24 @@ using namespace SkiaHelper; +namespace +{ +struct SnapshotImageData +{ + sk_sp image; + SkPixmap pixmap; +}; +} + +static void SnapshotImageDataCallback(void* pInfo, const void* pData, size_t nSize) +{ + (void)pData; + (void)nSize; + + if (pInfo) + delete static_cast(pInfo); +} + AquaSkiaSalGraphicsImpl::AquaSkiaSalGraphicsImpl(AquaSalGraphics& rParent, AquaSharedAttributes& rShared) : SkiaSalGraphicsImpl(rParent, rShared.mpFrame) @@ -101,117 +119,129 @@ void AquaSkiaSalGraphicsImpl::WindowBackingPropertiesChanged() { windowBackingPr void AquaSkiaSalGraphicsImpl::flushSurfaceToWindowContext() { if (!isGPU()) - flushSurfaceToScreenCG(); + { + // tdf159175 mark dirty area in NSWindow for redrawing + // This will cause -[SalFrameView drawRect:] to be called. That, + // in turn, will draw a CGImageRef of the surface fetched from + // AquaSkiaSalGraphicsImpl::createCGImageFromRasterSurface(). + mrShared.refreshRect(mDirtyRect.x(), mDirtyRect.y(), mDirtyRect.width(), + mDirtyRect.height()); + } else + { SkiaSalGraphicsImpl::flushSurfaceToWindowContext(); + } } // For Raster we use our own screen blitting (see above). -void AquaSkiaSalGraphicsImpl::flushSurfaceToScreenCG() +CGImageRef AquaSkiaSalGraphicsImpl::createCGImageFromRasterSurface(const NSRect& rDirtyRect, + CGPoint& rImageOrigin, + bool& rImageFlipped) { + if (isGPU() || !mSurface) + return nullptr; + // Based on AquaGraphicsBackend::drawBitmap(). if (!mrShared.checkContext()) - return; + return nullptr; + + NSRect aIntegralRect = NSIntegralRect(rDirtyRect); + if (NSIsEmptyRect(aIntegralRect)) + return nullptr; - assert(mSurface.get()); // Do not use sub-rect, it creates copies of the data. - sk_sp image = makeCheckedImageSnapshot(mSurface); - SkPixmap pixmap; - if (!image->peekPixels(&pixmap)) + SnapshotImageData* pInfo = new SnapshotImageData; + pInfo->image = makeCheckedImageSnapshot(mSurface); + if (!pInfo->image->peekPixels(&pInfo->pixmap)) abort(); - // If window scaling, then mDirtyRect is in VCL coordinates, mSurface has screen size (=points,HiDPI), - // maContextHolder has screen size but a scale matrix set so its inputs are in VCL coordinates (see - // its setup in AquaSharedAttributes::checkContext()). - // This creates the bitmap context from the cropped part, writable_addr32() will get - // the first pixel of mDirtyRect.topLeft(), and using pixmap.rowBytes() ensures the following - // pixel lines will be read from correct positions. - if (pixmap.bounds() != mDirtyRect && pixmap.bounds().bottom() == mDirtyRect.bottom()) + + SkIRect aDirtyRect = SkIRect::MakeXYWH( + aIntegralRect.origin.x * mScaling, aIntegralRect.origin.y * mScaling, + aIntegralRect.size.width * mScaling, aIntegralRect.size.height * mScaling); + if (mrShared.isFlipped()) + aDirtyRect = SkIRect::MakeXYWH( + aDirtyRect.x(), pInfo->pixmap.bounds().height() - aDirtyRect.y() - aDirtyRect.height(), + aDirtyRect.width(), aDirtyRect.height()); + if (!aDirtyRect.intersect(pInfo->pixmap.bounds())) { - // HACK for tdf#145843: If mDirtyRect includes the last line but not the first pixel of it, + delete pInfo; + return nullptr; + } + + // If window scaling, then aDirtyRect is in scaled VCL coordinates and mSurface has + // screen size (=points,HiDPI). + // This creates the bitmap context from the cropped part, writable_addr32() will get + // the first pixel of aDirtyRect.topLeft(), and using pixmap.rowBytes() ensures the following + // pixel lines will be read from correct positions. + if (pInfo->pixmap.bounds() != aDirtyRect + && pInfo->pixmap.bounds().bottom() == aDirtyRect.bottom()) + { + // HACK for tdf#145843: If aDirtyRect includes the last line but not the first pixel of it, // then the rowBytes() trick would lead to the CG* functions thinking that even pixels after // the pixmap data belong to the area (since the shifted x()+rowBytes() points there) and // at least on Intel Mac they would actually read those data, even though I see no good reason // to do that, as that's beyond the x()+width() for the last line. That could be handled // by creating a subset SkImage (which as is said above copies data), or set the x coordinate // to 0, which will then make rowBytes() match the actual data. - mDirtyRect.fLeft = 0; + aDirtyRect.fLeft = 0; // Related tdf#156630 pixmaps can be wider than the dirty rectangle // This seems to most commonly occur when SAL_FORCE_HIDPI_SCALING=1 // and the native window scale is 2. - assert(mDirtyRect.width() <= pixmap.bounds().width()); + assert(aDirtyRect.width() <= pInfo->pixmap.bounds().width()); } // tdf#145843 Do not use CGBitmapContextCreate() to create a bitmap context // As described in the comment in the above code, CGBitmapContextCreate() // and CGBitmapContextCreateWithData() will try to access pixels up to - // mDirtyRect.x() + pixmap.bounds.width() for each row. When reading the + // aDirtyRect.x() + pixmap.bounds.width() for each row. When reading the // last line in the SkPixmap, the buffer allocated for the SkPixmap ends at - // mDirtyRect.x() + mDirtyRect.width() and mDirtyRect.width() is clamped to - // pixmap.bounds.width() - mDirtyRect.x(). + // aDirtyRect.x() + aDirtyRect.width() and aDirtyRect.width() is clamped to + // pixmap.bounds.width() - aDirtyRect.x(). // This behavior looks like an optimization within CGBitmapContextCreate() // to draw with a single memcpy() so fix this bug by chaining the // CGDataProvider(), CGImageCreate(), and CGImageCreateWithImageInRect() // functions to create the screen image. - CGDataProviderRef dataProvider = CGDataProviderCreateWithData( - nullptr, pixmap.writable_addr32(0, 0), pixmap.computeByteSize(), nullptr); + CGDataProviderRef dataProvider + = CGDataProviderCreateWithData(pInfo, pInfo->pixmap.writable_addr32(0, 0), + pInfo->pixmap.computeByteSize(), SnapshotImageDataCallback); if (!dataProvider) { + delete pInfo; SAL_WARN("vcl.skia", "flushSurfaceToScreenGC(): Failed to allocate data provider"); - return; + return nullptr; } - CGImageRef fullImage = CGImageCreate(pixmap.bounds().width(), pixmap.bounds().height(), 8, - 8 * image->imageInfo().bytesPerPixel(), pixmap.rowBytes(), - GetSalData()->mxRGBSpace, - SkiaToCGBitmapType(image->colorType(), image->alphaType()), - dataProvider, nullptr, false, kCGRenderingIntentDefault); + CGImageRef fullImage + = CGImageCreate(pInfo->pixmap.bounds().width(), pInfo->pixmap.bounds().height(), 8, + 8 * pInfo->image->imageInfo().bytesPerPixel(), pInfo->pixmap.rowBytes(), + GetSalData()->mxRGBSpace, + SkiaToCGBitmapType(pInfo->image->colorType(), pInfo->image->alphaType()), + dataProvider, nullptr, false, kCGRenderingIntentDefault); if (!fullImage) { CGDataProviderRelease(dataProvider); SAL_WARN("vcl.skia", "flushSurfaceToScreenGC(): Failed to allocate full image"); - return; + return nullptr; } CGImageRef screenImage = CGImageCreateWithImageInRect( - fullImage, CGRectMake(mDirtyRect.x() * mScaling, mDirtyRect.y() * mScaling, - mDirtyRect.width() * mScaling, mDirtyRect.height() * mScaling)); + fullImage, + CGRectMake(aDirtyRect.x(), aDirtyRect.y(), aDirtyRect.width(), aDirtyRect.height())); if (!screenImage) { CGImageRelease(fullImage); CGDataProviderRelease(dataProvider); - SAL_WARN("vcl.skia", "flushSurfaceToScreenGC(): Failed to allocate screen image"); - return; + SAL_WARN("vcl.skia", "createCGImageFromRasterSurface(): Failed to allocate screen image"); + return nullptr; } - mrShared.maContextHolder.saveState(); - // Drawing to the actual window has scaling active, so use unscaled coordinates, the scaling matrix will scale them - // to the proper screen coordinates. Unless the scaling is fake for debugging, in which case scale them to draw - // at the scaled size. - int windowScaling = 1; - static const char* env = getenv("SAL_FORCE_HIDPI_SCALING"); - if (env != nullptr) - windowScaling = atoi(env); - CGRect drawRect - = CGRectMake(mDirtyRect.x() * windowScaling, mDirtyRect.y() * windowScaling, - mDirtyRect.width() * windowScaling, mDirtyRect.height() * windowScaling); - if (mrShared.isFlipped()) - { - // I don't understand why, but apparently it's needed to explicitly to flip the drawing, even though maContextHelper - // has this set up, so this unsets the flipping. - CGFloat invertedY = drawRect.origin.y + drawRect.size.height; - CGContextTranslateCTM(mrShared.maContextHolder.get(), 0, invertedY); - CGContextScaleCTM(mrShared.maContextHolder.get(), 1, -1); - drawRect.origin.y = 0; - } - CGContextDrawImage(mrShared.maContextHolder.get(), drawRect, screenImage); - mrShared.maContextHolder.restoreState(); + rImageOrigin = CGPointMake(aDirtyRect.x(), aDirtyRect.y()); + rImageFlipped = mrShared.isFlipped(); - CGImageRelease(screenImage); CGImageRelease(fullImage); CGDataProviderRelease(dataProvider); - // This is also in VCL coordinates. - mrShared.refreshRect(mDirtyRect.x(), mDirtyRect.y(), mDirtyRect.width(), mDirtyRect.height()); + return screenImage; } bool AquaSkiaSalGraphicsImpl::drawNativeControl(ControlType nType, ControlPart nPart, diff --git a/vcl/source/bitmap/BitmapEx.cxx b/vcl/source/bitmap/BitmapEx.cxx index 0d1216bb7095..ebcb7aa1cb9a 100644 --- a/vcl/source/bitmap/BitmapEx.cxx +++ b/vcl/source/bitmap/BitmapEx.cxx @@ -1286,7 +1286,11 @@ tools::Polygon BitmapEx::GetContour( bool bContourEdgeDetect, std::unique_ptr pPoints2; tools::Long nX, nY; sal_uInt16 nPolyPos = 0; - const BitmapColor aBlack = pAcc->GetBestMatchingColor( COL_BLACK ); + // tdf#161498 use COL_ALPHA_OPAQUE for finding opaque pixels + // Starting with commit 81994cb2b8b32453a92bcb011830fcb884f22ff3, + // pixels now contain an alpha value instead of a transparency + // value. + const BitmapColor aTransparencyOpaque = pAcc->GetBestMatchingColor( COL_ALPHA_OPAQUE ); pPoints1.reset(new Point[ nHeight ]); pPoints2.reset(new Point[ nHeight ]); @@ -1299,7 +1303,7 @@ tools::Polygon BitmapEx::GetContour( bool bContourEdgeDetect, // scan row from left to right while( nX < nEndX1 ) { - if( aBlack == pAcc->GetPixelFromData( pScanline, nX ) ) + if( aTransparencyOpaque == pAcc->GetPixelFromData( pScanline, nX ) ) { pPoints1[ nPolyPos ] = Point( nX, nY ); nX = nStartX2; @@ -1307,7 +1311,7 @@ tools::Polygon BitmapEx::GetContour( bool bContourEdgeDetect, // this loop always breaks eventually as there is at least one pixel while( true ) { - if( aBlack == pAcc->GetPixelFromData( pScanline, nX ) ) + if( aTransparencyOpaque == pAcc->GetPixelFromData( pScanline, nX ) ) { pPoints2[ nPolyPos ] = Point( nX, nY ); break; diff --git a/vcl/source/bitmap/dibtools.cxx b/vcl/source/bitmap/dibtools.cxx index 483da0d89e2c..c4b15f79e76b 100644 --- a/vcl/source/bitmap/dibtools.cxx +++ b/vcl/source/bitmap/dibtools.cxx @@ -944,7 +944,7 @@ bool ImplReadDIBBody(SvStream& rIStm, Bitmap& rBmp, AlphaMask* pBmpAlpha, sal_uI // tdf#122958 invalid compression value used if (aHeader.nCompression & 0x000F) { - // lets assume that there was an error in the generating application + // let's assume that there was an error in the generating application // and allow through as COMPRESS_NONE if the bottom byte is 0 SAL_WARN( "vcl", "bad bmp compression scheme: " << aHeader.nCompression << ", rejecting bmp"); return false; diff --git a/vcl/source/filter/graphicfilter.cxx b/vcl/source/filter/graphicfilter.cxx index a7b125760107..e4a9f97f3188 100644 --- a/vcl/source/filter/graphicfilter.cxx +++ b/vcl/source/filter/graphicfilter.cxx @@ -91,7 +91,6 @@ #include "FilterConfigCache.hxx" #include -#include // Support for GfxLinkType::NativeWebp is so far disabled, // as enabling it would write .webp images e.g. to .odt documents, @@ -640,7 +639,7 @@ void GraphicFilter::ImportGraphics(std::vector< std::shared_ptr >& rGra if (!rContext.mAlphaMask.IsEmpty()) // Need to move the AlphaMask back to the BitmapEx. *rContext.m_pGraphic = BitmapEx( rContext.m_pGraphic->GetBitmapExRef().GetBitmap(), rContext.mAlphaMask ); - if (rContext.m_nStatus == ERRCODE_NONE && (rContext.m_eLinkType != GfxLinkType::NONE) && !rContext.m_pGraphic->GetReaderContext()) + if (rContext.m_nStatus == ERRCODE_NONE && rContext.m_eLinkType != GfxLinkType::NONE) { BinaryDataContainer aGraphicContent; @@ -1281,10 +1280,8 @@ ErrCode GraphicFilter::ImportGraphic(Graphic& rGraphic, std::u16string_view rPat ResetLastError(); - std::shared_ptr pContext = rGraphic.GetReaderContext(); - bool bDummyContext = rGraphic.IsDummyContext(); - if( !pContext || bDummyContext ) { + bool bDummyContext = rGraphic.IsDummyContext(); if( bDummyContext ) { rGraphic.SetDummyContext( false ); @@ -1313,13 +1310,6 @@ ErrCode GraphicFilter::ImportGraphic(Graphic& rGraphic, std::u16string_view rPat aFilterName = pConfig->GetImportFilterName( nFormat ); } - else - { - aFilterName = pContext->GetUpperFilterName(); - - nStreamBegin = 0; - nStatus = ERRCODE_NONE; - } // read graphic { @@ -1423,7 +1413,7 @@ ErrCode GraphicFilter::ImportGraphic(Graphic& rGraphic, std::u16string_view rPat nStatus = ERRCODE_GRFILTER_FILTERERROR; } - if( nStatus == ERRCODE_NONE && ( eLinkType != GfxLinkType::NONE ) && !rGraphic.GetReaderContext() && !bLinkSet ) + if (nStatus == ERRCODE_NONE && eLinkType != GfxLinkType::NONE && !bLinkSet) { if (aGraphicContent.isEmpty()) { @@ -1854,7 +1844,7 @@ IMPL_LINK( GraphicFilter, FilterCallback, ConvertData&, rData, bool ) default: break; } - if( GraphicType::NONE == rData.maGraphic.GetType() || rData.maGraphic.GetReaderContext() ) // Import + if (GraphicType::NONE == rData.maGraphic.GetType()) // Import { // Import nFormat = GetImportFormatNumberForShortName( aShortName ); diff --git a/vcl/source/filter/igif/gifread.cxx b/vcl/source/filter/igif/gifread.cxx index 443eb05c045a..6f96131a7908 100644 --- a/vcl/source/filter/igif/gifread.cxx +++ b/vcl/source/filter/igif/gifread.cxx @@ -23,7 +23,6 @@ #include "gifread.hxx" #include #include -#include namespace { @@ -42,8 +41,7 @@ enum GIFAction enum ReadState { GIFREAD_OK, - GIFREAD_ERROR, - GIFREAD_NEED_MORE + GIFREAD_ERROR }; } @@ -54,7 +52,7 @@ class SvStream; namespace { -class GIFReader : public GraphicReader +class GIFReader { Animation aAnimation; sal_uInt64 nAnimationByteSize; @@ -115,7 +113,6 @@ public: ReadState ReadGIF( Graphic& rGraphic ); bool ReadIsAnimated(); void GetLogicSize(Size& rLogicSize); - Graphic GetIntermediateGraphic(); explicit GIFReader( SvStream& rStm ); }; @@ -157,7 +154,6 @@ GIFReader::GIFReader( SvStream& rStm ) , cNonTransIndex1 ( 0 ) , nPaletteSize( 0 ) { - maUpperName = "SVIGIF"; aSrcBuf.resize(256); // Memory buffer for ReadNextBlock ClearImageExtensions(); } @@ -261,13 +257,13 @@ bool GIFReader::ReadGlobalHeader() bool bRet = false; auto nRead = rIStm.ReadBytes(pBuf, 6); - if (nRead == 6 && (rIStm.GetError() != ERRCODE_IO_PENDING)) + if (nRead == 6 && rIStm.good()) { pBuf[ 6 ] = 0; if( !strcmp( pBuf, "GIF87a" ) || !strcmp( pBuf, "GIF89a" ) ) { nRead = rIStm.ReadBytes(pBuf, 7); - if (nRead == 7 && (rIStm.GetError() != ERRCODE_IO_PENDING)) + if (nRead == 7 && rIStm.good()) { sal_uInt8 nAspect; sal_uInt8 nRF; @@ -287,7 +283,7 @@ bool GIFReader::ReadGlobalHeader() else nBackgroundColor = 0; - if (rIStm.GetError() != ERRCODE_IO_PENDING) + if (rIStm.good()) bRet = true; } } @@ -307,7 +303,7 @@ void GIFReader::ReadPaletteEntries( BitmapPalette* pPal, sal_uLong nCount ) std::unique_ptr pBuf(new sal_uInt8[ nLen ]); std::size_t nRead = rIStm.ReadBytes(pBuf.get(), nLen); nCount = nRead/3UL; - if (rIStm.GetError() == ERRCODE_IO_PENDING) + if (!rIStm.good()) return; sal_uInt8* pTmp = pBuf.get(); @@ -340,7 +336,7 @@ bool GIFReader::ReadExtension() // Extension-Label sal_uInt8 cFunction(0); rIStm.ReadUChar( cFunction ); - if (rIStm.GetError() != ERRCODE_IO_PENDING) + if (rIStm.good()) { bool bOverreadDataBlocks = false; sal_uInt8 cSize(0); @@ -358,7 +354,7 @@ bool GIFReader::ReadExtension() sal_uInt8 cByte(0); rIStm.ReadUChar(cByte); - if (rIStm.GetError() != ERRCODE_IO_PENDING) + if (rIStm.good()) { nGCDisposalMethod = ( cFlags >> 2) & 7; bGCTransparent = ( cFlags & 1 ); @@ -371,7 +367,7 @@ bool GIFReader::ReadExtension() // Application extension case 0xff : { - if (rIStm.GetError() != ERRCODE_IO_PENDING) + if (rIStm.good()) { // by default overread this extension bOverreadDataBlocks = true; @@ -399,7 +395,7 @@ bool GIFReader::ReadExtension() rIStm.ReadUChar( cByte ); bStatus = ( cByte == 0 ); - bRet = rIStm.GetError() != ERRCODE_IO_PENDING; + bRet = rIStm.good(); bOverreadDataBlocks = false; // Netscape interprets the loop count @@ -422,7 +418,7 @@ bool GIFReader::ReadExtension() rIStm.ReadUInt32( nLogWidth100 ).ReadUInt32( nLogHeight100 ); rIStm.ReadUChar( cByte ); bStatus = ( cByte == 0 ); - bRet = rIStm.GetError() != ERRCODE_IO_PENDING; + bRet = rIStm.good(); bOverreadDataBlocks = false; } else @@ -456,7 +452,7 @@ bool GIFReader::ReadExtension() bRet = false; std::size_t nRead = rIStm.ReadBytes(&cSize, 1); - if (rIStm.GetError() != ERRCODE_IO_PENDING && nRead == 1) + if (rIStm.good() && nRead == 1) { bRet = true; } @@ -475,7 +471,7 @@ bool GIFReader::ReadLocalHeader() bool bRet = false; std::size_t nRead = rIStm.ReadBytes(pBuf, 9); - if (rIStm.GetError() != ERRCODE_IO_PENDING && nRead == 9) + if (rIStm.good() && nRead == 9) { SvMemoryStream aMemStm; BitmapPalette* pPal; @@ -504,7 +500,7 @@ bool GIFReader::ReadLocalHeader() // if we could read everything, we will create the local image; // if the global colour table is valid for the image, we will // consider the BackGroundColorIndex. - if (rIStm.GetError() != ERRCODE_IO_PENDING) + if (rIStm.good()) { CreateBitmaps( nImageWidth, nImageHeight, pPal, bGlobalPalette && ( pPal == &aGPalette ) ); bRet = true; @@ -523,7 +519,7 @@ sal_uLong GIFReader::ReadNextBlock() if ( rIStm.eof() ) nRet = 4; - else if (rIStm.GetError() != ERRCODE_IO_PENDING) + else if (rIStm.good()) { if ( cBlockSize == 0 ) nRet = 2; @@ -531,7 +527,7 @@ sal_uLong GIFReader::ReadNextBlock() { rIStm.ReadBytes( aSrcBuf.data(), cBlockSize ); - if (rIStm.GetError() != ERRCODE_IO_PENDING) + if (rIStm.good()) { if( bOverreadBlock ) nRet = 3; @@ -721,34 +717,6 @@ void GIFReader::CreateNewBitmaps() } } -Graphic GIFReader::GetIntermediateGraphic() -{ - Graphic aImGraphic; - - // only create intermediate graphic, if data is available - // but graphic still not completely read - if ( bImGraphicReady && !aAnimation.Count() ) - { - pAcc8.reset(); - - if ( bGCTransparent ) - { - pAcc1.reset(); - aImGraphic = BitmapEx( aBmp8, aBmp1 ); - - pAcc1 = aBmp1; - bStatus = bStatus && pAcc1; - } - else - aImGraphic = BitmapEx(aBmp8); - - pAcc8 = aBmp8; - bStatus = bStatus && pAcc8; - } - - return aImGraphic; -} - bool GIFReader::ProcessGIF() { bool bRead = false; @@ -771,7 +739,7 @@ bool GIFReader::ProcessGIF() if( rIStm.eof() ) eActAction = END_READING; - else if (rIStm.GetError() != ERRCODE_IO_PENDING) + else if (rIStm.good()) { bRead = true; @@ -831,7 +799,7 @@ bool GIFReader::ProcessGIF() eActAction = ABORT_READING; else if( cDataSize > 12 ) bStatus = false; - else if (rIStm.GetError() != ERRCODE_IO_PENDING) + else if (rIStm.good()) { bRead = true; pDecomp = std::make_unique( cDataSize ); @@ -915,23 +883,16 @@ bool GIFReader::ProcessGIF() bool GIFReader::ReadIsAnimated() { - ReadState eReadState; - bStatus = true; + while (ProcessGIF() && eActAction != END_READING) + {} - while( ProcessGIF() && ( eActAction != END_READING ) ) {} + ReadState eReadState = GIFREAD_ERROR; - if( !bStatus ) + if (!bStatus) eReadState = GIFREAD_ERROR; - else if( eActAction == END_READING ) + else if (eActAction == END_READING) eReadState = GIFREAD_OK; - else - { - if ( rIStm.GetError() == ERRCODE_IO_PENDING ) - rIStm.ResetError(); - - eReadState = GIFREAD_NEED_MORE; - } if (eReadState == GIFREAD_OK) return aAnimation.Count() > 1; @@ -944,27 +905,21 @@ void GIFReader::GetLogicSize(Size& rLogicSize) rLogicSize.setHeight(nLogHeight100); } -ReadState GIFReader::ReadGIF( Graphic& rGraphic ) +ReadState GIFReader::ReadGIF(Graphic& rGraphic) { - ReadState eReadState; - bStatus = true; - while( ProcessGIF() && ( eActAction != END_READING ) ) {} + while (ProcessGIF() && eActAction != END_READING) + {} - if( !bStatus ) + ReadState eReadState = GIFREAD_ERROR; + + if (!bStatus) eReadState = GIFREAD_ERROR; - else if( eActAction == END_READING ) + else if (eActAction == END_READING) eReadState = GIFREAD_OK; - else - { - if ( rIStm.GetError() == ERRCODE_IO_PENDING ) - rIStm.ResetError(); - eReadState = GIFREAD_NEED_MORE; - } - - if( aAnimation.Count() == 1 ) + if (aAnimation.Count() == 1) { rGraphic = aAnimation.Get(0).maBitmapEx; @@ -980,50 +935,35 @@ ReadState GIFReader::ReadGIF( Graphic& rGraphic ) return eReadState; } -bool IsGIFAnimated(SvStream & rStm, Size& rLogicSize) +bool IsGIFAnimated(SvStream& rStream, Size& rLogicSize) { - GIFReader aReader(rStm); + GIFReader aReader(rStream); - SvStreamEndian nOldFormat = rStm.GetEndian(); - rStm.SetEndian(SvStreamEndian::LITTLE); + SvStreamEndian nOldFormat = rStream.GetEndian(); + rStream.SetEndian(SvStreamEndian::LITTLE); bool bResult = aReader.ReadIsAnimated(); aReader.GetLogicSize(rLogicSize); - rStm.SetEndian(nOldFormat); + rStream.SetEndian(nOldFormat); return bResult; } -VCL_DLLPUBLIC bool ImportGIF( SvStream & rStm, Graphic& rGraphic ) +VCL_DLLPUBLIC bool ImportGIF(SvStream & rStream, Graphic& rGraphic) { - std::shared_ptr pContext = rGraphic.GetReaderContext(); - rGraphic.SetReaderContext(nullptr); - GIFReader* pGIFReader = dynamic_cast( pContext.get() ); - if (!pGIFReader) - { - pContext = std::make_shared( rStm ); - pGIFReader = static_cast( pContext.get() ); - } + bool bReturn = false; + GIFReader aGIFReader(rStream); - SvStreamEndian nOldFormat = rStm.GetEndian(); - rStm.SetEndian( SvStreamEndian::LITTLE ); + SvStreamEndian nOldFormat = rStream.GetEndian(); + rStream.SetEndian(SvStreamEndian::LITTLE); - bool bRet = true; + ReadState eReadState = aGIFReader.ReadGIF(rGraphic); - ReadState eReadState = pGIFReader->ReadGIF(rGraphic); + if (eReadState == GIFREAD_OK) + bReturn = true; - if (eReadState == GIFREAD_ERROR) - { - bRet = false; - } - else if (eReadState == GIFREAD_NEED_MORE) - { - rGraphic = pGIFReader->GetIntermediateGraphic(); - rGraphic.SetReaderContext(pContext); - } + rStream.SetEndian(nOldFormat); - rStm.SetEndian(nOldFormat); - - return bRet; + return bReturn; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/source/filter/ixbm/xbmread.cxx b/vcl/source/filter/ixbm/xbmread.cxx index 5b6ae9dd7d07..2a701e4ce025 100644 --- a/vcl/source/filter/ixbm/xbmread.cxx +++ b/vcl/source/filter/ixbm/xbmread.cxx @@ -24,7 +24,6 @@ #include #include -#include #include "xbmread.hxx" @@ -43,7 +42,7 @@ enum ReadState XBMREAD_ERROR }; -class XBMReader : public GraphicReader +class XBMReader { SvStream& mrStream; Bitmap maBitmap; @@ -74,7 +73,6 @@ XBMReader::XBMReader(SvStream& rStream) : mrStream(rStream) , mnLastPosition(rStream.Tell()) { - maUpperName = "SVIXBM"; InitTable(); } diff --git a/vcl/source/filter/ixpm/xpmread.cxx b/vcl/source/filter/ixpm/xpmread.cxx index 1ad06483a712..6c9d226a3f32 100644 --- a/vcl/source/filter/ixpm/xpmread.cxx +++ b/vcl/source/filter/ixpm/xpmread.cxx @@ -23,7 +23,6 @@ #include #include -#include #include "rgbtable.hxx" @@ -63,7 +62,7 @@ class Graphic; namespace { -class XPMReader : public GraphicReader +class XPMReader { private: SvStream& mrStream; diff --git a/vcl/source/filter/jpeg/JpegReader.cxx b/vcl/source/filter/jpeg/JpegReader.cxx index 186105603904..81f1a1688cdd 100644 --- a/vcl/source/filter/jpeg/JpegReader.cxx +++ b/vcl/source/filter/jpeg/JpegReader.cxx @@ -172,22 +172,14 @@ void jpeg_svstream_src (j_decompress_ptr cinfo, void* input) JPEGReader::JPEGReader( SvStream& rStream, GraphicFilterImportFlags nImportFlags ) : mrStream ( rStream ), mnLastPos ( rStream.Tell() ), - mnLastLines ( 0 ), mbSetLogSize ( nImportFlags & GraphicFilterImportFlags::SetLogsizeForJpeg ) { - maUpperName = "SVIJPEG"; - if (!(nImportFlags & GraphicFilterImportFlags::UseExistingBitmap)) { mpBitmap.emplace(); - mpIncompleteAlpha.emplace(); } } -JPEGReader::~JPEGReader() -{ -} - bool JPEGReader::CreateBitmap(JPEGCreateBitmapParam const & rParam) { if (rParam.nWidth > SAL_MAX_INT32 / 8 || rParam.nHeight > SAL_MAX_INT32 / 8) @@ -242,90 +234,26 @@ bool JPEGReader::CreateBitmap(JPEGCreateBitmapParam const & rParam) return true; } -Graphic JPEGReader::CreateIntermediateGraphic(tools::Long nLines) +ReadState JPEGReader::Read(Graphic& rGraphic, GraphicFilterImportFlags nImportFlags, BitmapScopedWriteAccess* ppAccess ) { - Graphic aGraphic; - const Size aSizePixel(mpBitmap->GetSizePixel()); - - if (!mnLastLines) - { - mpIncompleteAlpha.emplace(aSizePixel); - mpIncompleteAlpha->Erase(255); - } - - if (nLines && (nLines < aSizePixel.Height())) - { - const tools::Long nNewLines = nLines - mnLastLines; - - if (nNewLines > 0) - { - { - BitmapScopedWriteAccess pAccess(*mpIncompleteAlpha); - pAccess->SetFillColor(COL_ALPHA_OPAQUE); - pAccess->FillRect(tools::Rectangle(Point(0, mnLastLines), Size(pAccess->Width(), nNewLines))); - } - - aGraphic = BitmapEx(*mpBitmap, *mpIncompleteAlpha); - } - else - { - aGraphic = BitmapEx(*mpBitmap); - } - } - else - { - aGraphic = BitmapEx(*mpBitmap); - } - - mnLastLines = nLines; - - return aGraphic; -} - -ReadState JPEGReader::Read( Graphic& rGraphic, GraphicFilterImportFlags nImportFlags, BitmapScopedWriteAccess* ppAccess ) -{ - ReadState eReadState; - bool bRet = false; + bool bRet = false; // seek back to the original position mrStream.Seek( mnLastPos ); // read the (partial) image - tools::Long nLines; - ReadJPEG( this, &mrStream, &nLines, nImportFlags, ppAccess ); + ReadJPEG(this, &mrStream, nImportFlags, ppAccess); auto bUseExistingBitmap = static_cast(nImportFlags & GraphicFilterImportFlags::UseExistingBitmap); if (bUseExistingBitmap || !mpBitmap->IsEmpty()) { - if( mrStream.GetError() == ERRCODE_IO_PENDING ) - { - rGraphic = CreateIntermediateGraphic(nLines); - } - else - { - if (!bUseExistingBitmap) - rGraphic = BitmapEx(*mpBitmap); - } + if (!bUseExistingBitmap) + rGraphic = BitmapEx(*mpBitmap); bRet = true; } - else if( mrStream.GetError() == ERRCODE_IO_PENDING ) - { - bRet = true; - } - // Set status ( Pending has priority ) - if (mrStream.GetError() == ERRCODE_IO_PENDING) - { - eReadState = JPEGREAD_NEED_MORE; - mrStream.ResetError(); - } - else - { - eReadState = bRet ? JPEGREAD_OK : JPEGREAD_ERROR; - } - - return eReadState; + return bRet ? JPEGREAD_OK : JPEGREAD_ERROR; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/source/filter/jpeg/JpegReader.hxx b/vcl/source/filter/jpeg/JpegReader.hxx index 6282cb4ed069..58d8f8315054 100644 --- a/vcl/source/filter/jpeg/JpegReader.hxx +++ b/vcl/source/filter/jpeg/JpegReader.hxx @@ -23,15 +23,13 @@ #include #include -#include enum class GraphicFilterImportFlags; enum ReadState { JPEGREAD_OK, - JPEGREAD_ERROR, - JPEGREAD_NEED_MORE + JPEGREAD_ERROR }; struct JPEGCreateBitmapParam @@ -45,21 +43,15 @@ struct JPEGCreateBitmapParam bool bGray; }; -class JPEGReader : public GraphicReader +class JPEGReader { - SvStream& mrStream; + SvStream& mrStream; std::optional mpBitmap; - std::optional mpIncompleteAlpha; - - tools::Long mnLastPos; - tools::Long mnLastLines; - bool mbSetLogSize; - - Graphic CreateIntermediateGraphic(tools::Long nLines); + tools::Long mnLastPos; + bool mbSetLogSize; public: - JPEGReader( SvStream& rStream, GraphicFilterImportFlags nImportFlags ); - virtual ~JPEGReader() override; + JPEGReader( SvStream& rStream, GraphicFilterImportFlags nImportFlags ); ReadState Read(Graphic& rGraphic, GraphicFilterImportFlags nImportFlags, BitmapScopedWriteAccess* ppAccess); diff --git a/vcl/source/filter/jpeg/jpeg.cxx b/vcl/source/filter/jpeg/jpeg.cxx index e7158b858b68..956a1e413def 100644 --- a/vcl/source/filter/jpeg/jpeg.cxx +++ b/vcl/source/filter/jpeg/jpeg.cxx @@ -25,29 +25,13 @@ VCL_DLLPUBLIC bool ImportJPEG( SvStream& rInputStream, Graphic& rGraphic, GraphicFilterImportFlags nImportFlags, BitmapScopedWriteAccess* ppAccess ) { - bool bReturn = true; + JPEGReader aJPEGReader(rInputStream, nImportFlags); - std::shared_ptr pContext = rGraphic.GetReaderContext(); - rGraphic.SetReaderContext(nullptr); - JPEGReader* pJPEGReader = dynamic_cast( pContext.get() ); - if (!pJPEGReader) - { - pContext = std::make_shared( rInputStream, nImportFlags ); - pJPEGReader = static_cast( pContext.get() ); - } + ReadState eReadState = aJPEGReader.Read(rGraphic, nImportFlags, ppAccess); - ReadState eReadState = pJPEGReader->Read( rGraphic, nImportFlags, ppAccess ); - - if( eReadState == JPEGREAD_ERROR ) - { - bReturn = false; - } - else if( eReadState == JPEGREAD_NEED_MORE ) - { - rGraphic.SetReaderContext( pContext ); - } - - return bReturn; + if (eReadState == JPEGREAD_ERROR) + return false; + return true; } bool ExportJPEG(SvStream& rOutputStream, const Graphic& rGraphic, diff --git a/vcl/source/filter/jpeg/jpeg.h b/vcl/source/filter/jpeg/jpeg.h index 0ab27fb2fb9c..495204524121 100644 --- a/vcl/source/filter/jpeg/jpeg.h +++ b/vcl/source/filter/jpeg/jpeg.h @@ -45,7 +45,7 @@ bool WriteJPEG( JPEGWriter* pJPEGWriter, void* pOutputStream, tools::Long nQualityPercent, tools::Long aChromaSubsampling, css::uno::Reference const & status); -void ReadJPEG( JPEGReader* pJPEGReader, void* pInputStream, tools::Long* pLines, +void ReadJPEG( JPEGReader* pJPEGReader, void* pInputStream, GraphicFilterImportFlags nImportFlags, BitmapScopedWriteAccess* ppAccess ); diff --git a/vcl/source/filter/jpeg/jpegc.cxx b/vcl/source/filter/jpeg/jpegc.cxx index 5b50bd3d394e..bac3079df04c 100644 --- a/vcl/source/filter/jpeg/jpegc.cxx +++ b/vcl/source/filter/jpeg/jpegc.cxx @@ -184,7 +184,7 @@ void progress_monitor(j_common_ptr cinfo) } -static void ReadJPEG(JpegStuff& rContext, JPEGReader* pJPEGReader, void* pInputStream, tools::Long* pLines, +static void ReadJPEG(JpegStuff& rContext, JPEGReader* pJPEGReader, void* pInputStream, GraphicFilterImportFlags nImportFlags, BitmapScopedWriteAccess* ppAccess) { @@ -311,9 +311,9 @@ static void ReadJPEG(JpegStuff& rContext, JPEGReader* pJPEGReader, void* pInputS } // tdf#138950 allow up to one short read (no_data_available_failures <= 1) to not trigger cancelling import - for (*pLines = 0; *pLines < nHeight && source->no_data_available_failures <= 1; (*pLines)++) + for (tools::Long nLine = 0; nLine < nHeight && source->no_data_available_failures <= 1; nLine++) { - size_t yIndex = *pLines; + size_t yIndex = nLine; sal_uInt8* p = (rContext.cinfo.out_color_space == JCS_CMYK) ? rContext.pCYMKBuffer.data() : rContext.pScanLineBuffer.data(); jpeg_read_scanlines(&rContext.cinfo, reinterpret_cast(&p), 1); @@ -362,12 +362,12 @@ static void ReadJPEG(JpegStuff& rContext, JPEGReader* pJPEGReader, void* pInputS } } -void ReadJPEG( JPEGReader* pJPEGReader, void* pInputStream, tools::Long* pLines, +void ReadJPEG( JPEGReader* pJPEGReader, void* pInputStream, GraphicFilterImportFlags nImportFlags, BitmapScopedWriteAccess* ppAccess ) { JpegStuff aContext; - ReadJPEG(aContext, pJPEGReader, pInputStream, pLines, nImportFlags, ppAccess); + ReadJPEG(aContext, pJPEGReader, pInputStream, nImportFlags, ppAccess); } bool WriteJPEG( JPEGWriter* pJPEGWriter, void* pOutputStream, diff --git a/vcl/source/gdi/graph.cxx b/vcl/source/gdi/graph.cxx index 2c3e05235225..f90adeb24703 100644 --- a/vcl/source/gdi/graph.cxx +++ b/vcl/source/gdi/graph.cxx @@ -474,16 +474,6 @@ sal_uInt32 Graphic::GetAnimationLoopCount() const return mxImpGraphic->getAnimationLoopCount(); } -std::shared_ptr& Graphic::GetReaderContext() -{ - return mxImpGraphic->getContext(); -} - -void Graphic::SetReaderContext( const std::shared_ptr &pReader ) -{ - mxImpGraphic->setContext( pReader ); -} - void Graphic::SetDummyContext( bool value ) { mxImpGraphic->setDummyContext( value ); diff --git a/vcl/source/gdi/impgraph.cxx b/vcl/source/gdi/impgraph.cxx index 8bdcfb4146f6..d801fd14b8e2 100644 --- a/vcl/source/gdi/impgraph.cxx +++ b/vcl/source/gdi/impgraph.cxx @@ -92,7 +92,6 @@ ImpGraphic::ImpGraphic(const ImpGraphic& rImpGraphic) , maMetaFile(rImpGraphic.maMetaFile) , maBitmapEx(rImpGraphic.maBitmapEx) , maSwapInfo(rImpGraphic.maSwapInfo) - , mpContext(rImpGraphic.mpContext) , mpSwapFile(rImpGraphic.mpSwapFile) , mpGfxLink(rImpGraphic.mpGfxLink) , maVectorGraphicData(rImpGraphic.maVectorGraphicData) @@ -119,7 +118,6 @@ ImpGraphic::ImpGraphic(ImpGraphic&& rImpGraphic) noexcept , maBitmapEx(std::move(rImpGraphic.maBitmapEx)) , maSwapInfo(std::move(rImpGraphic.maSwapInfo)) , mpAnimation(std::move(rImpGraphic.mpAnimation)) - , mpContext(std::move(rImpGraphic.mpContext)) , mpSwapFile(std::move(rImpGraphic.mpSwapFile)) , mpGfxLink(std::move(rImpGraphic.mpGfxLink)) , maVectorGraphicData(std::move(rImpGraphic.maVectorGraphicData)) @@ -207,7 +205,6 @@ ImpGraphic& ImpGraphic::operator=( const ImpGraphic& rImpGraphic ) updateCurrentSizeInBytes(mnSizeBytes); maSwapInfo = rImpGraphic.maSwapInfo; - mpContext = rImpGraphic.mpContext; mbDummyContext = rImpGraphic.mbDummyContext; maGraphicExternalLink = rImpGraphic.maGraphicExternalLink; @@ -244,7 +241,6 @@ ImpGraphic& ImpGraphic::operator=(ImpGraphic&& rImpGraphic) meType = rImpGraphic.meType; mnSizeBytes = rImpGraphic.mnSizeBytes; maSwapInfo = std::move(rImpGraphic.maSwapInfo); - mpContext = std::move(rImpGraphic.mpContext); mbDummyContext = rImpGraphic.mbDummyContext; mpAnimation = std::move(rImpGraphic.mpAnimation); maBitmapEx = std::move(rImpGraphic.maBitmapEx); @@ -1120,12 +1116,6 @@ sal_uInt32 ImpGraphic::getAnimationLoopCount() const return mpAnimation ? mpAnimation->GetLoopCount() : 0; } -void ImpGraphic::setContext( const std::shared_ptr& pReader ) -{ - mpContext = pReader; - mbDummyContext = false; -} - bool ImpGraphic::swapInContent(SvStream& rStream) { bool bRet = false; @@ -1759,8 +1749,6 @@ sal_Int32 ImpGraphic::getPageNumber() const bool ImpGraphic::canReduceMemory() const { - if (mpContext) - return false; return !isSwappedOut(); } diff --git a/vcl/source/gdi/jobset.cxx b/vcl/source/gdi/jobset.cxx index 19fa712ea658..4ac341f47e59 100644 --- a/vcl/source/gdi/jobset.cxx +++ b/vcl/source/gdi/jobset.cxx @@ -363,8 +363,8 @@ SvStream& WriteJobSetup( SvStream& rOStream, const JobSetup& rJobSetup ) ShortToSVBT16( static_cast(rJobData.GetOrientation()), aOldJobData.nOrientation ); ShortToSVBT16( rJobData.GetPaperBin(), aOldJobData.nPaperBin ); ShortToSVBT16( static_cast(rJobData.GetPaperFormat()), aOldJobData.nPaperFormat ); - UInt32ToSVBT32( static_cast(rJobData.GetPaperWidth()), aOldJobData.nPaperWidth ); - UInt32ToSVBT32( static_cast(rJobData.GetPaperHeight()), aOldJobData.nPaperHeight ); + UInt32ToSVBT32( static_cast(rJobData.GetPaperWidth()), aOldJobData.nPaperWidth ); + UInt32ToSVBT32( static_cast(rJobData.GetPaperHeight()), aOldJobData.nPaperHeight ); ImplOldJobSetupData aOldData = {}; OString aPrnByteName(OUStringToOString(rJobData.GetPrinterName(), RTL_TEXTENCODING_UTF8)); diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx index 7fc600c40d0f..65325a0c938d 100644 --- a/vcl/source/gdi/pdfwriter_impl.cxx +++ b/vcl/source/gdi/pdfwriter_impl.cxx @@ -5675,8 +5675,7 @@ bool PDFWriterImpl::finalizeSignature() if (m_aFile.write(aByteRangeNo.getStr(), aByteRangeNo.getLength(), nWritten) != osl::File::E_None) { - if (osl::File::E_None != m_aFile.setPos(osl_Pos_Absolut, nOffset)) - return false; + (void)m_aFile.setPos(osl_Pos_Absolut, nOffset); return false; } diff --git a/vcl/source/graphic/GraphicReader.cxx b/vcl/source/graphic/GraphicReader.cxx deleted file mode 100644 index 9137ebd8a246..000000000000 --- a/vcl/source/graphic/GraphicReader.cxx +++ /dev/null @@ -1,29 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -#include - -#include -#include - -GraphicReader::GraphicReader() {} - -GraphicReader::~GraphicReader() {} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/source/pdf/PDFiumLibrary.cxx b/vcl/source/pdf/PDFiumLibrary.cxx index 0c1ee041a223..29d95338b004 100644 --- a/vcl/source/pdf/PDFiumLibrary.cxx +++ b/vcl/source/pdf/PDFiumLibrary.cxx @@ -303,6 +303,7 @@ public: OUString getFormAdditionalActionJavaScript(PDFiumDocument* pDoc, PDFAnnotAActionType eEvent) override; OUString getFormFieldValue(PDFiumDocument* pDoc) override; + int getOptionCount(PDFiumDocument* pDoc) override; }; class PDFiumPageObjectImpl final : public PDFiumPageObject @@ -1382,6 +1383,11 @@ OUString PDFiumAnnotationImpl::getFormFieldValue(PDFiumDocument* pDoc) } return aString; } +int PDFiumAnnotationImpl::getOptionCount(PDFiumDocument* pDoc) +{ + auto pDocImpl = static_cast(pDoc); + return FPDFAnnot_GetOptionCount(pDocImpl->getFormHandlePointer(), mpAnnotation); +} OUString PDFiumAnnotationImpl::getFormAdditionalActionJavaScript(PDFiumDocument* pDoc, PDFAnnotAActionType eEvent) diff --git a/vcl/source/window/dialog.cxx b/vcl/source/window/dialog.cxx index aa8f3d1d4b4c..da3ac79345c6 100644 --- a/vcl/source/window/dialog.cxx +++ b/vcl/source/window/dialog.cxx @@ -561,14 +561,10 @@ OUString AllSettings::GetUIRootDir() return sShareLayer; } -//we can't change sizeable after the fact, so need to defer until we know and then -//do the init. Find the real parent stashed in mpDialogParent. -void Dialog::doDeferredInit(WinBits nBits) +//we can't change sizeable after the fact, so need to defer until we know and then do the init. +void Dialog::ImplDeferredInit(vcl::Window* pParent, WinBits nBits) { - VclPtr pParent = mpDialogParent; - mpDialogParent = nullptr; ImplInitDialog(pParent, nBits | WB_BORDER, mnInitFlag); - mbIsDeferredInit = false; } Dialog::Dialog(vcl::Window* pParent, const OUString& rID, const OUString& rUIXMLDescription) diff --git a/vcl/source/window/floatwin.cxx b/vcl/source/window/floatwin.cxx index 5c576a0fd358..bf68500d6a70 100644 --- a/vcl/source/window/floatwin.cxx +++ b/vcl/source/window/floatwin.cxx @@ -173,13 +173,9 @@ FloatingWindow::FloatingWindow(vcl::Window* pParent, const OUString& rID, const loadUI(pParent, rID, rUIXMLDescription, rFrame); } -//Find the real parent stashed in mpDialogParent. -void FloatingWindow::doDeferredInit(WinBits nBits) +void FloatingWindow::ImplDeferredInit(vcl::Window* pParent, WinBits nBits) { - vcl::Window *pParent = mpDialogParent; - mpDialogParent = nullptr; ImplInitFloating(pParent, nBits); - mbIsDeferredInit = false; } void FloatingWindow::ApplySettings(vcl::RenderContext& rRenderContext) diff --git a/vcl/source/window/syswin.cxx b/vcl/source/window/syswin.cxx index 75b27a49a04c..e37cb548daf1 100644 --- a/vcl/source/window/syswin.cxx +++ b/vcl/source/window/syswin.cxx @@ -66,17 +66,8 @@ SystemWindow::ImplData::ImplData() SystemWindow::SystemWindow(WindowType nType, const char* pIdleDebugName) : Window(nType) - , mbDockBtn(false) - , mbHideBtn(false) - , mbSysChild(false) - , mbIsCalculatingInitialLayoutSize(false) - , mbInitialLayoutSizeCalculated(false) - , mbPaintComplete(false) - , mnMenuBarMode(MenuBarMode::Normal) - , mnIcon(0) , mpImplData(new ImplData) , maLayoutIdle( pIdleDebugName ) - , mbIsDeferredInit(false) { mpWindowImpl->mbSysWin = true; mpWindowImpl->mnActivateMode = ActivateModeFlags::GrabFocus; @@ -1110,7 +1101,15 @@ void SystemWindow::DoInitialLayout() } } -void SystemWindow::doDeferredInit(WinBits /*nBits*/) +void SystemWindow::doDeferredInit(WinBits nBits) +{ + VclPtr pParent = mpDialogParent; + mpDialogParent.reset(); + ImplDeferredInit(pParent, nBits); + mbIsDeferredInit = false; +} + +void SystemWindow::ImplDeferredInit(vcl::Window* /*pParent*/, WinBits /*nBits*/) { SAL_WARN("vcl.layout", "SystemWindow in layout without doDeferredInit impl"); } diff --git a/vcl/uiconfig/ui/aboutbox.ui b/vcl/uiconfig/ui/aboutbox.ui index c97ed6b9703a..0c3fe7fb821f 100644 --- a/vcl/uiconfig/ui/aboutbox.ui +++ b/vcl/uiconfig/ui/aboutbox.ui @@ -1,10 +1,10 @@ - + True - False + False True True vertical @@ -12,7 +12,7 @@ @@ -24,15 +24,15 @@ True - False + False True True vertical 12 - False - True + False + True center @@ -45,21 +45,21 @@ True - False + False True True - True + True True False - word + word center - False + False - 0 - 0 + 0 + 0 @@ -73,8 +73,8 @@ See Log: $GITHASH True - True - True + True + True none @@ -86,11 +86,11 @@ True - False + False True center True - 62 + 62 False @@ -102,12 +102,12 @@ True - False + False True True - False + False 12 12 True @@ -115,8 +115,8 @@ True - 0 - 0 + 0 + 0 diff --git a/vcl/uiconfig/ui/cupspassworddialog.ui b/vcl/uiconfig/ui/cupspassworddialog.ui index f01691ba745c..2b79230a1aa8 100644 --- a/vcl/uiconfig/ui/cupspassworddialog.ui +++ b/vcl/uiconfig/ui/cupspassworddialog.ui @@ -1,35 +1,32 @@ - + - False - 6 + False + 6 Authentication Request True - 0 - 0 - normal - - - + 0 + 0 + normal - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -42,8 +39,8 @@ _Cancel True - True - True + True + True True @@ -56,116 +53,116 @@ False True - end + end 0 - + True - False + False True True - 6 - 12 + 6 + 12 True - False + False _User: - True - user + True + user 1 - 0 - 2 + 0 + 2 True - False + False _Password: - True - pass + True + pass 1 - 0 - 3 + 0 + 3 True - False + False Please enter your authentication data for server “%s” - True + True True - 56 + 56 0 - 0 - 0 + 0 + 0 2 True - True + True True + True True - True - 1 - 2 + 1 + 2 True - True + True True False - True + True True - password + password - 1 - 3 + 1 + 3 - False - True + False + True _Domain: - True - domain + True + domain 1 - 0 - 1 + 0 + 1 - True - True + True + True True + True True - True - 1 - 1 + 1 + 1 diff --git a/vcl/uiconfig/ui/editmenu.ui b/vcl/uiconfig/ui/editmenu.ui index e0d55fb8cca0..eb13f6ffeaa8 100644 --- a/vcl/uiconfig/ui/editmenu.ui +++ b/vcl/uiconfig/ui/editmenu.ui @@ -1,75 +1,75 @@ - + True - False + False True - False + False _Undo - True + True True - False + False True - False + False Cu_t - True + True True - False + False _Copy - True + True True - False + False _Paste - True + True True - False + False _Delete - True + True True - False + False True - False + False Select _All - True + True True - False - True + False + True diff --git a/vcl/uiconfig/ui/errornocontentdialog.ui b/vcl/uiconfig/ui/errornocontentdialog.ui index 2cd22a410890..393b266b0edf 100644 --- a/vcl/uiconfig/ui/errornocontentdialog.ui +++ b/vcl/uiconfig/ui/errornocontentdialog.ui @@ -1,31 +1,31 @@ - + - False + False %PRODUCTNAME False True - dialog - True - error + dialog + True + error ok There are no pages to be printed. - Please check your document for ranges relevant to printing. + Please check your document for ranges relevant to printing. - False + False vertical 12 - False + False False True - end + end 0 diff --git a/vcl/uiconfig/ui/errornoprinterdialog.ui b/vcl/uiconfig/ui/errornoprinterdialog.ui index 313aa9d171a0..8256d2d7a5bf 100644 --- a/vcl/uiconfig/ui/errornoprinterdialog.ui +++ b/vcl/uiconfig/ui/errornoprinterdialog.ui @@ -1,38 +1,35 @@ - + - False + False %PRODUCTNAME False True - dialog - True - error + dialog + True + error ok No default printer found. - Please choose a printer and try again. + Please choose a printer and try again. - False + False vertical 12 - False + False False True - end + end 0 - - - diff --git a/vcl/uiconfig/ui/interimdockparent.ui b/vcl/uiconfig/ui/interimdockparent.ui index 146973b6c134..c4d033343dd4 100644 --- a/vcl/uiconfig/ui/interimdockparent.ui +++ b/vcl/uiconfig/ui/interimdockparent.ui @@ -1,23 +1,20 @@ - + - False + False True True - 4 + 4 False - True - popup-menu + True + popup-menu False - - - True - False + False vertical 6 diff --git a/vcl/uiconfig/ui/interimtearableparent.ui b/vcl/uiconfig/ui/interimtearableparent.ui index 4ab25d2e9b3e..f309723c1343 100644 --- a/vcl/uiconfig/ui/interimtearableparent.ui +++ b/vcl/uiconfig/ui/interimtearableparent.ui @@ -1,18 +1,18 @@ - + - False + False True True - 4 + 4 False - True + True True - False + False vertical 6 @@ -20,8 +20,5 @@ - - - diff --git a/vcl/uiconfig/ui/menutogglebutton3.ui b/vcl/uiconfig/ui/menutogglebutton3.ui index 158c5afe9bec..88abac929d9d 100644 --- a/vcl/uiconfig/ui/menutogglebutton3.ui +++ b/vcl/uiconfig/ui/menutogglebutton3.ui @@ -1,18 +1,18 @@ - + True - False - True + False + True True - True - True - True - True + True + True + True + True True @@ -23,9 +23,9 @@ True - True - True - True + True + True + True False diff --git a/vcl/uiconfig/ui/printerpaperpage.ui b/vcl/uiconfig/ui/printerpaperpage.ui index 9b2ef1e04d20..fd81b0bb3c43 100644 --- a/vcl/uiconfig/ui/printerpaperpage.ui +++ b/vcl/uiconfig/ui/printerpaperpage.ui @@ -1,129 +1,129 @@ - + - + True - False + False center True True - 6 - 6 - 12 - True + 6 + 6 + 12 + True True - False + False _Paper size: - True - paperlb + True + paperlb 1 - 0 - 1 + 0 + 1 True - False + False _Orientation: - True - orientlb + True + orientlb 1 - 0 - 2 + 0 + 2 True - False + False _Duplex: - True - duplexlb + True + duplexlb 1 - 0 - 3 + 0 + 3 True - False + False Paper tray: - True - slotlb + True + slotlb 1 - 0 - 4 + 0 + 4 True - False + False - 1 - 1 + 1 + 1 True - False + False Portrait Landscape - 1 - 2 + 1 + 2 True - False + False - 1 - 3 + 1 + 3 True - False + False - 1 - 4 + 1 + 4 Use only paper size from printer preferences - True - False - True - True + True + False + True + True - 0 - 0 + 0 + 0 2 diff --git a/vcl/uiconfig/ui/printerpropertiesdialog.ui b/vcl/uiconfig/ui/printerpropertiesdialog.ui index d305fee35888..46efd9d20d62 100644 --- a/vcl/uiconfig/ui/printerpropertiesdialog.ui +++ b/vcl/uiconfig/ui/printerpropertiesdialog.ui @@ -1,32 +1,32 @@ - + - False - 6 + False + 6 Properties of %s True - 0 - 0 - dialog + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -39,8 +39,8 @@ _Cancel True - True - True + True + True True @@ -53,47 +53,23 @@ False True - end + end 0 True - True + True True True True - True + True True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -102,43 +78,19 @@ True - False + False Paper 1 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -150,12 +102,12 @@ True - False + False Device 2 - False + False @@ -171,8 +123,5 @@ ok cancel - - - diff --git a/vcl/uiconfig/ui/printprogressdialog.ui b/vcl/uiconfig/ui/printprogressdialog.ui index fe17fbd3f18b..64a21310c843 100644 --- a/vcl/uiconfig/ui/printprogressdialog.ui +++ b/vcl/uiconfig/ui/printprogressdialog.ui @@ -1,30 +1,30 @@ - + - False - 6 + False + 6 Printing False - dialog + dialog - False + False vertical 12 - False - end + False + end _Cancel True - True - True - True - True + True + True + True + True True @@ -37,39 +37,39 @@ False True - end + end 0 - + True - False + False True - 6 + 6 True - False + False Page %p of %n - True - progressbar + True + progressbar - 0 - 0 + 0 + 0 True - False + False True - 0 - 1 + 0 + 1 diff --git a/vcl/uiconfig/ui/querydialog.ui b/vcl/uiconfig/ui/querydialog.ui index d472022bdb50..acbe2409f283 100644 --- a/vcl/uiconfig/ui/querydialog.ui +++ b/vcl/uiconfig/ui/querydialog.ui @@ -1,32 +1,32 @@ - + - False - 6 + False + 6 New Data Type True - 0 - 0 - normal + 0 + 0 + normal - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -39,8 +39,8 @@ _Cancel True - True - True + True + True True @@ -53,44 +53,44 @@ False True - end + end 0 - + True - False + False start True True - 6 - 12 + 6 + 12 True - False - True - entry + False + True + entry 0 - 0 - 0 + 0 + 0 True - True + True True + True True - True - 0 - 1 + 0 + 1 @@ -106,8 +106,5 @@ ok cancel - - - diff --git a/vcl/uiconfig/ui/screenshotparent.ui b/vcl/uiconfig/ui/screenshotparent.ui index 629b1741b5de..43f1e41a1418 100644 --- a/vcl/uiconfig/ui/screenshotparent.ui +++ b/vcl/uiconfig/ui/screenshotparent.ui @@ -1,32 +1,29 @@ - + - False - 6 + False + 6 True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _Cancel True - True - True + True + True True diff --git a/vcl/uiconfig/ui/wizard.ui b/vcl/uiconfig/ui/wizard.ui index e1f68da9e66a..6a3b45f41cc4 100644 --- a/vcl/uiconfig/ui/wizard.ui +++ b/vcl/uiconfig/ui/wizard.ui @@ -1,17 +1,24 @@ - + - True - 6 + True + 6 True - 0 - 0 - dialog - 0 + 0 + 0 + dialog + + + False + + + False + + diff --git a/vcl/unx/generic/app/i18n_im.cxx b/vcl/unx/generic/app/i18n_im.cxx index e3767b175d1d..16ac1d583483 100644 --- a/vcl/unx/generic/app/i18n_im.cxx +++ b/vcl/unx/generic/app/i18n_im.cxx @@ -253,7 +253,7 @@ SalI18N_InputMethod::~SalI18N_InputMethod() } // XXX -// debug routine: lets have a look at the provided method styles +// debug routine: let's have a look at the provided method styles #if OSL_DEBUG_LEVEL > 1 diff --git a/vcl/unx/generic/dtrans/X11_selection.cxx b/vcl/unx/generic/dtrans/X11_selection.cxx index e3ef6e9e2c6f..097de9c04311 100644 --- a/vcl/unx/generic/dtrans/X11_selection.cxx +++ b/vcl/unx/generic/dtrans/X11_selection.cxx @@ -1013,7 +1013,7 @@ bool SelectionManager::getPasteData( Atom selection, const OUString& rType, Sequ if( rType == "text/plain;charset=utf-16" ) { - // lets see if we have UTF16 else try to find something convertible + // let's see if we have UTF16 else try to find something convertible if( it->second->m_aTypes.getLength() && ! it->second->m_bHaveUTF16 ) { Sequence< sal_Int8 > aData; diff --git a/vcl/unx/generic/fontmanager/fontconfig.cxx b/vcl/unx/generic/fontmanager/fontconfig.cxx index 17191372bbaf..a189ab3f1161 100644 --- a/vcl/unx/generic/fontmanager/fontconfig.cxx +++ b/vcl/unx/generic/fontmanager/fontconfig.cxx @@ -889,7 +889,7 @@ namespace //returns true if the given code-point couldn't possibly be in rLangTag. bool isImpossibleCodePointForLang(const LanguageTag &rLangTag, sal_uInt32 currentChar) { - //a non-default script is set, lets believe it + //a non-default script is set, let's believe it if (rLangTag.hasScript()) return false; diff --git a/vcl/unx/gtk3/gtkframe.cxx b/vcl/unx/gtk3/gtkframe.cxx index a1b7f619983d..7e39bd784b97 100644 --- a/vcl/unx/gtk3/gtkframe.cxx +++ b/vcl/unx/gtk3/gtkframe.cxx @@ -992,11 +992,7 @@ void GtkSalFrame::InitCommon() m_pDrawingArea = m_pFixedContainer; #else m_pOverlay = GTK_OVERLAY(gtk_overlay_new()); -#if GTK_CHECK_VERSION(4,9,0) m_pFixedContainer = GTK_FIXED(g_object_new( ooo_fixed_get_type(), nullptr )); -#else - m_pFixedContainer = GTK_FIXED(gtk_fixed_new()); -#endif m_pDrawingArea = GTK_DRAWING_AREA(gtk_drawing_area_new()); #endif if (GTK_IS_WINDOW(m_pWindow)) diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx index 9ad11bb3103a..58137be49195 100644 --- a/vcl/unx/gtk3/gtkinst.cxx +++ b/vcl/unx/gtk3/gtkinst.cxx @@ -11236,15 +11236,10 @@ public: } g_list_free(pChildren); #else - GtkWidget* pChild; - if (gtk_check_version(4, 5, 0) == nullptr) - { - pChild = gtk_widget_get_first_child(GTK_WIDGET(m_pMenuButton)); - pChild = gtk_widget_get_first_child(pChild); - pChild = gtk_widget_get_first_child(pChild); - } - else - pChild = gtk_widget_get_last_child(GTK_WIDGET(m_pMenuButton)); + GtkWidget* pChild = gtk_widget_get_first_child(GTK_WIDGET(m_pMenuButton)); + pChild = gtk_widget_get_first_child(pChild); + pChild = gtk_widget_get_first_child(pChild); + g_object_ref(pChild); gtk_widget_unparent(pChild); gtk_button_set_child(GTK_BUTTON(m_pToggleButton), pChild); diff --git a/vcl/unx/gtk3/gtksalmenu.cxx b/vcl/unx/gtk3/gtksalmenu.cxx index ddfa5ef36b48..96e362428b9d 100644 --- a/vcl/unx/gtk3/gtksalmenu.cxx +++ b/vcl/unx/gtk3/gtksalmenu.cxx @@ -1054,7 +1054,7 @@ void GtkSalMenu::ApplyPersona() if (!mpMenuBarContainerWidget) return; assert(mbMenuBar); - // I'm dubious about the persona theming feature, but as it exists, lets try and support + // I'm dubious about the persona theming feature, but as it exists, let's try and support // it, apply the image to the mpMenuBarContainerWidget const BitmapEx& rPersonaBitmap = Application::GetSettings().GetStyleSettings().GetPersonaHeader(); diff --git a/vcl/unx/gtk4/a11y.cxx b/vcl/unx/gtk4/a11y.cxx index 4860c7cff33d..afa6905de553 100644 --- a/vcl/unx/gtk4/a11y.cxx +++ b/vcl/unx/gtk4/a11y.cxx @@ -19,8 +19,6 @@ #include #include -#if GTK_CHECK_VERSION(4, 9, 0) - #include "a11y.hxx" #include "gtkaccessibleeventlistener.hxx" #include "gtkaccessibleregistry.hxx" @@ -50,6 +48,10 @@ map_accessible_role(const css::uno::Reference& { css::uno::Reference xContext( rAccessible->getAccessibleContext()); + + if (!xContext.is()) + return GTK_ACCESSIBLE_ROLE_NONE; + // https://w3c.github.io/core-aam/#mapping_role // https://hg.mozilla.org/mozilla-central/file/tip/accessible/base/RoleMap.h // https://gitlab.gnome.org/GNOME/gtk/-/blob/main/gtk/a11y/gtkatspiutils.c @@ -461,10 +463,8 @@ struct LoAccessibleClass GObjectClass parent_class; }; -#if GTK_CHECK_VERSION(4, 10, 0) static void lo_accessible_range_init(gpointer iface_, gpointer); static gboolean lo_accessible_range_set_current_value(GtkAccessibleRange* self, double fNewValue); -#endif extern "C" { typedef GType (*GetGIfaceType)(); @@ -480,10 +480,8 @@ const struct { "Text", lo_accessible_text_init, gtk_accessible_text_get_type, cppu::UnoType::get }, #endif -#if GTK_CHECK_VERSION(4, 10, 0) { "Value", lo_accessible_range_init, gtk_accessible_range_get_type, cppu::UnoType::get }, -#endif }; static bool isOfType(css::uno::XInterface* xInterface, const css::uno::Type& rType) @@ -624,13 +622,11 @@ static void lo_accessible_accessible_init(GtkAccessibleInterface* iface) iface->get_platform_state = lo_accessible_get_platform_state; } -#if GTK_CHECK_VERSION(4, 10, 0) static void lo_accessible_range_init(gpointer iface_, gpointer) { auto const iface = static_cast(iface_); iface->set_current_value = lo_accessible_range_set_current_value; } -#endif // silence loplugin:unreffun #ifdef __GNUC__ @@ -811,7 +807,6 @@ static gboolean lo_accessible_get_platform_state(GtkAccessible* self, return false; } -#if GTK_CHECK_VERSION(4, 10, 0) static gboolean lo_accessible_range_set_current_value(GtkAccessibleRange* self, double fNewValue) { // return 'true' in any case, since otherwise no proper AT-SPI DBus reply gets sent @@ -852,7 +847,6 @@ static gboolean lo_accessible_range_set_current_value(GtkAccessibleRange* self, xValue->setCurrentValue(aValue); return true; } -#endif static void lo_accessible_init(LoAccessible* /*iface*/) {} @@ -926,6 +920,4 @@ static void ooo_fixed_init(OOoFixed* /*area*/) {} GtkWidget* ooo_fixed_new() { return GTK_WIDGET(g_object_new(OOO_TYPE_FIXED, nullptr)); } -#endif - /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ diff --git a/vcl/unx/gtk4/gtkaccessibleeventlistener.cxx b/vcl/unx/gtk4/gtkaccessibleeventlistener.cxx index 6e50b854d16e..aacf2191f8be 100644 --- a/vcl/unx/gtk4/gtkaccessibleeventlistener.cxx +++ b/vcl/unx/gtk4/gtkaccessibleeventlistener.cxx @@ -15,8 +15,6 @@ #include "gtkaccessibleeventlistener.hxx" #include "gtkaccessibleregistry.hxx" -#if GTK_CHECK_VERSION(4, 9, 0) - GtkAccessibleEventListener::GtkAccessibleEventListener(LoAccessible* pLoAccessible) : m_pLoAccessible(pLoAccessible) { @@ -107,6 +105,4 @@ void GtkAccessibleEventListener::notifyEvent( } } -#endif - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/unx/gtk4/gtkaccessibleregistry.cxx b/vcl/unx/gtk4/gtkaccessibleregistry.cxx index 6288a99f2fed..c8086ec4b13e 100644 --- a/vcl/unx/gtk4/gtkaccessibleregistry.cxx +++ b/vcl/unx/gtk4/gtkaccessibleregistry.cxx @@ -12,8 +12,6 @@ #include -#if GTK_CHECK_VERSION(4, 9, 0) - std::map GtkAccessibleRegistry::m_aMapping = {}; LoAccessible* @@ -56,6 +54,4 @@ void GtkAccessibleRegistry::remove(css::uno::Reference 0: bIsEnabled = self.isStepEnabled(self.nNewStep) if bIsEnabled: - break; + break self.nNewStep -= 1 if (self.nNewStep == 0): diff --git a/wizards/source/access2base/access2base.py b/wizards/source/access2base/access2base.py index ff0a9fbaa9cc..2410e6d88dae 100644 --- a/wizards/source/access2base/access2base.py +++ b/wizards/source/access2base/access2base.py @@ -40,7 +40,10 @@ import uno XSCRIPTCONTEXT = uno from platform import system as _opsys -import datetime, os, sys, traceback +import datetime +import os +import sys +import traceback _LIBRARY = '' # Should be 'Access2Base' or 'Access2BaseDev' _VERSION = '7.4' # Actual version number diff --git a/writerperfect/uiconfig/ui/exportepub.ui b/writerperfect/uiconfig/ui/exportepub.ui index 97c789ff567e..0d7730fdd57b 100644 --- a/writerperfect/uiconfig/ui/exportepub.ui +++ b/writerperfect/uiconfig/ui/exportepub.ui @@ -1,38 +1,35 @@ - + - False + False True - 6 + 6 EPUB Export False True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False True vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -45,8 +42,8 @@ _Cancel True - True - True + True + True True @@ -59,8 +56,8 @@ _Help True - True - True + True + True True @@ -74,55 +71,55 @@ False True - end + end 2 - + True - False + False True - 6 - 12 + 6 + 12 True - False + False True True - 6 - 0 - none + 6 + 0 + none - + True - False - True - 6 - 12 + False 12 6 + True + 6 + 12 True - False + False Version: - True - versionlb + True + versionlb 0 - 0 - 0 + 0 + 0 True - False + False True 0 @@ -131,15 +128,15 @@ - 1 - 0 + 1 + 0 2 True - False + False True 0 @@ -148,43 +145,43 @@ - 1 - 1 + 1 + 1 2 True - False + False Split method: - True - splitlb + True + splitlb 0 - 0 - 1 + 0 + 1 True - False + False Layout method: - True - layoutlb + True + layoutlb 0 - 0 - 2 + 0 + 2 True - False + False True 0 @@ -193,8 +190,8 @@ - 1 - 2 + 1 + 2 2 @@ -203,9 +200,9 @@ True - False + False General - True + True 0 @@ -214,162 +211,162 @@ - 0 - 0 + 0 + 0 True - False + False True True - 6 - 0 - none + 6 + 0 + none - + True - False - True - 6 - 12 + False 12 6 + True + 6 + 12 True - False + False Identifier: - True - identifier + True + identifier 0 - 0 - 0 + 0 + 0 True - False + False Title: - True - title + True + title 0 - 0 - 1 + 0 + 1 True - False + False Author: - True - author + True + author 0 - 0 - 2 + 0 + 2 True - False + False Date: - True - date + True + date 0 - 0 - 4 + 0 + 4 True - False + False Language: - True - language + True + language 0 - 0 - 3 + 0 + 3 True - True + True True + True True - True - 1 - 0 + 1 + 0 True - True + True True + True True - True - 1 - 1 + 1 + 1 True - True + True True + True True - True - 1 - 2 + 1 + 2 True - True + True True + True True - True - 1 - 3 + 1 + 3 True - True + True True + True True - True - 1 - 4 + 1 + 4 @@ -377,9 +374,9 @@ True - False + False Metadata - True + True @@ -387,105 +384,105 @@ - 0 - 2 + 0 + 2 True - False + False True True - 6 - 0 - none + 6 + 0 + none - + True - False - True - 6 - 12 + False 12 6 + True + 6 + 12 True - False + False Cover image: - True - coverpath + True + coverpath 0 - 0 - 0 + 0 + 0 True - True + True True + True True - True - 1 - 0 + 1 + 0 Browse... True - True - True + True + True - 2 - 0 + 2 + 0 True - False + False Media directory: - True - mediadir + True + mediadir 0 - 0 - 1 + 0 + 1 True - True + True True + True True - True - 1 - 1 + 1 + 1 Browse... True - True - True + True + True - 2 - 1 + 2 + 1 @@ -493,7 +490,7 @@ True - False + False Customize @@ -502,8 +499,8 @@ - 0 - 1 + 0 + 1 diff --git a/writerperfect/uiconfig/ui/wpftencodingdialog.ui b/writerperfect/uiconfig/ui/wpftencodingdialog.ui index cf6da9c698c8..9f1a88ca3344 100644 --- a/writerperfect/uiconfig/ui/wpftencodingdialog.ui +++ b/writerperfect/uiconfig/ui/wpftencodingdialog.ui @@ -1,35 +1,32 @@ - + - False - 6 + False + 6 False True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 6 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -42,8 +39,8 @@ _Cancel True - True - True + True + True True @@ -62,11 +59,11 @@ True - False + False start _Character set: - True - comboboxtext + True + comboboxtext False @@ -77,7 +74,7 @@ True - False + False False diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocumentDeserializer.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocumentDeserializer.java index 1523b9089585..a969d179c3b8 100644 --- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocumentDeserializer.java +++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocumentDeserializer.java @@ -511,7 +511,7 @@ public abstract class SxcDocumentDeserializer implements OfficeConstants, col = newCol; } - // Lets start dealing with the cell data + // Let's start dealing with the cell data Debug.log(Debug.TRACE, ""); // Get the cell's contents diff --git a/xmloff/qa/unit/data/tdf161483_CircleStartEndAngle.fodg b/xmloff/qa/unit/data/tdf161483_CircleStartEndAngle.fodg new file mode 100644 index 000000000000..66b815322be4 --- /dev/null +++ b/xmloff/qa/unit/data/tdf161483_CircleStartEndAngle.fodg @@ -0,0 +1,397 @@ + + + + + LOmyBuild/25.2.0.0.alpha0$Windows_X86_64 LibreOffice_project/5a7283a0eb880c5273ea48b0d1a6f881c4297b1a + + 24x16 + Regina Henschel + 2024-06-23T16:09:12 + Regina Henschel + 2024-06-23T16:11:32 + + + + + -1494 + -349 + 24728 + 19000 + + + view1 + true + false + false + false + true + false + true + true + true + 1500 + false + Hw== + Hw== + + false + true + true + 0 + 0 + true + true + true + 4 + 0 + -244 + -2551 + 29363 + 16609 + 500 + 500 + 100 + 100 + 500 + 5 + 500 + 5 + false + 1500 + true + false + false + false + false + + + + + 1251 + 0 + false + false + false + false + false + true + false + true + false + true + true + true + 0 + $(inst)/share/palette%3B$(user)/config/standard.sod + $(inst)/share/palette%3B$(user)/config/html.soc + false + $(inst)/share/palette%3B$(user)/config/standard.soe + $(inst)/share/palette%3B$(user)/config/standard.soh + true + $(inst)/share/palette%3B$(user)/config/standard.sog + $(inst)/share/palette%3B$(user)/config/standard.sob + true + true + 4 + 0 + false + low-resolution + false + false + false + false + true + 2 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/xmloff/qa/unit/data/tdf161483_ShadowSlant.fodg b/xmloff/qa/unit/data/tdf161483_ShadowSlant.fodg new file mode 100644 index 000000000000..c012e03fc6b3 --- /dev/null +++ b/xmloff/qa/unit/data/tdf161483_ShadowSlant.fodg @@ -0,0 +1,419 @@ + + + + + LibreOffice_7.6.7/7.6.7.2$Windows_X86_64 LibreOffice_project/dd47e4b30cb7dab30588d6c79c651f218165e3c5 + 32x24 + Regina Henschel + 2024-06-21T21:28:57 + Regina Henschel + 2024-06-22T18:18:28.827000000 + + PT9M8S3 + + + -3960 + -2799 + 36561 + 24977 + + + view1 + true + false + false + true + true + false + false + true + true + 1500 + false + Hw== + Hw== + + false + true + true + 0 + 0 + true + true + true + 4 + 0 + -3960 + -2799 + 37760 + 24821 + 500 + 500 + 100 + 100 + 500 + 5 + 500 + 5 + false + 1500 + true + false + false + false + false + + + + + 1250 + 0 + EPSON6FC99C (WP-4025 Series) + false + false + false + false + false + true + false + true + false + true + true + true + 0 + $(inst)/share/palette%3B$(user)/config/standard.sod + $(inst)/share/palette/html.soc + false + $(inst)/share/palette%3B$(user)/config/standard.soe + $(inst)/share/palette%3B$(user)/config/standard.soh + true + $(inst)/share/palette%3B$(user)/config/standard.sog + $(inst)/share/palette%3B$(user)/config/standard.sob + true + true + 4 + 0 + false + low-resolution + false + false + false + false + true + 2 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/xmloff/qa/unit/draw.cxx b/xmloff/qa/unit/draw.cxx index bfa279ca120f..f81df002c4ae 100644 --- a/xmloff/qa/unit/draw.cxx +++ b/xmloff/qa/unit/draw.cxx @@ -879,6 +879,58 @@ CPPUNIT_TEST_FIXTURE(XmloffDrawTest, testTdf161327_HatchAngle) } } +CPPUNIT_TEST_FIXTURE(XmloffDrawTest, testTdf161483_ShadowSlant) +{ + // Load document with four 3D-scenes, that differ in the draw:shadow-slant value + loadFromFile(u"tdf161483_ShadowSlant.fodg"); + + // The shadow-slant angle is given in file as + // [0] 36 unitless + // [1] 36deg, + // [2] 40grad, + // [3] 1.628318530717959rad + // The resulting angle should be 36 in all cases. + // Cases [1], [2] and [3] had angle 0 without fix. + + constexpr sal_Int16 nExpectedAngle = 36; // D3DSceneShadowSlant has data type 'short' + for (size_t i = 0; i < 4; ++i) + { + uno::Reference xShape(getShape(i)); + uno::Reference xShapeProps(xShape, uno::UNO_QUERY); + sal_Int16 nActualAngle; + xShapeProps->getPropertyValue(u"D3DSceneShadowSlant"_ustr) >>= nActualAngle; + CPPUNIT_ASSERT_EQUAL(nExpectedAngle, nActualAngle); + } +} + +CPPUNIT_TEST_FIXTURE(XmloffDrawTest, testTdf161483_CircleStartEndAngle) +{ + // Load document with four 'Arc' shapes, which differ in the type of start and end angles + loadFromFile(u"tdf161483_CircleStartEndAngle.fodg"); + + // The start and end angles are given in file as + // [0] unitless: start 337.5 end 306 + // [1] deg: start 337.5deg end 306deg + // [2] grad: start 375grad end 340grad + // [3] rad: start 5.89048622548086rad end 5.34070751110265rad + // The resulting angle should be 33750 and 30600 in all cases. + + // CircleStartAngle and CircleEndAngle have data type 'long', meaning Degree100 + constexpr sal_Int32 nExpectedStartAngle = 33750; + constexpr sal_Int32 nExpectedEndAngle = 30600; + for (size_t i = 0; i < 4; ++i) + { + uno::Reference xShape(getShape(i)); + uno::Reference xShapeProps(xShape, uno::UNO_QUERY); + sal_Int32 nActualStartAngle; + xShapeProps->getPropertyValue(u"CircleStartAngle"_ustr) >>= nActualStartAngle; + CPPUNIT_ASSERT_EQUAL(nExpectedStartAngle, nActualStartAngle); + sal_Int32 nActualEndAngle; + xShapeProps->getPropertyValue(u"CircleEndAngle"_ustr) >>= nActualEndAngle; + CPPUNIT_ASSERT_EQUAL(nExpectedEndAngle, nActualEndAngle); + } +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/xmloff/source/draw/ximp3dscene.cxx b/xmloff/source/draw/ximp3dscene.cxx index a137cc247f4e..8c1648be4490 100644 --- a/xmloff/source/draw/ximp3dscene.cxx +++ b/xmloff/source/draw/ximp3dscene.cxx @@ -284,7 +284,11 @@ void SdXML3DSceneAttributesHelper::processSceneAttribute( const sax_fastparser:: } case XML_SHADOW_SLANT: { - ::sax::Converter::convertNumber(mnShadowSlant, aIter.toView()); + double fAngle = 0.0; + if (::sax::Converter::convertAngle(fAngle, aIter.toView())) + mnShadowSlant = static_cast(basegfx::fround(fAngle)); + else + mnShadowSlant = 0; return; } case XML_SHADE_MODE: diff --git a/xmloff/source/draw/ximppage.cxx b/xmloff/source/draw/ximppage.cxx index 36ad16ebcb00..cb1ded1de477 100644 --- a/xmloff/source/draw/ximppage.cxx +++ b/xmloff/source/draw/ximppage.cxx @@ -170,7 +170,7 @@ css::uno::Reference< css::xml::sax::XFastContextHandler > DrawAnnotationContext: } } - // if we have a text cursor, lets try to import some text + // if we have a text cursor, let's try to import some text if( mxCursor.is() ) { auto p = GetImport().GetTextImport()->CreateTextChildContext( GetImport(), nElement, xAttrList ); diff --git a/xmloff/source/draw/ximpshap.cxx b/xmloff/source/draw/ximpshap.cxx index 27e98821f19b..f433107d4eb9 100644 --- a/xmloff/source/draw/ximpshap.cxx +++ b/xmloff/source/draw/ximpshap.cxx @@ -226,7 +226,7 @@ css::uno::Reference< css::xml::sax::XFastContextHandler > SdXMLShapeContext::cre } } - // if we have a text cursor, lets try to import some text + // if we have a text cursor, let's try to import some text if( mxCursor.is() ) { xContext = GetImport().GetTextImport()->CreateTextChildContext( @@ -1157,15 +1157,15 @@ bool SdXMLEllipseShapeContext::processAttribute( const sax_fastparser::FastAttri case XML_ELEMENT(DRAW, XML_START_ANGLE): { double dStartAngle; - if (::sax::Converter::convertDouble( dStartAngle, aIter.toView() )) - mnStartAngle = static_cast(dStartAngle * 100.0); + if (::sax::Converter::convertAngle( dStartAngle, aIter.toView(), 100)) + mnStartAngle = static_cast(basegfx::fround(dStartAngle)); break; } case XML_ELEMENT(DRAW, XML_END_ANGLE): { double dEndAngle; - if (::sax::Converter::convertDouble( dEndAngle, aIter.toView() )) - mnEndAngle = static_cast(dEndAngle * 100.0); + if (::sax::Converter::convertAngle( dEndAngle, aIter.toView(), 100)) + mnEndAngle = static_cast(basegfx::fround(dEndAngle)); break; } default: diff --git a/xmloff/source/style/xmlexppr.cxx b/xmloff/source/style/xmlexppr.cxx index 0c54958421e1..42170c371e4d 100644 --- a/xmloff/source/style/xmlexppr.cxx +++ b/xmloff/source/style/xmlexppr.cxx @@ -904,7 +904,7 @@ void SvXMLExportPropertyMapper::_exportXML( rPropTypeFlags |= (1 << nEPType); if( nEPType == nPropType ) { - // we have a valid map entry here, so lets use it... + // we have a valid map entry here, so let's use it... if( ( nEFlags & MID_FLAG_ELEMENT_ITEM_EXPORT ) != 0 ) { // element items do not add any properties, diff --git a/xmloff/source/table/XMLTableImport.cxx b/xmloff/source/table/XMLTableImport.cxx index 20e11b89048d..af7b849989eb 100644 --- a/xmloff/source/table/XMLTableImport.cxx +++ b/xmloff/source/table/XMLTableImport.cxx @@ -671,7 +671,7 @@ css::uno::Reference< css::xml::sax::XFastContextHandler > XMLCellImportContext:: SvXMLImportContext * pContext = nullptr; - // if we have a text cursor, lets try to import some text + // if we have a text cursor, let's try to import some text if( mxCursor.is() ) { pContext = GetImport().GetTextImport()->CreateTextChildContext( GetImport(), nElement, xAttrList ); diff --git a/vcl/inc/graphic/GraphicReader.hxx b/xmloff/source/text/txthints.hxx similarity index 52% rename from vcl/inc/graphic/GraphicReader.hxx rename to xmloff/source/text/txthints.hxx index 0faf5a7fe9d0..235a6c97e91b 100644 --- a/vcl/inc/graphic/GraphicReader.hxx +++ b/xmloff/source/text/txthints.hxx @@ -16,22 +16,39 @@ * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ - #pragma once -#include +#include +#include +#include -class GraphicReader +class XMLHint_Impl; +class XMLIndexMarkHint_Impl; + +class XMLHints_Impl { +private: + std::vector> m_Hints; + std::unordered_map m_IndexHintsById; + css::uno::Reference m_xCrossRefHeadingBookmark; + public: - virtual ~GraphicReader(); + void push_back(std::unique_ptr pHint); - const OUString& GetUpperFilterName() const { return maUpperName; } + void push_back(std::unique_ptr pHint); -protected: - OUString maUpperName; + std::vector> const& GetHints() const { return m_Hints; } - GraphicReader(); + XMLIndexMarkHint_Impl* GetIndexHintById(const OUString& sID) + { + auto it = m_IndexHintsById.find(sID); + return it == m_IndexHintsById.end() ? nullptr : it->second; + } + + css::uno::Reference& GetCrossRefHeadingBookmark() + { + return m_xCrossRefHeadingBookmark; + } }; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/xmloff/source/text/txtparai.cxx b/xmloff/source/text/txtparai.cxx index e6c4fa3bd8f5..b22939eb1a39 100644 --- a/xmloff/source/text/txtparai.cxx +++ b/xmloff/source/text/txtparai.cxx @@ -19,9 +19,7 @@ #include -#include #include -#include #include #include @@ -70,43 +68,15 @@ using namespace ::xmloff::token; using ::com::sun::star::container::XEnumerationAccess; using ::com::sun::star::container::XEnumeration; -class XMLHints_Impl +void XMLHints_Impl::push_back(std::unique_ptr pHint) { -private: - - std::vector> m_Hints; - std::unordered_map m_IndexHintsById; - uno::Reference m_xCrossRefHeadingBookmark; - -public: - void push_back(std::unique_ptr pHint) - { - m_Hints.push_back(std::move(pHint)); - } - - void push_back(std::unique_ptr pHint) - { - m_IndexHintsById.emplace(pHint->GetID(), pHint.get()); - m_Hints.push_back(std::move(pHint)); - } - - std::vector> const& GetHints() const - { - return m_Hints; - } - - XMLIndexMarkHint_Impl* GetIndexHintById(const OUString& sID) - { - auto it = m_IndexHintsById.find(sID); - return it == m_IndexHintsById.end() ? nullptr : it->second; - } - - uno::Reference & GetCrossRefHeadingBookmark() - { - return m_xCrossRefHeadingBookmark; - } -}; - + m_IndexHintsById.emplace(pHint->GetID(), pHint.get()); + m_Hints.push_back(std::move(pHint)); +} +void XMLHints_Impl::push_back(std::unique_ptr pHint) +{ + m_Hints.push_back(std::move(pHint)); +} XMLCharContext::XMLCharContext( SvXMLImport& rImport, @@ -1849,14 +1819,14 @@ void XMLParaContext::endFastElement(sal_Int32 ) } } - if (m_xHints) + if (m_oHints) { bool bEmptyHints = false; if (auto xCompare = xTxtImport->GetText().query()) { try { - for (const auto& pHint : m_xHints->GetHints()) + for (const auto& pHint : m_oHints->GetHints()) { if (xCompare->compareRegionStarts(pHint->GetStart(), pHint->GetEnd()) == 0) { @@ -1882,7 +1852,7 @@ void XMLParaContext::endFastElement(sal_Int32 ) { xCursorProps->setPropertyValue(u"NoFormatAttr"_ustr, uno::Any(true)); } - for (const auto & i : m_xHints->GetHints()) + for (const auto & i : m_oHints->GetHints()) { XMLHint_Impl *const pHint = i.get(); xAttrCursor->gotoRange( pHint->GetStart(), false ); @@ -2026,18 +1996,18 @@ void XMLParaContext::endFastElement(sal_Int32 ) xCursorProps->setPropertyValue(u"NoFormatAttr"_ustr, uno::Any(false)); } } - m_xHints.reset(); + m_oHints.reset(); } css::uno::Reference< css::xml::sax::XFastContextHandler > XMLParaContext::createFastChildContext( sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) { - if (!m_xHints) - m_xHints.reset(new XMLHints_Impl); + if (!m_oHints) + m_oHints.emplace(); return XMLImpSpanContext_Impl::CreateSpanContext( GetImport(), nElement, xAttrList, - *m_xHints, bIgnoreLeadingSpace, + *m_oHints, bIgnoreLeadingSpace, nStarFontsConvFlags); } diff --git a/xmloff/source/text/txtparai.hxx b/xmloff/source/text/txtparai.hxx index fed2690cb429..cfe9408d6648 100644 --- a/xmloff/source/text/txtparai.hxx +++ b/xmloff/source/text/txtparai.hxx @@ -22,8 +22,8 @@ #include #include #include +#include "txthints.hxx" -class XMLHints_Impl; namespace com::sun::star { namespace text { class XTextRange; } namespace xml::sax { class XAttributeList; } @@ -45,7 +45,7 @@ class XMLParaContext : public SvXMLImportContext css::uno::Any m_aMarkerStyleName; bool m_bHaveAbout; sal_Int8 nOutlineLevel; - std::unique_ptr m_xHints; + std::optional m_oHints; // Lost outline numbering in master document (#i73509#) bool mbOutlineLevelAttrFound; bool mbOutlineContentVisible; diff --git a/xmlsecurity/uiconfig/ui/certdetails.ui b/xmlsecurity/uiconfig/ui/certdetails.ui index cc4ba219932b..54a29e626ce1 100644 --- a/xmlsecurity/uiconfig/ui/certdetails.ui +++ b/xmlsecurity/uiconfig/ui/certdetails.ui @@ -1,5 +1,5 @@ - + @@ -14,31 +14,31 @@ True - False + False True True - 6 + 6 vertical 12 True True - True + True True True - external - in + external + in True - True - True + True + True True True liststore3 - 0 - False + 0 + False @@ -85,15 +85,15 @@ True - True + True True True - never - in + never + in True - True + True True True diff --git a/xmlsecurity/uiconfig/ui/certgeneral.ui b/xmlsecurity/uiconfig/ui/certgeneral.ui index e0c0b48acd59..d17ba09a5044 100644 --- a/xmlsecurity/uiconfig/ui/certgeneral.ui +++ b/xmlsecurity/uiconfig/ui/certgeneral.ui @@ -1,23 +1,23 @@ - + True - False - 6 + False + 6 vertical 6 True - False + False 6 True - False - xmlsecurity/res/certificate_40x56.png + False + xmlsecurity/res/certificate_40x56.png False @@ -29,7 +29,7 @@ True - False + False Certificate Information @@ -57,7 +57,7 @@ True - False + False False @@ -68,10 +68,10 @@ True - False + False 36 36 - 108 + 108 This certificate is validated. 0 @@ -87,7 +87,7 @@ True - False + False False @@ -96,16 +96,16 @@ - + True - False - 6 - 6 + False + 6 + 6 True - False + False Issued to: 0 @@ -113,26 +113,26 @@ - 0 - 0 + 0 + 0 True - False + False True 0 - 1 - 0 + 1 + 0 True - False + False Issued by: 0 @@ -140,25 +140,25 @@ - 0 - 1 + 0 + 1 True - False + False 0 - 1 - 1 + 1 + 1 True - False + False Valid from: 0 @@ -166,20 +166,20 @@ - 0 - 2 + 0 + 2 True - False + False 6 True - False - xmlsecurity/res/key_12.png + False + xmlsecurity/res/key_12.png False @@ -190,7 +190,7 @@ True - False + False You have a private key that corresponds to this certificate. @@ -201,15 +201,15 @@ - 0 - 4 + 0 + 4 2 True - False + False Valid to: 0 @@ -217,30 +217,30 @@ - 0 - 3 + 0 + 3 True - False + False 0 - 1 - 2 + 1 + 2 True - False + False 0 - 1 - 3 + 1 + 3 diff --git a/xmlsecurity/uiconfig/ui/certpage.ui b/xmlsecurity/uiconfig/ui/certpage.ui index 03a92c8cbbae..167d0c93a69e 100644 --- a/xmlsecurity/uiconfig/ui/certpage.ui +++ b/xmlsecurity/uiconfig/ui/certpage.ui @@ -1,5 +1,5 @@ - + @@ -12,66 +12,66 @@ True - False + False True True - 6 + 6 vertical 12 - + True - False + False True True - 6 + 6 True - False + False Certificate Path - True - signatures + True + signatures 0 - 0 - 0 + 0 + 0 View Certificate... True - True - True + True + True end - True + True - 0 - 2 + 0 + 2 True - True + True True True - in + in True - True - True + True + True True True liststore3 - False - 0 - True + False + 0 + True @@ -96,8 +96,8 @@ - 0 - 1 + 0 + 1 @@ -108,39 +108,39 @@ - + True - False + False True True - 6 + 6 True - False + False Certificate status - True - status + True + status 0 - 0 - 0 + 0 + 0 True - True + True True True - never - in + never + in True - True + True True True @@ -152,8 +152,8 @@ - 0 - 1 + 0 + 1 @@ -165,8 +165,8 @@ - False - True + False + True The certificate is OK. @@ -177,8 +177,8 @@ - False - True + False + True The certificate could not be validated. diff --git a/xmlsecurity/uiconfig/ui/digitalsignaturesdialog.ui b/xmlsecurity/uiconfig/ui/digitalsignaturesdialog.ui index f701468e62b6..7602a83d7858 100644 --- a/xmlsecurity/uiconfig/ui/digitalsignaturesdialog.ui +++ b/xmlsecurity/uiconfig/ui/digitalsignaturesdialog.ui @@ -1,5 +1,5 @@ - + @@ -21,26 +21,26 @@ - False - 6 + False + 6 Digital Signatures True - dialog + dialog - False + False vertical 12 - False - end + False + end _Help True - True - True + True + True True @@ -54,10 +54,10 @@ _Close True - True - True - True - True + True + True + True + True True @@ -70,47 +70,47 @@ False True - end + end 0 - + True - False + False True True - 6 + 6 - False - True + False + True The following have signed the document content: 0 - 0 - 0 + 0 + 0 True - True + True True True - in + in True - True - True + True + True True True liststore3 - 0 - False + 0 + False @@ -200,23 +200,23 @@ - 0 - 4 + 0 + 4 True - False + False 12 True - end + end View Certificate... True - True - True + True + True Opens the View Certificate dialog. @@ -233,9 +233,9 @@ Sign Document... True - True - True - True + True + True + True Opens the Select Certificate dialog. @@ -252,8 +252,8 @@ Remove True - True - True + True + True Removes the selected signature from the list. Removes all subsequent signatures as well, in case of PDF. @@ -270,8 +270,8 @@ Start Certificate Manager... True - True - True + True + True True @@ -281,208 +281,211 @@ - 0 - 7 + 0 + 7 - + True - False + False True - 12 + 12 - False - True + False + True True - 0 - 0 + 0 + 0 - False - True + False + True True - 1 - 0 + 1 + 0 - False - True + False + True True - 2 - 0 + 2 + 0 - False - True + False + True - 3 - 0 + 3 + 0 - False - True + False + True - 4 - 0 + 4 + 0 - 0 - 3 + 0 + 3 - False - True + False + True The following have signed the document macro: 0 - 0 - 1 + 0 + 1 - False - True + False + True The following have signed this package: 0 - 0 - 2 + 0 + 2 - + True - False - 12 + False + 12 - False - True + False + True True The signatures in this document are valid 0 - 1 - 0 + 1 + 0 - False - True - xmlsecurity/res/signet_11x16.png + False + True + xmlsecurity/res/signet_11x16.png - 0 - 0 + 0 + 0 - False - True + False + True True The signatures in this document are invalid 0 - 1 - 2 + 1 + 2 - False - True + False + True True At least one signature has problems: the document is only partially signed. 0 - 1 - 1 + 1 + 1 - False - True + False + True True At least one signature has problems: the certificate could not be validated. 0 - 1 - 3 + 1 + 3 - False - True - svx/res/caution_11x16.png + False + True + svx/res/caution_11x16.png - 0 - 2 + 0 + 2 - False - True - svx/res/caution_11x16.png + False + True + svx/res/caution_11x16.png - 0 - 1 + 0 + 1 - False - True - xmlsecurity/res/notcertificate_16.png + False + True + xmlsecurity/res/notcertificate_16.png - 0 - 3 + 0 + 3 - 0 - 5 + 0 + 5 + + + True @@ -496,9 +499,6 @@ help close - - - Adds and removes digital signatures to and from your document. You can also use the dialog to view certificates. diff --git a/xmlsecurity/uiconfig/ui/macrosecuritydialog.ui b/xmlsecurity/uiconfig/ui/macrosecuritydialog.ui index 06699d588f44..c04d84f35b63 100644 --- a/xmlsecurity/uiconfig/ui/macrosecuritydialog.ui +++ b/xmlsecurity/uiconfig/ui/macrosecuritydialog.ui @@ -1,33 +1,30 @@ - + - False - 6 + False + 6 Macro Security True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _Reset True - True - True + True + True True @@ -40,10 +37,10 @@ _OK True - True - True - True - True + True + True + True + True True @@ -56,8 +53,8 @@ _Cancel True - True - True + True + True True @@ -70,8 +67,8 @@ _Help True - True - True + True + True True @@ -85,47 +82,23 @@ False True - end + end 0 True - True + True True True True - True + True True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -134,42 +107,18 @@ True - False + False Security Level - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -181,12 +130,12 @@ True - False + False Trusted Sources 1 - False + False diff --git a/xmlsecurity/uiconfig/ui/securitytrustpage.ui b/xmlsecurity/uiconfig/ui/securitytrustpage.ui index 267efa8f08bd..07293517c170 100644 --- a/xmlsecurity/uiconfig/ui/securitytrustpage.ui +++ b/xmlsecurity/uiconfig/ui/securitytrustpage.ui @@ -1,5 +1,5 @@ - + @@ -24,45 +24,45 @@ True - False + False True True - 6 + 6 vertical 12 True - False + False True True - 0 - none + 0 + none - + True - False - True - True - 6 - 6 + False 12 6 + True + True + 6 + 6 True - False + False True 12 - end + end _View... True - True - True - True + True + True + True Opens the View Certificate dialog for the selected certificate. @@ -79,8 +79,8 @@ _Remove True - True - True + True + True True @@ -96,27 +96,27 @@ - 1 - 1 + 1 + 1 True - True + True True True - in + in True - True - True + True + True True True liststore3 - 0 - False + 0 + False @@ -168,21 +168,21 @@ - 1 - 0 + 1 + 0 - False - True + False + True center center - res/lock.png + res/lock.png - 0 - 0 + 0 + 0 @@ -193,7 +193,7 @@ True - False + False Trusted Certificates @@ -210,50 +210,50 @@ True - False + False True True - 0 - none + 0 + none - + True - False - True - True - 12 - 6 + False 12 6 + True + True + 12 + 6 True - False + False Document macros are always executed if they have been opened from one of the following locations. True - 56 - 56 + 56 + 56 0 - 1 - 0 + 1 + 0 True - False + False 12 - end + end A_dd... True - True - True - True + True + True + True Opens a folder selection dialog. Select a folder from which all macros are allowed to execute. @@ -270,8 +270,8 @@ _Remove True - True - True + True + True True @@ -287,28 +287,28 @@ - 1 - 2 + 1 + 2 True - True + True True True - in + in True - True - True + True + True True True liststore2 - False - 0 - False + False + 0 + False @@ -333,21 +333,21 @@ - 1 - 1 + 1 + 1 - False - True + False + True center center - res/lock.png + res/lock.png - 0 - 0 + 0 + 0 @@ -361,7 +361,7 @@ True - False + False Trusted File Locations diff --git a/xmlsecurity/uiconfig/ui/viewcertdialog.ui b/xmlsecurity/uiconfig/ui/viewcertdialog.ui index 44ff70ec74f6..9af0b89676e8 100644 --- a/xmlsecurity/uiconfig/ui/viewcertdialog.ui +++ b/xmlsecurity/uiconfig/ui/viewcertdialog.ui @@ -1,36 +1,33 @@ - + - False - 6 + False + 6 View Certificate False True - 0 - 0 - dialog - - - + 0 + 0 + dialog - False + False vertical 12 - False - end + False + end _OK True - True - True - True - True + True + True + True + True True @@ -43,8 +40,8 @@ _Help True - True - True + True + True True @@ -58,47 +55,23 @@ False True - end + end 0 True - True + True True True True - True + True True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -107,42 +80,18 @@ True - False + False General - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -154,43 +103,19 @@ True - False + False Details 1 - False + False True - False - - - - - - - - - - - - - - - - - - - - - - - - + False @@ -202,12 +127,12 @@ True - False + False Certificate Path 2 - False + False