core.git: Branch 'distro/vector/vector-7.5.9' - sw/qa sw/source

2024-03-27 Thread Mike Kaganski (via logerrit)
 sw/qa/extras/htmlexport/data/tdf160390.fodt |   17 ++
 sw/qa/extras/htmlexport/htmlexport.cxx  |7 
 sw/source/filter/html/htmlatr.cxx   |   44 +---
 3 files changed, 45 insertions(+), 23 deletions(-)

New commits:
commit c0f3dc4875f0b40110f1d3513828d2ebf8a4b8aa
Author: Mike Kaganski 
AuthorDate: Wed Mar 27 16:01:51 2024 +0500
Commit: Mike Kaganski 
CommitDate: Thu Mar 28 11:37:19 2024 +0500

tdf#160390: make sure to forward the iterator

Change-Id: I302cc4303f083a1024175ce4ba00ce8021c6d4c9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165390
Tested-by: Jenkins
Reviewed-by: Mike Kaganski 

diff --git a/sw/qa/extras/htmlexport/data/tdf160390.fodt 
b/sw/qa/extras/htmlexport/data/tdf160390.fodt
new file mode 100644
index ..53d6144ff19b
--- /dev/null
+++ b/sw/qa/extras/htmlexport/data/tdf160390.fodt
@@ -0,0 +1,17 @@
+
+
+
+ 
+  
+   
+  
+  
+   
+  
+ 
+ 
+  
+   foo 

+  
+ 
+
\ No newline at end of file
diff --git a/sw/qa/extras/htmlexport/htmlexport.cxx 
b/sw/qa/extras/htmlexport/htmlexport.cxx
index 4afef396..7c8bf0985ff8 100644
--- a/sw/qa/extras/htmlexport/htmlexport.cxx
+++ b/sw/qa/extras/htmlexport/htmlexport.cxx
@@ -3047,6 +3047,13 @@ CPPUNIT_TEST_FIXTURE(SwHtmlDomExportTest, 
testHTML_Tdf160017_spanClosingOrder)
 CPPUNIT_ASSERT(parseXml(maTempFile));
 }
 
+CPPUNIT_TEST_FIXTURE(SwHtmlDomExportTest, testHTML_Tdf160390)
+{
+// This document must not hang infinitely on HTML export
+createSwDoc("tdf160390.fodt");
+save("HTML (StarWriter)");
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/filter/html/htmlatr.cxx 
b/sw/source/filter/html/htmlatr.cxx
index 247b22e5ff2f..0731c3709571 100644
--- a/sw/source/filter/html/htmlatr.cxx
+++ b/sw/source/filter/html/htmlatr.cxx
@@ -1526,8 +1526,9 @@ void HTMLEndPosLst::SplitItem( const SfxPoolItem& rItem, 
sal_Int32 nStart,
 
 for (auto it = items.begin(); it != items.end();)
 {
-HTMLStartEndPos* pTest = *it;
-sal_Int32 nTestEnd = pTest->GetEnd();
+auto itTest = it++; // forward early, allow 'continue', and keep a 
copy for 'erase'
+HTMLStartEndPos* pTest = *itTest;
+const sal_Int32 nTestEnd = pTest->GetEnd();
 if (nTestEnd <= nStart)
 continue;
 
@@ -1535,30 +1536,27 @@ void HTMLEndPosLst::SplitItem( const SfxPoolItem& 
rItem, sal_Int32 nStart,
 const SfxPoolItem& rTestItem = pTest->GetItem();
 
 // only the corresponding OnTag attributes have to be considered
-if (rTestItem.Which() == nWhich && HTML_ON_VALUE == 
GetHTMLItemState(rTestItem))
-{
-// if necessary, insert the second part of the split
-// attribute
-if (nTestEnd > nEnd)
-InsertItem(pTest->GetItem(), nEnd, nTestEnd);
+if (rTestItem.Which() != nWhich || HTML_ON_VALUE != 
GetHTMLItemState(rTestItem))
+continue;
 
-if (nTestStart >= nStart)
-{
-// the Test item only starts after the new end of the
-// attribute. Therefore, it can be completely erased.
-it = items.erase(it);
-auto& posItems = m_aEndLst[pTest->GetEnd()];
-posItems.erase(std::remove(posItems.begin(), 
posItems.end(), pTest),
-   posItems.end());
-delete pTest;
-continue;
-}
+// if necessary, insert the second part of the split attribute
+if (nTestEnd > nEnd)
+InsertItem(rTestItem, nEnd, nTestEnd);
 
-// the start of the new attribute corresponds to the new
-// end of the attribute
-FixSplittedItem(pTest, nStart);
+if (nTestStart >= nStart)
+{
+// the Test item only starts after the new end of the
+// attribute. Therefore, it can be completely erased.
+it = items.erase(itTest);
+auto& posItems = m_aEndLst[nTestEnd];
+posItems.erase(std::remove(posItems.begin(), posItems.end(), 
pTest),
+   posItems.end());
+delete pTest;
+continue;
 }
-++it;
+
+// the start of the new attribute corresponds to the new end of 
the attribute
+FixSplittedItem(pTest, nStart);
 }
 }
 }


Re: Eager to contribute to GSoC 2024

2024-03-27 Thread Michael Weghorn

On 2024-03-27 12:12, Ritobroto Mukherjee wrote:
I am submitting my formal application for GSoC in this email, and an 
attached document with further details.


Please note that (from what I know at least), the formal application 
needs to be submitted via the GSoC website, so I'd recommend to check 
and resubmit there.


OpenPGP_signature.asc
Description: OpenPGP digital signature


Re: Adding support for the Common Print Dialog Backends (CPDB)

2024-03-27 Thread Michael Weghorn

On 2024-03-27 19:33, Till Kamppeter wrote:


Would be good to tell them that for CUPS 3.x use of CPDB is required.

For CUPS 2.x the direct CUPS interface can be used and CPDB also works 
with CUPS 2.x (CPDB works with any CUPS).


Once CPDB support has been implemented, that can be added to the release 
notes.

These are maintained on a wiki page.

For the next Libreoffice release LibreOffice 24.8:
https://wiki.documentfoundation.org/ReleaseNotes/24.8

@Biswadeep: As you're implementing the feature, could you please keep in 
mind to add this to the release notes once it's been integrated?


(Depending on when it gets merged, this would likely be either for 
LibreOffice 24.8 or 25.2).


OpenPGP_signature.asc
Description: OpenPGP digital signature


core.git: uitest/libreoffice vcl/source

2024-03-27 Thread Noel Grandin (via logerrit)
 uitest/libreoffice/uno/eventlistener.py |8 ++--
 vcl/source/window/dialog.cxx|3 +++
 2 files changed, 5 insertions(+), 6 deletions(-)

New commits:
commit 8093bd7017f2745d5048cdedcb9d61976bd3e69d
Author: Noel Grandin 
AuthorDate: Wed Mar 27 21:56:15 2024 +0200
Commit: Noel Grandin 
CommitDate: Thu Mar 28 06:43:54 2024 +0100

improve logging in UITests

(1) log useful stuff that is happening instead of logging events that
are __not__ interesting

(2) add the UIObject title to the event so we know who the event belongs
to

Change-Id: Iea4b70c03482b10731f186d730afa12dac760fa4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165435
Tested-by: Jenkins
Reviewed-by: Noel Grandin 

diff --git a/uitest/libreoffice/uno/eventlistener.py 
b/uitest/libreoffice/uno/eventlistener.py
index 54076efe337e..f7092836c935 100644
--- a/uitest/libreoffice/uno/eventlistener.py
+++ b/uitest/libreoffice/uno/eventlistener.py
@@ -36,15 +36,11 @@ class EventListener(XDocumentEventListener,unohelper.Base):
 self.xGEB.removeDocumentEventListener(self)
 
 def documentEventOccured(self, event):
-if self.printEvents is True:
-print(event.EventName)
-
+print("documentEventOccured: name=" + event.EventName + ", title=" + 
str(event.Supplement))
+print("documentEventOccured: found event we are waiting for")
 if event.EventName in self.eventNames:
 self.executed = True
 self.eventExecuted.append(event.EventName)
-else:
-print(self.eventNames)
-print(event.EventName)
 
 def hasExecuted(self, eventName):
 return eventName in self.eventExecuted
diff --git a/vcl/source/window/dialog.cxx b/vcl/source/window/dialog.cxx
index b60a96e06440..1ba812c94197 100644
--- a/vcl/source/window/dialog.cxx
+++ b/vcl/source/window/dialog.cxx
@@ -632,6 +632,7 @@ void Dialog::dispose()
 css::uno::Reference 
xEventBroadcaster(css::frame::theGlobalEventBroadcaster::get(xContext), 
css::uno::UNO_SET_THROW);
 css::document::DocumentEvent aObject;
 aObject.EventName = "DialogClosed";
+aObject.Supplement <<= GetText(); // title
 xEventBroadcaster->documentEventOccured(aObject);
 UITestLogger::getInstance().log(u"Close Dialog");
 
@@ -1029,6 +1030,7 @@ bool Dialog::ImplStartExecute()
 css::frame::theGlobalEventBroadcaster::get(xContext), 
css::uno::UNO_SET_THROW);
 css::document::DocumentEvent aObject;
 aObject.EventName = "DialogExecute";
+aObject.Supplement <<= GetText(); // title
 xEventBroadcaster->documentEventOccured(aObject);
 if (bModal)
 UITestLogger::getInstance().log(Concat2View("Open Modal " + get_id()));
@@ -1651,6 +1653,7 @@ void Dialog::Activate()
 css::uno::Reference 
xEventBroadcaster(css::frame::theGlobalEventBroadcaster::get(xContext), 
css::uno::UNO_SET_THROW);
 css::document::DocumentEvent aObject;
 aObject.EventName = "ModelessDialogVisible";
+aObject.Supplement <<= GetText(); // title
 xEventBroadcaster->documentEventOccured(aObject);
 }
 SystemWindow::Activate();


core.git: vcl/source

2024-03-27 Thread Noel Grandin (via logerrit)
 vcl/source/uitest/uiobject.cxx |7 ---
 1 file changed, 4 insertions(+), 3 deletions(-)

New commits:
commit 9b98856c59707037cc25ec7f2dae975bc269901d
Author: Noel Grandin 
AuthorDate: Wed Mar 27 21:52:04 2024 +0200
Commit: Noel Grandin 
CommitDate: Thu Mar 28 06:43:24 2024 +0100

prevent SEGV in ToolBoxUIObject::get_state

if we call it while it has no current item id

Change-Id: I0e62d35b24f18104f6fd55c129fd7f91f2449e5b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165433
Tested-by: Jenkins
Reviewed-by: Noel Grandin 

diff --git a/vcl/source/uitest/uiobject.cxx b/vcl/source/uitest/uiobject.cxx
index 24b11ecb8556..2671a9145436 100644
--- a/vcl/source/uitest/uiobject.cxx
+++ b/vcl/source/uitest/uiobject.cxx
@@ -1696,9 +1696,10 @@ OUString ToolBoxUIObject::get_action(VclEventId nEvent) 
const
 StringMap ToolBoxUIObject::get_state()
 {
 StringMap aMap = WindowUIObject::get_state();
-aMap["CurrSelectedItemID"] = 
OUString::number(sal_uInt16(mxToolBox->GetCurItemId()));
-aMap["CurrSelectedItemText"] = 
mxToolBox->GetItemText(mxToolBox->GetCurItemId());
-aMap["CurrSelectedItemCommand"] = 
mxToolBox->GetItemCommand(mxToolBox->GetCurItemId());
+ToolBoxItemId nCurItemId = mxToolBox->GetCurItemId();
+aMap["CurrSelectedItemID"] = OUString::number(sal_uInt16(nCurItemId));
+aMap["CurrSelectedItemText"] = nCurItemId ? 
mxToolBox->GetItemText(nCurItemId) : "";
+aMap["CurrSelectedItemCommand"] = nCurItemId ? 
mxToolBox->GetItemCommand(nCurItemId) : "";
 aMap["ItemCount"] = OUString::number(mxToolBox->GetItemCount());
 return aMap;
 }


core.git: accessibility/inc accessibility/source

2024-03-27 Thread Noel Grandin (via logerrit)
 accessibility/inc/standard/vclxaccessiblelistitem.hxx|9 -
 accessibility/source/standard/vclxaccessiblelistitem.cxx |   90 ++-
 2 files changed, 42 insertions(+), 57 deletions(-)

New commits:
commit 6658a384245f04b433fb540c757b9bd9be43e1c3
Author: Noel Grandin 
AuthorDate: Wed Mar 27 12:15:14 2024 +0200
Commit: Noel Grandin 
CommitDate: Thu Mar 28 06:43:03 2024 +0100

convert VCLXAccessibleListItem to comphelper::WeakComponentImplHelper

Change-Id: I82b7dd9b0cdf379c710870a295c8f33ed9fff681
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165437
Tested-by: Jenkins
Reviewed-by: Noel Grandin 

diff --git a/accessibility/inc/standard/vclxaccessiblelistitem.hxx 
b/accessibility/inc/standard/vclxaccessiblelistitem.hxx
index 260c132bbfa1..83142b50ed6f 100644
--- a/accessibility/inc/standard/vclxaccessiblelistitem.hxx
+++ b/accessibility/inc/standard/vclxaccessiblelistitem.hxx
@@ -26,8 +26,7 @@
 #include 
 #include 
 #include 
-#include 
-#include 
+#include 
 #include 
 #include 
 
@@ -42,7 +41,7 @@ namespace com::sun::star::awt {
 
 // class VCLXAccessibleListItem --
 
-typedef ::cppu::WeakComponentImplHelper< css::accessibility::XAccessible
+typedef ::comphelper::WeakComponentImplHelper< css::accessibility::XAccessible
 , 
css::accessibility::XAccessibleContext
 , 
css::accessibility::XAccessibleComponent
 , 
css::accessibility::XAccessibleEventBroadcaster
@@ -51,7 +50,7 @@ typedef ::cppu::WeakComponentImplHelper< 
css::accessibility::XAccessible
 
 /** the class OAccessibleListBoxEntry represents the base class for an 
accessible object of a listbox entry
 */
-class VCLXAccessibleListItem final : public ::cppu::BaseMutex,
+class VCLXAccessibleListItem final :
  public 
::comphelper::OCommonAccessibleText,
  public VCLXAccessibleListItem_BASE
 {
@@ -69,7 +68,7 @@ private:
 virtual ~VCLXAccessibleListItem() override = default;
 /** this function is called upon disposing the component
 */
-virtual void SAL_CALL   disposing() override;
+virtual void disposing(std::unique_lock& rGuard) override;
 
 // OCommonAccessibleText
 virtual OUStringimplGetText() override;
diff --git a/accessibility/source/standard/vclxaccessiblelistitem.cxx 
b/accessibility/source/standard/vclxaccessiblelistitem.cxx
index 5339f93824a9..31b889ebc3b5 100644
--- a/accessibility/source/standard/vclxaccessiblelistitem.cxx
+++ b/accessibility/source/standard/vclxaccessiblelistitem.cxx
@@ -60,8 +60,7 @@ using namespace ::com::sun::star;
 // Ctor() and Dtor()
 
 VCLXAccessibleListItem::VCLXAccessibleListItem(sal_Int32 _nIndexInParent, 
rtl::Reference< VCLXAccessibleList > _xParent)
-: VCLXAccessibleListItem_BASE(m_aMutex)
-, m_nIndexInParent(_nIndexInParent)
+: m_nIndexInParent(_nIndexInParent)
 , m_bSelected(false)
 , m_bVisible(false)
 , m_nClientId(0)
@@ -142,26 +141,25 @@ Sequence< sal_Int8 > 
VCLXAccessibleListItem::getImplementationId()
 
 // XComponent
 
-void SAL_CALL VCLXAccessibleListItem::disposing()
+void VCLXAccessibleListItem::disposing(std::unique_lock& rGuard)
 {
-comphelper::AccessibleEventNotifier::TClientId nId( 0 );
-Reference< XInterface > xEventSource;
-{
-::osl::MutexGuard aGuard( m_aMutex );
-
-VCLXAccessibleListItem_BASE::disposing();
-m_sEntryText.clear();
-m_xParent   = nullptr;
+VCLXAccessibleListItem_BASE::disposing(rGuard);
 
-nId = m_nClientId;
-m_nClientId =  0;
-if ( nId )
-xEventSource = *this;
-}
+m_sEntryText.clear();
+m_xParent   = nullptr;
+comphelper::AccessibleEventNotifier::TClientId nId = m_nClientId;
+m_nClientId =  0;
+Reference< XInterface > xEventSource;
+if ( nId )
+xEventSource = *this;
 
 // Send a disposing to all listeners.
 if ( nId )
-comphelper::AccessibleEventNotifier::revokeClientNotifyDisposing( 
nId, *this );
+{
+rGuard.unlock();
+comphelper::AccessibleEventNotifier::revokeClientNotifyDisposing( nId, 
*this );
+rGuard.lock();
+}
 }
 
 // XServiceInfo
@@ -204,7 +202,7 @@ Reference< XAccessible > SAL_CALL 
VCLXAccessibleListItem::getAccessibleChild( sa
 
 Reference< XAccessible > SAL_CALL VCLXAccessibleListItem::getAccessibleParent( 
 )
 {
-::osl::MutexGuard aGuard( m_aMutex );
+std::unique_lock aGuard( m_aMutex );
 
 return m_xParent;
 }
@@ -228,7 +226,7 @@ OUString SAL_CALL 
VCLXAccessibleListItem::getAccessibleDescription(  )
 
 OUString SAL_CALL VCLXAccessibleListItem::getAccessibleName(  )
 {
-::osl::MutexGuard aGuard( m_aMutex );
+std::unique_lock aGuard( m_aMutex );
 
 // entry text == accessible name
 r

core.git: sc/source

2024-03-27 Thread Noel Grandin (via logerrit)
 sc/source/ui/unoobj/cellvaluebinding.cxx |   98 +--
 sc/source/ui/unoobj/cellvaluebinding.hxx |   28 
 2 files changed, 68 insertions(+), 58 deletions(-)

New commits:
commit 7510cca63690ea97eb02a43f698fc183c3d0434a
Author: Noel Grandin 
AuthorDate: Tue Mar 26 15:56:02 2024 +0200
Commit: Noel Grandin 
CommitDate: Thu Mar 28 06:42:46 2024 +0100

convert OCellValueBinding to comphelper::WeakComponentImplHelper

Change-Id: I007d0c44bed1ab9e00cadcdbd126bc6bf3d99ea8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165364
Tested-by: Jenkins
Reviewed-by: Noel Grandin 

diff --git a/sc/source/ui/unoobj/cellvaluebinding.cxx 
b/sc/source/ui/unoobj/cellvaluebinding.cxx
index fd8b43f9578e..7c4865726bef 100644
--- a/sc/source/ui/unoobj/cellvaluebinding.cxx
+++ b/sc/source/ui/unoobj/cellvaluebinding.cxx
@@ -54,10 +54,7 @@ namespace calc
 using namespace ::com::sun::star::form::binding;
 
 OCellValueBinding::OCellValueBinding( const Reference< 
XSpreadsheetDocument >& _rxDocument, bool _bListPos )
-:OCellValueBinding_Base( m_aMutex )
-,OCellValueBinding_PBase( OCellValueBinding_Base::rBHelper )
-,m_xDocument( _rxDocument )
-,m_aModifyListeners( m_aMutex )
+:m_xDocument( _rxDocument )
 ,m_bInitialized( false )
 ,m_bListPos( _bListPos )
 {
@@ -76,7 +73,7 @@ namespace calc
 
 OCellValueBinding::~OCellValueBinding( )
 {
-if ( !OCellValueBinding_Base::rBHelper.bDisposed )
+if ( !m_bDisposed )
 {
 acquire();  // prevent duplicate dtor
 dispose();
@@ -87,7 +84,7 @@ namespace calc
 
 IMPLEMENT_FORWARD_XTYPEPROVIDER2( OCellValueBinding, 
OCellValueBinding_Base, OCellValueBinding_PBase )
 
-void SAL_CALL OCellValueBinding::disposing()
+void OCellValueBinding::disposing( std::unique_lock& rGuard )
 {
 Reference xBroadcaster( m_xCell, UNO_QUERY );
 if ( xBroadcaster.is() )
@@ -95,7 +92,7 @@ namespace calc
 xBroadcaster->removeModifyListener( this );
 }
 
-WeakComponentImplHelperBase::disposing();
+WeakComponentImplHelperBase::disposing(rGuard);
 
 // TODO: clean up here whatever you need to clean up (e.g. deregister 
as XEventListener
 // for the cell)
@@ -106,7 +103,7 @@ namespace calc
 return createPropertySetInfo( getInfoHelper() ) ;
 }
 
-::cppu::IPropertyArrayHelper& SAL_CALL OCellValueBinding::getInfoHelper()
+::cppu::IPropertyArrayHelper& OCellValueBinding::getInfoHelper()
 {
 return *OCellValueBinding_PABase::getArrayHelper();
 }
@@ -118,7 +115,7 @@ namespace calc
 return new ::cppu::OPropertyArrayHelper(aProps);
 }
 
-void SAL_CALL OCellValueBinding::getFastPropertyValue( Any& _rValue, 
sal_Int32 _nHandle ) const
+void OCellValueBinding::getFastPropertyValue( 
std::unique_lock& /*rGuard*/, Any& _rValue, sal_Int32 _nHandle ) 
const
 {
 OSL_ENSURE( _nHandle == PROP_HANDLE_BOUND_CELL, 
"OCellValueBinding::getFastPropertyValue: invalid handle!" );
 // we only have this one property...
@@ -131,9 +128,14 @@ namespace calc
 
 Sequence< Type > SAL_CALL OCellValueBinding::getSupportedValueTypes(  )
 {
-checkDisposed( );
+std::unique_lock aGuard(m_aMutex);
+throwIfDisposed(aGuard);
 checkInitialized( );
+return getSupportedValueTypes(aGuard);
+}
 
+Sequence< Type > OCellValueBinding::getSupportedValueTypes( 
std::unique_lock& /*rGuard*/  ) const
+{
 sal_Int32 nCount = m_xCellText.is() ? 3 : m_xCell.is() ? 1 : 0;
 if ( m_bListPos )
 ++nCount;
@@ -163,11 +165,16 @@ namespace calc
 
 sal_Bool SAL_CALL OCellValueBinding::supportsType( const Type& aType )
 {
-checkDisposed( );
+std::unique_lock aGuard(m_aMutex);
+throwIfDisposed(aGuard);
 checkInitialized( );
+return supportsType(aGuard, aType);
+}
 
+bool OCellValueBinding::supportsType( std::unique_lock& 
rGuard, const Type& aType ) const
+{
 // look up in our sequence
-const Sequence< Type > aSupportedTypes( getSupportedValueTypes() );
+const Sequence< Type > aSupportedTypes( getSupportedValueTypes(rGuard) 
);
 for ( auto const & i : aSupportedTypes )
 if ( aType == i )
 return true;
@@ -177,9 +184,10 @@ namespace calc
 
 Any SAL_CALL OCellValueBinding::getValue( const Type& aType )
 {
-checkDisposed( );
+std::unique_lock aGuard(m_aMutex);
+throwIfDisposed(aGuard);
 checkInitialized( );
-checkValueType( aType );
+checkValueType( aGuard, aType );
 
 Any aReturn;
 switch ( aType.getTypeClass() )
@@ -263,10 +271,11 @@ namespace calc
 
 void SAL_CALL OCellValueBinding::setValue( const Any& aValue )
 {
-checkDisposed( );
+std::unique_lock

core.git: Branch 'libreoffice-24-2' - dbaccess/source

2024-03-27 Thread Mike Kaganski (via logerrit)
 dbaccess/source/ui/dlg/DBSetupConnectionPages.cxx |6 +++-
 dbaccess/source/ui/dlg/dbwizsetup.cxx |3 ++
 dbaccess/source/ui/dlg/generalpage.cxx|   32 ++
 3 files changed, 23 insertions(+), 18 deletions(-)

New commits:
commit 8e0bb9dadb9ef77f693cf6d334843cfb9b4701a3
Author: Mike Kaganski 
AuthorDate: Tue Mar 19 11:47:14 2024 +0500
Commit: Adolfo Jayme Barrientos 
CommitDate: Thu Mar 28 06:37:08 2024 +0100

tdf#103068: make sure to update and use current MySQL connection type

1. Don't set selection in OGeneralPageWizard::getEmbeddedDBName. The
method should only provide a name of an embedded database - either in
the passed set, or the default one; the activation of controls and
related actions will be done in the calling implInitControls. This
makes sure, that ODbTypeWizDialogSetup::m_sURL doesn't get rewritten
unnecessarily, keeping the current preference intact.

2. In ODbTypeWizDialogSetup::activateDatabasePath, do not use the
hardcoded MySQL URL from the control, if the current value of m_sURL
is already a MySQL one. This allows to keep the selected kind intact.

3. In OMySQLIntroPageSetup::implInitControls, do not assume that the
existing selection means that there's nothing to do. The page keeps
the selection, even when the wizard's active path was changed; and
so, the wizard's idea which page to show next may differ from the
selection. Just make sure to update the setup mode.

Change-Id: Iad98d54a615dccc58b2852a1c0d8aefad6b0b898
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164987
Tested-by: Jenkins
Reviewed-by: Mike Kaganski 
(cherry picked from commit 1e66905c840dbee0a67e444fca80bdacfcb6e6b2)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165000
Reviewed-by: Adolfo Jayme Barrientos 

diff --git a/dbaccess/source/ui/dlg/DBSetupConnectionPages.cxx 
b/dbaccess/source/ui/dlg/DBSetupConnectionPages.cxx
index 22cdefdd6c31..ad81680ba421 100644
--- a/dbaccess/source/ui/dlg/DBSetupConnectionPages.cxx
+++ b/dbaccess/source/ui/dlg/DBSetupConnectionPages.cxx
@@ -239,9 +239,13 @@ using namespace ::com::sun::star;
 if ( bHasMySQLNative )
 m_xNATIVEDatabase->show();
 
-// if any of the options is checked, then there's nothing to do
+// tdf#103068: if any of the options is checked, then just update the 
selected kind:
+// it could happen that the selection and the wizard path are not in 
sync
 if ( m_xODBCDatabase->get_active() || m_xJDBCDatabase->get_active() || 
m_xNATIVEDatabase->get_active() )
+{
+maClickHdl.Call(this);
 return;
+}
 
 // prefer "native" or "JDBC"
 if ( bHasMySQLNative )
diff --git a/dbaccess/source/ui/dlg/dbwizsetup.cxx 
b/dbaccess/source/ui/dlg/dbwizsetup.cxx
index 720892e2a015..2fb260e18e75 100644
--- a/dbaccess/source/ui/dlg/dbwizsetup.cxx
+++ b/dbaccess/source/ui/dlg/dbwizsetup.cxx
@@ -312,6 +312,9 @@ void ODbTypeWizDialogSetup::activateDatabasePath()
 {
 OUString sOld = m_sURL;
 m_sURL = m_pGeneralPage->GetSelectedType();
+if (m_sURL.startsWith("sdbc:mysql:") && sOld.startsWith("sdbc:mysql:"))
+m_sURL = sOld; // The type of MySQL connection was already set 
elsewhere; just use it,
+   // instead of the hardcoded one from the selector
 DataSourceInfoConverter::convert(getORB(), 
m_pCollection,sOld,m_sURL,m_pImpl->getCurrentDataSource());
 ::dbaccess::DATASOURCE_TYPE eType = 
VerifyDataSourceType(m_pCollection->determineType(m_sURL));
 if (eType ==  ::dbaccess::DST_UNKNOWN)
diff --git a/dbaccess/source/ui/dlg/generalpage.cxx 
b/dbaccess/source/ui/dlg/generalpage.cxx
index a2a48158c56d..bb308845528e 100644
--- a/dbaccess/source/ui/dlg/generalpage.cxx
+++ b/dbaccess/source/ui/dlg/generalpage.cxx
@@ -226,31 +226,29 @@ namespace dbaui
 
 OUString OGeneralPageWizard::getEmbeddedDBName( const SfxItemSet& _rSet )
 {
+if (!m_pCollection)
+return {};
 // first check whether or not the selection is invalid or readonly 
(invalid implies readonly, but not vice versa)
 bool bValid, bReadonly;
 getFlags( _rSet, bValid, bReadonly );
-
-// if the selection is invalid, disable everything
-
-implSetCurrentType(  OUString() );
+if (!bValid)
+return {};
 
 // compare the DSN prefix with the registered ones
-OUString sDisplayName;
-
-if (m_pCollection && bValid)
-{
-implSetCurrentType( 
dbaccess::ODsnTypeCollection::getEmbeddedDatabase() );
-sDisplayName = m_pCollection->getTypeDisplayName( 
m_eCurrentSelection );
-onTypeSelected(m_eCurrentSelection);
-}
-
-// select the correct datasource type
-if  (  dbaccess::ODsnTypeCollection::isEmbeddedDatabase( 
m_eCurrentSelec

core.git: Branch 'libreoffice-24-2' - vcl/source

2024-03-27 Thread Caolán McNamara (via logerrit)
 vcl/source/window/printdlg.cxx |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit d3ed3836cbec932f8a381fcb2c85787fb0f8b766
Author: Caolán McNamara 
AuthorDate: Wed Mar 27 17:23:18 2024 +
Commit: Adolfo Jayme Barrientos 
CommitDate: Thu Mar 28 05:42:32 2024 +0100

Resolves: tdf#160392 preview's measurement are black on dark bg in dark mode

Change-Id: I538750ef7d20ecc17a60ce47989eeaf0390a0103
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165414
Tested-by: Jenkins
Reviewed-by: Adolfo Jayme Barrientos 

diff --git a/vcl/source/window/printdlg.cxx b/vcl/source/window/printdlg.cxx
index 9c5f519f7cfb..c001b6e74070 100644
--- a/vcl/source/window/printdlg.cxx
+++ b/vcl/source/window/printdlg.cxx
@@ -122,7 +122,7 @@ void 
PrintDialog::PrintPreviewWindow::Paint(vcl::RenderContext& rRenderContext,
 {
 rRenderContext.Push();
 weld::SetPointFont(rRenderContext, 
rRenderContext.GetSettings().GetStyleSettings().GetLabelFont());
-
+
rRenderContext.SetTextColor(rRenderContext.GetSettings().GetStyleSettings().GetLabelTextColor());
 
rRenderContext.SetBackground(Wallpaper(Application::GetSettings().GetStyleSettings().GetDialogColor()));
 rRenderContext.Erase();
 


core.git: xmlsecurity/inc

2024-03-27 Thread Patrick Luby (via logerrit)
 xmlsecurity/inc/strings.hrc |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit c4023d3ec604abfff38be2053e2989c7ec2ba8c1
Author: Patrick Luby 
AuthorDate: Tue Mar 26 17:39:35 2024 -0400
Commit: Thorsten Behrens 
CommitDate: Thu Mar 28 01:02:45 2024 +0100

Related: tdf#160184 clearly describe security risk

Encrypting with untrusted public keys increases the risk of
"man-in-the-middle" attacks so emphasize this risk.

Change-Id: I48cbb7b002c5f17bdac3372bf94c1bc18ea68566
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165396
Tested-by: Jenkins
Reviewed-by: Patrick Luby 
Reviewed-by: Thorsten Behrens 

diff --git a/xmlsecurity/inc/strings.hrc b/xmlsecurity/inc/strings.hrc
index 69b62a06dafe..7ed55690f97b 100644
--- a/xmlsecurity/inc/strings.hrc
+++ b/xmlsecurity/inc/strings.hrc
@@ -65,6 +65,6 @@
 
 #define STR_BROKEN_MACRO_CERTIFICATE_DATA   
NC_("STR_BROKEN_MACRO_CERTIFICATE_DATA", "Macro security problem!

Broken certificate data: %{data}")
 #define STR_RELOAD_FILE_WARNING 
NC_("STR_RELOAD_FILE_WARNING", "Reload the file to apply the new macro security 
level")
-#define STR_TRUST_UNTRUSTED_PUBKEY   
NC_("STR_TRUST_UNTRUSTED_PUBKEY", "The following OpenPGP public key is not 
trusted:

%{data}

Do you want to use this untrusted OpenPGP public key?")
+#define STR_TRUST_UNTRUSTED_PUBKEY   
NC_("STR_TRUST_UNTRUSTED_PUBKEY", "Security warning: the following OpenPGP 
public key is untrusted:

%{data}

Encrypting with an untrusted public key increases the risk of a 
\"man-in-the-middle\" attack. A successful \"man-in-the-middle\" attack gives 
malicious third parties the ability to decrypt your document.

Do you really want to encrypt your document with this untrusted public key?")
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */


core.git: svgio/CppunitTest_svgio.mk svgio/CppunitTest_svgio_tools.mk svgio/inc svgio/Library_svgio.mk svgio/qa svgio/source

2024-03-27 Thread Xisco Fauli (via logerrit)
 svgio/CppunitTest_svgio.mk|1 
 svgio/CppunitTest_svgio_tools.mk  |1 
 svgio/Library_svgio.mk|2 
 svgio/inc/svgdocument.hxx |6 -
 svgio/inc/svgnode.hxx |7 +
 svgio/inc/svgswitchnode.hxx   |   55 +++
 svgio/inc/svgtoken.hxx|1 
 svgio/qa/cppunit/SvgImportTest.cxx|   11 ++
 svgio/qa/cppunit/data/tdf160386.svg   |   16 +++
 svgio/source/svgreader/svgdocumenthandler.cxx |9 +
 svgio/source/svgreader/svgnode.cxx|   44 +++-
 svgio/source/svgreader/svgswitchnode.cxx  |  129 ++
 svgio/source/svgreader/svgtoken.cxx   |1 
 13 files changed, 270 insertions(+), 13 deletions(-)

New commits:
commit 0a2535ceb06bb9233bc29158d4c9d2513abd
Author: Xisco Fauli 
AuthorDate: Wed Mar 27 11:38:44 2024 +0100
Commit: Xisco Fauli 
CommitDate: Wed Mar 27 23:44:40 2024 +0100

tdf#160386: Add support for switch element

For now, only use language tag, meaning if
there is a file like in the unittest with

Howdy!
Wotcha!
G'day!
Hello!

"Hello!" with be displayed in a en_AU system locale

This patch partially reverts 13a41e7a12598c7896d6dc8d34aba6af5b80b83c
"tdf#150124: do nothing when parent is of unkown type"
making 0dfd8288a87b58e503bb3a41be6137485fbf3f68
"ofz#60384 Direct-leak" no longer necessary

Change-Id: Ifc73bc69aa997088dc0a2b11d7d30446303fa3b3

Change-Id: I885ef0f2c44b86196881fe55a963db2e5c7eb1be
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165394
Tested-by: Jenkins
Reviewed-by: Xisco Fauli 

diff --git a/svgio/CppunitTest_svgio.mk b/svgio/CppunitTest_svgio.mk
index 9309f5dcb9b8..a179d6af30fa 100644
--- a/svgio/CppunitTest_svgio.mk
+++ b/svgio/CppunitTest_svgio.mk
@@ -34,6 +34,7 @@ $(eval $(call gb_CppunitTest_use_libraries,svgio,\
 cppu \
 cppuhelper \
 comphelper \
+i18nlangtag \
 sal \
 salhelper \
 sax \
diff --git a/svgio/CppunitTest_svgio_tools.mk b/svgio/CppunitTest_svgio_tools.mk
index abb6bb6e0fc7..5f4d7adbe523 100644
--- a/svgio/CppunitTest_svgio_tools.mk
+++ b/svgio/CppunitTest_svgio_tools.mk
@@ -33,6 +33,7 @@ $(eval $(call gb_CppunitTest_use_libraries,svgio_tools,\
 comphelper \
 cppu \
 cppuhelper \
+i18nlangtag \
 sal \
 salhelper \
 sax \
diff --git a/svgio/Library_svgio.mk b/svgio/Library_svgio.mk
index 7bc518c71b93..8686792ca52a 100644
--- a/svgio/Library_svgio.mk
+++ b/svgio/Library_svgio.mk
@@ -41,6 +41,7 @@ $(eval $(call gb_Library_use_libraries,svgio,\
 comphelper \
 cppu \
 cppuhelper \
+i18nlangtag \
 sal \
 salhelper \
 tk \
@@ -87,6 +88,7 @@ $(eval $(call gb_Library_add_exception_objects,svgio,\
 svgio/source/svgreader/svgstyleattributes \
 svgio/source/svgreader/svgstylenode \
 svgio/source/svgreader/svgsvgnode \
+svgio/source/svgreader/svgswitchnode \
 svgio/source/svgreader/svgsymbolnode \
 svgio/source/svgreader/svgtextnode \
 svgio/source/svgreader/svgtextposition \
diff --git a/svgio/inc/svgdocument.hxx b/svgio/inc/svgdocument.hxx
index 77b4d3891179..9f79342c0c55 100644
--- a/svgio/inc/svgdocument.hxx
+++ b/svgio/inc/svgdocument.hxx
@@ -34,9 +34,6 @@ namespace svgio::svgreader
 /// the document hierarchy with all root nodes
 SvgNodeVector   maNodes;
 
-/// invalid nodes that have no parent
-SvgNodeVector   maOrphanNodes;
-
 /// the absolute path of the Svg file in progress (if available)
 const OUString maAbsolutePath;
 
@@ -75,9 +72,6 @@ namespace svgio::svgreader
 /// data read access
 const SvgNodeVector& getSvgNodeVector() const { return maNodes; }
 const OUString& getAbsolutePath() const { return maAbsolutePath; }
-
-/// invalid nodes that have no parent
-void addOrphanNode(SvgNode* pOrphan) { 
maOrphanNodes.emplace_back(pOrphan); }
 };
 
 } // end of namespace svgio::svgreader
diff --git a/svgio/inc/svgnode.hxx b/svgio/inc/svgnode.hxx
index 63abc4f8cb0a..16c1f50bc3db 100644
--- a/svgio/inc/svgnode.hxx
+++ b/svgio/inc/svgnode.hxx
@@ -95,6 +95,9 @@ namespace svgio::svgreader
 /// Class svan value
 std::optional   mpClass;
 
+/// systemLanguage values
+std::vector  maSystemLanguage;
+
 /// XmlSpace value
 XmlSpacemaXmlSpace;
 
@@ -174,6 +177,10 @@ namespace svgio::svgreader
 std::optional const & getClass() const { return mpClass; 
}
 void setClass(OUString const &);
 
+/// SystemLanguage access
+std::vector const & getSystemLanguage() const { return 
maSystemLanguage; }
+void setSystemLanguage(OUString const &);
+
   

core.git: Branch 'libreoffice-24-2' - sw/qa sw/source

2024-03-27 Thread Mike Kaganski (via logerrit)
 sw/qa/extras/htmlexport/data/tdf160390.fodt |   17 +++
 sw/qa/extras/htmlexport/htmlexport.cxx  |7 
 sw/source/filter/html/htmlatr.cxx   |   40 +---
 3 files changed, 43 insertions(+), 21 deletions(-)

New commits:
commit 832fb1ab9abf94f4074e0cc20d846c1536931cf3
Author: Mike Kaganski 
AuthorDate: Wed Mar 27 16:01:51 2024 +0500
Commit: Xisco Fauli 
CommitDate: Wed Mar 27 22:03:48 2024 +0100

tdf#160390: make sure to forward the iterator

Change-Id: I302cc4303f083a1024175ce4ba00ce8021c6d4c9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165390
Tested-by: Jenkins
Reviewed-by: Mike Kaganski 
Signed-off-by: Xisco Fauli 
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165404

diff --git a/sw/qa/extras/htmlexport/data/tdf160390.fodt 
b/sw/qa/extras/htmlexport/data/tdf160390.fodt
new file mode 100644
index ..53d6144ff19b
--- /dev/null
+++ b/sw/qa/extras/htmlexport/data/tdf160390.fodt
@@ -0,0 +1,17 @@
+
+
+
+ 
+  
+   
+  
+  
+   
+  
+ 
+ 
+  
+   foo 

+  
+ 
+
\ No newline at end of file
diff --git a/sw/qa/extras/htmlexport/htmlexport.cxx 
b/sw/qa/extras/htmlexport/htmlexport.cxx
index de2e9da4c678..42099f3bc44f 100644
--- a/sw/qa/extras/htmlexport/htmlexport.cxx
+++ b/sw/qa/extras/htmlexport/htmlexport.cxx
@@ -3053,6 +3053,13 @@ CPPUNIT_TEST_FIXTURE(SwHtmlDomExportTest, 
testHTML_Tdf160017_spanClosingOrder)
 CPPUNIT_ASSERT(parseXml(maTempFile));
 }
 
+CPPUNIT_TEST_FIXTURE(SwHtmlDomExportTest, testHTML_Tdf160390)
+{
+// This document must not hang infinitely on HTML export
+createSwDoc("tdf160390.fodt");
+ExportToHTML();
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/filter/html/htmlatr.cxx 
b/sw/source/filter/html/htmlatr.cxx
index c880082018f1..f298f93dc5b2 100644
--- a/sw/source/filter/html/htmlatr.cxx
+++ b/sw/source/filter/html/htmlatr.cxx
@@ -1524,8 +1524,9 @@ void HTMLEndPosLst::SplitItem( const SfxPoolItem& rItem, 
sal_Int32 nStart,
 
 for (auto it = items.begin(); it != items.end();)
 {
-HTMLStartEndPos* pTest = *it;
-sal_Int32 nTestEnd = pTest->GetEnd();
+auto itTest = it++; // forward early, allow 'continue', and keep a 
copy for 'erase'
+HTMLStartEndPos* pTest = *itTest;
+const sal_Int32 nTestEnd = pTest->GetEnd();
 if (nTestEnd <= nStart)
 continue;
 
@@ -1533,28 +1534,25 @@ void HTMLEndPosLst::SplitItem( const SfxPoolItem& 
rItem, sal_Int32 nStart,
 const SfxPoolItem& rTestItem = pTest->GetItem();
 
 // only the corresponding OnTag attributes have to be considered
-if (rTestItem.Which() == nWhich && HTML_ON_VALUE == 
GetHTMLItemState(rTestItem))
-{
-// if necessary, insert the second part of the split
-// attribute
-if (nTestEnd > nEnd)
-InsertItem(pTest->GetItem(), nEnd, nTestEnd);
+if (rTestItem.Which() != nWhich || HTML_ON_VALUE != 
GetHTMLItemState(rTestItem))
+continue;
 
-if (nTestStart >= nStart)
-{
-// the Test item only starts after the new end of the
-// attribute. Therefore, it can be completely erased.
-it = items.erase(it);
-std::erase(m_aEndLst[pTest->GetEnd()], pTest);
-delete pTest;
-continue;
-}
+// if necessary, insert the second part of the split attribute
+if (nTestEnd > nEnd)
+InsertItem(rTestItem, nEnd, nTestEnd);
 
-// the start of the new attribute corresponds to the new
-// end of the attribute
-FixSplittedItem(pTest, nStart);
+if (nTestStart >= nStart)
+{
+// the Test item only starts after the new end of the
+// attribute. Therefore, it can be completely erased.
+it = items.erase(itTest);
+std::erase(m_aEndLst[nTestEnd], pTest);
+delete pTest;
+continue;
 }
-++it;
+
+// the start of the new attribute corresponds to the new end of 
the attribute
+FixSplittedItem(pTest, nStart);
 }
 }
 }


core.git: svgio/qa

2024-03-27 Thread Xisco Fauli (via logerrit)
 svgio/qa/cppunit/SvgImportTest.cxx  |8 
 svgio/qa/cppunit/data/tdf156579.svg |8 
 2 files changed, 16 insertions(+)

New commits:
commit 6b15374d1850de13e977cf4bb2106d38e74a030a
Author: Xisco Fauli 
AuthorDate: Wed Mar 27 16:12:41 2024 +0100
Commit: Xisco Fauli 
CommitDate: Wed Mar 27 22:03:09 2024 +0100

tdf#156579: svgio: Add unittest

Change-Id: I77ab0c72209fa02c6e463351e8cda09213d47ac3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165399
Tested-by: Xisco Fauli 
Reviewed-by: Xisco Fauli 

diff --git a/svgio/qa/cppunit/SvgImportTest.cxx 
b/svgio/qa/cppunit/SvgImportTest.cxx
index 8256f6392725..4cab973b5003 100644
--- a/svgio/qa/cppunit/SvgImportTest.cxx
+++ b/svgio/qa/cppunit/SvgImportTest.cxx
@@ -434,6 +434,14 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf145896)
 assertXPath(pDocument, "/primitive2D/transform/polypolygoncolor[3]"_ostr, 
"color"_ostr, "#ff");
 }
 
+CPPUNIT_TEST_FIXTURE(Test, testTdf156579)
+{
+xmlDocUniquePtr pDocument = 
dumpAndParseSvg(u"/svgio/qa/cppunit/data/tdf156579.svg");
+
+// Without the fix in place, nothing would be displayed
+assertXPath(pDocument, 
"/primitive2D/transform/mask/transform/polypolygoncolor[1]"_ostr, "color"_ostr, 
"#ff");
+}
+
 CPPUNIT_TEST_FIXTURE(Test, testTdf156168)
 {
 xmlDocUniquePtr pDocument = 
dumpAndParseSvg(u"/svgio/qa/cppunit/data/tdf156168.svg");
diff --git a/svgio/qa/cppunit/data/tdf156579.svg 
b/svgio/qa/cppunit/data/tdf156579.svg
new file mode 100644
index ..27610784dd87
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf156579.svg
@@ -0,0 +1,8 @@
+
+
+   
+   
+   
+   
+   
+


core.git: vcl/source

2024-03-27 Thread Caolán McNamara (via logerrit)
 vcl/source/window/printdlg.cxx |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit 6f89e03f3903474bc51ef8396eb366326cfc254c
Author: Caolán McNamara 
AuthorDate: Wed Mar 27 17:23:18 2024 +
Commit: Caolán McNamara 
CommitDate: Wed Mar 27 21:39:25 2024 +0100

Resolves: tdf#160392 preview's measurement are black on dark bg in dark mode

Change-Id: I538750ef7d20ecc17a60ce47989eeaf0390a0103
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165405
Tested-by: Jenkins
Reviewed-by: Caolán McNamara 

diff --git a/vcl/source/window/printdlg.cxx b/vcl/source/window/printdlg.cxx
index 3acd7ddb1ab1..35cbccf79ab1 100644
--- a/vcl/source/window/printdlg.cxx
+++ b/vcl/source/window/printdlg.cxx
@@ -122,7 +122,7 @@ void 
PrintDialog::PrintPreviewWindow::Paint(vcl::RenderContext& rRenderContext,
 {
 rRenderContext.Push();
 weld::SetPointFont(rRenderContext, 
rRenderContext.GetSettings().GetStyleSettings().GetLabelFont());
-
+
rRenderContext.SetTextColor(rRenderContext.GetSettings().GetStyleSettings().GetLabelTextColor());
 
rRenderContext.SetBackground(Wallpaper(Application::GetSettings().GetStyleSettings().GetDialogColor()));
 rRenderContext.Erase();
 


Minutes from the UX/design meeting 2023-Mar-27

2024-03-27 Thread Heiko Tietze

Present: Sahil, Antonio, Cor, Bogdan, John, Eyal, Heiko
Comments: Stephane, Stuart, Timur

Tickets/Topics

 * A11Y sidebar: Too many issue reports about direct character formatting
   + https://bugs.documentfoundation.org/show_bug.cgi?id=159906
   + group by paragraph (+ 0.5 Stephane)
 + maybe list per paragraph under one root node (Heiko, Antonio)
   + offer an action button (+1 Stephane, Heiko, -1 Stuart)
   + action is not necessarily to remove DF; could also
 be "Dismiss" (Cor)
   + could be a more complex UI with more interactions, filters, batch
 operations etc. (Sahil, Antonio)
 + could be done in a later patch (Cor)
   => let's go with the extra tree node per paragraph and maybe page too
  and no action button for now

 * Add all 3 Spotlight commands (PS, CS, DF) to Style Inspector
   + https://bugs.documentfoundation.org/show_bug.cgi?id=160194
   + maybe per icon-only toggle button (Stephane)
   + agree with the proposal as it matches the workflow (Stuart)
   + clutters the UI and is not in scope of the workflow (Heiko)
   + it's not uncommon to have those buttons in the UIs (Cor, John)
 + neither a big improvement nor a huge impact on UX (John)
   + customization is sufficient (Antonio)
   => let's do it

 * Use "Delete unused master slides" independently from "Minimize
   Presentation" tool
   + https://bugs.documentfoundation.org/show_bug.cgi?id=159860
   + warn in case of an excessive number of master slides
   + rather fix bug 158773 than alert user on some high number (Heiko)
   + MSO is loading quickly but still warns (Timur)
   + warning could offer to delete unused master slides (Antonio)
   + warning should happen on load; covers also issues with import
 from other applications (Antonio)
   + realize per infobar to not block the workflow (user may click away
 the confirmation box), OTOH depending on severity it should
 interrupt
   + label could be "You have an unreasonable number of unused slide master.
 [Clean Up] [x]" (Heiko)
 + hesitate to delete a lot of content with just a click, so - suggest a
   confirmation dialog when pressing cleanup (Eyal)
 + add a button "Inspect" to the infobar (Cor)
   + strongly disagree with different actions on the infobar (Heiko)
 + add Help button to educate the user (Antonio)
   => do so

 * MRU Recent files list entries numbered, no need to be
   + https://bugs.documentfoundation.org/show_bug.cgi?id=160230
   + number seems to be useless (Bogdan)
   + actual date/time like MSO makes more sense (John)
   + handy for a11y resp. keyboard only access (Stuart,Antonio)
 + Alt+F + U + 1 opens the latest pinned item, for example
 + numbers above 10 take the first character from the filename
   + number indicates the recency (Eyal)
   + mnemonics inside the filename are hard to spot (Cor)
   + alternatively we could go with alphanumeric characters A..Z (Sahil)
 + this would require using different alphabeta in different localized
   UIs (Eyal)
   => no good argument to remove the numbers -> WF


OpenPGP_signature.asc
Description: OpenPGP digital signature


core.git: xmloff/source

2024-03-27 Thread Caolán McNamara (via logerrit)
 xmloff/source/draw/eventimp.cxx |3 +++
 1 file changed, 3 insertions(+)

New commits:
commit 3f1272c0e2e3aa30e6c781a2bcd83e98d62408b7
Author: Caolán McNamara 
AuthorDate: Wed Mar 27 17:07:20 2024 +
Commit: Caolán McNamara 
CommitDate: Wed Mar 27 20:46:57 2024 +0100

add notify for script use

Change-Id: I84af197cec7755f6803a578e1e21c03966ad5f3e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165403
Tested-by: Jenkins
Reviewed-by: Caolán McNamara 

diff --git a/xmloff/source/draw/eventimp.cxx b/xmloff/source/draw/eventimp.cxx
index c03f312bd9d8..f7bcc529bbc6 100644
--- a/xmloff/source/draw/eventimp.cxx
+++ b/xmloff/source/draw/eventimp.cxx
@@ -206,6 +206,9 @@ SdXMLEventContext::SdXMLEventContext( SvXMLImport& rImp,
 
 if( maData.mbValid )
 maData.mbValid = !sEventName.isEmpty();
+
+if (!maData.msMacroName.isEmpty())
+rImp.NotifyMacroEventRead();
 }
 
 css::uno::Reference< css::xml::sax::XFastContextHandler > 
SdXMLEventContext::createFastChildContext(


core.git: svgio/qa

2024-03-27 Thread Xisco Fauli (via logerrit)
 svgio/qa/cppunit/SvgImportTest.cxx |  753 +
 1 file changed, 107 insertions(+), 646 deletions(-)

New commits:
commit 7fa2a81f2f00fdad570a98f33acc45cd95af5ae6
Author: Xisco Fauli 
AuthorDate: Wed Mar 27 17:41:53 2024 +0100
Commit: Xisco Fauli 
CommitDate: Wed Mar 27 20:46:03 2024 +0100

CppunitTest_svgio: factor out common code

Change-Id: I5171a07d9015706a89f25b0c2805ebed8444260d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165401
Tested-by: Jenkins
Reviewed-by: Xisco Fauli 

diff --git a/svgio/qa/cppunit/SvgImportTest.cxx 
b/svgio/qa/cppunit/SvgImportTest.cxx
index b0dd84706207..8256f6392725 100644
--- a/svgio/qa/cppunit/SvgImportTest.cxx
+++ b/svgio/qa/cppunit/SvgImportTest.cxx
@@ -39,6 +39,7 @@ protected:
 void checkRectPrimitive(Primitive2DSequence const & rPrimitive);
 
 Primitive2DSequence parseSvg(std::u16string_view aSource);
+xmlDocUniquePtr dumpAndParseSvg(std::u16string_view aSource);
 };
 
 Primitive2DSequence Test::parseSvg(std::u16string_view aSource)
@@ -60,6 +61,17 @@ Primitive2DSequence Test::parseSvg(std::u16string_view 
aSource)
 return xSvgParser->getDecomposition(aInputStream, aPath);
 }
 
+xmlDocUniquePtr Test::dumpAndParseSvg(std::u16string_view aSource)
+{
+Primitive2DSequence aSequence = parseSvg(aSource);
+
+drawinglayer::Primitive2dXmlDump dumper;
+xmlDocUniquePtr pDocument = dumper.dumpAndParse(aSequence);
+
+CPPUNIT_ASSERT (pDocument);
+return pDocument;
+}
+
 void Test::checkRectPrimitive(Primitive2DSequence const & rPrimitive)
 {
 drawinglayer::Primitive2dXmlDump dumper;
@@ -76,8 +88,6 @@ void Test::checkRectPrimitive(Primitive2DSequence const & 
rPrimitive)
 assertXPath(pDocument, 
"/primitive2D/transform/polypolygoncolor/polypolygon"_ostr, "maxy"_ostr, "110");
 assertXPath(pDocument, 
"/primitive2D/transform/polypolygonstroke/line"_ostr, "color"_ostr, "#ff"); 
// rect stroke color
 assertXPath(pDocument, 
"/primitive2D/transform/polypolygonstroke/line"_ostr, "width"_ostr, "3"); // 
rect stroke width
-
-
 }
 
 namespace
@@ -136,13 +146,7 @@ CPPUNIT_TEST_FIXTURE(Test, testStyles)
 
 CPPUNIT_TEST_FIXTURE(Test, testSymbol)
 {
-Primitive2DSequence aSequenceTdf87309 = 
parseSvg(u"/svgio/qa/cppunit/data/symbol.svg");
-CPPUNIT_ASSERT_EQUAL(1, static_cast(aSequenceTdf87309.getLength()));
-
-drawinglayer::Primitive2dXmlDump dumper;
-xmlDocUniquePtr pDocument = dumper.dumpAndParse(aSequenceTdf87309);
-
-CPPUNIT_ASSERT (pDocument);
+xmlDocUniquePtr pDocument = 
dumpAndParseSvg(u"/svgio/qa/cppunit/data/symbol.svg");
 
 // tdf#126330: Without the fix in place, this test would have failed with
 // - Expected: 1
@@ -153,13 +157,7 @@ CPPUNIT_TEST_FIXTURE(Test, testSymbol)
 
 CPPUNIT_TEST_FIXTURE(Test, testTdf150124)
 {
-Primitive2DSequence aSequence = 
parseSvg(u"/svgio/qa/cppunit/data/tdf150124.svg");
-CPPUNIT_ASSERT_EQUAL(1, static_cast(aSequence.getLength()));
-
-drawinglayer::Primitive2dXmlDump dumper;
-xmlDocUniquePtr pDocument = dumper.dumpAndParse(aSequence);
-
-CPPUNIT_ASSERT (pDocument);
+xmlDocUniquePtr pDocument = 
dumpAndParseSvg(u"/svgio/qa/cppunit/data/tdf150124.svg");
 
 assertXPathChildren(pDocument, "/primitive2D"_ostr, 1);
 assertXPath(pDocument, "/primitive2D/hiddengeometry"_ostr, 1);
@@ -167,13 +165,7 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf150124)
 
 CPPUNIT_TEST_FIXTURE(Test, testTdf155819)
 {
-Primitive2DSequence aSequence = 
parseSvg(u"/svgio/qa/cppunit/data/tdf155819.svg");
-CPPUNIT_ASSERT_EQUAL(1, static_cast(aSequence.getLength()));
-
-drawinglayer::Primitive2dXmlDump dumper;
-xmlDocUniquePtr pDocument = dumper.dumpAndParse(aSequence);
-
-CPPUNIT_ASSERT (pDocument);
+xmlDocUniquePtr pDocument = 
dumpAndParseSvg(u"/svgio/qa/cppunit/data/tdf155819.svg");
 
 assertXPath(pDocument, 
"/primitive2D/transform/polypolygonstroke/line"_ostr, 1);
 assertXPath(pDocument, 
"/primitive2D/transform/polypolygonstroke/polypolygon"_ostr, 1);
@@ -185,13 +177,7 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf155819)
 
 CPPUNIT_TEST_FIXTURE(Test, testFilterFeBlend)
 {
-Primitive2DSequence aSequence = 
parseSvg(u"/svgio/qa/cppunit/data/filterFeBlend.svg");
-CPPUNIT_ASSERT_EQUAL(1, static_cast(aSequence.getLength()));
-
-drawinglayer::Primitive2dXmlDump dumper;
-xmlDocUniquePtr pDocument = dumper.dumpAndParse(aSequence);
-
-CPPUNIT_ASSERT (pDocument);
+xmlDocUniquePtr pDocument = 
dumpAndParseSvg(u"/svgio/qa/cppunit/data/filterFeBlend.svg");
 
 assertXPath(pDocument, 
"/primitive2D/transform/transform/polypolygoncolor[1]"_ostr, "color"_ostr, 
"#8a2be2");
 assertXPath(pDocument, 
"/primitive2D/transform/transform/polypolygoncolor[1]/polypolygon"_ostr, 
"height"_ostr, "100");
@@ -211,13 +197,7 @@ CPPUNIT_TEST_FIXTURE(Test, testFilterFeBlend)
 
 CPPUNIT_TEST_FIXTURE(Test, testFeColorMatrix)
 {
-Primitive2DSequence aSequence = 
parseSvg(u"/svg

Re: Handling text in Excel SORT/SORTBY functions recently merged

2024-03-27 Thread Olivier Hallot

HI Balázs

Thank you for the clarification.

From an interoperability POV, the behavior is supposed to be known.

I think it deserves some notes for internationalization of the sort 
function.


(may be I'm overstating)

Cheers
Olivier


On 3/27/24 05:29, Balázs Varga wrote:

Hi Olivier,

 >> MS does not specify the behavior when data to sort is a mix of numbers
and text in their user support pages.

Yes, I also didn't find any official documentation which is directly 
related to how those functions handle the mix data.
But after a lot of testing I realized that in Excel the SORT/SORTBY is 
sorting/working the same as the basic UI Sort works in Excel.
So I based on that during the implementation. Also our UI Sorting works 
the same as Excel UI Sorting, so that was the best way to
follow that. :) But everything else was implemented based on the 
Official documentations.


Also we couldn't file the Oasis proposal yet, since we couldn't log in 
for a while to the Oasis page. But I already wrote the draft,

which can be uploaded. Just attached to the mail.

Best,
Balázs


Olivier Hallot > ezt írta (időpont: 2024. márc. 
26., K, 20:59):


hi...

I'm testing Calc's SORT function recently merged.

MS does not specify the behavior when data to sort is a mix of numbers
and text in their user support pages.

When text is present in the array to sort, text appears to be higher
than the highest numerical value (sort descending) or lower than the
lowest numerical value (sort ascending)

In either case, text is not treated as zero or blank as many other Calc
functions. To me this is a point of attention (documentation-wise).

Anybody can point me where to confirm the way Excel treat text for SORT
(and SORTBY) functions?.

Thank you
-- 
Olivier Hallot

LibreOffice Documentation Coordinator
Rio de Janeiro - Brasil - Local Time: UTC-03:00
LibreOffice – free and open source office suite:
https://www.libreoffice.org 
Respects your privacy, and gives you back control over your data
http://tdf.io/joinus 



--
Olivier Hallot
LibreOffice Documentation Coordinator
Rio de Janeiro - Brasil - Local Time: UTC-03:00
LibreOffice – free and open source office suite: https://www.libreoffice.org
Respects your privacy, and gives you back control over your data
http://tdf.io/joinus


OpenPGP_0x59F8BA50F9918DE6.asc
Description: OpenPGP public key


OpenPGP_signature.asc
Description: OpenPGP digital signature


Re: Adding support for the Common Print Dialog Backends (CPDB)

2024-03-27 Thread Till Kamppeter

On 27/03/2024 18:11, Michael Weghorn wrote:
Good, then I currently see no blocker for requiring CPDB for CUPS 3.x support. 
Distros will then become aware once they're packaging any software depending on 
CPDB at latest.




Would be good to tell them that for CUPS 3.x use of CPDB is required.

For CUPS 2.x the direct CUPS interface can be used and CPDB also works with CUPS 
2.x (CPDB works with any CUPS).


For having a correct CPDB mode in LibreOffice, it must be possible to build 
LibreOffice without libcuops. If LibreOffice still needs libcups when in CPDB 
mode, this is a bug (of LibreOffice).


For the direct CUPS interface it needs to be checked whether IPP print 
destinations without having a permanent CUPS queue get listed. If this does not 
work, this is a bug in the direct CUPS interface, which either needs to get 
fixed or the direct CUPS interface be removed altogether.


Note that most distros have cups-browsed running which auto-creates permanent 
CUPS queues for IPP print destinations. This is a workaround for the bug that 
some print dialogs do not list IPP print destinations without a permanent CUPS 
queue. Turn off cups-browsed and remove all CUPS queues which it has 
auto-created (with implicitclass://... URIs) to check whether the direct CUPS 
interface of LibreOffice is correctly working.


Yes, that makes sense. (For the CPDB case, we won't want to use CUPS directly 
anymore, as CPDB API should be providing everything that's needed, as you 
mentioned earlier.)


Yes, exactly this.

   Till




help.git: source/text

2024-03-27 Thread Olivier Hallot (via logerrit)
 source/text/scalc/01/ex_data_stat_func.xhp |   12 +-
 source/text/scalc/01/func_sort.xhp |3 
 source/text/scalc/01/func_sortby.xhp   |  162 -
 3 files changed, 167 insertions(+), 10 deletions(-)

New commits:
commit e8b0e4366701e46f775cca486ee65a1291c56456
Author: Olivier Hallot 
AuthorDate: Wed Mar 27 15:26:45 2024 -0300
Commit: Olivier Hallot 
CommitDate: Wed Mar 27 19:30:38 2024 +0100

tdf#159872 Help page for SORTBY function (final).

Change-Id: If3f9746d20aa60bab06c2607e5d8fce557e91f75
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/165431
Tested-by: Jenkins
Reviewed-by: Olivier Hallot 

diff --git a/source/text/scalc/01/ex_data_stat_func.xhp 
b/source/text/scalc/01/ex_data_stat_func.xhp
index c7898b6ea8..994116e365 100644
--- a/source/text/scalc/01/ex_data_stat_func.xhp
+++ b/source/text/scalc/01/ex_data_stat_func.xhp
@@ -42,10 +42,10 @@
   Product 
Name
 
 
-  Sales
+  Sales
 
 
-  Revenue
+  Revenue
 
   
   
@@ -106,16 +106,16 @@
   
 
 
-  6
+  6
 
 
-  pencil-case
+  pencil-case
 
 
-  not
+  not
 
 
-  not
+  not
 
   
 
diff --git a/source/text/scalc/01/func_sort.xhp 
b/source/text/scalc/01/func_sort.xhp
index 7628d9b663..e0f9b694c8 100644
--- a/source/text/scalc/01/func_sort.xhp
+++ b/source/text/scalc/01/func_sort.xhp
@@ -10,7 +10,7 @@
 -->
 
 
-
+
 SORT function
 /text/scalc/01/func_sort.xhp
 
@@ -161,6 +161,7 @@
 COM.MICROSOFT.SORT
 
 https://wiki.documentfoundation.org/Documentation/Calc_Functions/SORT";>SORT
 wiki page.
+
 
 
 
diff --git a/source/text/scalc/01/func_sortby.xhp 
b/source/text/scalc/01/func_sortby.xhp
index 41d272f6dd..d22710928e 100644
--- a/source/text/scalc/01/func_sortby.xhp
+++ b/source/text/scalc/01/func_sortby.xhp
@@ -18,21 +18,177 @@
 
 
 
-SORTBY function
+SORTBY function
 
 
 SORTBY
-(...)
+Sorts the contents 
of a range or array based on the values in a corresponding range or 
array.
 
 
-SORTBY(...)
+SORTBY(Range, SortByRange1, 
SortOrder1[, SortByRange2, SortOrder2,[...]])
+Range: The 
array or range to sort.
+SortByRange1, 
SortByRange2,... : Range 1, range 2,... are the arrays or ranges to sort 
on.
+SortOrder1, 
SortOrder2,... : Order 1, order 2,... are the orders to use for sorting. 
1 for ascending, -1 for descending. Default is ascending.
 
+
+Consider the 
following table
+
+
+
+
+
+A
+
+
+B
+
+
+C
+
+
+
+
+1
+
+
+Product Name
+
+
+Sales
+
+
+Revenue
+
+
+
+
+2
+
+
+pencil
+
+
+20
+
+
+65
+
+
+
+
+3
+
+
+pen
+
+
+35
+
+
+85
+
+
+
+
+4
+
+
+notebook
+
+
+20
+
+
+190
+
+
+
+
+5
+
+
+book
+
+
+17
+
+
+180
+
+
+
+
+6
+
+
+pencil-case
+
+
+not
+
+
+not
+
+
+
+
+7
+
+
+pen
+
+
+10
+
+
+45
+
+
+
+
+Example with ascending order and descending 
order (for English locale)
+{=SORTBY(A2:C7,A2:A7,1,C2:C7,-1)}
+Sort the range A2:C7 
based on the first column in ascending order and third column in descending 
order.
+
+
+book
+17
+180
+
+
+notebook
+20
+190
+
+
+pen
+35
+85
+
+
+pen
+10
+45
+
+
+pencil
+20
+65
+
+
+pencil-case
+not
+not
+
+
+
 
 
 
 COM.MICROSOFT.SORTBY
 
 https://wiki.documentfoundation.org/Documentation/Calc_Functions/SORTBY";>SORTBY
 wiki page.
+
 
 
 


core.git: 2 commits - helpcontent2

2024-03-27 Thread Olivier Hallot (via logerrit)
 helpcontent2 |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit 09920926b7ee038daec5c96361c70f66ed5f7265
Author: Olivier Hallot 
AuthorDate: Wed Mar 27 15:30:38 2024 -0300
Commit: Gerrit Code Review 
CommitDate: Wed Mar 27 19:30:38 2024 +0100

Update git submodules

* Update helpcontent2 from branch 'master'
  to e8b0e4366701e46f775cca486ee65a1291c56456
  - tdf#159872 Help page for SORTBY function (final).

Change-Id: If3f9746d20aa60bab06c2607e5d8fce557e91f75
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/165431
Tested-by: Jenkins
Reviewed-by: Olivier Hallot 

diff --git a/helpcontent2 b/helpcontent2
index 9736fda4e1a2..e8b0e4366701 16
--- a/helpcontent2
+++ b/helpcontent2
@@ -1 +1 @@
-Subproject commit 9736fda4e1a2994e1ea7377c37f61bad058f69b8
+Subproject commit e8b0e4366701e46f775cca486ee65a1291c56456
commit e27b9026e41cd3274f96bfc82c9555dbd9a204d8
Author: Olivier Hallot 
AuthorDate: Wed Mar 27 15:30:20 2024 -0300
Commit: Gerrit Code Review 
CommitDate: Wed Mar 27 19:30:20 2024 +0100

Update git submodules

* Update helpcontent2 from branch 'master'
  to 9736fda4e1a2994e1ea7377c37f61bad058f69b8
  - tdf#159872 Help page for SORT function (final).

Change-Id: Ib3385327c2fab41a0a9d76bf8913e76c46864059
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/165430
Tested-by: Jenkins
Reviewed-by: Olivier Hallot 

diff --git a/helpcontent2 b/helpcontent2
index 9f4e1983f6ed..9736fda4e1a2 16
--- a/helpcontent2
+++ b/helpcontent2
@@ -1 +1 @@
-Subproject commit 9f4e1983f6edae8f5ce8ee2e319410d4e1e39084
+Subproject commit 9736fda4e1a2994e1ea7377c37f61bad058f69b8


help.git: source/text

2024-03-27 Thread Olivier Hallot (via logerrit)
 source/text/scalc/01/ex_data_stat_func.xhp |2 
 source/text/scalc/01/func_averageifs.xhp   |4 
 source/text/scalc/01/func_sort.xhp |  134 -
 3 files changed, 135 insertions(+), 5 deletions(-)

New commits:
commit 9736fda4e1a2994e1ea7377c37f61bad058f69b8
Author: Olivier Hallot 
AuthorDate: Wed Mar 27 09:47:25 2024 -0300
Commit: Olivier Hallot 
CommitDate: Wed Mar 27 19:30:20 2024 +0100

tdf#159872 Help page for SORT function (final).

Change-Id: Ib3385327c2fab41a0a9d76bf8913e76c46864059
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/165430
Tested-by: Jenkins
Reviewed-by: Olivier Hallot 

diff --git a/source/text/scalc/01/ex_data_stat_func.xhp 
b/source/text/scalc/01/ex_data_stat_func.xhp
index fef3ee0545..c7898b6ea8 100644
--- a/source/text/scalc/01/ex_data_stat_func.xhp
+++ b/source/text/scalc/01/ex_data_stat_func.xhp
@@ -18,6 +18,7 @@
 
 
 
+
 Consider the following 
table
 
   
@@ -118,6 +119,7 @@
 
   
 
+
 In all examples below, ranges for 
calculation contain the row #6, which is ignored because it contains 
text.
 
 Func_Range; Range1; Criterion[; Range2; Criterion2][; … ; [Range127; 
Criterion127]]
diff --git a/source/text/scalc/01/func_averageifs.xhp 
b/source/text/scalc/01/func_averageifs.xhp
index 0da2629284..53b007c8ce 100644
--- a/source/text/scalc/01/func_averageifs.xhp
+++ b/source/text/scalc/01/func_averageifs.xhp
@@ -36,8 +36,7 @@
 
 
 
-
-
+
 
 Simple usage
 =AVERAGEIFS(B2:B6;B2:B6;">=20")
@@ -54,6 +53,7 @@
 =AVERAGEIFS(C2:C6;A2:A6;E2&".*";B2:B6;"<"&MAX(B2:B6))
 If E2 = pen, the 
function returns 65, because the link to the cell is substituted with its 
content.
 
+
 
   https://wiki.documentfoundation.org/Documentation/Calc_Functions/AVERAGEIFS";>AVERAGEIFS
 wiki page.
 
diff --git a/source/text/scalc/01/func_sort.xhp 
b/source/text/scalc/01/func_sort.xhp
index 15d637ac43..7628d9b663 100644
--- a/source/text/scalc/01/func_sort.xhp
+++ b/source/text/scalc/01/func_sort.xhp
@@ -18,15 +18,143 @@
 
 
 
-SORT function
+SORT function
 
 
 SORT
-(...)
+Sorts the contents 
of a range or array.
 
+Enter the formula as an array formula.
 
-SORT(...)
+SORT(Range [, SortIndex[, 
SortOrder[, ByCol]]])
+Range: 
Required. The range or array to sort.
+SortIndex: 
Optional. The number indicating the row or column to sort by.
+SortOrder: 
Optional. A number indicating the desired sort order; 1 for ascending order 
(default), -1 for descending order.
+ByCol: 
Optional. A logical value indicating the desired sort direction; 
FALSE to sort by row (default), TRUE to sort by 
column.
+
 
+
+Example with ascending order
+{=SORT(A2:C6,2,1)} 
+Sort the range A2:C6 
based on the second column in ascending order (Sales).
+
+
+
+book
+
+
+17
+
+
+180
+
+
+
+
+pencil
+
+
+20
+
+
+65
+
+
+
+
+notebook
+
+
+20
+
+
+190
+
+
+
+
+pen
+
+
+35
+
+
+85
+
+
+
+
+pencil-case
+
+
+not
+
+
+not
+
+
+
+Example with descending order
+{=SORT(A2:C6,3,-1)} 
+Sort the range A2:C6 
based on the third column in descending order (Revenue).
+
+
+
+pencil-case
+
+
+not
+
+
+not
+
+
+
+
+notebook
+
+
+20
+
+
+190
+
+
+
+
+book
+
+
+17
+
+
+180
+
+
+
+
+pen
+
+
+35
+
+
+85
+
+
+
+
+pencil
+
+
+20
+
+
+65
+
+
+
+
 
 
 


core.git: helpcontent2

2024-03-27 Thread Olivier Hallot (via logerrit)
 helpcontent2 |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit 7a15fcf9ca348f2cc6ffb57b8bc967ea899f755a
Author: Olivier Hallot 
AuthorDate: Wed Mar 27 15:29:55 2024 -0300
Commit: Gerrit Code Review 
CommitDate: Wed Mar 27 19:29:55 2024 +0100

Update git submodules

* Update helpcontent2 from branch 'master'
  to 9f4e1983f6edae8f5ce8ee2e319410d4e1e39084
  - Refactor help pages for some Calc functions

Change-Id: I06a4b2da852cac91b41ac551c4f08ad78b7e3e47
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/165409
Tested-by: Jenkins
Reviewed-by: Olivier Hallot 

diff --git a/helpcontent2 b/helpcontent2
index 093252967828..9f4e1983f6ed 16
--- a/helpcontent2
+++ b/helpcontent2
@@ -1 +1 @@
-Subproject commit 093252967828e122a391226a7e1f0afa415f682a
+Subproject commit 9f4e1983f6edae8f5ce8ee2e319410d4e1e39084


help.git: source/text

2024-03-27 Thread Olivier Hallot (via logerrit)
 source/text/scalc/01/ex_data_stat_func.xhp |   77 ++---
 source/text/scalc/01/func_averageif.xhp|   70 +-
 source/text/scalc/01/func_averageifs.xhp   |   40 +++
 source/text/scalc/01/func_countifs.xhp |   43 
 source/text/scalc/01/func_filter.xhp   |1 
 source/text/scalc/01/func_maxifs.xhp   |   41 +++
 source/text/scalc/01/func_minifs.xhp   |   41 +++
 source/text/scalc/01/func_sumif.xhp|1 
 source/text/scalc/01/func_sumifs.xhp   |1 
 9 files changed, 160 insertions(+), 155 deletions(-)

New commits:
commit 9f4e1983f6edae8f5ce8ee2e319410d4e1e39084
Author: Olivier Hallot 
AuthorDate: Tue Mar 26 13:11:59 2024 -0300
Commit: Olivier Hallot 
CommitDate: Wed Mar 27 19:29:55 2024 +0100

Refactor help pages for some Calc functions

Change-Id: I06a4b2da852cac91b41ac551c4f08ad78b7e3e47
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/165409
Tested-by: Jenkins
Reviewed-by: Olivier Hallot 

diff --git a/source/text/scalc/01/ex_data_stat_func.xhp 
b/source/text/scalc/01/ex_data_stat_func.xhp
index a05fad017f..fef3ee0545 100644
--- a/source/text/scalc/01/ex_data_stat_func.xhp
+++ b/source/text/scalc/01/ex_data_stat_func.xhp
@@ -11,135 +11,134 @@
 
 
   
-Examples Dataset for Statistical 
Functions
+Examples Dataset for Statistical Functions
 /text/scalc/01/ex_data_stat_func.xhp
   
 
 
 
 
-
 Consider the following 
table
 
   
 
 
 
-  A
+  A
 
 
-  B
+  B
 
 
-  C
+  C
 
   
   
 
-  1
+  1
 
 
-  Product Name
+  Product 
Name
 
 
-  Sales
+  Sales
 
 
-  Revenue
+  Revenue
 
   
   
 
-  2
+  2
 
 
-  pencil
+  pencil
 
 
-  20
+  20
 
 
-  65
+  65
 
   
   
 
-  3
+  3
 
 
-  pen
+  pen
 
 
-  35
+  35
 
 
-  85
+  85
 
   
   
 
-  4
+  4
 
 
-  notebook
+  notebook
 
 
-  20
+  20
 
 
-  190
+  190
 
   
   
 
-  5
+  5
 
 
-  book
+  book
 
 
-  17
+  17
 
 
-  180
+  180
 
   
 
 
-  6
+  6
 
 
-  pencil-case
+  pencil-case
 
 
-  not
+  not
 
 
-  not
+  not
 
   
 
 In all examples below, ranges for 
calculation contain the row #6, which is ignored because it contains 
text.
 
-Func_Range; Range1; Criterion[; Range2; 
Criterion2][; … ; [Range127; Criterion127]]
+Func_Range; Range1; Criterion[; Range2; Criterion2][; … ; [Range127; 
Criterion127]]
 
 The logical relation between criteria can 
be defined as logical AND (conjunction). In other words, if and only if all 
given criteria are met, a value from the corresponding cell of the given 
Func_Range is taken into calculation.
 
 
-Func_Range and Range1, Range2... 
must have the same size, otherwise the function returns err:502 - Invalid 
argument.
+Func_Range and Range1, Range2... 
must have the same size, otherwise the function returns err:502 - Invalid 
argument.
 
 
-Range1 – required argument. It is a range of 
cells, a name of a named range, or a label of a column or a row, to which the 
corresponding criterion is to be applied.
+Range1 
– required argument. It is a range of cells, a name of a named range, or a 
label of a column or a row, to which the corresponding criterion is to be 
applied.
 
 Criterion: A criterion is a single cell 
Reference, Number or Text. It is used in comparisons with cell 
contents.
 A reference to 
an empty cell is interpreted as the numeric value 0.
 A matching 
expression can be:
 
 
-A 
Number or Logical value. A matching cell content equals the Number or Logical 
value. 
+A Number 
or Logical value. A matching cell content equals the Number or Logical value. 

 
 
-A value 
beginning with a comparator (<, <=, =, >, >=, <>).
+A value 
beginning with a comparator (<, <=, =, >, >=, <>).
 For =, 
if the value is empty it matches empty cells.
 For 
<>, if the value is empty it matches non-empty cells.
 For 
<>, if the value is not empty it matches any cell content except the 
value, including empty cells.
@@ -147,16 +146,16 @@
 For = 
and <>, if the value is not empty and can not be interpreted as a Number 
type or one of its subtypes and the property Search criteria = and <> must 
apply to whole cells is checked, comparison is against the entire cell 
contents, if unchecked, comparison is against any subpart of the field that 
matches the criteria. For = and <>, if the value is no

core.git: 2 commits - include/comphelper sc/inc sc/source

2024-03-27 Thread Noel Grandin (via logerrit)
 include/comphelper/propshlp.hxx|9 +-
 sc/inc/chartuno.hxx|   21 +++---
 sc/source/ui/unoobj/celllistsource.cxx |  104 +++--
 sc/source/ui/unoobj/celllistsource.hxx |   26 
 sc/source/ui/unoobj/chartuno.cxx   |8 --
 5 files changed, 79 insertions(+), 89 deletions(-)

New commits:
commit 9462674c6501f1d04bc7bdea08b6035bf88ae0df
Author: Noel Grandin 
AuthorDate: Tue Mar 26 15:46:24 2024 +0200
Commit: Noel Grandin 
CommitDate: Wed Mar 27 19:11:03 2024 +0100

convert ScChartObj to comphelper::WeakComponentImplHelper

Change-Id: I94974713ce5acff13aa0c12a782f9f3fdf004f55
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165363
Tested-by: Jenkins
Reviewed-by: Noel Grandin 

diff --git a/sc/inc/chartuno.hxx b/sc/inc/chartuno.hxx
index 8eba30e630f5..b09ba9243c24 100644
--- a/sc/inc/chartuno.hxx
+++ b/sc/inc/chartuno.hxx
@@ -23,7 +23,7 @@
 #include 
 #include 
 #include 
-#include 
+#include 
 
 #include 
 #include 
@@ -32,8 +32,7 @@
 #include 
 #include 
 #include 
-#include 
-#include 
+#include 
 #include 
 
 class ScDocShell;
@@ -89,17 +88,17 @@ public:
 virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() 
override;
 };
 
-typedef ::cppu::WeakComponentImplHelper<
+typedef ::comphelper::WeakComponentImplHelper<
 css::table::XTableChart,
 css::document::XEmbeddedObjectSupplier,
 css::container::XNamed,
 css::lang::XServiceInfo > ScChartObj_Base;
 
-typedef ::comphelper::OPropertyContainer ScChartObj_PBase;
+typedef ::comphelper::OPropertyContainer2 ScChartObj_PBase;
 typedef ::comphelper::OPropertyArrayUsageHelper< ScChartObj > 
ScChartObj_PABase;
 
-class ScChartObj final : public ::cppu::BaseMutex
-  ,public ScChartObj_Base
+class ScChartObj final :
+   public ScChartObj_Base
   ,public ScChartObj_PBase
   ,public ScChartObj_PABase
   ,public SfxListener
@@ -113,10 +112,10 @@ private:
 voidGetData_Impl( ScRangeListRef& rRanges, bool& rColHeaders, bool& 
rRowHeaders ) const;
 
 // ::comphelper::OPropertySetHelper
-virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper() override;
-virtual void SAL_CALL setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, 
const css::uno::Any& rValue ) override;
-using ::cppu::OPropertySetHelper::getFastPropertyValue;
-virtual void SAL_CALL getFastPropertyValue( css::uno::Any& rValue, 
sal_Int32 nHandle ) const override;
+virtual ::cppu::IPropertyArrayHelper& getInfoHelper() override;
+virtual void setFastPropertyValue_NoBroadcast( 
std::unique_lock& rGuard, sal_Int32 nHandle, const css::uno::Any& 
rValue ) override;
+using ::comphelper::OPropertySetHelper::getFastPropertyValue;
+virtual void getFastPropertyValue( std::unique_lock& rGuard, 
css::uno::Any& rValue, sal_Int32 nHandle ) const override;
 
 // ::comphelper::OPropertyArrayUsageHelper
 virtual ::cppu::IPropertyArrayHelper* createArrayHelper() const override;
diff --git a/sc/source/ui/unoobj/chartuno.cxx b/sc/source/ui/unoobj/chartuno.cxx
index c905d68aff0a..f3e4be6863e5 100644
--- a/sc/source/ui/unoobj/chartuno.cxx
+++ b/sc/source/ui/unoobj/chartuno.cxx
@@ -406,9 +406,7 @@ sal_Bool SAL_CALL ScChartsObj::hasByName( const OUString& 
aName )
 }
 
 ScChartObj::ScChartObj(ScDocShell* pDocSh, SCTAB nT, OUString aN)
-:ScChartObj_Base( m_aMutex )
-,ScChartObj_PBase( ScChartObj_Base::rBHelper )
-,pDocShell( pDocSh )
+:pDocShell( pDocSh )
 ,nTab( nT )
 ,aChartName(std::move( aN ))
 {
@@ -519,7 +517,7 @@ void ScChartObj::Update_Impl( const ScRangeListRef& 
rRanges, bool bColHeaders, b
 return *ScChartObj_PABase::getArrayHelper();
 }
 
-void ScChartObj::setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const 
uno::Any& rValue )
+void ScChartObj::setFastPropertyValue_NoBroadcast( 
std::unique_lock& /*rGuard*/, sal_Int32 nHandle, const uno::Any& 
rValue )
 {
 switch ( nHandle )
 {
@@ -551,7 +549,7 @@ void ScChartObj::setFastPropertyValue_NoBroadcast( 
sal_Int32 nHandle, const uno:
 }
 }
 
-void ScChartObj::getFastPropertyValue( uno::Any& rValue, sal_Int32 nHandle ) 
const
+void ScChartObj::getFastPropertyValue( std::unique_lock& 
/*rGuard*/, uno::Any& rValue, sal_Int32 nHandle ) const
 {
 switch ( nHandle )
 {
commit a95bff116e1da140b9abe9742ceeb9a3caed43d5
Author: Noel Grandin 
AuthorDate: Tue Mar 26 15:42:52 2024 +0200
Commit: Noel Grandin 
CommitDate: Wed Mar 27 19:10:54 2024 +0100

convert OCellListSource to comphelper::WeakComponentImplHelper

Change-Id: Iec9a3d20868c96dfe23141930b660e08773b5833
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165362
Tested-by: Jenkins
Reviewed-by: Noel Grandin 

diff --git a/include/comphelper/propshlp.hxx b/include/comphelper/propshlp.hxx
index e605a4d65812..d5f148de4893 100644
--- a/include/comphelper/propshlp.hxx
+++ b/in

core.git: sw/source

2024-03-27 Thread Justin Luth (via logerrit)
 sw/source/core/layout/paintfrm.cxx |2 ++
 1 file changed, 2 insertions(+)

New commits:
commit c51f9f15b8c308e62b4839cc13d623fdab0486c2
Author: Justin Luth 
AuthorDate: Wed Mar 27 09:50:36 2024 -0400
Commit: Justin Luth 
CommitDate: Wed Mar 27 18:49:09 2024 +0100

tdf#131253 sw: draw frame text boundary if fly has textframe

While the text boundary on a wrap-through frame
will not need text boundary markers for the external text,
it does have relevance for the internal text.

Change-Id: Ica91dc42333a69cfecd10a72a1188d77d1dd4ed7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165395
Tested-by: Jenkins
Reviewed-by: Justin Luth 

diff --git a/sw/source/core/layout/paintfrm.cxx 
b/sw/source/core/layout/paintfrm.cxx
index 6903e80b1f46..8479436a88c8 100644
--- a/sw/source/core/layout/paintfrm.cxx
+++ b/sw/source/core/layout/paintfrm.cxx
@@ -7491,8 +7491,10 @@ void SwLayoutFrame::PaintSubsidiaryLines( const 
SwPageFrame *pPage,
 return;
 
 // if the frame is wrap none or wrap through, then text boundary lines 
have no meaning
+// (unless the frame itself contains text)
 const text::WrapTextMode aSurround = 
GetFormat()->GetSurround().GetSurround();
 if (GetFormat()->GetAnchor().GetAnchorId() != RndStdIds::FLY_AS_CHAR
+&& (!Lower() || !Lower()->IsTextFrame())
 && (aSurround == text::WrapTextMode::WrapTextMode_THROUGH
 || aSurround == text::WrapTextMode::WrapTextMode_NONE))
 {


Re: Adding support for the Common Print Dialog Backends (CPDB)

2024-03-27 Thread Michael Weghorn

On 2024-03-27 17:40, Till Kamppeter wrote:

On 27/03/2024 16:22, Michael Weghorn wrote:


Are you aware of any specific reasons why distros would prefer direct 
use of CUPS API over CPDB other than the usual packaging efforts 
needed for any new library?




No.

It could only happen that some distros are perhaps not aware of CPDB and 
therefore try to go the way of directly talking with CUPs.


Good, then I currently see no blocker for requiring CPDB for CUPS 3.x 
support. Distros will then become aware once they're packaging any 
software depending on CPDB at latest.


OK. If CPDB is used it must be taken care that we nowhere talk with CUPS 
directly, as otherwise non-CUPS CPDB backends (cloud printing services) 
will not work.


Yes, that makes sense. (For the CPDB case, we won't want to use CUPS 
directly anymore, as CPDB API should be providing everything that's 
needed, as you mentioned earlier.)


Michael


OpenPGP_signature.asc
Description: OpenPGP digital signature


core.git: sw/inc sw/qa

2024-03-27 Thread Miklos Vajna (via logerrit)
 sw/inc/crsrsh.hxx |2 +-
 sw/qa/core/edit/data/delete-sel-normalize.odt |binary
 sw/qa/core/edit/edit.cxx  |   25 +
 3 files changed, 26 insertions(+), 1 deletion(-)

New commits:
commit 261999bc552516a7dae0f96895259485e9ac77a2
Author: Miklos Vajna 
AuthorDate: Wed Mar 27 15:41:50 2024 +0100
Commit: Miklos Vajna 
CommitDate: Wed Mar 27 18:03:19 2024 +0100

tdf#109272 sw: add form filling testcase

Open the document, press tab to switch to a field, start typing, nothing
shows up.

Looking at the doc model dump, it turns out we inserted characters
between the field start and the field separator dummy characters,
instead of the field separator and the field end ones, which is quite
bad.

Turns out that in the meantime commit
c80606bb23fd42e41710d70a96b7ffaf948384a6 (tdf#109272: make sure that
Delete / Backspace move cursor correctly, 2024-01-18) fixed this, kind
of by accident: the comment says the motivation there was change
tracking.

Add a testcase to to make sure this now continues to work.

Change-Id: I1a300d8064f7c2a30aafeefc6cb5612bfcd9a06a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165368
Reviewed-by: Miklos Vajna 
Tested-by: Jenkins

diff --git a/sw/inc/crsrsh.hxx b/sw/inc/crsrsh.hxx
index e330974a7dcc..5b0031882487 100644
--- a/sw/inc/crsrsh.hxx
+++ b/sw/inc/crsrsh.hxx
@@ -734,7 +734,7 @@ public:
 
 bool GotoFormatContentControl(const SwFormatContentControl& 
rContentControl);
 
-void GotoFormControl(bool bNext);
+SW_DLLPUBLIC void GotoFormControl(bool bNext);
 
 static SwTextField* GetTextFieldAtPos(
 const SwPosition* pPos,
diff --git a/sw/qa/core/edit/data/delete-sel-normalize.odt 
b/sw/qa/core/edit/data/delete-sel-normalize.odt
new file mode 100644
index ..d7113204ba80
Binary files /dev/null and b/sw/qa/core/edit/data/delete-sel-normalize.odt 
differ
diff --git a/sw/qa/core/edit/edit.cxx b/sw/qa/core/edit/edit.cxx
index 444887fbb0df..fa8fefa910c1 100644
--- a/sw/qa/core/edit/edit.cxx
+++ b/sw/qa/core/edit/edit.cxx
@@ -56,6 +56,31 @@ CPPUNIT_TEST_FIXTURE(Test, testAutocorrect)
 emulateTyping(*pTextDoc, u"But not now - with ");
 }
 
+CPPUNIT_TEST_FIXTURE(Test, testDeleteSelNormalize)
+{
+// Given a read-only document with a fillable form, the placeholder text 
is selected:
+createSwDoc("delete-sel-normalize.odt");
+SwDoc* pDoc = getSwDoc();
+SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell();
+pWrtShell->SttEndDoc(/*bStt=*/true);
+pWrtShell->GotoFormControl(/*bNext=*/true);
+
+// When you press 'delete' to type some content instead:
+pWrtShell->DelRight();
+
+// Then make sure the position after the delete is correct:
+SwPosition& rCursor = *pWrtShell->GetCursor()->GetPoint();
+// The full text is "key ", so 
this marks the position
+// after the field separator but before the field end.
+sal_Int32 nExpectedCharPos = strlen("key **");
+// Without the accompanying fix in place, this test would have failed with:
+// - Expected: 6
+// - Actual  : 5
+// so we started to type between the field start and the field separator, 
nothing was visible on
+// the screen.
+CPPUNIT_ASSERT_EQUAL(nExpectedCharPos, rCursor.nContent.GetIndex());
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s 
cinkeys+=0=break: */


Eager to contribute to GSoC 2024

2024-03-27 Thread Ritobroto Mukherjee
Hello everyone!
I’m Ritobroto Mukherjee, a 2nd year engineering student from Netaji Subhas
University of Technology, India, pursuing IT as my branch of study/major. I
sometimes go by the username RMZeroFour on websites.

I am submitting my formal application for GSoC in this email, and an
attached document with further details. I would like to work on the project
“Cross Platform .NET Binding for UNO API” this summer. I believe I can work
on this as I have been learning/using C# for about 6 years now. I have also
gained some familiarity with the UNO API after converting some tests and
examples from Java to Python.

Since switching to Linux (Mint) about two years ago, my office suite of
choice has become LibreOffice. Having used it for everything from
assignments to presentations and reports to emails (including this one),
it’s safe to say I have become reliant on this suite of tools for a major
part of my university life. As such, I would love to contribute what I can
to give back to this organization and all the hard work it has done to
provide users with a free yet flexible set of office tools.

I have had a taste of various fields of programming and development,
including gamedev, hardware, emulators, physics sims, and Android apps
among others (some of which can be found on https://github.com/RMZeroFour
if needed for review). I have prior experience with open-source
contributions, notably some patches to the Conan package manager for C/C++,
as well as a C# port for the beginner-friendly graphics framework
OLC_PixelGameEngine, and now some more commits to the LibreOffice project.
The GSoC event is where I would like to consider my transition from
primarily learning, to giving back to the community.

I have submitted a few EasyHacks, of both easy and moderate difficulties.
As for my prerequisite interesting difficulty EasyHack, here is the bug I’d
like to work on (
https://bugs.documentfoundation.org/show_bug.cgi?id=50998#c11), and my
submitted patch (https://gerrit.libreoffice.org/c/core/+/165353). As of
writing this, it is awaiting review, and I’m eagerly awaiting suggestions
and improvements.

The wiki mentioned hoss...@libreoffice.org as the potential mentor, so if
it’s okay with them I would like to discuss potential approaches to the
problem.
I’d also appreciate being able to discuss ideas and suggestions with anyone
interested, mentor, contributor or otherwise, so please feel free to
contact me.

Thanks a lot to the LibreOffice team. Hoping to work with you all soon!
Ritobroto


Ritobroto Mukherjee GSoC Application.odt
Description: application/vnd.oasis.opendocument.text


Re: Handling text in Excel SORT/SORTBY functions recently merged

2024-03-27 Thread Balázs Varga
Hi Olivier,

>> MS does not specify the behavior when data to sort is a mix of numbers
and text in their user support pages.

Yes, I also didn't find any official documentation which is directly
related to how those functions handle the mix data.
But after a lot of testing I realized that in Excel the SORT/SORTBY is
sorting/working the same as the basic UI Sort works in Excel.
So I based on that during the implementation. Also our UI Sorting works the
same as Excel UI Sorting, so that was the best way to
follow that. :) But everything else was implemented based on the Official
documentations.

Also we couldn't file the Oasis proposal yet, since we couldn't log in for
a while to the Oasis page. But I already wrote the draft,
which can be uploaded. Just attached to the mail.

Best,
Balázs


Olivier Hallot  ezt írta (időpont: 2024.
márc. 26., K, 20:59):

> hi...
>
> I'm testing Calc's SORT function recently merged.
>
> MS does not specify the behavior when data to sort is a mix of numbers
> and text in their user support pages.
>
> When text is present in the array to sort, text appears to be higher
> than the highest numerical value (sort descending) or lower than the
> lowest numerical value (sort ascending)
>
> In either case, text is not treated as zero or blank as many other Calc
> functions. To me this is a point of attention (documentation-wise).
>
> Anybody can point me where to confirm the way Excel treat text for SORT
> (and SORTBY) functions?.
>
> Thank you
> --
> Olivier Hallot
> LibreOffice Documentation Coordinator
> Rio de Janeiro - Brasil - Local Time: UTC-03:00
> LibreOffice – free and open source office suite:
> https://www.libreoffice.org
> Respects your privacy, and gives you back control over your data
> http://tdf.io/joinus
>


SORT_ODF_DRAFT(1).odt
Description: application/vnd.oasis.opendocument.text


SORTBY_ODF_DRAFT(1).odt
Description: application/vnd.oasis.opendocument.text


Re: Adding support for the Common Print Dialog Backends (CPDB)

2024-03-27 Thread Till Kamppeter

On 27/03/2024 16:22, Michael Weghorn wrote:


Are you aware of any specific reasons why distros would prefer direct use of 
CUPS API over CPDB other than the usual packaging efforts needed for any new 
library?




No.

It could only happen that some distros are perhaps not aware of CPDB and 
therefore try to go the way of directly talking with CUPs.




Even better if the approach other projects take seems to be the same one as 
we're discussing for LibreOffice now. This should also provide a more uniform 
user experience (same printers + options show up regardless of the 
application/toolkit,...).




Yes, if all use CPDB, options will look the same everywhere. And a cloud 
printing service could be made available in all print dialogs by installing a 
single CPDB backend.




There's the existing [1], but I don't know whether that would still be the right 
place to report such things these days.




We do not use the Linux Foundation Bugzilla any more. All our projects are on 
GitHub already for several years and we use the issue trackers of GitHub.




That sounds reasonable and shouldn't be a problem in general, but will of course 
need a closer look into the code to see whether CUPS-related code is already 
fairly local or currently spread all over the place right now, requiring some 
more refactoring or reconsideration.




OK. If CPDB is used it must be taken care that we nowhere talk with CUPS 
directly, as otherwise non-CUPS CPDB backends (cloud printing services) will not 
work.


We already have various `--enable-`/`--disable-` configure 
flags (some with autodetection if not passed explicitly) for various features. 
Adding additional ones for those cases should be fine and fairly straightforward.




The usual stuff of most projects: ./configure auto-detects presence of libraries 
and in addition have command line options for manual selection. So one can 
easily opt for CPDB (or it gets even auto-selected) when one wants to support 
CUPS 3.x.


(Details on how to configure things at build and run time can also be discussed 
later.)




OK.

   Till



core.git: 2 commits - include/svl svl/source

2024-03-27 Thread Caolán McNamara (via logerrit)
 include/svl/nfengine.hxx|2 +-
 include/svl/numformat.hxx   |2 +-
 svl/source/numbers/zforlist.cxx |   19 ---
 svl/source/numbers/zformat.cxx  |2 +-
 4 files changed, 11 insertions(+), 14 deletions(-)

New commits:
commit 6ddc398095bcbb288b1ef1ec3f01a52a615672f8
Author: Caolán McNamara 
AuthorDate: Wed Mar 27 11:11:11 2024 +
Commit: Caolán McNamara 
CommitDate: Wed Mar 27 17:23:45 2024 +0100

drop const_cast and be more honest that internal state changes

Change-Id: I20dd009b2bd14cdf958572dabc7a7e565a2f98ba
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165393
Tested-by: Jenkins
Reviewed-by: Caolán McNamara 

diff --git a/include/svl/nfengine.hxx b/include/svl/nfengine.hxx
index aa57d731fbac..a4890e074d1a 100644
--- a/include/svl/nfengine.hxx
+++ b/include/svl/nfengine.hxx
@@ -92,7 +92,7 @@ public:
 bool IsDecimalSep(std::u16string_view rStr) const;
 
 /// Return the decimal separator matching the given locale / LanguageType.
-OUString GetLangDecimalSep(LanguageType nLang) const;
+OUString GetLangDecimalSep(LanguageType nLang);
 
 /// Change language/country, also input and format scanner
 void ChangeIntl(LanguageType eLnge);
diff --git a/include/svl/numformat.hxx b/include/svl/numformat.hxx
index 7acecbcbc2b4..b26e245ca8d5 100644
--- a/include/svl/numformat.hxx
+++ b/include/svl/numformat.hxx
@@ -264,7 +264,7 @@ public:
 const SvNumberformat* GetEntry(sal_uInt32 nKey) const;
 
 /// Obtain substituted GetFormatEntry(), i.e. system formats.
-const SvNumberformat* GetSubstitutedEntry(sal_uInt32 nKey, sal_uInt32& 
o_rNewKey) const;
+const SvNumberformat* GetSubstitutedEntry(sal_uInt32 nKey, sal_uInt32& 
o_rNewKey);
 
 /// Return the format index of the standard default number format for 
language/country
 sal_uInt32 GetStandardIndex(LanguageType eLnge = LANGUAGE_DONTKNOW);
diff --git a/svl/source/numbers/zforlist.cxx b/svl/source/numbers/zforlist.cxx
index 05f3dd9f2daa..9a4490849d11 100644
--- a/svl/source/numbers/zforlist.cxx
+++ b/svl/source/numbers/zforlist.cxx
@@ -362,7 +362,7 @@ bool SvNFLanguageData::IsDecimalSep( std::u16string_view 
rStr ) const
 return rStr == GetNumDecimalSepAlt();
 }
 
-OUString SvNFLanguageData::GetLangDecimalSep( LanguageType nLang ) const
+OUString SvNFLanguageData::GetLangDecimalSep( LanguageType nLang )
 {
 if (nLang == ActLnge)
 {
@@ -377,9 +377,9 @@ OUString SvNFLanguageData::GetLangDecimalSep( LanguageType 
nLang ) const
 else
 {
 LanguageTag aSaveLocale( xLocaleData->getLanguageTag() );
-const_cast(this)->xLocaleData.changeLocale( 
LanguageTag( nLang));
+xLocaleData.changeLocale( LanguageTag( nLang));
 aRet = xLocaleData->getNumDecimalSep();
-const_cast(this)->xLocaleData.changeLocale( 
aSaveLocale );
+xLocaleData.changeLocale( aSaveLocale );
 }
 return aRet;
 }
@@ -2886,14 +2886,13 @@ const SvNumberformat* SvNumberFormatter::GetEntry( 
sal_uInt32 nKey ) const
 return m_aFormatData.GetFormatEntry(nKey);
 }
 
-const SvNumberformat* SvNumberFormatter::GetSubstitutedEntry( sal_uInt32 nKey, 
sal_uInt32 & o_rNewKey ) const
+const SvNumberformat* SvNumberFormatter::GetSubstitutedEntry( sal_uInt32 nKey, 
sal_uInt32 & o_rNewKey )
 {
 ::osl::MutexGuard aGuard( GetInstanceMutex() );
 // A tad ugly, but GetStandardFormat() and GetFormatIndex() in
 // ImpSubstituteEntry() may have to add the LANGUAGE_SYSTEM formats if not
 // already present (which in practice most times they are).
-SvNumberFormatter* pThis = const_cast(this);
-return pThis->ImpSubstituteEntry( pThis->m_aFormatData.GetFormatEntry( 
nKey), &o_rNewKey);
+return ImpSubstituteEntry(m_aFormatData.GetFormatEntry(nKey), &o_rNewKey);
 }
 
 const SvNumberformat* SvNumberFormatter::ImpSubstituteEntry( const 
SvNumberformat* pFormat, sal_uInt32 * o_pRealKey )
diff --git a/svl/source/numbers/zformat.cxx b/svl/source/numbers/zformat.cxx
index ca34bd235aad..951c61ec04e1 100644
--- a/svl/source/numbers/zformat.cxx
+++ b/svl/source/numbers/zformat.cxx
@@ -858,7 +858,7 @@ SvNumberformat::SvNumberformat(OUString& rString,
 else if (rScan.GetConvertMode() && ((nDecPos = 
sStr.indexOf( aConvertFromDecSep)) >= 0))
 {
 if (aConvertToDecSep.isEmpty())
-aConvertToDecSep = 
GetCurrentLanguageData().GetLangDecimalSep( rScan.GetNewLnge());
+aConvertToDecSep = 
rScan.GetCurrentLanguageData().GetLangDecimalSep( rScan.GetNewLnge());
 if (aConvertToDecSep != aConvertFromDecSep)
 {
 const OUString aStr( sStr.replaceAt( nDecPos,
commit 381e257a814036df6baab4ddbb96371fba856acf
Author: Caolán McNamara 
AuthorDate: Wed Mar 27 11:13:34 2024 +
Commit: Caolán McNamara 
CommitDate: Wed Ma

core.git: sw/qa sw/source

2024-03-27 Thread Mike Kaganski (via logerrit)
 sw/qa/extras/htmlexport/data/tdf160390.fodt |   17 +++
 sw/qa/extras/htmlexport/htmlexport.cxx  |7 
 sw/source/filter/html/htmlatr.cxx   |   40 +---
 3 files changed, 43 insertions(+), 21 deletions(-)

New commits:
commit d9c778391796e91ea3da361bf3901000350c26dd
Author: Mike Kaganski 
AuthorDate: Wed Mar 27 16:01:51 2024 +0500
Commit: Mike Kaganski 
CommitDate: Wed Mar 27 17:06:38 2024 +0100

tdf#160390: make sure to forward the iterator

Change-Id: I302cc4303f083a1024175ce4ba00ce8021c6d4c9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165390
Tested-by: Jenkins
Reviewed-by: Mike Kaganski 

diff --git a/sw/qa/extras/htmlexport/data/tdf160390.fodt 
b/sw/qa/extras/htmlexport/data/tdf160390.fodt
new file mode 100644
index ..53d6144ff19b
--- /dev/null
+++ b/sw/qa/extras/htmlexport/data/tdf160390.fodt
@@ -0,0 +1,17 @@
+
+
+
+ 
+  
+   
+  
+  
+   
+  
+ 
+ 
+  
+   foo 

+  
+ 
+
\ No newline at end of file
diff --git a/sw/qa/extras/htmlexport/htmlexport.cxx 
b/sw/qa/extras/htmlexport/htmlexport.cxx
index 374c739230e5..6a23599184a5 100644
--- a/sw/qa/extras/htmlexport/htmlexport.cxx
+++ b/sw/qa/extras/htmlexport/htmlexport.cxx
@@ -3075,6 +3075,13 @@ CPPUNIT_TEST_FIXTURE(SwHtmlDomExportTest, 
testHTML_Tdf160017_spanClosingOrder)
 CPPUNIT_ASSERT(parseXml(maTempFile));
 }
 
+CPPUNIT_TEST_FIXTURE(SwHtmlDomExportTest, testHTML_Tdf160390)
+{
+// This document must not hang infinitely on HTML export
+createSwDoc("tdf160390.fodt");
+ExportToHTML();
+}
+
 } // end of anonymous namespace
 CPPUNIT_PLUGIN_IMPLEMENT();
 
diff --git a/sw/source/filter/html/htmlatr.cxx 
b/sw/source/filter/html/htmlatr.cxx
index c880082018f1..f298f93dc5b2 100644
--- a/sw/source/filter/html/htmlatr.cxx
+++ b/sw/source/filter/html/htmlatr.cxx
@@ -1524,8 +1524,9 @@ void HTMLEndPosLst::SplitItem( const SfxPoolItem& rItem, 
sal_Int32 nStart,
 
 for (auto it = items.begin(); it != items.end();)
 {
-HTMLStartEndPos* pTest = *it;
-sal_Int32 nTestEnd = pTest->GetEnd();
+auto itTest = it++; // forward early, allow 'continue', and keep a 
copy for 'erase'
+HTMLStartEndPos* pTest = *itTest;
+const sal_Int32 nTestEnd = pTest->GetEnd();
 if (nTestEnd <= nStart)
 continue;
 
@@ -1533,28 +1534,25 @@ void HTMLEndPosLst::SplitItem( const SfxPoolItem& 
rItem, sal_Int32 nStart,
 const SfxPoolItem& rTestItem = pTest->GetItem();
 
 // only the corresponding OnTag attributes have to be considered
-if (rTestItem.Which() == nWhich && HTML_ON_VALUE == 
GetHTMLItemState(rTestItem))
-{
-// if necessary, insert the second part of the split
-// attribute
-if (nTestEnd > nEnd)
-InsertItem(pTest->GetItem(), nEnd, nTestEnd);
+if (rTestItem.Which() != nWhich || HTML_ON_VALUE != 
GetHTMLItemState(rTestItem))
+continue;
 
-if (nTestStart >= nStart)
-{
-// the Test item only starts after the new end of the
-// attribute. Therefore, it can be completely erased.
-it = items.erase(it);
-std::erase(m_aEndLst[pTest->GetEnd()], pTest);
-delete pTest;
-continue;
-}
+// if necessary, insert the second part of the split attribute
+if (nTestEnd > nEnd)
+InsertItem(rTestItem, nEnd, nTestEnd);
 
-// the start of the new attribute corresponds to the new
-// end of the attribute
-FixSplittedItem(pTest, nStart);
+if (nTestStart >= nStart)
+{
+// the Test item only starts after the new end of the
+// attribute. Therefore, it can be completely erased.
+it = items.erase(itTest);
+std::erase(m_aEndLst[nTestEnd], pTest);
+delete pTest;
+continue;
 }
-++it;
+
+// the start of the new attribute corresponds to the new end of 
the attribute
+FixSplittedItem(pTest, nStart);
 }
 }
 }


core.git: sfx2/source

2024-03-27 Thread Gökay Şatır (via logerrit)
 sfx2/source/control/unoctitm.cxx |5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

New commits:
commit d5dccc8780c737c0f23164fd98669303e61ba737
Author: Gökay Şatır 
AuthorDate: Mon Mar 18 15:17:32 2024 +0300
Commit: Miklos Vajna 
CommitDate: Wed Mar 27 16:57:06 2024 +0100

Allow export commands in readonly view mode.

(cherry picked from commit 5c8c5db55e082eed3422e3fb9455943b2f285253)

Change-Id: I88e9a45fd9e5c7b6bf1984a424e36b010aaaff4d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165389
Tested-by: Jenkins
Reviewed-by: Miklos Vajna 

diff --git a/sfx2/source/control/unoctitm.cxx b/sfx2/source/control/unoctitm.cxx
index f8c62b3dae19..d81b191d8623 100644
--- a/sfx2/source/control/unoctitm.cxx
+++ b/sfx2/source/control/unoctitm.cxx
@@ -544,7 +544,10 @@ static bool isCommandAllowedForViewType(const OUString& 
command)
 u"LayoutStatus"_ustr,
 u"ToolbarMode"_ustr,
 u"ChangeTheme"_ustr,
-u"CopyHyperlinkLocation"_ustr
+u"CopyHyperlinkLocation"_ustr,
+u"ExportDirectToPDF"_ustr,
+u"ExportToPDF"_ustr,
+u"ExportToEPUB"_ustr
 };
 
 bool allowed = std::find(std::begin(allowedCommandList), 
std::end(allowedCommandList), command) != std::end(allowedCommandList);


core.git: oox/qa oox/source

2024-03-27 Thread Regina Henschel (via logerrit)
 oox/qa/unit/data/Scene3d_shape_rotation.pptx |binary
 oox/qa/unit/testscene3d.cxx  |   12 +
 oox/source/export/drawingml.cxx  |   57 +++
 3 files changed, 54 insertions(+), 15 deletions(-)

New commits:
commit 207876cdcd7a4c19940d769a52d118751059dfe0
Author: Regina Henschel 
AuthorDate: Tue Mar 26 23:52:34 2024 +0100
Commit: Regina Henschel 
CommitDate: Wed Mar 27 16:48:20 2024 +0100

Restore shape rotation on roundtrip of pptx 3D shape

As long as our support for extruded custom shapes from MS Office is
rudimentary, we should restore the original values in case of saving
to pptx.

The patch uses the angle out of the interopGrabBag even if the user
has changed the shape rotation. Considering a different angle would
require to calculate camera, light rig and shape rotations. The effort
for that is too large.

Change-Id: Ib0549acc4ae13badd44fe9ae221a56ad21d28e1e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165359
Tested-by: Jenkins
Reviewed-by: Regina Henschel 

diff --git a/oox/qa/unit/data/Scene3d_shape_rotation.pptx 
b/oox/qa/unit/data/Scene3d_shape_rotation.pptx
new file mode 100644
index ..c8645e8a3780
Binary files /dev/null and b/oox/qa/unit/data/Scene3d_shape_rotation.pptx differ
diff --git a/oox/qa/unit/testscene3d.cxx b/oox/qa/unit/testscene3d.cxx
index 4b6415424515..fdad25be2cea 100644
--- a/oox/qa/unit/testscene3d.cxx
+++ b/oox/qa/unit/testscene3d.cxx
@@ -623,6 +623,18 @@ CPPUNIT_TEST_FIXTURE(TestScene3d, test_pureImage)
 CPPUNIT_ASSERT_EQUAL(sal_Int32(27000), nZRotate);
 }
 
+CPPUNIT_TEST_FIXTURE(TestScene3d, test_shape_rotation)
+{
+// Given a document with a shape in 3D mode with shape rotation 
rot="30".
+loadFromFile(u"Scene3d_shape_rotation.pptx");
+uno::Reference xShape(getShape(0, 0));
+
+// Make sure that the immediate export to pptx has the same shape rotation
+save("Impress Office Open XML");
+xmlDocUniquePtr pXmlDoc = parseExport("ppt/slides/slide1.xml");
+assertXPath(pXmlDoc, "//p:spPr/a:xfrm"_ostr, "rot"_ostr, "30");
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index 20dba5b60de9..59b32eb2df4e 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -2354,35 +2354,62 @@ void DrawingML::WriteShapeTransformation( const 
Reference< XShape >& rXShape, sa
 if (xPropertySet->getPropertyValue("RotateAngle") >>= nTmp)
 nRotation = Degree100(nTmp);
 }
-// tdf#133037: restore original rotate angle before output
-if (nRotation && 
xPropertySetInfo->hasPropertyByName(UNO_NAME_MISC_OBJ_INTEROPGRABBAG))
+
+// As long as the support of MS Office 3D-features is rudimentary, we 
restore the original
+// values from InteropGrabBag. This affects images and custom shapes.
+if 
(xPropertySetInfo->hasPropertyByName(UNO_NAME_MISC_OBJ_INTEROPGRABBAG))
 {
 uno::Sequence aGrabBagProps;
 xPropertySet->getPropertyValue(UNO_NAME_MISC_OBJ_INTEROPGRABBAG) 
>>= aGrabBagProps;
-auto p3DEffectProps = std::find_if(std::cbegin(aGrabBagProps), 
std::cend(aGrabBagProps),
+auto p3DEffectProps = std::find_if(
+std::cbegin(aGrabBagProps), std::cend(aGrabBagProps),
 [](const PropertyValue& rProp) { return rProp.Name == 
"3DEffectProperties"; });
 if (p3DEffectProps != std::cend(aGrabBagProps))
 {
 uno::Sequence a3DEffectProps;
 p3DEffectProps->Value >>= a3DEffectProps;
-auto pCameraProps = std::find_if(std::cbegin(a3DEffectProps), 
std::cend(a3DEffectProps),
-[](const PropertyValue& rProp) { return rProp.Name == 
"Camera"; });
-if (pCameraProps != std::cend(a3DEffectProps))
+// We have imported a scene3d.
+if (rXShape->getShapeType() == 
"com.sun.star.drawing.CustomShape")
+{
+auto pMSORotation
+= std::find_if(std::cbegin(aGrabBagProps), 
std::cend(aGrabBagProps),
+   [](const PropertyValue& rProp) {
+   return rProp.Name == 
"mso-rotation-angle";
+   });
+sal_Int32 nMSORotation = 0;
+if (pMSORotation != std::cend(aGrabBagProps))
+pMSORotation->Value >>= nMSORotation;
+WriteTransformation(
+rXShape,
+tools::Rectangle(Point(aPos.X, aPos.Y), 
Size(aSize.Width, aSize.Height)),
+nXmlNamespace, bFlipHWrite, bFlipVWrite, nMSORotation);
+return;
+   

ESC meeting agenda: 2024-03-28 16:00 CET

2024-03-27 Thread Miklos Vajna

Hi,

The prototype agenda is below. Extra items are appreciated either in
this document or as a reply to this mail:

https://pad.documentfoundation.org/p/esc

You can join using Jitsi here:

https://jitsi.documentfoundation.org/esc

Regards,

Miklos

---

* Present:
+

* Completed Action Items:

* Pending Action Items:
+ File easy hack to move the copyright year out of the about dialog l10n 
strings (Xisco)
+ Dev certification, reach out to the discussed candidate (Stephan)

* Release Engineering update (Cloph)
+ 7.6:
+ 24.2:
+ MAR updates

* Documentation (Olivier)
+ Bugzilla Documentation statistics
267(267) bugs open
+ Updates:
BZ changes   1 week1 month3 months   12 months
   created 12(-5) 61(1)  85(3) 231(-1)
 commented 15(-12)   117(-12)   239(0) 895(-3)
  resolved  7(3)  26(3)  40(6) 121(4)
+ top 10 contributors:
  Olivier Hallot made 36 changes in 1 month, and 274 changes in 1 year
  Pierre F made 30 changes in 1 month, and 30 changes in 1 year
  Vernon, Stuart Foote made 25 changes in 1 month, and 83 changes in 1 
year
  Heiko Tietze made 21 changes in 1 month, and 99 changes in 1 year
  Stéphane Guillou made 20 changes in 1 month, and 265 changes in 1 year
  Dione Maddern made 17 changes in 1 month, and 17 changes in 1 year
  Adolfo Jayme Barrientos made 17 changes in 1 month, and 23 changes in 
1 year
  Ilmari Lauhakangas made 14 changes in 1 month, and 92 changes in 1 
year
  Kaganski, Mike made 12 changes in 1 month, and 67 changes in 1 year
  *UNKNOWN* made 11 changes in 1 month, and 11 changes in 1 year

* UX Update (Heiko)
+ Bugzilla (topicUI) statistics
244(244) (topicUI) bugs open, 42(42) (needsUXEval) needs to be 
evaluated by the UXteam
+ Updates:
BZ changes   1 week   1 month   3 months   12 months
 added  9(2) 19(5) 20(4)   31(5)
 commented 91(13)   275(33)   499(34)2011(5)
   removed  0(0)  0(0)  0(-1)  13(-1)
  resolved  7(2) 25(-3)75(3)  310(-3)
+ top 10 contributors:
  Stéphane Guillou made 104 changes in 1 month, and 661 changes in 1 
year
  Heiko Tietze made 97 changes in 1 month, and 1149 changes in 1 year
  Vernon, Stuart Foote made 56 changes in 1 month, and 278 changes in 1 
year
  Kaganski, Mike made 28 changes in 1 month, and 117 changes in 1 year
  Eyal Rozenberg made 23 changes in 1 month, and 159 changes in 1 year
  Devansh Varshney made 20 changes in 1 month, and 20 changes in 1 year
  Patrick Luby made 17 changes in 1 month, and 24 changes in 1 year
  Justin Luth made 15 changes in 1 month, and 137 changes in 1 year
  m.a.riosv made 14 changes in 1 month, and 64 changes in 1 year
  Timur made 12 changes in 1 month, and 35 changes in 1 year

* Crash Testing (Caolan)
+ 10(-5) import failure, 8(+7) export failures
+ ??? coverity issues
+ Google / ossfuzz: ?? fuzzers active now

* Crash Reporting (Xisco)
+ 7.6.2.154498(+1373)
+ 7.6.3.29616(+364)
+ 7.6.4.143789(+2178)
+ 7.6.5.24924(+1388)

* Mentoring (Hossein, Michael W)
  committer...   1 week 1 month 3 months12 months
  open  75(-6) 159(1)  164(4)   164(4)
   reviews 450(-84)   1614(-56)   3992(108)   12312(66)
merged 265(35)1175(-24)   3416(103)   12410(13)
 abandoned  13(0)   75(2)  179(0)   666(-6)
   own commits 166(12) 790(-9)2258(42) 9284(-46)
review commits  73(3)  331(-13)935(25) 3011(8)
contributor...   1 week1 month  3 months12 months
  open  49(15) 89(14)   93(18)   93(18)
   reviews 816(94)   3080(12) 8002(190)   29684(-48)
merged  27(0) 129(-1)  333(-20)1810(-42)
 abandoned   9(4)  63(-143)291(-8)  686(-3)
   own commits  42(16)164(2)   423(14) 1061(22)
review commits   0(0)   0(0) 0(0) 0(0)
+ easyHack statistics:
   needsDevEval 8(8)   needsUXEval 1(1)   cleanup_comments 330(330)
   total 411(411)   assigned 27(27)   open 349(349)
+ top 10 contributors:
  Pierre F made 22 patches in 1 month, and 22 patches in 1 year
  Dr. David Alan Gilbert made 17 patches in 1 month, and 41 patches in 
1 year
  Stéphane Guillou made 8 patches in 1 month, and 62 patches in 1 year
  Armin Le Grand (allotropia) made 8 patches in 1 month, and 87 patches 
in 1 year
  Dione Maddern made 6 patches in 1 month, and 28 patches in 1 year
  Ritobroto Mukherjee made 6 patches in 1 

Re: Adding support for the Common Print Dialog Backends (CPDB)

2024-03-27 Thread Michael Weghorn

On 2024-03-27 15:26, Till Kamppeter wrote:
Also, if we would clean up and update the current CUPS/PPD interface, 
some distros will not go CPDB and users complain when CUPS has another 
significant change or if a clod printing service with their CPDB backend 
shows up.


Are you aware of any specific reasons why distros would prefer direct 
use of CUPS API over CPDB other than the usual packaging efforts needed 
for any new library?


This ways distros have to go CPDB at a certain point of time. They can 
opt to switch over early, for a smooth transition to CUPS 3.x.


Yes, distro packagers should generally be able to judge best when it's 
the right time to switch.


GTK has no alternative CUPS-based backend. Only its original one and 
alternative is CPDB with CPDB's CUPS backend. This alternative is 
required for CUPS 3.x.


I did not actually check the GTK dialog's CUPS backend code. I only 
observed that the GTK dialog is the only one not only showing the 
permanent CUPS queues but also the IPP print destinations for which CUPS 
creates a temporary queue on demand. I did not look into how the options 
and choices are obtained.


Then it seems that they just plugged the problem "IPP destinations 
without permanent CUPS queue do not get listed" by using cupsEnumDests() 
but left all the rest untouched. This satisfies all needs for users of 
CUPS 2.x but will fail with PPD-less CUPS 3.x, requiring the use of CPDB 
for CUPS 3.x here, too.


Even better if the approach other projects take seems to be the same one 
as we're discussing for LibreOffice now. This should also provide a more 
uniform user experience (same printers + options show up regardless of 
the application/toolkit,...).


This means also that the only example known to me, which uses the 
"Dests" API of CUPS correctly is the CUPS backend of CPDB, even more 
important to driver forward that CPDB gets used everywhere.


Thanks for the hint, I'll keep that in mind.

Modern (driverless) printers seem to have a job-password IPP attribute. 
Print dialogs (and for them CPDB) should add support for that.


On old printers Printer Applications (PAPPL, pappl-retrofit) should 
support generatring a job-password IPP attribute (from typical PPD file 
options) and report it.


CUPS should pass on this attributes for print queues which support this 
kind of secured printing.


So we should post feature requests for all these components.

This would also improve the UI of print dialogs when you can type the 
PIN as a 4-digit number instead of selecting the digits with 4 dropdowns.


There's the existing [1], but I don't know whether that would still be 
the right place to report such things these days.



OK, let us keep it for now and make sure uses/packagers/admins using 
CUPS 3.x use CPDB. The CUPS/PPD interface could be automatically skipped 
at build time if there is no libcups2 present, as the CPDB part could be 
skipped if there is no cpdb-libs present. If both got built, one could 
have a choice in the settings (not in the print dialog itself, to avoid 
clutter) which one actually to use.



(...)


I think we can go this way, see above. Important is that libcups2 with 
its PPD APIs is not required to build LibreOffice with print functionality.


That sounds reasonable and shouldn't be a problem in general, but will 
of course need a closer look into the code to see whether CUPS-related 
code is already fairly local or currently spread all over the place 
right now, requiring some more refactoring or reconsideration.


We already have various `--enable-`/`--disable-` 
configure flags (some with autodetection if not passed explicitly) for 
various features. Adding additional ones for those cases should be fine 
and fairly straightforward.


(Details on how to configure things at build and run time can also be 
discussed later.)



Michael


[1] https://bugs.linuxfoundation.org/show_bug.cgi?id=1393


OpenPGP_signature.asc
Description: OpenPGP digital signature


core.git: Branch 'distro/collabora/co-22.05' - 2 commits - configure.ac download.lst external/python3

2024-03-27 Thread Andras Timar (via logerrit)
Rebased ref, commits from common ancestor:
commit 2b77eb7600eefe8ab676b863f16cd5eb12700f0f
Author: Andras Timar 
AuthorDate: Tue Mar 26 10:15:03 2024 +0100
Commit: Andras Timar 
CommitDate: Wed Mar 27 15:38:30 2024 +0100

Bump version to 22.05.23.1

Change-Id: I4947db88e1faf5fd92174ceda05fd5ecfd4fe804

diff --git a/configure.ac b/configure.ac
index 1f01097740cd..d7fc37217fb7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -9,7 +9,7 @@ dnl in order to create a configure script.
 # several non-alphanumeric characters, those are split off and used only for 
the
 # ABOUTBOXPRODUCTVERSIONSUFFIX in openoffice.lst. Why that is necessary, no 
idea.
 
-AC_INIT([Collabora Office],[22.05.22.2],[],[],[https://collaboraoffice.com/])
+AC_INIT([Collabora Office],[22.05.23.1],[],[],[https://collaboraoffice.com/])
 
 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just 
fine if it is installed
 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails 
hard
commit d26c05fb8cdf1bfbd8f0af411c5220d778c3a3a8
Author: Michael Stahl 
AuthorDate: Wed Mar 20 10:52:09 2024 +0100
Commit: Andras Timar 
CommitDate: Wed Mar 27 15:38:30 2024 +0100

python3: upgrade to release 3.8.19

Fixes CVE-2023-6597 and also CVE-2024-0450

Change-Id: Iebca2608e16a966356736201c63f1be5185430d4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165053
Tested-by: Jenkins
Reviewed-by: Michael Stahl 
(cherry picked from commit 0633e4b4205334dd65ec64d7f3e306ee125e31be)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165009
Reviewed-by: Xisco Fauli 

diff --git a/configure.ac b/configure.ac
index 97f2e134b737..1f01097740cd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -9775,7 +9775,7 @@ internal)
 SYSTEM_PYTHON=
 PYTHON_VERSION_MAJOR=3
 PYTHON_VERSION_MINOR=8
-PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.16
+PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.19
 if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
 AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in 
download.lst])
 fi
diff --git a/download.lst b/download.lst
index 449a7a84a3b9..3c27bcbe0942 100644
--- a/download.lst
+++ b/download.lst
@@ -248,8 +248,8 @@ export POPPLER_DATA_SHA256SUM := 
2cec05cd1bb03af98a8b06a1e22f6e6e1a65b1e2f3816cb
 export POPPLER_DATA_TARBALL := poppler-data-0.4.11.tar.gz
 export POSTGRESQL_SHA256SUM := 
73876fdd3a517087340458dca4ce15b8d2a4dbceb334c0441424551ae6c4cded
 export POSTGRESQL_TARBALL := postgresql-13.8.tar.bz2
-export PYTHON_SHA256SUM := 
d85dbb3774132473d8081dcb158f34a10ccad7a90b96c7e50ea4bb61f5ce4562
-export PYTHON_TARBALL := Python-3.8.16.tar.xz
+export PYTHON_SHA256SUM := 
d2807ac69f69b84fd46a0b93bbd02a4fa48d3e70f4b2835ff0f72a2885040076
+export PYTHON_TARBALL := Python-3.8.19.tar.xz
 export QXP_SHA256SUM := 
e137b6b110120a52c98edd02ebdc4095ee08d0d5295a94316a981750095a945c
 export QXP_TARBALL := libqxp-0.0.2.tar.xz
 export RAPTOR_SHA256SUM := 
ada7f0ba54787b33485d090d3d2680533520cd4426d2f7fb4782dd4a6a1480ed
diff --git a/external/python3/python-3.3.0-darwin.patch.1 
b/external/python3/python-3.3.0-darwin.patch.1
index 39d3c9180a19..d262d55cd5b3 100644
--- a/external/python3/python-3.3.0-darwin.patch.1
+++ b/external/python3/python-3.3.0-darwin.patch.1
@@ -49,7 +49,7 @@ diff -ru python3.orig/Mac/Resources/app/Info.plist.in 
python3/Mac/Resources/app/
 -  Python
 +  LibreOfficePython
CFBundleGetInfoString
-   %version%, (c) 2001-2020 Python Software Foundation.
+   %version%, (c) 2001-2023 Python Software Foundation.
CFBundleHelpBookFolder
 diff -ru python3.orig/Mac/Resources/framework/Info.plist.in 
python3/Mac/Resources/framework/Info.plist.in
 --- python3.orig/Mac/Resources/framework/Info.plist.in 2015-07-05 
18:50:07.0 +0200


Re: Adding support for the Common Print Dialog Backends (CPDB)

2024-03-27 Thread Till Kamppeter

On 27/03/2024 12:55, Michael Weghorn wrote:


For CUPS 3.x support, my initial thought was that requiring the CPDB-based 
implementation for that could be a way forward, while leaving LO's internal 
CUPS/PPD implementation basically unchanged and around for compatibility reasons 
(for CUPS 2.x setups only) as long as necessary.


The CPDB implementation would then be optional for CUPS 2.x, but required for 
CUPS 3.x.


If the CPDB approach will cover everything that the current CUPS/PPD 
implementation does (does it?), that could avoid the need to spend extra effort 
on LibreOffice's CUPS/PPD implementation.




OK, let us go this way.

Also, if we would clean up and update the current CUPS/PPD interface, some 
distros will not go CPDB and users complain when CUPS has another significant 
change or if a clod printing service with their CPDB backend shows up.


This ways distros have to go CPDB at a certain point of time. They can opt to 
switch over early, for a smooth transition to CUPS 3.x.




Thanks for explaining what would be needed.

 From a first glance at the GTK 4.x code, I'm a bit surprised by it being 
referenced as an example of how to implement things properly.


While I see it has a CPDB implementation (initially added in [1]), its own CUPS 
print backend implementation (e.g. in [2] and [3]) seems to be full of uses of 
deprecated API, including direct use of PPDs.

[2] even has this comment at the top:

/* Cups 1.6 deprecates ppdFindAttr(), ppdFindCustomOption(),
  * ppdFirstCustomParam(), and ppdNextCustomParam() among others.
  * The replacement is to use the Job Ticket API, but that requires
  * a larger refactoring of this backend.
  */

Is there another CUPS-based implementation (besides the CPDB-based backend) or 
am I missing anything else here?




GTK has no alternative CUPS-based backend. Only its original one and alternative 
is CPDB with CPDB's CUPS backend. This alternative is required for CUPS 3.x.


I did not actually check the GTK dialog's CUPS backend code. I only observed 
that the GTK dialog is the only one not only showing the permanent CUPS queues 
but also the IPP print destinations for which CUPS creates a temporary queue on 
demand. I did not look into how the options and choices are obtained.


Then it seems that they just plugged the problem "IPP destinations without 
permanent CUPS queue do not get listed" by using cupsEnumDests() but left all 
the rest untouched. This satisfies all needs for users of CUPS 2.x but will fail 
with PPD-less CUPS 3.x, requiring the use of CPDB for CUPS 3.x here, too.


Thanks for checking this.

This means also that the only example known to me, which uses the "Dests" API of 
CUPS correctly is the CUPS backend of CPDB, even more important to driver 
forward that CPDB gets used everywhere.


Note that the tryPPD() function in the CPDB CUPS backend seems only to be a 
debug crutch or a remainder of old code. It only logs a list of the options in a 
queue's PPD file and does not change anything in the print dialog. As it only 
causes unnecessary compiler (API deprecation) warnings and would cause a 
dependency on libppd when switching to libcups3, I asked Biswadeep to remove it.




The "Dests" APIs for options automatically take care what the best is
for obtaining the options (including providing all PPD options if the queue is
a classic CUPS queue), (...)


Does that include cases like [4]? And if so, what would be the requirements for 
that to work (as it didn't work in the past)?




Modern (driverless) printers seem to have a job-password IPP attribute. Print 
dialogs (and for them CPDB) should add support for that.


On old printers Printer Applications (PAPPL, pappl-retrofit) should support 
generatring a job-password IPP attribute (from typical PPD file options) and 
report it.


CUPS should pass on this attributes for print queues which support this kind of 
secured printing.


So we should post feature requests for all these components.

This would also improve the UI of print dialogs when you can type the PIN as a 
4-digit number instead of selecting the digits with 4 dropdowns.


In general, my opinion is that for LibreOffice's existing CUPS/PPD 
implementation, we should be very careful not to risk to break existing (legacy) 
setups.




OK, let us keep it for now and make sure uses/packagers/admins using CUPS 3.x 
use CPDB. The CUPS/PPD interface could be automatically skipped at build time if 
there is no libcups2 present, as the CPDB part could be skipped if there is no 
cpdb-libs present. If both got built, one could have a choice in the settings 
(not in the print dialog itself, to avoid clutter) which one actually to use.


To me, the potential approach outlined above (envision to fully move to 
CPDB-approach in the longer run, leave existing CUPS/PPD implementation 
basically unchanged and around as long as needed so things work "as they always 
did" for legacy setups) seemed to match well with that idea, but I'm ce

core.git: solenv/clang-format vcl/inc vcl/unx

2024-03-27 Thread Michael Weghorn (via logerrit)
 solenv/clang-format/excludelist|2 
 vcl/inc/unx/cpdmgr.hxx |   59 +--
 vcl/unx/generic/printer/cpdmgr.cxx |  574 ++---
 3 files changed, 317 insertions(+), 318 deletions(-)

New commits:
commit 88f051257ebec4341864027f3af02e0f44df2367
Author: Michael Weghorn 
AuthorDate: Wed Mar 27 09:17:29 2024 +0100
Commit: Michael Weghorn 
CommitDate: Wed Mar 27 15:12:57 2024 +0100

clang-format CPDManager sources

These will likely be significantly changed in the process
of updating the code to support current CPDB
(Common Print Dialog Backends) versions, see [1].

[1] 
https://lists.freedesktop.org/archives/libreoffice/2024-March/091748.html

Change-Id: I2d8fe1cfedb703e4843ade261e5c09e24dfe30b9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165366
Tested-by: Jenkins
Reviewed-by: Michael Weghorn 

diff --git a/solenv/clang-format/excludelist b/solenv/clang-format/excludelist
index a4f7c15fa4b9..53e7e4252996 100644
--- a/solenv/clang-format/excludelist
+++ b/solenv/clang-format/excludelist
@@ -14219,7 +14219,6 @@ vcl/inc/textlineinfo.hxx
 vcl/inc/textrender.hxx
 vcl/inc/toolbox.h
 vcl/inc/unx/cairotextrender.hxx
-vcl/inc/unx/cpdmgr.hxx
 vcl/inc/unx/cupsmgr.hxx
 vcl/inc/unx/fc_fontoptions.hxx
 vcl/inc/unx/fontmanager.hxx
@@ -14874,7 +14873,6 @@ vcl/unx/generic/print/prtsetup.cxx
 vcl/unx/generic/print/psputil.cxx
 vcl/unx/generic/print/psputil.hxx
 vcl/unx/generic/print/text_gfx.cxx
-vcl/unx/generic/printer/cpdmgr.cxx
 vcl/unx/generic/printer/cupsmgr.cxx
 vcl/unx/generic/printer/jobdata.cxx
 vcl/unx/generic/printer/ppdparser.cxx
diff --git a/vcl/inc/unx/cpdmgr.hxx b/vcl/inc/unx/cpdmgr.hxx
index 2806f1d09b53..76a46b261c15 100644
--- a/vcl/inc/unx/cpdmgr.hxx
+++ b/vcl/inc/unx/cpdmgr.hxx
@@ -38,7 +38,6 @@ typedef struct _GDBusConnection GDBusConnection;
 
 namespace psp
 {
-
 class PPDParser;
 
 struct CPDPrinter
@@ -57,13 +56,13 @@ struct CPDPrinter
 class CPDManager final : public PrinterInfoManager
 {
 #if ENABLE_DBUS && ENABLE_GIO
-GDBusConnection * m_pConnection = nullptr;
+GDBusConnection* m_pConnection = nullptr;
 bool m_aPrintersChanged = true;
 std::vector> m_tBackends;
-std::unordered_map< std::string, GDBusProxy * > m_pBackends;
-std::unordered_map< FILE*, OString, FPtrHash > m_aSpoolFiles;
-std::unordered_map< OUString, CPDPrinter * > m_aCPDDestMap;
-std::unordered_map< OUString, PPDContext > m_aDefaultContexts;
+std::unordered_map m_pBackends;
+std::unordered_map m_aSpoolFiles;
+std::unordered_map m_aCPDDestMap;
+std::unordered_map m_aDefaultContexts;
 #endif
 CPDManager();
 // Function called when CPDManager is destroyed
@@ -72,49 +71,45 @@ class CPDManager final : public PrinterInfoManager
 virtual void initialize() override;
 
 #if ENABLE_DBUS && ENABLE_GIO
-static void onNameAcquired(GDBusConnection *connection, const gchar* name, 
gpointer user_data);
-static void onNameLost (GDBusConnection *, const gchar *name, gpointer);
-static void printerAdded (GDBusConnection *connection,
-  const gchar *sender_name,
-  const gchar *object_path,
-  const gchar *interface_name,
-  const gchar *signal_name,
-  GVariant*parameters,
-  gpointeruser_data);
-static void printerRemoved (GDBusConnection *connection,
-const gchar *sender_name,
-const gchar *object_path,
-const gchar *interface_name,
-const gchar *signal_name,
-GVariant*parameters,
-gpointeruser_data);
-
-static void getOptionsFromDocumentSetup( const JobData& rJob, bool 
bBanner, const OString& rJobName, int& rNumOptions, GVariant **arr );
+static void onNameAcquired(GDBusConnection* connection, const gchar* name, 
gpointer user_data);
+static void onNameLost(GDBusConnection*, const gchar* name, gpointer);
+static void printerAdded(GDBusConnection* connection, const gchar* 
sender_name,
+ const gchar* object_path, const gchar* 
interface_name,
+ const gchar* signal_name, GVariant* parameters, 
gpointer user_data);
+static void printerRemoved(GDBusConnection* connection, const gchar* 
sender_name,
+   const gchar* object_path, const gchar* 
interface_name,
+   const gchar* signal_name, GVariant* parameters, 
gpointer user_data);
+
+static void getOptionsFromDocumentSetup(const JobData& rJob, bool bBanner,
+const OString& rJobName, int& 
rNumOptions,
+ 

core.git: Branch 'distro/collabora/co-22.05' - 2 commits - configure.ac download.lst

2024-03-27 Thread Andras Timar (via logerrit)
Rebased ref, commits from common ancestor:
commit c4dd5aa3b1d85df89d07a21a0194894b3de1de46
Author: Andras Timar 
AuthorDate: Tue Mar 26 10:15:03 2024 +0100
Commit: Andras Timar 
CommitDate: Wed Mar 27 15:11:56 2024 +0100

Bump version to 22.05.23.1

Change-Id: I4947db88e1faf5fd92174ceda05fd5ecfd4fe804

diff --git a/configure.ac b/configure.ac
index 1f01097740cd..d7fc37217fb7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -9,7 +9,7 @@ dnl in order to create a configure script.
 # several non-alphanumeric characters, those are split off and used only for 
the
 # ABOUTBOXPRODUCTVERSIONSUFFIX in openoffice.lst. Why that is necessary, no 
idea.
 
-AC_INIT([Collabora Office],[22.05.22.2],[],[],[https://collaboraoffice.com/])
+AC_INIT([Collabora Office],[22.05.23.1],[],[],[https://collaboraoffice.com/])
 
 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just 
fine if it is installed
 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails 
hard
commit 2ca74d92ae483abda8c0246c44583196a76d78f3
Author: Michael Stahl 
AuthorDate: Wed Mar 20 10:52:09 2024 +0100
Commit: Andras Timar 
CommitDate: Wed Mar 27 15:11:56 2024 +0100

python3: upgrade to release 3.8.19

Fixes CVE-2023-6597 and also CVE-2024-0450

Change-Id: Iebca2608e16a966356736201c63f1be5185430d4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165053
Tested-by: Jenkins
Reviewed-by: Michael Stahl 
(cherry picked from commit 0633e4b4205334dd65ec64d7f3e306ee125e31be)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165009
Reviewed-by: Xisco Fauli 

diff --git a/configure.ac b/configure.ac
index 97f2e134b737..1f01097740cd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -9775,7 +9775,7 @@ internal)
 SYSTEM_PYTHON=
 PYTHON_VERSION_MAJOR=3
 PYTHON_VERSION_MINOR=8
-PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.16
+PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.19
 if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
 AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in 
download.lst])
 fi
diff --git a/download.lst b/download.lst
index 449a7a84a3b9..3c27bcbe0942 100644
--- a/download.lst
+++ b/download.lst
@@ -248,8 +248,8 @@ export POPPLER_DATA_SHA256SUM := 
2cec05cd1bb03af98a8b06a1e22f6e6e1a65b1e2f3816cb
 export POPPLER_DATA_TARBALL := poppler-data-0.4.11.tar.gz
 export POSTGRESQL_SHA256SUM := 
73876fdd3a517087340458dca4ce15b8d2a4dbceb334c0441424551ae6c4cded
 export POSTGRESQL_TARBALL := postgresql-13.8.tar.bz2
-export PYTHON_SHA256SUM := 
d85dbb3774132473d8081dcb158f34a10ccad7a90b96c7e50ea4bb61f5ce4562
-export PYTHON_TARBALL := Python-3.8.16.tar.xz
+export PYTHON_SHA256SUM := 
d2807ac69f69b84fd46a0b93bbd02a4fa48d3e70f4b2835ff0f72a2885040076
+export PYTHON_TARBALL := Python-3.8.19.tar.xz
 export QXP_SHA256SUM := 
e137b6b110120a52c98edd02ebdc4095ee08d0d5295a94316a981750095a945c
 export QXP_TARBALL := libqxp-0.0.2.tar.xz
 export RAPTOR_SHA256SUM := 
ada7f0ba54787b33485d090d3d2680533520cd4426d2f7fb4782dd4a6a1480ed


core.git: Branch 'distro/collabora/co-24.04' - 39 commits - basegfx/source chart2/source configmgr/source configure.ac dictionaries download.lst drawinglayer/source external/expat external/gpgmepp hel

2024-03-27 Thread Kris van der Merwe (via logerrit)
Rebased ref, commits from common ancestor:
commit 96bbedb1585f7cda6faab0aa8cba1ac2217be212
Author: Kris van der Merwe 
AuthorDate: Wed Mar 27 14:29:08 2024 +0100
Commit: Andras Timar 
CommitDate: Wed Mar 27 14:33:20 2024 +0100

Update git submodules

* Update dictionaries from branch 'distro/collabora/co-24.04'
  to a62f9b3e6b2de1366d826a5bacf19ae63e527ead
  - Updated Afrikaans dictionary

Change-Id: Ief9cb53fdcbf794d1c54f4f5008f80b9975453d8
Reviewed-on: https://gerrit.libreoffice.org/c/dictionaries/+/163265
Tested-by: Andras Timar 
Reviewed-by: Andras Timar 
(cherry picked from commit 55f4731d574aeec252379ac66326bcea6df2f823)
Reviewed-on: https://gerrit.libreoffice.org/c/dictionaries/+/163280
Tested-by: Adolfo Jayme Barrientos 
Reviewed-by: Adolfo Jayme Barrientos 

diff --git a/dictionaries b/dictionaries
index d7bb4585419c..a62f9b3e6b2d 16
--- a/dictionaries
+++ b/dictionaries
@@ -1 +1 @@
-Subproject commit d7bb4585419ce4496498ae5291947a3bf06ea1ec
+Subproject commit a62f9b3e6b2de1366d826a5bacf19ae63e527ead
commit 0824e9406a6f8f61ebc25f52ad8fb9c83e15b560
Author: Patrick Luby 
AuthorDate: Wed Mar 27 14:28:24 2024 +0100
Commit: Andras Timar 
CommitDate: Wed Mar 27 14:33:20 2024 +0100

Update git submodules

* Update helpcontent2 from branch 'distro/collabora/co-24.04'
  to b43d32f0218caaeb880c06d490d0b99972a50614
  - tdf#159326 macOS uses Command+Option+F while other plafforms use Ctrl+H

Change-Id: Iee37805afba1aa712a45c213d1f9eeae4d01d923
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/162452
Tested-by: Jenkins
Reviewed-by: Patrick Luby 
(cherry picked from commit 509ec415db94a821da1c8f7bacf9e372d320e49d)
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/162534
Reviewed-by: Patrick Luby 
Reviewed-by: Olivier Hallot 

  - related tdf#160057: replace ref to obsolete Footer Header page

Change-Id: Ie6df598c42149ecc527a1a2eef35a7aba469c216
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/164387
Tested-by: Jenkins
Reviewed-by: Adolfo Jayme Barrientos 
(cherry picked from commit 04dcd1b951689689f9449408fd6f512a9c87aa0d)
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/164991

  - tdf#156156: add Animation sidebar deck help button's HID

Change-Id: Ia0500321f9216aff4f249f9088694f6cd1fa1a80
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/161217
Tested-by: Jenkins
Reviewed-by: Adolfo Jayme Barrientos 

  - tdf#156156: add Manage Changes sidebar decks help button's HID

Change-Id: Ibeab9e20ea4f8684b8d0a8a535b30c3122e4df70
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/161165
Tested-by: Jenkins
Reviewed-by: Adolfo Jayme Barrientos 

  - fix Helpex warnings: 'No string specified!'

Change-Id: I70ad73b6859cd989e6046c3bd5a76c54c27f416d
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/164631
Tested-by: Jenkins
Reviewed-by: Olivier Hallot 
(cherry picked from commit 99537726eca951a450182d7672458afeb2b65e66)
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/164615
Reviewed-by: Adolfo Jayme Barrientos 

diff --git a/helpcontent2 b/helpcontent2
index e5d0bcb12bde..b43d32f0218c 16
--- a/helpcontent2
+++ b/helpcontent2
@@ -1 +1 @@
-Subproject commit e5d0bcb12bde1a726205c3e21338a625fba625a5
+Subproject commit b43d32f0218caaeb880c06d490d0b99972a50614
commit a2d349bc9c545e5107c6dfaa37f66bd38026147c
Author: Christian Lohmaier 
AuthorDate: Wed Mar 27 14:24:48 2024 +0100
Commit: Andras Timar 
CommitDate: Wed Mar 27 14:33:19 2024 +0100

Update git submodules

* Update translations from branch 'distro/collabora/co-24.04'
  to a2ed0affdffd40b46b6f5af094173ad32779293b
  - update translations for 24.2.2 rc2

and force-fix errors using pocheck

Change-Id: I75a9cc68d9f9d7712b58dfc521173323c3775208

  - bump copyright year for sl translation

Change-Id: I7211f904b9b3822e5c45bc4c3c7a3b0512853185

  - update translations for 24-2 and force-fix errors using pocheck

Change-Id: I964bed068dfa7396512c1742c73c674caa96669c

  - update translations for 24.2.2 rc1

and force-fix errors using pocheck

Change-Id: I9719c836bf763473f9a85cfced566b4cba514c13

  - update translations for 24.2.1 rc2

and force-fix errors using pocheck

Change-Id: I529205bfbe25f3e4a843743d37ba26c23b626a84

diff --git a/translations b/translations
index ced8f5a17e47..a2ed0affdffd 16
--- a/translations
+++ b/translations
@@ -1 +1 @@
-Subproject commit ced8f5a17e47cf094e7b82b6a84e46766e10621c
+Subproject commit a2ed0affdffd40b46b6f5af094173ad32779293b
commit 710295ad5299d69e37de

core.git: Branch 'distro/collabora/co-24.04' - dictionaries

2024-03-27 Thread Kris van der Merwe (via logerrit)
 dictionaries |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit 8f1f96db522decd331066445a37484923faa79b9
Author: Kris van der Merwe 
AuthorDate: Wed Mar 27 14:29:08 2024 +0100
Commit: Gerrit Code Review 
CommitDate: Wed Mar 27 14:29:08 2024 +0100

Update git submodules

* Update dictionaries from branch 'distro/collabora/co-24.04'
  to a62f9b3e6b2de1366d826a5bacf19ae63e527ead
  - Updated Afrikaans dictionary

Change-Id: Ief9cb53fdcbf794d1c54f4f5008f80b9975453d8
Reviewed-on: https://gerrit.libreoffice.org/c/dictionaries/+/163265
Tested-by: Andras Timar 
Reviewed-by: Andras Timar 
(cherry picked from commit 55f4731d574aeec252379ac66326bcea6df2f823)
Reviewed-on: https://gerrit.libreoffice.org/c/dictionaries/+/163280
Tested-by: Adolfo Jayme Barrientos 
Reviewed-by: Adolfo Jayme Barrientos 

diff --git a/dictionaries b/dictionaries
index d7bb4585419c..a62f9b3e6b2d 16
--- a/dictionaries
+++ b/dictionaries
@@ -1 +1 @@
-Subproject commit d7bb4585419ce4496498ae5291947a3bf06ea1ec
+Subproject commit a62f9b3e6b2de1366d826a5bacf19ae63e527ead


dictionaries.git: Branch 'distro/collabora/co-24.04' - af_ZA/af_ZA.aff af_ZA/af_ZA.dic af_ZA/description.xml

2024-03-27 Thread Kris van der Merwe (via logerrit)
 af_ZA/af_ZA.aff   |  175 
 af_ZA/af_ZA.dic   |30255 --
 af_ZA/description.xml |2 
 3 files changed, 12710 insertions(+), 17722 deletions(-)

New commits:
commit a62f9b3e6b2de1366d826a5bacf19ae63e527ead
Author: Kris van der Merwe 
AuthorDate: Tue Feb 13 00:31:19 2024 +0100
Commit: Adolfo Jayme Barrientos 
CommitDate: Mon Feb 19 05:33:28 2024 +0100

Updated Afrikaans dictionary

Change-Id: Ief9cb53fdcbf794d1c54f4f5008f80b9975453d8
Reviewed-on: https://gerrit.libreoffice.org/c/dictionaries/+/163265
Tested-by: Andras Timar 
Reviewed-by: Andras Timar 
(cherry picked from commit 55f4731d574aeec252379ac66326bcea6df2f823)
Reviewed-on: https://gerrit.libreoffice.org/c/dictionaries/+/163280
Tested-by: Adolfo Jayme Barrientos 
Reviewed-by: Adolfo Jayme Barrientos 

diff --git a/af_ZA/af_ZA.aff b/af_ZA/af_ZA.aff
index e8bb7de..33348f4 100644
--- a/af_ZA/af_ZA.aff
+++ b/af_ZA/af_ZA.aff
@@ -1,8 +1,7 @@
 # af_ZA.aff - Afrikaans (af) affix file for use in hunspell
 #
-# Copyright (C) 2020 Kris van der Merwe
-# ... created from the Afrikaans ispell affix file by Dwayne Bailey
-# ... created from the Afrikaans ispell affix file by Reinier de Vos
+# Copyright (C) 2024 Kris van der Merwe
+# ... created from the original Afrikaans ispell affix file by Dwayne Bailey 
and by Reinier de Vos
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -40,8 +39,8 @@ NOSPLITSUGS
 COMPOUNDMIN 1
 ONLYINCOMPOUND c
 # nommer verbuiging reëls:
-#   ([23456789]|1?[0-9])de
-#   ([018]?|[2-9][0-9]+|[1-9]{3,})ste
+#  ([23456789]|1?[0-9])de
+#  ([018]?|[2-9][0-9]+|[1-9]{3,})ste
 #
 # COMPOUNDRULE het foute, eenvoudige reëls word dus gebruik
 
@@ -73,12 +72,12 @@ MAP yÿý
 # kennis van wat maklik verwar word.
 #
 # Byvoorbeeld:
-#   g<->ch, vir foute soos gemikus of nongalant
-#   y<->ui<->ei, uu<->ie, vir oorronding en ontronding, en y/ei-verwarring
-#   ij -> y, lijk -> lik, vir foutiewe Nederlandse spellings
-#   kuste -> ci, kuste -> kusse, vir politikuste -> politici/politikusse
-#   ui oeï, vir foute soos Hinduisme -> Hindoeïsme
-#   ch->tj, sh -> sj, vir foute soos chips (tjips) en shoe (sjoe)
+#  g<->ch, vir foute soos gemikus of nongalant
+#  y<->ui<->ei, uu<->ie, vir oorronding en ontronding, en y/ei-verwarring
+#  ij -> y, lijk -> lik, vir foutiewe Nederlandse spellings
+#  kuste -> ci, kuste -> kusse, vir politikuste -> politici/politikusse
+#  ui oeï, vir foute soos Hinduisme -> Hindoeïsme
+#  ch->tj, sh -> sj, vir foute soos chips (tjips) en shoe (sjoe)
 #
 REP 27
 REP g ch
@@ -107,7 +106,7 @@ REP sh sj
 REP kie djie
 REP kie tjie
 REP ntjie nkie
-REP aaitjie aadjie
+REP aitjie adjie
 
 BREAK 2
 BREAK -
@@ -124,98 +123,113 @@ PFX A Y 1
 PFX A 0 aan .
 
 PFX B Y 1
-PFX B 0 be .
+PFX B 0 be ..
 
 PFX C Y 1
-PFX C 0 in .
+PFX C 0 in ..
 
 SFX E N 2
-SFX E 0 e  [^aeiou]
+SFX E 0 e [^aeou]
 SFX E 0 'e [ghc]e
 
 PFX F Y 1
-PFX F 0 af .
+PFX F 0 af ..
 
 PFX G Y 1
-PFX G 0 ge .
+PFX G 0 ge ..
 
 SFX H N 2
 SFX H 0 heid [^ëe]
 SFX H 0 nheid [ëe]
 
 SFX J N 16
-SFX J  0 tjie   .[aeiouy]
-SFX J  0 tjies  .[aeiouy]
-SFX J  0 tjie   .[aeiouyëê][lnr]
-SFX J  0 tjies  .[aeiouyëê][lnr]
-SFX J  0 etjie  ^.{1,3}[aeiouyëê]ng
-SFX J  0 etjies ^.{1,3}[aeiouyëê]ng
-SFX J  0 pie   .[aeiou]m
-SFX J  0 pies  .[aeiou]m
-SFX J  0 jie   .[aeioun][dt]
-SFX J  0 jies  .[aeioun][dt]
-SFX J  0 'tjies .+[^aeiouyëêlngrmdtp]
-SFX J  0 'tjie  .+[^aeiouyëêlngrmdtp]
-SFX J  0 'etjies ^[flmnrsx]
-SFX J  0 'etjie  ^[flmnrsx]
-SFX J  0 'tjies ^[^flmnrsx]
-SFX J  0 'tjie  ^[^flmnrsx]
+SFX J 0 tjie  .[aeiouy]
+SFX J 0 tjies .[aeiouy]
+SFX J 0 tjie  .[aeiouyëê][lnr]
+SFX J 0 tjies .[aeiouyëê][lnr]
+SFX J 0 etjie [aeiouyëê]ng
+SFX J 0 etjies [aeiouyëê]ng
+SFX J 0 pie  .[aeiou]m
+SFX J 0 pies .[aeiou]m
+SFX J 0 jie  .[aeioun][dt]
+SFX J 0 jies .[aeioun][dt]
+SFX J 0 'tjies .+[^aeiouyëêlngrmdtp]
+SFX J 0 'tjie .+[^aeiouyëêlngrmdtp]
+SFX J 0 'etjies ^[flmnrsx]
+SFX J 0 'etjie ^[flmnrsx]
+SFX J 0 'tjies ^[^flmnrsx]
+SFX J 0 'tjie ^[^flmnrsx]
 
 PFX K Y 1
 PFX K 0 op .
 
 SFX L N 1
-SFX L  0 te .
+SFX L 0 te .
 
 PFX M Y 1
 PFX M 0 oor .
 
 SFX N N 1
-SFX N  0 de .
+SFX N 0 de .
 
 PFX O Y 1
 PFX O 0 on .
 
 SFX P N 32
-SFX P  ad de aad
-SFX P  ag e  aag
-SFX P  ak ke aak
-SFX P  al le aal
-SFX P  am me aam
-SFX P  an ne aan
-SFX P  ap pe aap
-SFX P  ar re aar
-SFX P  as se aas
-SFX P  at te aat
-SFX P  ed de eed
-SFX P  eg ge eeg
-SFX P  ek ke eek
-SFX P  el le eel
-SFX P  em me eem
-SFX P  id de heid
-SFX P  en ne [eï]en
-SFX P  ep pe eep
-SFX P  er re eer
-SFX P  es se ees
-SFX P  et te eet
-SFX P  od de ood
-SFX P  og ë  oog
-SFX P  ok ke ook
-SFX P  ol le ool
-SFX P  om me oom
-SFX P  on ne oon
-SFX P  op pe oop
-SFX P  or re oor
-SFX P  ot te oot
-SFX P  un ne uun
-SFX P  ur re uur
+SFX P ad de aad
+SFX P ag e aag
+SFX P ak ke aak
+SFX P al le aal
+SFX P am me aam
+SFX P an ne aan
+SFX P ap pe 

core.git: Branch 'distro/collabora/co-24.04' - helpcontent2

2024-03-27 Thread Patrick Luby (via logerrit)
 helpcontent2 |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit 72b8daf0a813e199ca6ccb991ff6277e0584904e
Author: Patrick Luby 
AuthorDate: Wed Mar 27 14:28:24 2024 +0100
Commit: Gerrit Code Review 
CommitDate: Wed Mar 27 14:28:24 2024 +0100

Update git submodules

* Update helpcontent2 from branch 'distro/collabora/co-24.04'
  to b43d32f0218caaeb880c06d490d0b99972a50614
  - tdf#159326 macOS uses Command+Option+F while other plafforms use Ctrl+H

Change-Id: Iee37805afba1aa712a45c213d1f9eeae4d01d923
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/162452
Tested-by: Jenkins
Reviewed-by: Patrick Luby 
(cherry picked from commit 509ec415db94a821da1c8f7bacf9e372d320e49d)
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/162534
Reviewed-by: Patrick Luby 
Reviewed-by: Olivier Hallot 

  - related tdf#160057: replace ref to obsolete Footer Header page

Change-Id: Ie6df598c42149ecc527a1a2eef35a7aba469c216
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/164387
Tested-by: Jenkins
Reviewed-by: Adolfo Jayme Barrientos 
(cherry picked from commit 04dcd1b951689689f9449408fd6f512a9c87aa0d)
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/164991

  - tdf#156156: add Animation sidebar deck help button's HID

Change-Id: Ia0500321f9216aff4f249f9088694f6cd1fa1a80
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/161217
Tested-by: Jenkins
Reviewed-by: Adolfo Jayme Barrientos 

  - tdf#156156: add Manage Changes sidebar decks help button's HID

Change-Id: Ibeab9e20ea4f8684b8d0a8a535b30c3122e4df70
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/161165
Tested-by: Jenkins
Reviewed-by: Adolfo Jayme Barrientos 

  - fix Helpex warnings: 'No string specified!'

Change-Id: I70ad73b6859cd989e6046c3bd5a76c54c27f416d
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/164631
Tested-by: Jenkins
Reviewed-by: Olivier Hallot 
(cherry picked from commit 99537726eca951a450182d7672458afeb2b65e66)
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/164615
Reviewed-by: Adolfo Jayme Barrientos 

diff --git a/helpcontent2 b/helpcontent2
index e5d0bcb12bde..b43d32f0218c 16
--- a/helpcontent2
+++ b/helpcontent2
@@ -1 +1 @@
-Subproject commit e5d0bcb12bde1a726205c3e21338a625fba625a5
+Subproject commit b43d32f0218caaeb880c06d490d0b99972a50614


help.git: Branch 'distro/collabora/co-24.04' - 5 commits - helpers/unocmds.txt source/text

2024-03-27 Thread Patrick Luby (via logerrit)
 helpers/unocmds.txt  |2 +-
 source/text/shared/01/02230400.xhp   |1 +
 source/text/shared/04/0101.xhp   |2 +-
 source/text/shared/guide/pdf_params.xhp  |4 ++--
 source/text/shared/guide/usingthemes.xhp |1 -
 source/text/simpress/01/0606.xhp |1 +
 6 files changed, 6 insertions(+), 5 deletions(-)

New commits:
commit b43d32f0218caaeb880c06d490d0b99972a50614
Author: Patrick Luby 
AuthorDate: Tue Jan 23 14:17:57 2024 +0100
Commit: Andras Timar 
CommitDate: Wed Mar 27 14:28:03 2024 +0100

tdf#159326 macOS uses Command+Option+F while other plafforms use Ctrl+H

Change-Id: Iee37805afba1aa712a45c213d1f9eeae4d01d923
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/162452
Tested-by: Jenkins
Reviewed-by: Patrick Luby 
(cherry picked from commit 509ec415db94a821da1c8f7bacf9e372d320e49d)
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/162534
Reviewed-by: Patrick Luby 
Reviewed-by: Olivier Hallot 

diff --git a/source/text/shared/04/0101.xhp 
b/source/text/shared/04/0101.xhp
index 6ce842fd24..b13f80396c 100644
--- a/source/text/shared/04/0101.xhp
+++ b/source/text/shared/04/0101.xhp
@@ -240,7 +240,7 @@
   
   
 
-  CommandCtrl+H
+  Command+Option+FCtrl+H
 
 
   Calls 
the Find & Replace dialog.
commit 186c44a744ca836ae177c497f73884935139796c
Author: Stéphane Guillou 
AuthorDate: Wed Mar 6 12:23:37 2024 +0100
Commit: Andras Timar 
CommitDate: Wed Mar 27 14:28:03 2024 +0100

related tdf#160057: replace ref to obsolete Footer Header page

Change-Id: Ie6df598c42149ecc527a1a2eef35a7aba469c216
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/164387
Tested-by: Jenkins
Reviewed-by: Adolfo Jayme Barrientos 
(cherry picked from commit 04dcd1b951689689f9449408fd6f512a9c87aa0d)
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/164991

diff --git a/helpers/unocmds.txt b/helpers/unocmds.txt
index e5ece05cf1..835c1f4817 100644
--- a/helpers/unocmds.txt
+++ b/helpers/unocmds.txt
@@ -338,7 +338,7 @@
 .uno:EditDoc;shared/02/0707.xhp
 .uno:EditFootnote;swriter/01/0215.xhp
 .uno:EditGlossary;swriter/01/0212.xhp
-.uno:EditHeaderAndFooter;scalc/01/0212.xhp
+.uno:EditHeaderAndFooter;scalc/01/02120100.xhp
 .uno:EditHyperlink;shared/02/0907.xhp
 .uno:EditLinks;shared/01/0218.xhp
 .uno:EditPrintArea;scalc/01/05080300.xhp
commit 16b3c98d0a52682088fe443478607aa44c331435
Author: Stéphane Guillou 
AuthorDate: Fri Dec 22 16:17:09 2023 +0100
Commit: Andras Timar 
CommitDate: Wed Mar 27 14:28:03 2024 +0100

tdf#156156: add Animation sidebar deck help button's HID

Change-Id: Ia0500321f9216aff4f249f9088694f6cd1fa1a80
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/161217
Tested-by: Jenkins
Reviewed-by: Adolfo Jayme Barrientos 

diff --git a/source/text/simpress/01/0606.xhp 
b/source/text/simpress/01/0606.xhp
index b3c695d854..6a51b64d83 100644
--- a/source/text/simpress/01/0606.xhp
+++ b/source/text/simpress/01/0606.xhp
@@ -39,6 +39,7 @@
 animations;list of
 
 
+
 
 
 Animation 
Pane
commit 79e56b8511a3967abd6afe0dbd480ae7b5ba36ab
Author: Stéphane Guillou 
AuthorDate: Mon Mar 11 07:14:31 2024 +1000
Commit: Andras Timar 
CommitDate: Wed Mar 27 14:28:03 2024 +0100

tdf#156156: add Manage Changes sidebar decks help button's HID

Change-Id: Ibeab9e20ea4f8684b8d0a8a535b30c3122e4df70
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/161165
Tested-by: Jenkins
Reviewed-by: Adolfo Jayme Barrientos 

diff --git a/source/text/shared/01/02230400.xhp 
b/source/text/shared/01/02230400.xhp
index 107b773128..38de1cfc24 100644
--- a/source/text/shared/01/02230400.xhp
+++ b/source/text/shared/01/02230400.xhp
@@ -29,6 +29,7 @@
 
 
   
+  
   
   
   
commit 9b6113566dfc66bab41f24d2eb1cfb00baf1c9de
Author: Andras Timar 
AuthorDate: Sun Mar 10 11:51:52 2024 +0100
Commit: Andras Timar 
CommitDate: Wed Mar 27 14:28:03 2024 +0100

fix Helpex warnings: 'No string specified!'

Change-Id: I70ad73b6859cd989e6046c3bd5a76c54c27f416d
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/164631
Tested-by: Jenkins
Reviewed-by: Olivier Hallot 
(cherry picked from commit 99537726eca951a450182d7672458afeb2b65e66)
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/164615
Reviewed-by: Adolfo Jayme Barrientos 

diff --git a/source/text/shared/guide/pdf_params.xhp 
b/source/text/shared/guide/pdf_params.xhp
index 04d172be1d..04d51074dd 100644
--- a/source/text/shared/guide/pdf_params.xhp
+++ b/source/text/shared/guide/pdf_params.xhp
@@ -926,7 +926,7 @@
 PreparedPasswords
 
 
-
+
 
 
 
@@ -940,7 +940,7 @@
 PreparedPermissionPassword
 
 
-
+
 
 
 string
diff --git a/source/text/s

core.git: drawinglayer/source

2024-03-27 Thread Bogdan Buzea (via logerrit)
 drawinglayer/source/attribute/sdrlightingattribute3d.cxx |4 ++--
 drawinglayer/source/drawinglayeruno/xprimitive2drenderer.cxx |2 +-
 drawinglayer/source/primitive2d/graphicprimitivehelper2d.cxx |2 +-
 drawinglayer/source/primitive2d/pagepreviewprimitive2d.cxx   |6 +++---
 4 files changed, 7 insertions(+), 7 deletions(-)

New commits:
commit d396aa36b0a91117345ef749396e6f20a5edb20a
Author: Bogdan Buzea 
AuthorDate: Tue Mar 26 17:43:26 2024 +0100
Commit: Noel Grandin 
CommitDate: Wed Mar 27 14:27:14 2024 +0100

tdf#160084 Simplify comparison for basegfx::fTools

Change-Id: I853cab70d24e4813d979f507dc5b66049cbca53b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165316
Tested-by: Jenkins
Reviewed-by: Noel Grandin 

diff --git a/drawinglayer/source/attribute/sdrlightingattribute3d.cxx 
b/drawinglayer/source/attribute/sdrlightingattribute3d.cxx
index 4f9b75cd1ff2..0f625756383c 100644
--- a/drawinglayer/source/attribute/sdrlightingattribute3d.cxx
+++ b/drawinglayer/source/attribute/sdrlightingattribute3d.cxx
@@ -140,7 +140,7 @@ namespace drawinglayer::attribute
 const Sdr3DLightAttribute& rLight(rLightVector[a]);
 const double 
fCosFac(rLight.getDirection().scalar(aEyeNormal));
 
-if(basegfx::fTools::more(fCosFac, 0.0))
+if(fCosFac > 0.0)
 {
 aRetval += (rLight.getColor() * rColor) * fCosFac;
 
@@ -151,7 +151,7 @@ namespace drawinglayer::attribute
 aSpecularNormal.normalize();
 double 
fCosFac2(aSpecularNormal.scalar(aEyeNormal));
 
-if(basegfx::fTools::more(fCosFac2, 0.0))
+if(fCosFac2 > 0.0)
 {
 fCosFac2 = pow(fCosFac2, 
static_cast(nSpecularIntensity));
 aRetval += rSpecular * fCosFac2;
diff --git a/drawinglayer/source/drawinglayeruno/xprimitive2drenderer.cxx 
b/drawinglayer/source/drawinglayeruno/xprimitive2drenderer.cxx
index 58df9f4a7b28..e2c76a79bbc6 100644
--- a/drawinglayer/source/drawinglayeruno/xprimitive2drenderer.cxx
+++ b/drawinglayer/source/drawinglayeruno/xprimitive2drenderer.cxx
@@ -99,7 +99,7 @@ namespace drawinglayer::unorenderer
 const double fWidth(aRange.getWidth());
 const double fHeight(aRange.getHeight());
 
-if(basegfx::fTools::more(fWidth, 0.0) && 
basegfx::fTools::more(fHeight, 0.0))
+if(fWidth > 0.0 && fHeight > 0.0)
 {
 if(0 == DPI_X)
 {
diff --git a/drawinglayer/source/primitive2d/graphicprimitivehelper2d.cxx 
b/drawinglayer/source/primitive2d/graphicprimitivehelper2d.cxx
index 018c74450717..d756e6e3b74f 100644
--- a/drawinglayer/source/primitive2d/graphicprimitivehelper2d.cxx
+++ b/drawinglayer/source/primitive2d/graphicprimitivehelper2d.cxx
@@ -528,7 +528,7 @@ namespace drawinglayer::primitive2d
 // embedded Vector Graphic Data fill, create embed 
transform
 const basegfx::B2DRange& 
rSvgRange(rGraphic.getVectorGraphicData()->getRange());
 
-if(basegfx::fTools::more(rSvgRange.getWidth(), 0.0) && 
basegfx::fTools::more(rSvgRange.getHeight(), 0.0))
+if(rSvgRange.getWidth() > 0.0 && rSvgRange.getHeight() 
> 0.0)
 {
 // translate back to origin, scale to unit 
coordinates
 basegfx::B2DHomMatrix aEmbedVectorGraphic(
diff --git a/drawinglayer/source/primitive2d/pagepreviewprimitive2d.cxx 
b/drawinglayer/source/primitive2d/pagepreviewprimitive2d.cxx
index 447be709185e..a4280ea1aba0 100644
--- a/drawinglayer/source/primitive2d/pagepreviewprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/pagepreviewprimitive2d.cxx
@@ -37,8 +37,8 @@ namespace drawinglayer::primitive2d
 Primitive2DContainer aContent(getPageContent());
 
 if(!(!aContent.empty()
-&& basegfx::fTools::more(getContentWidth(), 0.0)
-&& basegfx::fTools::more(getContentHeight(), 0.0)))
+&& getContentWidth() > 0.0)
+&& getContentHeight() > 0.0)
 return nullptr;
 
 // the decomposed matrix will be needed
@@ -46,7 +46,7 @@ namespace drawinglayer::primitive2d
 double fRotate, fShearX;
 getTransform().decompose(aScale, aTranslate, fRotate, fShearX);
 
-if(!(basegfx::fTools::more(aScale.getX(), 0.0) && 
basegfx::fTools::more(aScale.getY(), 0.0)))
+if(!(aScale.getX() > 0.0 && aScale.getY() > 0.0))
 return nullptr;
 
 // check if content overlaps with target size and needs to be 
embedded with a


core.git: Branch 'distro/collabora/co-24.04' - translations

2024-03-27 Thread Christian Lohmaier (via logerrit)
 translations |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit 1c78d2e0a3b5023ac80f62a6f8aedbab3316c7b6
Author: Christian Lohmaier 
AuthorDate: Wed Mar 27 14:24:48 2024 +0100
Commit: Gerrit Code Review 
CommitDate: Wed Mar 27 14:24:48 2024 +0100

Update git submodules

* Update translations from branch 'distro/collabora/co-24.04'
  to a2ed0affdffd40b46b6f5af094173ad32779293b
  - update translations for 24.2.2 rc2

and force-fix errors using pocheck

Change-Id: I75a9cc68d9f9d7712b58dfc521173323c3775208

  - bump copyright year for sl translation

Change-Id: I7211f904b9b3822e5c45bc4c3c7a3b0512853185

  - update translations for 24-2 and force-fix errors using pocheck

Change-Id: I964bed068dfa7396512c1742c73c674caa96669c

  - update translations for 24.2.2 rc1

and force-fix errors using pocheck

Change-Id: I9719c836bf763473f9a85cfced566b4cba514c13

  - update translations for 24.2.1 rc2

and force-fix errors using pocheck

Change-Id: I529205bfbe25f3e4a843743d37ba26c23b626a84

diff --git a/translations b/translations
index ced8f5a17e47..a2ed0affdffd 16
--- a/translations
+++ b/translations
@@ -1 +1 @@
-Subproject commit ced8f5a17e47cf094e7b82b6a84e46766e10621c
+Subproject commit a2ed0affdffd40b46b6f5af094173ad32779293b


core.git: Branch 'distro/vector/vector-7.5.9' - 17 commits - basctl/source basic/source editeng/source embeddedobj/source filter/source fpicker/source include/editeng include/filter include/oox includ

2024-03-27 Thread Mike Kaganski (via logerrit)
 basctl/source/basicide/unomodel.cxx  |2 
 basic/source/basmgr/basicmanagerrepository.cxx   |2 
 basic/source/basmgr/basmgr.cxx   |   18 
 basic/source/uno/scriptcont.cxx  |2 
 editeng/source/misc/svxacorr.cxx |   34 -
 embeddedobj/source/inc/oleembobj.hxx |   28 -
 embeddedobj/source/msole/olecomponent.cxx|  529 +--
 embeddedobj/source/msole/olecomponent.hxx|   12 
 embeddedobj/source/msole/oleembed.cxx|   28 -
 embeddedobj/source/msole/olepersist.cxx  |   19 
 embeddedobj/source/msole/olevisual.cxx   |7 
 filter/source/msfilter/msdffimp.cxx  |   30 -
 filter/source/msfilter/msoleexp.cxx  |8 
 filter/source/msfilter/rtfutil.cxx   |6 
 filter/source/msfilter/svdfppt.cxx   |   22 
 filter/source/msfilter/svxmsbas2.cxx |8 
 fpicker/source/win32/VistaFilePickerImpl.cxx |1 
 include/editeng/svxacorr.hxx |5 
 include/filter/msfilter/msdffimp.hxx |6 
 include/filter/msfilter/svdfppt.hxx  |4 
 include/filter/msfilter/svxmsbas.hxx |2 
 include/oox/ole/olehelper.hxx|8 
 include/sfx2/event.hxx   |9 
 include/sfx2/objsh.hxx   |   13 
 include/sot/object.hxx   |6 
 include/sot/storage.hxx  |6 
 include/svx/gallerybinaryengine.hxx  |4 
 include/vcl/scheduler.hxx|7 
 include/vcl/svapp.hxx|   12 
 oox/source/ole/olehelper.cxx |   18 
 oox/source/ole/vbaexport.cxx |   12 
 sc/inc/global.hxx|4 
 sc/inc/rangelst.hxx  |1 
 sc/inc/tablink.hxx   |7 
 sc/source/core/data/global.cxx   |2 
 sc/source/filter/excel/excel.cxx |   32 -
 sc/source/filter/excel/excimp8.cxx   |6 
 sc/source/filter/excel/expop2.cxx|4 
 sc/source/filter/excel/xepivot.cxx   |4 
 sc/source/filter/excel/xeroot.cxx|2 
 sc/source/filter/excel/xestream.cxx  |4 
 sc/source/filter/excel/xiescher.cxx  |2 
 sc/source/filter/excel/xipivot.cxx   |4 
 sc/source/filter/excel/xiroot.cxx|2 
 sc/source/filter/excel/xlroot.cxx|   12 
 sc/source/filter/ftools/ftools.cxx   |   16 
 sc/source/filter/inc/XclImpChangeTrack.hxx   |2 
 sc/source/filter/inc/ftools.hxx  |   10 
 sc/source/filter/inc/xcl97esc.hxx|2 
 sc/source/filter/inc/xeroot.hxx  |2 
 sc/source/filter/inc/xiescher.hxx|2 
 sc/source/filter/inc/xiroot.hxx  |2 
 sc/source/filter/inc/xlroot.hxx  |   16 
 sc/source/filter/xcl97/XclExpChangeTrack.cxx |4 
 sc/source/filter/xcl97/XclImpChangeTrack.cxx |2 
 sc/source/filter/xcl97/xcl97rec.cxx  |2 
 sc/source/ui/app/drwtrans.cxx|   15 
 sc/source/ui/app/seltrans.cxx|6 
 sc/source/ui/app/transobj.cxx|   19 
 sc/source/ui/docshell/arealink.cxx   |5 
 sc/source/ui/docshell/docsh4.cxx |3 
 sc/source/ui/docshell/externalrefmgr.cxx |   15 
 sc/source/ui/docshell/tablink.cxx|   18 
 sc/source/ui/inc/docsh.hxx   |2 
 sc/source/ui/inc/drwtrans.hxx|2 
 sc/source/ui/inc/instbdlg.hxx|5 
 sc/source/ui/inc/linkarea.hxx|3 
 sc/source/ui/inc/transobj.hxx|2 
 sc/source/ui/miscdlgs/instbdlg.cxx   |5 
 sc/source/ui/miscdlgs/linkarea.cxx   |9 
 sc/source/ui/unoobj/exceldetect.cxx  |2 
 sc/source/ui/unoobj/unodoc.cxx   |2 
 sc/source/ui/view/drawvie4.cxx   |6 
 sc/source/ui/view/viewfun3.cxx   |4 
 sd/inc/drawdoc.hxx   |2 
 sd/inc/sdfilter.hxx  |4 
 sd/inc/sdmod.hxx |4 
 sd/source/filter/eppt/eppt.cxx   |   20 
 sd/source/filter/eppt/eppt.hxx   |   10 
 sd/source/filter/eppt/epptso.cxx |4 
 sd/source/filter/ppt/pptin.cxx   |8 
 sd/source/filter/ppt/pptin.hxx   |4 
 sd/source/filter/ppt/propread.hxx|3 
 sd/source/filter/sdpptwrp.cxx|   24 -
 sd/source/ui/app/sdmod.cxx   |4 
 sd/source/ui/app/sdmod1.cxx

License Statement

2024-03-27 Thread Leonard Sasse
   All of my past & future contributions to LibreOffice may be
   licensed under the MPLv2/LGPLv3+ dual license.

signature.asc
Description: This is a digitally signed message part.


core.git: sfx2/source

2024-03-27 Thread Darshan11 (via logerrit)
 sfx2/source/control/unoctitm.cxx |   14 --
 1 file changed, 12 insertions(+), 2 deletions(-)

New commits:
commit a69e32a0ca800642a3fb542c0a49a13ba04faecc
Author: Darshan11 
AuthorDate: Wed Mar 13 16:34:38 2024 +0530
Commit: Caolán McNamara 
CommitDate: Wed Mar 27 13:09:37 2024 +0100

Send ParaRightToLeft state messageto client side

 - Before this patch in online text in paragraph was changing according to 
uno command but client was not getting and info about is RTL true or TRL true
 - this will send message [:unoParaRightToLeft=true || 
:unoParaLeftToRight=true] at client side
 - added more properties like disabled and state information to handle both 
case at same time in online
 - which will be helpful to our existing locgic where to add or from where 
to remove selected class on element according to response
Change-Id: Ia443215342d6a81f4e60fa9237149f6b18420e16

Change-Id: I08fb7e474e099822b26c732fe1e5dac8e773c58f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164767
Tested-by: Jenkins CollaboraOffice 
Reviewed-by: Szymon Kłos 
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164817
(cherry picked from commit fa93750070793cd548d028feb39e4d0e0e61ae5a)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165324
Tested-by: Jenkins
Reviewed-by: Caolán McNamara 

diff --git a/sfx2/source/control/unoctitm.cxx b/sfx2/source/control/unoctitm.cxx
index 1068b28e0ac8..f8c62b3dae19 100644
--- a/sfx2/source/control/unoctitm.cxx
+++ b/sfx2/source/control/unoctitm.cxx
@@ -1096,8 +1096,6 @@ static void InterceptLOKStateChangeEvent(sal_uInt16 nSID, 
SfxViewFrame* pViewFra
  aEvent.FeatureURL.Path == "DeleteNote" ||
  aEvent.FeatureURL.Path == "AcceptChanges" ||
  aEvent.FeatureURL.Path == "SetDefault" ||
- aEvent.FeatureURL.Path == "ParaLeftToRight" ||
- aEvent.FeatureURL.Path == "ParaRightToLeft" ||
  aEvent.FeatureURL.Path == "ParaspaceIncrease" ||
  aEvent.FeatureURL.Path == "ParaspaceDecrease" ||
  aEvent.FeatureURL.Path == "TableDialog" ||
@@ -1169,6 +1167,18 @@ static void InterceptLOKStateChangeEvent(sal_uInt16 
nSID, SfxViewFrame* pViewFra
 {
 aBuffer.append(aEvent.IsEnabled ? std::u16string_view(u"enabled") : 
std::u16string_view(u"disabled"));
 }
+else if (aEvent.FeatureURL.Path == "ParaLeftToRight" ||
+ aEvent.FeatureURL.Path == "ParaRightToLeft")
+{
+tools::JsonWriter aTree;
+bool bTemp = false;
+aEvent.State >>= bTemp;
+aTree.put("commandName", aEvent.FeatureURL.Complete);
+aTree.put("disabled", !aEvent.IsEnabled);
+aTree.put("state", bTemp ? "true" : "false");
+
SfxViewShell::Current()->libreOfficeKitViewCallback(LOK_CALLBACK_STATE_CHANGED, 
aTree.finishAndGetAsOString());
+return;
+}
 else if (aEvent.FeatureURL.Path == "AssignLayout" ||
  aEvent.FeatureURL.Path == "StatusSelectionMode" ||
  aEvent.FeatureURL.Path == "Signature" ||


Re: Adding support for the Common Print Dialog Backends (CPDB)

2024-03-27 Thread Michael Weghorn

On 2024-03-27 11:27, Till Kamppeter wrote:
Michael, Biswadeep will take care of the CPDB interface, but the 
CUPS/PPD interface also needs attention, as if it is not done correctly, 
it will cease to work if CUPS 3.x is used (also if the CUPS Snap or any 
other containerized form of CUPS is used).


For CUPS 3.x support, my initial thought was that requiring the 
CPDB-based implementation for that could be a way forward, while leaving 
LO's internal CUPS/PPD implementation basically unchanged and around for 
compatibility reasons (for CUPS 2.x setups only) as long as necessary.


The CPDB implementation would then be optional for CUPS 2.x, but 
required for CUPS 3.x.


If the CPDB approach will cover everything that the current CUPS/PPD 
implementation does (does it?), that could avoid the need to spend extra 
effort on LibreOffice's CUPS/PPD implementation.


So the CUPS interface (I intentionally do not call it CUPS/PPD 
interface) following has to be assured:


1. The correct CUPS APIs have to be used (cupsEnumDests(), ...), to list 
both classic, permanent CUPS queues with PPD file and IPP print 
destinations for which CUPS creates a queue on-demand. The GTK print 
dialog (GTK version 4.x) uses these APIs, to have an example.


2. Also for obtaining the options only these new "Dests" APIs of CUPS 
have to be used, no old PPD-downloading APIs, and especially no direct 
access to PPD files. The "Dests" APIs for options automatically take 
care what the best is for obtaining the options (including providing all 
PPD options if the queue is a classic CUPS queue), and they continue to 
be available in libcups3. Take the GTK (4.x) print dialog as example for 
use of these APIs.


3. Generally take care to use only libcups API functions which are also 
available in libcups3. Also make the code build with both libcups2 and 
libcups3 (see the projects libcupsfilters (2.x) and libpappl (1.4.x 
branch) as example repos which can be compiled with the user's choice of 
libcups2 or libcups3.


Thanks for explaining what would be needed.

From a first glance at the GTK 4.x code, I'm a bit surprised by it 
being referenced as an example of how to implement things properly.


While I see it has a CPDB implementation (initially added in [1]), its 
own CUPS print backend implementation (e.g. in [2] and [3]) seems to be 
full of uses of deprecated API, including direct use of PPDs.

[2] even has this comment at the top:

/* Cups 1.6 deprecates ppdFindAttr(), ppdFindCustomOption(),
 * ppdFirstCustomParam(), and ppdNextCustomParam() among others.
 * The replacement is to use the Job Ticket API, but that requires
 * a larger refactoring of this backend.
 */

Is there another CUPS-based implementation (besides the CPDB-based 
backend) or am I missing anything else here?



The "Dests" APIs for options automatically take care what the best is
for obtaining the options (including providing all PPD options if the queue is
a classic CUPS queue), (...)


Does that include cases like [4]? And if so, what would be the 
requirements for that to work (as it didn't work in the past)?


In general, my opinion is that for LibreOffice's existing CUPS/PPD 
implementation, we should be very careful not to risk to break existing 
(legacy) setups.


To me, the potential approach outlined above (envision to fully move to 
CPDB-approach in the longer run, leave existing CUPS/PPD implementation 
basically unchanged and around as long as needed so things work "as they 
always did" for legacy setups) seemed to match well with that idea, but 
I'm certainly not as knowledgeable about how this all works as you are, 
so would appreciate to hear your (and anyone else's) opinion on that.



You are now officially registered as mentor and you can see the 
submitted proposals now. Please mark at Biswadeep's proposal that you 
are interested in mentoring. Also have a look into Biswadeep's proposal 
itself.


Thanks, I've done that right after registering. The proposal looks good 
to me.


You will do the LibreOffice side of the mentoring, Gaurav Guleria and me 
will do the CPDB side.


That sounds great, thank you!


[1] 
https://gitlab.gnome.org/GNOME/gtk/-/commit/41b60bbd6ceb36dfc22e625d2b3c65bd45f15c76
[2] 
https://gitlab.gnome.org/GNOME/gtk/-/blob/b1eed1c153f7553c353dc77ae2b0154bdcedc8a0/modules/printbackends/gtkprintbackendcups.c
[3] 
https://gitlab.gnome.org/GNOME/gtk/-/blob/b1eed1c153f7553c353dc77ae2b0154bdcedc8a0/modules/printbackends/gtkprintercups.c

[4] https://github.com/apple/cups/issues/4969


OpenPGP_signature.asc
Description: OpenPGP digital signature


core.git: Branch 'distro/collabora/co-24.04' - officecfg/registry

2024-03-27 Thread Andras Timar (via logerrit)
 officecfg/registry/data/org/openoffice/Office/Accelerators.xcu |  205 
+-
 1 file changed, 194 insertions(+), 11 deletions(-)

New commits:
commit de3d376a3f17b16caabe1b2376c7981178137303
Author: Andras Timar 
AuthorDate: Wed Mar 27 12:22:47 2024 +0100
Commit: Andras Timar 
CommitDate: Wed Mar 27 12:25:56 2024 +0100

[cp] Revert "tdf#159743: Revert all Shortcut modifications in German UI"

This reverts commit 9703fddea1058cb6018a5e693f03909d2b37315c.
We decided to revert the revert, because we wanted to have the
German shortcuts like in German MS Office. It is to be decided
what to do on the long run, because it is not possible to be
compatible with MS Office and to keep the old shortcuts at the
same time.

Change-Id: Ib3e4df9c87803c5e10cb3c4cedad6274e7cddb4c

diff --git a/officecfg/registry/data/org/openoffice/Office/Accelerators.xcu 
b/officecfg/registry/data/org/openoffice/Office/Accelerators.xcu
index 7f8180d72a19..71dbd7c1c391 100644
--- a/officecfg/registry/data/org/openoffice/Office/Accelerators.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/Accelerators.xcu
@@ -687,6 +687,7 @@ Ctrl+Shift+e aka E_SHIFT_MOD1 under GTK/IBUS is for some 
emoji thing
   
 L10N SHORTCUTS - NO 
TRANSLATE
 .uno:SpacePara15
+.uno:Strikeout
   
 
 
@@ -717,14 +718,26 @@ Ctrl+Shift+e aka E_SHIFT_MOD1 under GTK/IBUS is for some 
emoji thing
   
 L10N SHORTCUTS - NO 
TRANSLATE
 .uno:Shrink
-.uno:Shrink
+.uno:HideColumn
   
 
 
   
 L10N SHORTCUTS - NO 
TRANSLATE
 .uno:Grow
-.uno:Grow
+.uno:HideRow
+  
+
+
+  
+I10 SHORTCUTS - No 
TRANSLATE
+.uno:Zoom100Percent
+  
+
+
+  
+L10N SHORTCUTS - NO 
TRANSLATE
+.uno:FormatCellDialog
   
 
 
@@ -885,12 +898,38 @@ Ctrl+Shift+e aka E_SHIFT_MOD1 under GTK/IBUS is for some 
emoji thing
   
 L10N SHORTCUTS - NO 
TRANSLATE
 .uno:Group
+.uno:SaveAs
   
 
 
   
 L10N SHORTCUTS - NO 
TRANSLATE
 .uno:Ungroup
+.uno:Group
+  
+
+
+  
+L10N SHORTCUTS - NO 
TRANSLATE
+.uno:Ungroup
+  
+
+
+  
+L10N SHORTCUTS - NO 
TRANSLATE
+.uno:Ungroup
+  
+
+
+  
+L10N SHORTCUTS - NO 
TRANSLATE
+.uno:Group
+  
+
+
+  
+L10N SHORTCUTS - NO 
TRANSLATE
+.uno:InsertAnnotation
   
 
 
@@ -905,6 +944,12 @@ Ctrl+Shift+e aka E_SHIFT_MOD1 under GTK/IBUS is for some 
emoji thing
 .uno:FunctionDialog
   
 
+
+  
+L10N SHORTCUTS - NO 
TRANSLATE
+.uno:InsertAnnotation
+  
+
 
   
 L10N SHORTCUTS - NO 
TRANSLATE
@@ -921,6 +966,13 @@ Ctrl+Shift+e aka E_SHIFT_MOD1 under GTK/IBUS is for some 
emoji thing
   
 L10N SHORTCUTS - NO 
TRANSLATE
 .uno:ChangeCaseRotateCase
+.uno:FunctionDialog
+  
+
+
+  
+L10N SHORTCUTS - NO 
TRANSLATE
+.uno:ChangeCaseRotateCase
   
 
 
@@ -933,6 +985,7 @@ Ctrl+Shift+e aka E_SHIFT_MOD1 under GTK/IBUS is for some 
emoji thing
   
 L10N SHORTCUTS - NO 
TRANSLATE
 .uno:Navigator
+.uno:FocusCellAddress
   
 
 
@@ -957,6 +1010,7 @@ Ctrl+Shift+e aka E_SHIFT_MOD1 under GTK/IBUS is for some 
emoji thing
   
 L10N SHORTCUTS - NO 
TRANSLATE
 .uno:InsertCurrentTime
+.uno:Shrink
   
 
 
@@ -1008,6 +1062,18 @@ Ctrl+Shift+e aka E_SHIFT_MOD1 under GTK/IBUS is for some 
emoji thing
 .uno:RepeatSearch
   
 
+
+  
+L10N SHORTCUTS - NO 
TRANSLATE
+.uno:Navigator
+  
+
+
+  
+L10N SHORTCUTS - NO 
TRANSLATE
+vnd.sun.star.findbar:FocusToFindbar
+  
+
 
   
 L10N SHORTCUTS - NO 
TRANSLATE
@@ -1021,6 +1087,7 @@ Ctrl+Shift+e aka E_SHIFT_MOD1 under GTK/IBUS is for some 
emoji thing
 .uno:RepeatSearch
 .uno:Save
 .uno:Bold
+.uno:FocusCellAddress
   
 
 
@@ -1275,12 +1342,14 @@ Ctrl+Shift+e aka E_SHIFT_MOD1 under GTK/IBUS is for 
some emoji thing
   
 L10N SHORTCUTS - NO 
TRANSLATE
 .uno:InsertCurrentDate
+.uno:InsertCurrentDate
  

core.git: Branch 'distro/vector/vector-7.5.9' - 5 commits - embeddedobj/source fpicker/source include/vcl sfx2/source vcl/source vcl/win

2024-03-27 Thread Mike Kaganski (via logerrit)
 embeddedobj/source/msole/olecomponent.cxx|   42 ++-
 fpicker/source/win32/VistaFilePickerImpl.cxx |1 
 include/vcl/svapp.hxx|   12 ++-
 sfx2/source/control/bindings.cxx |1 
 vcl/source/app/scheduler.cxx |7 ++--
 vcl/source/helper/threadex.cxx   |1 
 vcl/win/dtrans/MtaOleClipb.cxx   |   35 +-
 vcl/win/dtrans/WinClipboard.cxx  |   14 +
 8 files changed, 62 insertions(+), 51 deletions(-)

New commits:
commit cb9c9d990600baad9e5a63c80ddaa46e98248161
Author: Mike Kaganski 
AuthorDate: Thu Mar 21 10:01:36 2024 +0500
Commit: Mike Kaganski 
CommitDate: Wed Mar 27 09:36:54 2024 +0500

Downgrade sfx::SfxBindings aAutoTimer to an idle

This is a follow-up to commit f45402ae3f5241b460d9f1dcb04183893e1f91f7
(Fix a spurious JunitTest_sw_unoapi_3 failure, 2024-03-15). As noted
by Stephan, the failure persisted; it was because the update of slots
also accessed the changing document model, and it wasn't prevented by
IdlesLockGuard, because aAutoTimer had a default priority.

Change-Id: Iad8dfadcd35d9611e61e4c011511d6155a343f58
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165090
Tested-by: Jenkins
Reviewed-by: Mike Kaganski 

diff --git a/sfx2/source/control/bindings.cxx b/sfx2/source/control/bindings.cxx
index 4ea06231562a..44fbbd10c2f0 100644
--- a/sfx2/source/control/bindings.cxx
+++ b/sfx2/source/control/bindings.cxx
@@ -146,6 +146,7 @@ SfxBindings::SfxBindings()
 
 // all caches are valid (no pending invalidate-job)
 // create the list of caches
+pImpl->aAutoTimer.SetPriority(TaskPriority::HIGH_IDLE);
 pImpl->aAutoTimer.SetInvokeHandler( LINK(this, SfxBindings, NextJob) );
 }
 
commit 3bb1590c78ffcf26cfadcc89a3dd3e0bf8be50e3
Author: Mike Kaganski 
AuthorDate: Thu Mar 21 10:00:44 2024 +0500
Commit: Mike Kaganski 
CommitDate: Wed Mar 27 09:27:14 2024 +0500

Only hold clipboard mutexes to obtain the values, to avoid deadlocks

Change-Id: I36a2f6e444b8a5397b96d3cba475a8d06ea86459
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165089
Tested-by: Jenkins
Reviewed-by: Mike Kaganski 

diff --git a/vcl/win/dtrans/MtaOleClipb.cxx b/vcl/win/dtrans/MtaOleClipb.cxx
index 865025057dcc..19a37dc52e19 100644
--- a/vcl/win/dtrans/MtaOleClipb.cxx
+++ b/vcl/win/dtrans/MtaOleClipb.cxx
@@ -713,25 +713,32 @@ DWORD WINAPI 
CMtaOleClipboard::clipboardChangedNotifierThreadProc( _In_ LPVOID p
 MsgWaitForMultipleObjects(2, pInst->m_hClipboardChangedNotifierEvents, 
false, INFINITE,
   QS_ALLINPUT | QS_ALLPOSTMESSAGE);
 
-ClearableMutexGuard aGuard2( pInst->m_ClipboardChangedEventCountMutex 
);
-
-if ( pInst->m_ClipboardChangedEventCount > 0 )
+bool hadEvents;
 {
-pInst->m_ClipboardChangedEventCount--;
-if ( 0 == pInst->m_ClipboardChangedEventCount )
-ResetEvent( pInst->m_hClipboardChangedEvent );
-
-aGuard2.clear( );
+ClearableMutexGuard 
aGuard2(pInst->m_ClipboardChangedEventCountMutex);
+hadEvents = pInst->m_ClipboardChangedEventCount > 0;
+if (hadEvents)
+{
+pInst->m_ClipboardChangedEventCount--;
+if (0 == pInst->m_ClipboardChangedEventCount)
+ResetEvent(pInst->m_hClipboardChangedEvent);
+}
+}
 
-// nobody should touch m_pfncClipViewerCallback while we do
-MutexGuard aClipViewerGuard( pInst->m_pfncClipViewerCallbackMutex 
);
+if (hadEvents)
+{
+LPFNC_CLIPVIEWER_CALLBACK_t pClipViewerCallback;
+{
+// nobody should touch m_pfncClipViewerCallback while we do
+// but don't hold the mutex while calling the callback itself: 
it could deadlock
+MutexGuard 
aClipViewerGuard(pInst->m_pfncClipViewerCallbackMutex);
+pClipViewerCallback = pInst->m_pfncClipViewerCallback;
+}
 
 // notify all clipboard listener
-if ( pInst->m_pfncClipViewerCallback )
-pInst->m_pfncClipViewerCallback( );
+if (pClipViewerCallback)
+pClipViewerCallback();
 }
-else
-aGuard2.clear( );
 }
 
 return 0;
diff --git a/vcl/win/dtrans/WinClipboard.cxx b/vcl/win/dtrans/WinClipboard.cxx
index c2fa269dfc5d..33c8023a925c 100644
--- a/vcl/win/dtrans/WinClipboard.cxx
+++ b/vcl/win/dtrans/WinClipboard.cxx
@@ -373,13 +373,17 @@ void CWinClipboard::unregisterClipboardViewer() { 
m_MtaOleClipboard.registerClip
 
 void WINAPI CWinClipboard::onClipboardContentChanged()
 {
-osl::MutexGuard aGuard(s_aClipboardSingletonMutex);
+rtl::Reference pWinClipboard;
+{
+// Only hold the mutex to obtain a safe reference to the impl, to

core.git: helpcontent2

2024-03-27 Thread Pierre F (via logerrit)
 helpcontent2 |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit a111a5c7f62611474d390aacb1ce5964df2a34f9
Author: Pierre F 
AuthorDate: Wed Mar 27 12:19:04 2024 +0100
Commit: Gerrit Code Review 
CommitDate: Wed Mar 27 12:19:04 2024 +0100

Update git submodules

* Update helpcontent2 from branch 'master'
  to 093252967828e122a391226a7e1f0afa415f682a
  - misc link #FontColor.

Change-Id: I947f35268ca756951e423cc86bde82c76c23120b
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/165002
Tested-by: Jenkins
Reviewed-by: Olivier Hallot 

diff --git a/helpcontent2 b/helpcontent2
index db5de3869538..093252967828 16
--- a/helpcontent2
+++ b/helpcontent2
@@ -1 +1 @@
-Subproject commit db5de3869538e6befd296b3d1595759f241e1e6a
+Subproject commit 093252967828e122a391226a7e1f0afa415f682a


help.git: source/text

2024-03-27 Thread Pierre F (via logerrit)
 source/text/scalc/main0202.xhp |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit 093252967828e122a391226a7e1f0afa415f682a
Author: Pierre F 
AuthorDate: Wed Mar 20 09:56:13 2024 +0100
Commit: Olivier Hallot 
CommitDate: Wed Mar 27 12:19:04 2024 +0100

misc link #FontColor.

Change-Id: I947f35268ca756951e423cc86bde82c76c23120b
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/165002
Tested-by: Jenkins
Reviewed-by: Olivier Hallot 

diff --git a/source/text/scalc/main0202.xhp b/source/text/scalc/main0202.xhp
index 76f6129483..207ce92fbb 100644
--- a/source/text/scalc/main0202.xhp
+++ b/source/text/scalc/main0202.xhp
@@ -44,7 +44,7 @@
 
 
 
-Font 
Color
+Font 
Color
 
 
 Align 
Left


help.git: Branch 'libreoffice-24-2' - source/text

2024-03-27 Thread Patrick Luby (via logerrit)
 source/text/shared/04/0101.xhp |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit 02a11cfe8fb608fdf77b4ce5a57a5dd23784f8ec
Author: Patrick Luby 
AuthorDate: Tue Jan 23 14:17:57 2024 +0100
Commit: Olivier Hallot 
CommitDate: Wed Mar 27 12:18:00 2024 +0100

tdf#159326 macOS uses Command+Option+F while other plafforms use Ctrl+H

Change-Id: Iee37805afba1aa712a45c213d1f9eeae4d01d923
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/162452
Tested-by: Jenkins
Reviewed-by: Patrick Luby 
(cherry picked from commit 509ec415db94a821da1c8f7bacf9e372d320e49d)
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/162534
Reviewed-by: Patrick Luby 
Reviewed-by: Olivier Hallot 

diff --git a/source/text/shared/04/0101.xhp 
b/source/text/shared/04/0101.xhp
index 6ce842fd24..b13f80396c 100644
--- a/source/text/shared/04/0101.xhp
+++ b/source/text/shared/04/0101.xhp
@@ -240,7 +240,7 @@
   
   
 
-  CommandCtrl+H
+  Command+Option+FCtrl+H
 
 
   Calls 
the Find & Replace dialog.


core.git: Branch 'distro/collabora/co-24.04' - 36 commits - basegfx/source chart2/source configmgr/source configure.ac download.lst drawinglayer/source external/expat external/gpgmepp include/basegfx

2024-03-27 Thread Noel Grandin (via logerrit)
 basegfx/source/polygon/b2dpolygontools.cxx |   51 
 chart2/source/controller/chartapiwrapper/TitleWrapper.cxx  |7 
 configmgr/source/xcsparser.cxx |4 
 configure.ac   |2 
 download.lst   |   20 
 drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx |1 
 external/expat/0001-Fix-compiler-warnings.patch|   47 
 external/expat/UnpackedTarball_expat.mk|3 
 external/gpgmepp/UnpackedTarball_gpgmepp.mk|1 
 external/gpgmepp/macos-tdf152524.patch |  102 
 include/basegfx/polygon/b2dpolygontools.hxx|2 
 include/svtools/scrolladaptor.hxx  |2 
 include/vcl/toolkit/scrbar.hxx |3 
 include/vcl/weld.hxx   |1 
 readlicense_oo/license/CREDITS.fodt| 3754 ++---
 sc/qa/extras/scpdfexport.cxx   |   14 
 sc/qa/extras/testdocuments/tdf159094.ods   |binary
 sc/source/filter/html/htmlpars.cxx |   75 
 sc/source/filter/inc/htmlpars.hxx  |8 
 sc/source/ui/docshell/docfunc.cxx  |   25 
 sc/source/ui/inc/tabview.hxx   |2 
 sc/source/ui/inc/undoblk.hxx   |6 
 sc/source/ui/undo/undoblk.cxx  |   26 
 sc/source/ui/unoobj/docuno.cxx |  192 
 sc/source/ui/view/tabview.cxx  |   22 
 sc/source/ui/view/tabview4.cxx |   45 
 svgio/inc/svgstyleattributes.hxx   |9 
 svgio/qa/cppunit/SvgImportTest.cxx |   14 
 svgio/qa/cppunit/data/tdf160373.svg|   14 
 svgio/source/svgreader/svgstyleattributes.cxx  |   36 
 svl/qa/unit/svl.cxx|   20 
 svl/source/numbers/zformat.cxx |2 
 svtools/source/control/scrolladaptor.cxx   |2 
 svx/source/sdr/properties/textproperties.cxx   |   60 
 sw/inc/doc.hxx |1 
 sw/qa/core/unocore/unocore.cxx |   27 
 sw/qa/extras/uiwriter/uiwriter5.cxx|2 
 sw/qa/extras/unowriter/unowriter.cxx   |   21 
 sw/source/core/doc/docfly.cxx  |   19 
 sw/source/core/docnode/ndtbl.cxx   |   43 
 sw/source/core/layout/paintfrm.cxx |3 
 sw/source/core/tox/tox.cxx |8 
 sw/source/core/undo/untbl.cxx  |   15 
 sw/source/core/unocore/unocrsrhelper.cxx   |2 
 sw/source/core/unocore/unoframe.cxx|   13 
 sw/source/core/unocore/unoobj.cxx  |   12 
 sw/source/ui/index/cnttab.cxx  |4 
 sw/source/ui/index/swuiidxmrk.cxx  |   37 
 sw/source/uibase/index/toxmgr.cxx  |3 
 ucb/source/ucp/webdav-curl/CurlSession.cxx |   37 
 vcl/source/app/salvtables.cxx  |2 
 vcl/source/control/scrbar.cxx  |6 
 vcl/unx/gtk3/gtkinst.cxx   |5 
 wizards/source/scriptforge/SF_Session.xba  |2 
 writerfilter/source/dmapper/DomainMapper.cxx   |3 
 writerfilter/source/dmapper/PropertyIds.cxx|1 
 writerfilter/source/dmapper/PropertyIds.hxx|1 
 57 files changed, 2678 insertions(+), 2161 deletions(-)

New commits:
commit f70b5d7f217dd84c6afdedde1bc5f981e2f58026
Author: Noel Grandin 
AuthorDate: Tue Mar 26 13:35:53 2024 +0200
Commit: Andras Timar 
CommitDate: Wed Mar 27 11:35:04 2024 +0100

tdf#159805 Printing line style dotted lines (horizontal) turns into dashes.

I could not find a good place to distinguish between the dragging
visualisation (where we could safely use approximation), and the
non-dragging case, so just revert.

Revert
commit 9f4ccc63346b26d8d774b22124da0842ef18e0bc
Author: Noel Grandin 
Date:   Wed Sep 13 14:27:02 2023 +0200
tdf#156995 speed up dragging complex group objects

Change-Id: I2ba52f07ea7299643c0f145459038e368a17dea8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165332
Tested-by: Jenkins
Reviewed-by: Noel Grandin 
(cherry picked from commit fc5d84681d5d898b56171a9622294ecb23623bfd)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165320
Reviewed-by: Xisco Fauli 

diff --git a/basegfx/source/polyg

core.git: Branch 'libreoffice-24-2' - helpcontent2

2024-03-27 Thread Patrick Luby (via logerrit)
 helpcontent2 |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit 15c04b923b7b86b3f63b9ea62b0005ea101f9217
Author: Patrick Luby 
AuthorDate: Wed Mar 27 12:18:01 2024 +0100
Commit: Gerrit Code Review 
CommitDate: Wed Mar 27 12:18:01 2024 +0100

Update git submodules

* Update helpcontent2 from branch 'libreoffice-24-2'
  to 02a11cfe8fb608fdf77b4ce5a57a5dd23784f8ec
  - tdf#159326 macOS uses Command+Option+F while other plafforms use Ctrl+H

Change-Id: Iee37805afba1aa712a45c213d1f9eeae4d01d923
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/162452
Tested-by: Jenkins
Reviewed-by: Patrick Luby 
(cherry picked from commit 509ec415db94a821da1c8f7bacf9e372d320e49d)
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/162534
Reviewed-by: Patrick Luby 
Reviewed-by: Olivier Hallot 

diff --git a/helpcontent2 b/helpcontent2
index 9bed20d260f9..02a11cfe8fb6 16
--- a/helpcontent2
+++ b/helpcontent2
@@ -1 +1 @@
-Subproject commit 9bed20d260f9c0dfd5a43f62bba288aff829da85
+Subproject commit 02a11cfe8fb608fdf77b4ce5a57a5dd23784f8ec


core.git: sw/source

2024-03-27 Thread Antony (via logerrit)
 sw/source/ui/dialog/swdlgfact.cxx  |5 +
 sw/source/ui/dialog/swdlgfact.hxx  |3 ++-
 sw/source/ui/misc/bookmark.cxx |   23 +--
 sw/source/uibase/inc/swrenamexnameddlg.hxx |4 ++--
 4 files changed, 22 insertions(+), 13 deletions(-)

New commits:
commit 896d6303040cb86813f1c5bc06bb830f512f3f22
Author: Antony 
AuthorDate: Thu Mar 14 15:24:11 2024 +0530
Commit: Caolán McNamara 
CommitDate: Wed Mar 27 12:15:51 2024 +0100

cool#8456 : Convert bookmark rename dialog to async

* Changed bookmark rename dialog from synchronous to asynchronous execution.
* Removed the reference operator from variables m_xNamed and m_xNameAccess 
declared in swrenamexnameddlg.hxx to prevent use-after-free

Change-Id: I2e4e777c5c56137504b646bdbe82e265ef73b2ef
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164803
Tested-by: Jenkins CollaboraOffice 
Reviewed-by: Miklos Vajna 
(cherry picked from commit 1222d98eaad463e35286f215b3bdeb909ea155bf)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165323
Tested-by: Jenkins
Reviewed-by: Caolán McNamara 

diff --git a/sw/source/ui/dialog/swdlgfact.cxx 
b/sw/source/ui/dialog/swdlgfact.cxx
index 7333b4ebefcd..8275f5e65a1d 100644
--- a/sw/source/ui/dialog/swdlgfact.cxx
+++ b/sw/source/ui/dialog/swdlgfact.cxx
@@ -295,6 +295,11 @@ short AbstractSwRenameXNamedDlg_Impl::Execute()
 return m_xDlg->run();
 }
 
+bool 
AbstractSwRenameXNamedDlg_Impl::StartExecuteAsync(VclAbstractDialog::AsyncContext&
 rCtx)
+{
+return weld::DialogController::runAsync(m_xDlg, rCtx.maEndDialogFn);
+}
+
 bool 
AbstractSwContentControlListItemDlg_Impl::StartExecuteAsync(VclAbstractDialog::AsyncContext&
 rCtx)
 {
 return weld::DialogController::runAsync(m_xDlg, rCtx.maEndDialogFn);
diff --git a/sw/source/ui/dialog/swdlgfact.hxx 
b/sw/source/ui/dialog/swdlgfact.hxx
index 100833f79f67..5d8035b6bfcd 100644
--- a/sw/source/ui/dialog/swdlgfact.hxx
+++ b/sw/source/ui/dialog/swdlgfact.hxx
@@ -482,13 +482,14 @@ public:
 
 class AbstractSwRenameXNamedDlg_Impl : public AbstractSwRenameXNamedDlg
 {
-std::unique_ptr m_xDlg;
+std::shared_ptr m_xDlg;
 public:
 explicit AbstractSwRenameXNamedDlg_Impl(std::unique_ptr 
p)
 : m_xDlg(std::move(p))
 {
 }
 virtual short Execute() override;
+virtual bool StartExecuteAsync(VclAbstractDialog::AsyncContext &rCtx) 
override;
 virtual void SetForbiddenChars( const OUString& rSet ) override;
 virtual void SetAlternativeAccess(
  css::uno::Reference< css::container::XNameAccess > & xSecond,
diff --git a/sw/source/ui/misc/bookmark.cxx b/sw/source/ui/misc/bookmark.cxx
index 6431809c9569..40cebea7ead7 100644
--- a/sw/source/ui/misc/bookmark.cxx
+++ b/sw/source/ui/misc/bookmark.cxx
@@ -215,20 +215,23 @@ IMPL_LINK_NOARG(SwInsertBookmarkDlg, RenameHdl, 
weld::Button&, void)
 aObj >>= xTmp;
 uno::Reference xNamed(xTmp, uno::UNO_QUERY);
 SwAbstractDialogFactory& rFact = swui::GetFactory();
-ScopedVclPtr pDlg(
+VclPtr pDlg(
 rFact.CreateSwRenameXNamedDlg(m_xDialog.get(), xNamed, xNameAccess));
 pDlg->SetForbiddenChars(BookmarkTable::aForbiddenChars
 + OUStringChar(BookmarkTable::s_cSeparator));
 
-if (pDlg->Execute())
-{
-ValidateBookmarks();
-m_xDeleteBtn->set_sensitive(false);
-m_xGotoBtn->set_sensitive(false);
-m_xEditTextBtn->set_sensitive(false);
-m_xRenameBtn->set_sensitive(false);
-m_xInsertBtn->set_sensitive(false);
-}
+pDlg->StartExecuteAsync([pDlg, this](sal_Int32 nResult) {
+if (nResult == RET_OK)
+{
+ValidateBookmarks();
+m_xDeleteBtn->set_sensitive(false);
+m_xGotoBtn->set_sensitive(false);
+m_xEditTextBtn->set_sensitive(false);
+m_xRenameBtn->set_sensitive(false);
+m_xInsertBtn->set_sensitive(false);
+}
+pDlg->disposeOnce();
+});
 }
 
 // callback to an insert button. Inserts a new text mark to the current 
position.
diff --git a/sw/source/uibase/inc/swrenamexnameddlg.hxx 
b/sw/source/uibase/inc/swrenamexnameddlg.hxx
index 4575df5d414c..4702f1ac20bc 100644
--- a/sw/source/uibase/inc/swrenamexnameddlg.hxx
+++ b/sw/source/uibase/inc/swrenamexnameddlg.hxx
@@ -25,8 +25,8 @@
 
 class SwRenameXNamedDlg final : public weld::GenericDialogController
 {
-css::uno::Reference< css::container::XNamed > &   m_xNamed;
-css::uno::Reference< css::container::XNameAccess > & m_xNameAccess;
+css::uno::Reference< css::container::XNamed >m_xNamed;
+css::uno::Reference< css::container::XNameAccess >   m_xNameAccess;
 css::uno::Reference< css::container::XNameAccess >   m_xSecondAccess;
 css::uno::Reference< css::container::XNameAccess >   m_xThirdAccess;
 


core.git: basic/source

2024-03-27 Thread U-Aarons_LaptopAaron (via logerrit)
 basic/source/runtime/methods.cxx |  120 +++
 1 file changed, 47 insertions(+), 73 deletions(-)

New commits:
commit 26c30fd77bf31ad8c14da1413aaa61fa8aa45206
Author: U-Aarons_Laptop\Aaron 
AuthorDate: Tue Mar 26 14:59:04 2024 -0400
Commit: Michael Weghorn 
CommitDate: Wed Mar 27 11:48:19 2024 +0100

tdf#147132: Flatten Basic function implementations

Change-Id: I9fcbc87b7ce01d96ffb45ddd3a525831c7cdcdaa
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165357
Tested-by: Jenkins
Reviewed-by: Michael Weghorn 

diff --git a/basic/source/runtime/methods.cxx b/basic/source/runtime/methods.cxx
index 34d959669747..a97e66dc6c41 100644
--- a/basic/source/runtime/methods.cxx
+++ b/basic/source/runtime/methods.cxx
@@ -1003,47 +1003,35 @@ void SbRtl_LCase(StarBASIC *, SbxArray & rPar, bool)
 void SbRtl_Left(StarBASIC *, SbxArray & rPar, bool)
 {
 if (rPar.Count() < 3)
+return StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
+
+OUString aStr(rPar.Get(1)->GetOUString());
+sal_Int32 nResultLen = rPar.Get(2)->GetLong();
+if( nResultLen < 0 )
 {
+nResultLen = 0;
 StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
 }
-else
+else if(nResultLen > aStr.getLength())
 {
-OUString aStr(rPar.Get(1)->GetOUString());
-sal_Int32 nResultLen = rPar.Get(2)->GetLong();
-if( nResultLen < 0 )
-{
-nResultLen = 0;
-StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
-}
-else if(nResultLen > aStr.getLength())
-{
-nResultLen = aStr.getLength();
-}
-aStr = aStr.copy(0, nResultLen );
-rPar.Get(0)->PutString(aStr);
+nResultLen = aStr.getLength();
 }
+aStr = aStr.copy(0, nResultLen );
+rPar.Get(0)->PutString(aStr);
 }
 
 void SbRtl_Log(StarBASIC *, SbxArray & rPar, bool)
 {
 if (rPar.Count() < 2)
-{
-StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
-}
-else
-{
-double aArg = rPar.Get(1)->GetDouble();
-if ( aArg > 0 )
-{
-double d = log( aArg );
-checkArithmeticOverflow( d );
-rPar.Get(0)->PutDouble(d);
-}
-else
-{
-StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
-}
-}
+return StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
+
+double aArg = rPar.Get(1)->GetDouble();
+if ( aArg <= 0 )
+return StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
+
+double d = log( aArg );
+checkArithmeticOverflow( d );
+rPar.Get(0)->PutDouble(d);
 }
 
 void SbRtl_LTrim(StarBASIC *, SbxArray & rPar, bool)
@@ -1164,18 +1152,14 @@ void SbRtl_Mid(StarBASIC *, SbxArray & rPar, bool 
bWrite)
 void SbRtl_Oct(StarBASIC *, SbxArray & rPar, bool)
 {
 if (rPar.Count() < 2)
-{
-StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
-}
-else
-{
-SbxVariableRef pArg = rPar.Get(1);
-// converting value to unsigned and limit to 2 or 4 byte representation
-sal_uInt32 nVal = pArg->IsInteger() ?
-static_cast(pArg->GetInteger()) :
-static_cast(pArg->GetLong());
-rPar.Get(0)->PutString(OUString::number(nVal, 8));
-}
+return StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
+
+SbxVariableRef pArg = rPar.Get(1);
+// converting value to unsigned and limit to 2 or 4 byte representation
+sal_uInt32 nVal = pArg->IsInteger() ?
+static_cast(pArg->GetInteger()) :
+static_cast(pArg->GetLong());
+rPar.Get(0)->PutString(OUString::number(nVal, 8));
 }
 
 // Replace(expression, find, replace[, start[, count[, compare]]])
@@ -1184,9 +1168,7 @@ void SbRtl_Replace(StarBASIC *, SbxArray & rPar, bool)
 {
 const sal_uInt32 nArgCount = rPar.Count() - 1;
 if ( nArgCount < 3 || nArgCount > 6 )
-{
 return StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
-}
 
 sal_Int32 lStartPos = 1;
 if (nArgCount >= 4)
@@ -1287,26 +1269,22 @@ void SbRtl_Replace(StarBASIC *, SbxArray & rPar, bool)
 void SbRtl_Right(StarBASIC *, SbxArray & rPar, bool)
 {
 if (rPar.Count() < 3)
+return StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
+
+const OUString& rStr = rPar.Get(1)->GetOUString();
+int nResultLen = rPar.Get(2)->GetLong();
+if( nResultLen < 0 )
 {
+nResultLen = 0;
 StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
 }
-else
+int nStrLen = rStr.getLength();
+if ( nResultLen > nStrLen )
 {
-const OUString& rStr = rPar.Get(1)->GetOUString();
-int nResultLen = rPar.Get(2)->GetLong();
-if( nResultLen < 0 )
-{
-nResultLen = 0;
-StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
-}
-int nStrLen = rStr.getLength();
-if ( nResultLen > nStrLen )
-{
-nResultLen = nStrLen;
-}
-OUString aResultStr = rStr

Re: Adding support for the Common Print Dialog Backends (CPDB)

2024-03-27 Thread Till Kamppeter

On 27/03/2024 08:34, Michael Weghorn wrote:


Thanks for the detailed description. Since printing is a critical feature for 
many users and the current CUPS/PPD API implementation has been used 
successfully for quite a long time now, I wouldn't feel comfortable 
unconditionally replacing it with the CPDB-based approach at this point in time. 
(So I'm glad that isn't the goal for the GSoc project.)


Of course, switching the default to the CPDB-based implementation and ultimately 
dropping the custom CUPS/PPD API implementation are things that can be 
considered at some point in the future, once the CPDB-based implementation has 
proven to be able to cover all relevant use cases and all relevant distros 
provide the libraries and printer applications,


(I remember that the CUPS PPD API has been deprecated for a long time, and the 
IPP-based API would have provided the necessary means to make everything work in 
theory. But at least in pre-printer-application times, the practical problem I 
saw years ago was that - even then new - printers weren't offering all of their 
functionality as IPP attributes, so still using the deprecated API was the only 
way to not lose that functionality. IIUC, printer applications are meant to 
bridge that gap now.)





Michael, Biswadeep will take care of the CPDB interface, but the CUPS/PPD 
interface also needs attention, as if it is not done correctly, it will cease to 
work if CUPS 3.x is used (also if the CUPS Snap or any other containerized form 
of CUPS is used).


So the CUPS interface (I intentionally do not call it CUPS/PPD interface) 
following has to be assured:


1. The correct CUPS APIs have to be used (cupsEnumDests(), ...), to list both 
classic, permanent CUPS queues with PPD file and IPP print destinations for 
which CUPS creates a queue on-demand. The GTK print dialog (GTK version 4.x) 
uses these APIs, to have an example.


2. Also for obtaining the options only these new "Dests" APIs of CUPS have to be 
used, no old PPD-downloading APIs, and especially no direct access to PPD files. 
The "Dests" APIs for options automatically take care what the best is for 
obtaining the options (including providing all PPD options if the queue is a 
classic CUPS queue), and they continue to be available in libcups3. Take the GTK 
(4.x) print dialog as example for use of these APIs.


3. Generally take care to use only libcups API functions which are also 
available in libcups3. Also make the code build with both libcups2 and libcups3 
(see the projects libcupsfilters (2.x) and libpappl (1.4.x branch) as example 
repos which can be compiled with the user's choice of libcups2 or libcups3.


Biswadeep, please concentrate primarily on the CPDB interface. If you finish 
early, you can also work on the CUPS interface, but the CPDB interface is your 
priority.



Thanks! I've followed those instructions, am happy to co-mentor.


Thank you very much.

You are now officially registered as mentor and you can see the submitted 
proposals now. Please mark at Biswadeep's proposal that you are interested in 
mentoring. Also have a look into Biswadeep's proposal itself.


You will do the LibreOffice side of the mentoring, Gaurav Guleria and me will do 
the CPDB side.


   Till




core.git: chart2/source

2024-03-27 Thread Noel Grandin (via logerrit)
 chart2/source/inc/UncachedDataSequence.hxx   |   11 --
 chart2/source/tools/UncachedDataSequence.cxx |   28 ++-
 2 files changed, 16 insertions(+), 23 deletions(-)

New commits:
commit afd6bd25ec748063825c74156bc9006366481f7f
Author: Noel Grandin 
AuthorDate: Tue Mar 26 15:30:12 2024 +0200
Commit: Noel Grandin 
CommitDate: Wed Mar 27 10:51:18 2024 +0100

convert UncachedDataSequence to comphelper::WeakComponentImplHelper

Change-Id: Ib7facb9050bc71d15e23cb54c3ef22199c446da5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165361
Tested-by: Jenkins
Reviewed-by: Noel Grandin 

diff --git a/chart2/source/inc/UncachedDataSequence.hxx 
b/chart2/source/inc/UncachedDataSequence.hxx
index ca32af236d80..c134601944ff 100644
--- a/chart2/source/inc/UncachedDataSequence.hxx
+++ b/chart2/source/inc/UncachedDataSequence.hxx
@@ -19,10 +19,10 @@
 #pragma once
 
 // helper classes
-#include 
+#include 
 #include 
 #include 
-#include 
+#include 
 #include 
 #include 
 
@@ -46,7 +46,7 @@ class ModifyEventForwarder;
 
 namespace impl
 {
-typedef ::cppu::WeakComponentImplHelper<
+typedef ::comphelper::WeakComponentImplHelper<
 css::chart2::data::XDataSequence,
 css::chart2::data::XNumericalDataSequence,
 css::chart2::data::XTextualDataSequence,
@@ -69,8 +69,7 @@ typedef ::cppu::WeakComponentImplHelper<
  * 'label 2', ...
  */
 class UncachedDataSequence final :
-public ::comphelper::OMutexAndBroadcastHelper,
-public ::comphelper::OPropertyContainer,
+public ::comphelper::OPropertyContainer2,
 public ::comphelper::OPropertyArrayUsageHelper< UncachedDataSequence >,
 public impl::UncachedDataSequence_Base
 {
@@ -103,7 +102,7 @@ private:
 /// @see css::beans::XPropertySet
 virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL 
getPropertySetInfo() override;
 /// @see ::comphelper::OPropertySetHelper
-virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper() override;
+virtual ::cppu::IPropertyArrayHelper& getInfoHelper() override;
 /// @see ::comphelper::OPropertyArrayUsageHelper
 virtual ::cppu::IPropertyArrayHelper* createArrayHelper() const override;
 
diff --git a/chart2/source/tools/UncachedDataSequence.cxx 
b/chart2/source/tools/UncachedDataSequence.cxx
index 7211daedba6f..176eadafe8b1 100644
--- a/chart2/source/tools/UncachedDataSequence.cxx
+++ b/chart2/source/tools/UncachedDataSequence.cxx
@@ -36,7 +36,6 @@ using ::com::sun::star::uno::Any;
 using ::osl::MutexGuard;
 
 // necessary for MS compiler
-using ::comphelper::OPropertyContainer;
 using ::chart::impl::UncachedDataSequence_Base;
 
 namespace
@@ -57,9 +56,7 @@ namespace chart
 UncachedDataSequence::UncachedDataSequence(
 rtl::Reference< InternalDataProvider > xIntDataProv,
 OUString aRangeRepresentation )
-: OPropertyContainer( GetBroadcastHelper()),
-  UncachedDataSequence_Base( GetMutex()),
-  m_nNumberFormatKey(0),
+: m_nNumberFormatKey(0),
   m_xDataProvider(std::move( xIntDataProv )),
   m_aSourceRepresentation(std::move( aRangeRepresentation )),
   m_xModifyEventForwarder( new ModifyEventForwarder() )
@@ -71,21 +68,18 @@ UncachedDataSequence::UncachedDataSequence(
 rtl::Reference< InternalDataProvider > xIntDataProv,
 OUString aRangeRepresentation,
 const OUString & rRole )
-: OPropertyContainer( GetBroadcastHelper()),
-  UncachedDataSequence_Base( GetMutex()),
-  m_nNumberFormatKey(0),
+: m_nNumberFormatKey(0),
   m_xDataProvider(std::move( xIntDataProv )),
   m_aSourceRepresentation(std::move( aRangeRepresentation )),
   m_xModifyEventForwarder( new ModifyEventForwarder() )
 {
 registerProperties();
-setFastPropertyValue_NoBroadcast( PROP_PROPOSED_ROLE, uno::Any( rRole ));
+std::unique_lock aGuard;
+setFastPropertyValue_NoBroadcast( aGuard, PROP_PROPOSED_ROLE, uno::Any( 
rRole ));
 }
 
 UncachedDataSequence::UncachedDataSequence( const UncachedDataSequence & 
rSource )
-: OPropertyContainer( GetBroadcastHelper()),
-  UncachedDataSequence_Base( GetMutex()),
-  m_nNumberFormatKey( rSource.m_nNumberFormatKey ),
+: m_nNumberFormatKey( rSource.m_nNumberFormatKey ),
   m_sRole( rSource.m_sRole ),
   m_xDataProvider( rSource.m_xDataProvider ),
   m_aSourceRepresentation( rSource.m_aSourceRepresentation ),
@@ -118,8 +112,8 @@ void UncachedDataSequence::registerProperties()
   cppu::UnoType::get() );
 }
 
-IMPLEMENT_FORWARD_XINTERFACE2( UncachedDataSequence, 
UncachedDataSequence_Base, OPropertyContainer )
-IMPLEMENT_FORWARD_XTYPEPROVIDER2( UncachedDataSequence, 
UncachedDataSequence_Base, OPropertyContainer )
+IMPLEMENT_FORWARD_XINTERFACE2( UncachedDataSequence, 
UncachedDataSequence_Base, comphelper::OPropertyContainer2 )
+IMPLEMENT_FORWARD_XTYPEPROVIDER2( UncachedDataSequence, 

core.git: Branch 'distro/collabora/co-24.04' - include/sfx2 sfx2/source

2024-03-27 Thread Gökay Şatır (via logerrit)
 include/sfx2/dispatch.hxx|1 +
 sfx2/source/control/dispatch.cxx |   32 ++--
 2 files changed, 31 insertions(+), 2 deletions(-)

New commits:
commit 226e2263468da403d1f9db504115830f5a030229
Author: Gökay Şatır 
AuthorDate: Tue Mar 26 18:41:34 2024 +0300
Commit: Gökay ŞATIR 
CommitDate: Wed Mar 27 10:39:09 2024 +0100

Enable allowing comment editing in readOnly view mode.

Signed-off-by: Gökay Şatır 
Change-Id: I536448da395568cd43af6f4d1d36ef09f3c6a6b3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165349
Tested-by: Jenkins CollaboraOffice 
Reviewed-by: Gökay ŞATIR 

diff --git a/include/sfx2/dispatch.hxx b/include/sfx2/dispatch.hxx
index 7216fc92badc..fee0082fb36b 100644
--- a/include/sfx2/dispatch.hxx
+++ b/include/sfx2/dispatch.hxx
@@ -89,6 +89,7 @@ friend class SfxHelp;
 
 
 boolFindServer_( sal_uInt16 nId, SfxSlotServer &rServer );
+static boolIsCommandAllowedInLokReadOnlyViewMode (OUString 
commandName);
 boolFillState_( const SfxSlotServer &rServer,
 SfxItemSet &rState, const SfxSlot 
*pRealSlot );
 voidExecute_( SfxShell &rShell, const SfxSlot &rSlot,
diff --git a/sfx2/source/control/dispatch.cxx b/sfx2/source/control/dispatch.cxx
index 67f78885a033..81317dab4153 100644
--- a/sfx2/source/control/dispatch.cxx
+++ b/sfx2/source/control/dispatch.cxx
@@ -1521,6 +1521,23 @@ SfxSlotFilterState 
SfxDispatcher::IsSlotEnabledByFilter_Impl( sal_uInt16 nSID )
 return bFound ? SfxSlotFilterState::DISABLED : 
SfxSlotFilterState::ENABLED;
 }
 
+bool SfxDispatcher::IsCommandAllowedInLokReadOnlyViewMode (OUString 
commandName) {
+constexpr OUString allowedList[] = {
+u".uno:InsertAnnotation"_ustr,
+u".uno:ReplyComment"_ustr,
+u".uno:ResolveComment"_ustr,
+u".uno:ResolveCommentThread"_ustr,
+u".uno:DeleteComment"_ustr,
+u".uno:DeleteAnnotation"_ustr,
+u".uno:EditAnnotation"_ustr,
+};
+
+if (std::find(std::begin(allowedList), std::end(allowedList), commandName) 
!= std::end(allowedList))
+return true;
+else
+return false;
+}
+
 /** This helper method searches for the  which currently serves
 the nSlot. As the result, rServe is filled accordingly.
 
@@ -1590,9 +1607,16 @@ bool SfxDispatcher::FindServer_(sal_uInt16 nSlot, 
SfxSlotServer& rServer)
 }
 
 bool bReadOnly = ( SfxSlotFilterState::ENABLED_READONLY != nSlotEnableMode 
&& xImp->bReadOnly );
+bool bCheckForCommentCommands = false;
 
-if (!bReadOnly && comphelper::LibreOfficeKit::isActive())
-bReadOnly = xImp->pFrame && xImp->pFrame->GetViewShell() && 
xImp->pFrame->GetViewShell()->IsLokReadOnlyView();
+if (!bReadOnly && comphelper::LibreOfficeKit::isActive() && xImp->pFrame 
&& xImp->pFrame->GetViewShell())
+{
+SfxViewShell *pViewSh = xImp->pFrame->GetViewShell();
+bReadOnly = pViewSh->IsLokReadOnlyView();
+
+if (bReadOnly && pViewSh->IsAllowChangeComments())
+bCheckForCommentCommands = true;
+}
 
 // search through all the shells of the chained dispatchers
 // from top to bottom
@@ -1606,6 +1630,10 @@ bool SfxDispatcher::FindServer_(sal_uInt16 nSlot, 
SfxSlotServer& rServer)
 SfxInterface *pIFace = pObjShell->GetInterface();
 const SfxSlot *pSlot = pIFace->GetSlot(nSlot);
 
+// This check can be true only if Lokit is active and view is readonly.
+if (pSlot && bCheckForCommentCommands)
+bReadOnly = 
IsCommandAllowedInLokReadOnlyViewMode(pSlot->GetCommand());
+
 if ( pSlot && pSlot->nDisableFlags != SfxDisableFlags::NONE &&
  ( static_cast(pSlot->nDisableFlags) & 
static_cast(pObjShell->GetDisableFlags()) ) != 0 )
 return false;


core.git: sd/source

2024-03-27 Thread Armin Le Grand (allotropia) (via logerrit)
 sd/source/console/PresenterScreen.cxx|   28 +---
 sd/source/console/PresenterScreen.hxx|3 +++
 sd/source/ui/slideshow/slideshowimpl.cxx |   17 ++---
 3 files changed, 42 insertions(+), 6 deletions(-)

New commits:
commit 8caddb0d579030167791cb1c6d07bc28a3b35b49
Author: Armin Le Grand (allotropia) 
AuthorDate: Tue Mar 26 18:35:21 2024 +0100
Commit: Armin Le Grand 
CommitDate: Wed Mar 27 10:32:14 2024 +0100

IASS: Fix crash with PresenterConsole

When being in IASS mode and adding e.g. an effect to
a Shape (or anything else that triggers a preview)
and the PresenterConsole being active, we got a
crash. That happend due to the PresenterConsole
being initialized *twice* due to interpreting that
preview as SlideShow start. It also closed due to
interpreting the preview end as SlideShow end. The
next SlideShow end then bites the dust in an already
messed up situation.
To solve this, SlideshowImpl::startShowImpl now only
uses NotifyDocumentEvent "OnStartPresentation" when
this is not a SlideShow startup.
I also secured PresenterScreen using a local bool
to remember if it is initialized to avoid when that
would be done twice (also used for shutdown).

Change-Id: Ice588e0783fd39ec46d90a40affcaf2f789df8ec
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165356
Tested-by: Jenkins
Reviewed-by: Armin Le Grand 

diff --git a/sd/source/console/PresenterScreen.cxx 
b/sd/source/console/PresenterScreen.cxx
index 690a07f8b67c..2cbd612ff357 100644
--- a/sd/source/console/PresenterScreen.cxx
+++ b/sd/source/console/PresenterScreen.cxx
@@ -240,9 +240,17 @@ void SAL_CALL PresenterScreenListener::disposing (const 
css::lang::EventObject&)
 PresenterScreen::PresenterScreen (
 const Reference& rxContext,
 css::uno::Reference xModel)
-: PresenterScreenInterfaceBase(m_aMutex),
-  mxModel(std::move(xModel)),
-  mxContextWeak(rxContext)
+: PresenterScreenInterfaceBase(m_aMutex)
+, mxModel(std::move(xModel))
+, mxController()
+, mxConfigurationControllerWeak()
+, mxContextWeak(rxContext)
+, mpPresenterController()
+, mxSavedConfiguration()
+, mpPaneContainer()
+, mxPaneFactory()
+, mxViewFactory()
+, mbIsInitialized(false)
 {
 }
 
@@ -303,6 +311,10 @@ void SAL_CALL PresenterScreen::disposing (const 
lang::EventObject& /*rEvent*/)
 
 void PresenterScreen::InitializePresenterScreen()
 {
+// IASS: already initialized (may even assert here?)
+if (mbIsInitialized)
+return;
+
 try
 {
 Reference xContext (mxContextWeak);
@@ -388,6 +400,9 @@ void PresenterScreen::InitializePresenterScreen()
 catch (const Exception&)
 {
 }
+
+// IASS: Remember we are initialized
+mbIsInitialized = true;
 }
 
 void PresenterScreen::SwitchMonitors()
@@ -545,6 +560,10 @@ Reference 
PresenterScreen::GetMainPaneId (
 
 void PresenterScreen::RequestShutdownPresenterScreen()
 {
+// IASS: only cleanup when we are initialized
+if (!mbIsInitialized)
+return;
+
 // Restore the configuration that was active before the presenter screen
 // has been activated.  Now, that the presenter screen is displayed in
 // its own top level window this probably not necessary, but one never 
knows.
@@ -567,6 +586,9 @@ void PresenterScreen::RequestShutdownPresenterScreen()
 [xSelf=std::move(xSelf)](bool){ return 
xSelf->ShutdownPresenterScreen(); });
 xCC->update();
 }
+
+// IASS: reset to non-initialized
+mbIsInitialized = false;
 }
 
 void PresenterScreen::ShutdownPresenterScreen()
diff --git a/sd/source/console/PresenterScreen.hxx 
b/sd/source/console/PresenterScreen.hxx
index 0445311b9603..430384a45c6d 100644
--- a/sd/source/console/PresenterScreen.hxx
+++ b/sd/source/console/PresenterScreen.hxx
@@ -139,6 +139,9 @@ private:
 css::uno::Reference 
mxPaneFactory;
 css::uno::Reference 
mxViewFactory;
 
+// IASS: Flag to note if InitializePresenterScreen() was executed
+bool mbIsInitialized;
+
 class ViewDescriptor
 {
 public:
diff --git a/sd/source/ui/slideshow/slideshowimpl.cxx 
b/sd/source/ui/slideshow/slideshowimpl.cxx
index d06f867d994c..74d9ac4b0e6f 100644
--- a/sd/source/ui/slideshow/slideshowimpl.cxx
+++ b/sd/source/ui/slideshow/slideshowimpl.cxx
@@ -647,6 +647,8 @@ void SlideshowImpl::disposing(std::unique_lock&)
 #ifdef ENABLE_SDREMOTE
 RemoteServer::presentationStopped();
 #endif
+// IASS: This is the central methodology to 'steer' the
+// PresenterConsole - in this case, to shut it down
 if( mxShow.is() && mpDoc )
 NotifyDocumentEvent(
 *mpDoc,
@@ -1344,9 +1346,18 @@ bool SlideshowImpl::startShowImpl( const Sequence< 
beans::PropertyValue >& aProp
 mxListenerProxy.set( new SlideShowListenerProxy( this, mxShow ) );
 mxListenerProxy->addAsSlideShowListener();
 
-NotifyDocumentEvent(
-*mpDoc,
-"O

core.git: chart2/source

2024-03-27 Thread Noel Grandin (via logerrit)
 chart2/source/inc/CachedDataSequence.hxx   |   12 +---
 chart2/source/tools/CachedDataSequence.cxx |   27 +--
 2 files changed, 14 insertions(+), 25 deletions(-)

New commits:
commit ebe0f745e88a4d96bb29e52f4a56ec788c7c06ae
Author: Noel Grandin 
AuthorDate: Tue Mar 26 15:26:53 2024 +0200
Commit: Noel Grandin 
CommitDate: Wed Mar 27 10:09:33 2024 +0100

convert CachedDataSequence to comphelper::WeakComponentImplHelper

Change-Id: Ia95efee23b7cf76636d5d85c722cf5ce5989bb79
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165360
Tested-by: Jenkins
Reviewed-by: Noel Grandin 

diff --git a/chart2/source/inc/CachedDataSequence.hxx 
b/chart2/source/inc/CachedDataSequence.hxx
index e9c1b9d50d25..513907c2429d 100644
--- a/chart2/source/inc/CachedDataSequence.hxx
+++ b/chart2/source/inc/CachedDataSequence.hxx
@@ -19,10 +19,9 @@
 #pragma once
 
 // helper classes
-#include 
+#include 
 #include 
-#include 
-#include 
+#include 
 #include 
 
 // interfaces and types
@@ -41,7 +40,7 @@ namespace chart
 
 namespace impl
 {
-typedef ::cppu::WeakComponentImplHelper<
+typedef ::comphelper::WeakComponentImplHelper<
 css::chart2::data::XDataSequence,
 css::chart2::data::XNumericalDataSequence,
 css::chart2::data::XTextualDataSequence,
@@ -56,8 +55,7 @@ typedef ::cppu::WeakComponentImplHelper<
  * This sequence object does store actual values within, hence "cached".
  */
 class CachedDataSequence final :
-public ::comphelper::OMutexAndBroadcastHelper,
-public ::comphelper::OPropertyContainer,
+public ::comphelper::OPropertyContainer2,
 public ::comphelper::OPropertyArrayUsageHelper< CachedDataSequence >,
 public impl::CachedDataSequence_Base
 {
@@ -93,7 +91,7 @@ private:
 /// @see css::beans::XPropertySet
 virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL 
getPropertySetInfo() override;
 /// @see ::comphelper::OPropertySetHelper
-virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper() override;
+virtual ::cppu::IPropertyArrayHelper& getInfoHelper() override;
 /// @see ::comphelper::OPropertyArrayUsageHelper
 virtual ::cppu::IPropertyArrayHelper* createArrayHelper() const override;
 
diff --git a/chart2/source/tools/CachedDataSequence.cxx 
b/chart2/source/tools/CachedDataSequence.cxx
index 23f5add5f85f..7ddc9a010408 100644
--- a/chart2/source/tools/CachedDataSequence.cxx
+++ b/chart2/source/tools/CachedDataSequence.cxx
@@ -34,7 +34,6 @@ using ::com::sun::star::uno::Any;
 using ::osl::MutexGuard;
 
 // necessary for MS compiler
-using ::comphelper::OPropertyContainer;
 using ::chart::impl::CachedDataSequence_Base;
 
 namespace
@@ -53,26 +52,20 @@ namespace chart
 {
 
 CachedDataSequence::CachedDataSequence()
-: OPropertyContainer( GetBroadcastHelper()),
-  CachedDataSequence_Base( GetMutex()),
-  m_eCurrentDataType( NUMERICAL ),
+: m_eCurrentDataType( NUMERICAL ),
   m_xModifyEventForwarder( new ModifyEventForwarder() )
 {
 registerProperties();
 }
 CachedDataSequence::CachedDataSequence( const Reference< 
uno::XComponentContext > & /*xContext*/ )
-: OPropertyContainer( GetBroadcastHelper()),
-  CachedDataSequence_Base( GetMutex()),
-  m_eCurrentDataType( MIXED ),
+: m_eCurrentDataType( MIXED ),
   m_xModifyEventForwarder( new ModifyEventForwarder() )
 {
 registerProperties();
 }
 
 CachedDataSequence::CachedDataSequence( const OUString & rSingleText )
-: OPropertyContainer( GetBroadcastHelper()),
-  CachedDataSequence_Base( GetMutex()),
-  m_eCurrentDataType( TEXTUAL ),
+: m_eCurrentDataType( TEXTUAL ),
   m_aTextualSequence({rSingleText}),
   m_xModifyEventForwarder( new ModifyEventForwarder() )
 {
@@ -80,9 +73,7 @@ CachedDataSequence::CachedDataSequence( const OUString & 
rSingleText )
 }
 
 CachedDataSequence::CachedDataSequence( const CachedDataSequence & rSource )
-: OPropertyContainer( GetBroadcastHelper()),
-  CachedDataSequence_Base( GetMutex()),
-  m_nNumberFormatKey( rSource.m_nNumberFormatKey ),
+: m_nNumberFormatKey( rSource.m_nNumberFormatKey ),
   m_sRole( rSource.m_sRole ),
   m_eCurrentDataType( rSource.m_eCurrentDataType ),
   m_xModifyEventForwarder( new ModifyEventForwarder() )
@@ -213,8 +204,8 @@ Sequence< Any > CachedDataSequence::Impl_getMixedData() 
const
 return aResult;
 }
 
-IMPLEMENT_FORWARD_XINTERFACE2( CachedDataSequence, CachedDataSequence_Base, 
OPropertyContainer )
-IMPLEMENT_FORWARD_XTYPEPROVIDER2( CachedDataSequence, CachedDataSequence_Base, 
OPropertyContainer )
+IMPLEMENT_FORWARD_XINTERFACE2( CachedDataSequence, CachedDataSequence_Base, 
comphelper::OPropertyContainer2 )
+IMPLEMENT_FORWARD_XTYPEPROVIDER2( CachedDataSequence, CachedDataSequence_Base, 
comphelper::OPropertyContainer2 )
 
 //  XPropertySet 
 Reference< beans

core.git: svtools/source

2024-03-27 Thread Caolán McNamara (via logerrit)
 svtools/source/misc/embedhlp.cxx |   21 ++---
 1 file changed, 14 insertions(+), 7 deletions(-)

New commits:
commit 8872f7121b4ae4dd0b51820366d3510a88f7aac2
Author: Caolán McNamara 
AuthorDate: Tue Mar 26 21:42:51 2024 +
Commit: Caolán McNamara 
CommitDate: Wed Mar 27 10:02:15 2024 +0100

crashtesting: crash on exporting kde274105-6.docx to .rtf

since:

commit 9ae8e74fb32254c81d36b1c95411605459e06372
Date:   Tue Mar 5 11:01:42 2024 -0700

tdf#50934: Add a pie-with-remainder-as-another-pie chart type

but this sort of problem has arisen before at:

commit 3a2c2ad839860dcb36e30ae1a2867e4d5e1036fc
Date:   Wed Jan 30 10:12:44 2019 +

crashtesting: crash exporting ooo58458-1.odt to doc

since...

commit 8780fa41dcd164af244742461f4e57a4bcf4c7a4
Date:   Tue Oct 30 12:23:36 2018 +0100

svtools: fix lost replacement grpahic when updating it via OLE fails

and back in:

commit ca9dd36bb0f2f8a5bcb0e5621ec181cc6f29ad73
Date:   Tue May 22 18:34:28 2007 +

INTEGRATION: CWS chart2mst3 (1.16.4); FILE MERGED
2006/08/04 09:32:02 iha 1.16.4.1: don't crash while resizing some 
charts when replacement graphic happens to be empty

the same issue of charts triggering UpdateReplacementOnDemand on
modifications which happen during generating the Replacement Graphic.

Presumably no modifications should happen during this process and those
are the underlying bugs.

Change-Id: I27172a7bd62d836f8e47f826de3ea941881459bb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165358
Tested-by: Caolán McNamara 
Reviewed-by: Caolán McNamara 

diff --git a/svtools/source/misc/embedhlp.cxx b/svtools/source/misc/embedhlp.cxx
index d784b20a4a39..370d0f6b10ca 100644
--- a/svtools/source/misc/embedhlp.cxx
+++ b/svtools/source/misc/embedhlp.cxx
@@ -461,12 +461,10 @@ void EmbeddedObjectRef::GetReplacement( bool bUpdate )
 
 mpImpl->oGraphic.reset();
 mpImpl->aMediaType.clear();
-mpImpl->oGraphic.emplace();
 mpImpl->mnGraphicVersion++;
 }
 else if ( !mpImpl->oGraphic )
 {
-mpImpl->oGraphic.emplace();
 mpImpl->mnGraphicVersion++;
 }
 else
@@ -475,6 +473,8 @@ void EmbeddedObjectRef::GetReplacement( bool bUpdate )
 return;
 }
 
+mpImpl->oGraphic.emplace();
+
 std::unique_ptr pGraphicStream(GetGraphicStream( bUpdate ));
 if (!pGraphicStream && aOldGraphic.IsNone())
 {
@@ -485,17 +485,24 @@ void EmbeddedObjectRef::GetReplacement( bool bUpdate )
  "EmbeddedObjectRef::GetReplacement: failed to get updated 
graphic stream");
 }
 
+if (!mpImpl->oGraphic)
+{
+// note that UpdateReplacementOnDemand which resets mpImpl->oGraphic 
to null may have been called
+// e.g. when exporting ooo58458-1.odt to doc or kde274105-6.docx to 
rtf. Those looks like bugs as
+// presumably generating the replacement graphic shouldn't re-trigger 
that the graphic needs
+// to be updated, bodge this to work as callers naturally expect
+SAL_WARN("svtools.misc", "EmbeddedObjectRef::GetReplacement generating 
replacement image modified object to claim it needs to update replacement");
+mpImpl->oGraphic.emplace();
+}
+
 if ( pGraphicStream )
 {
 GraphicFilter& rGF = GraphicFilter::GetGraphicFilter();
-if( mpImpl->oGraphic )
-rGF.ImportGraphic( *mpImpl->oGraphic, u"", *pGraphicStream );
+rGF.ImportGraphic( *mpImpl->oGraphic, u"", *pGraphicStream );
 mpImpl->mnGraphicVersion++;
 }
 
-// note that UpdateReplacementOnDemand which resets mpImpl->oGraphic to 
null may have been called
-// e.g. when exporting ooo58458-1.odt to doc
-if (bUpdate && (!mpImpl->oGraphic || mpImpl->oGraphic->IsNone()) && 
!aOldGraphic.IsNone())
+if (bUpdate && mpImpl->oGraphic->IsNone() && !aOldGraphic.IsNone())
 {
 // We used to have an old graphic, tried to update and the update
 // failed. Go back to the old graphic instead of having no graphic at


core.git: cui/inc cui/Library_cui.mk cui/source cui/uiconfig cui/UIConfig_cui.mk desktop/source extras/source include/sfx2 include/unotools officecfg/registry Repository.mk sfx2/sdi sfx2/source vcl/Mo

2024-03-27 Thread Heiko Tietze (via logerrit)
 Repository.mk  |1 
 cui/Library_cui.mk |1 
 cui/UIConfig_cui.mk|1 
 cui/inc/whatsnew.hrc   |   42 ++
 cui/source/dialogs/whatsnew.cxx|  172 
++
 cui/source/factory/dlgfact.cxx |   13 
 cui/source/factory/dlgfact.hxx |2 
 cui/source/inc/whatsnew.hxx|   75 
 cui/uiconfig/ui/whatsnewdialog.ui  |  131 +++
 desktop/source/app/app.cxx |2 
 extras/source/whatsnew/Community.png   |binary
 extras/source/whatsnew/Configurability.png |binary
 extras/source/whatsnew/LibreOffice.gif |binary
 extras/source/whatsnew/ODF.png |binary
 extras/source/whatsnew/whatsnew1.png   |binary
 include/sfx2/sfxdlg.hxx|2 
 include/sfx2/sfxsids.hrc   |5 
 include/sfx2/strings.hrc   |2 
 include/sfx2/viewfrm.hxx   |1 
 include/unotools/VersionConfig.hxx |   24 -
 officecfg/registry/schema/org/openoffice/Office/UI/Infobar.xcs |6 
 officecfg/registry/schema/org/openoffice/Setup.xcs |8 
 sfx2/sdi/appslots.sdi  |4 
 sfx2/sdi/sfx.sdi   |   16 
 sfx2/source/appl/appserv.cxx   |   10 
 sfx2/source/dialog/infobar.cxx |2 
 sfx2/source/view/viewfrm.cxx   |   43 +-
 vcl/Module_vcl.mk  |1 
 vcl/Package_whatsnew.mk|   20 +
 29 files changed, 533 insertions(+), 51 deletions(-)

New commits:
commit dd889b290304b73f96a9a8e6e0f144d3aa2ba7e1
Author: Heiko Tietze 
AuthorDate: Thu Feb 22 12:56:01 2024 +0100
Commit: Heiko Tietze 
CommitDate: Wed Mar 27 09:41:44 2024 +0100

Resolves tdf#159573 and tdf#137931 - WhatsNew or Welcome dialog

To test the new dialog, change org.openoffice.Setup > Product > 
ooSetupLastVersion to some lesser value for the WhatsNew dialog or clear the 
entry for the Welcome version.

Change-Id: Iec6de50edba0e5430e82f1db85e61d1e4501771d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163739
Reviewed-by: Michael Weghorn 
Tested-by: Jenkins
Reviewed-by: Heiko Tietze 

diff --git a/Repository.mk b/Repository.mk
index 5b60bd66cfcc..9317a29975df 100644
--- a/Repository.mk
+++ b/Repository.mk
@@ -925,6 +925,7 @@ $(eval $(call gb_Helper_register_packages_for_install,sdk,\
 ifneq ($(ENABLE_WASM_STRIP_PINGUSER),TRUE)
 $(eval $(call gb_Helper_register_packages_for_install,ooo,\
tipoftheday_images \
+   whatsnew_images \
 ))
 endif
 
diff --git a/cui/Library_cui.mk b/cui/Library_cui.mk
index e01e33ecb4ec..3ee744e32d0f 100644
--- a/cui/Library_cui.mk
+++ b/cui/Library_cui.mk
@@ -114,6 +114,7 @@ $(eval $(call gb_Library_add_exception_objects,cui,\
 cui/source/customize/SvxNotebookbarConfigPage \
 cui/source/customize/CustomNotebookbarGenerator \
 cui/source/dialogs/about \
+cui/source/dialogs/whatsnew \
 $(call gb_Helper_optional,EXTENSIONS, \
 cui/source/dialogs/AdditionsDialog) \
 cui/source/dialogs/colorpicker \
diff --git a/cui/UIConfig_cui.mk b/cui/UIConfig_cui.mk
index 10acd83c8c39..79ff7696a93a 100644
--- a/cui/UIConfig_cui.mk
+++ b/cui/UIConfig_cui.mk
@@ -18,6 +18,7 @@ endif
 ifneq ($(ENABLE_WASM_STRIP_PINGUSER),TRUE)
 $(eval $(call gb_UIConfig_add_uifiles,cui,\
cui/uiconfig/ui/tipofthedaydialog \
+   cui/uiconfig/ui/whatsnewdialog \
 ))
 endif
 
diff --git a/cui/inc/whatsnew.hrc b/cui/inc/whatsnew.hrc
new file mode 100644
index ..e155a597bcf2
--- /dev/null
+++ b/cui/inc/whatsnew.hrc
@@ -0,0 +1,42 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; 
fill-column: 100 -*- */
+/*
+ * 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/.
+ */
+
+#pragma once
+
+#define NC_(Context, String) TranslateId(Context, u8##String)
+
+#include 
+#include 
+#include 
+#include 
+
+/*
+ * std:tuple consists of 
+ * image:
+   * place new images at extra/source/whatsnew
+   * do not forget to add the files to vcl/Package_whatsnew.mk
+   * images are cut-off at 600x400px
+*/
+
+const std::tuple WELCOME_STRINGARRAY[] =
+

core.git: sw/qa

2024-03-27 Thread Miklos Vajna (via logerrit)
 sw/qa/extras/htmlexport/htmlexport.cxx |   59 +++--
 sw/qa/inc/swmodeltestbase.hxx  |   15 
 2 files changed, 42 insertions(+), 32 deletions(-)

New commits:
commit b67991ecdb12bfa385496731f192ac081947c779
Author: Miklos Vajna 
AuthorDate: Wed Mar 27 08:10:58 2024 +0100
Commit: Miklos Vajna 
CommitDate: Wed Mar 27 09:33:15 2024 +0100

CppunitTest_sw_htmlexport: use more CPPUNIT_TEST_FIXTURE()

No need to go via Writer-specific macros here.

Change-Id: Ic7f0ed5ff16741d14488a19f1e73486690dd685b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165365
Reviewed-by: Miklos Vajna 
Tested-by: Jenkins

diff --git a/sw/qa/extras/htmlexport/htmlexport.cxx 
b/sw/qa/extras/htmlexport/htmlexport.cxx
index b26bf2eb7415..374c739230e5 100644
--- a/sw/qa/extras/htmlexport/htmlexport.cxx
+++ b/sw/qa/extras/htmlexport/htmlexport.cxx
@@ -374,11 +374,10 @@ CPPUNIT_TEST_FIXTURE(HtmlExportTest, testCharacterBorder)
 verify();
 }
 
-#define DECLARE_HTMLEXPORT_TEST(TestName, filename)
\
-DECLARE_SW_EXPORT_TEST(TestName, filename, nullptr, HtmlExportTest)
-
-DECLARE_HTMLEXPORT_TEST(testExportOfImages, "textAndImage.docx")
+CPPUNIT_TEST_FIXTURE(HtmlExportTest, testExportOfImages)
 {
+createSwDoc("textAndImage.docx");
+save(mpFilter);
 htmlDocUniquePtr pDoc = parseHtml(maTempFile);
 CPPUNIT_ASSERT(pDoc);
 
@@ -435,8 +434,10 @@ CPPUNIT_TEST_FIXTURE(HtmlExportTest, 
testSkipImagesEmbeddedDocument)
 assertXPathContent(pDoc, "/html/body/p/span/p/span"_ostr, "Inner.");
 }
 
-DECLARE_HTMLEXPORT_TEST(testExportImageProperties, "HTMLImage.odt")
+CPPUNIT_TEST_FIXTURE(HtmlExportTest, testExportImageProperties)
 {
+createSwDoc("HTMLImage.odt");
+save(mpFilter);
 htmlDocUniquePtr pDoc = parseHtml(maTempFile);
 CPPUNIT_ASSERT(pDoc);
 
@@ -475,8 +476,10 @@ DECLARE_HTMLEXPORT_TEST(testExportImageProperties, 
"HTMLImage.odt")
 assertXPath(pDoc, "/html/body/p/a/font/img"_ostr, "usemap"_ostr, "#map1");
 }
 
-DECLARE_HTMLEXPORT_TEST(testExportCheckboxRadioButtonState, 
"checkbox-radiobutton.doc")
+CPPUNIT_TEST_FIXTURE(HtmlExportTest, testExportCheckboxRadioButtonState)
 {
+createSwDoc("checkbox-radiobutton.doc");
+save(mpFilter);
 htmlDocUniquePtr pDoc = parseHtml(maTempFile);
 CPPUNIT_ASSERT(pDoc);
 
@@ -495,8 +498,10 @@ 
DECLARE_HTMLEXPORT_TEST(testExportCheckboxRadioButtonState, "checkbox-radiobutto
 assertXPathNoAttribute(pDoc, "/html/body/form/p[4]/input"_ostr, 
"checked"_ostr);
 }
 
-DECLARE_HTMLEXPORT_TEST(testExportUrlEncoding, "tdf76291.odt")
+CPPUNIT_TEST_FIXTURE(HtmlExportTest, testExportUrlEncoding)
 {
+createSwDoc("tdf76291.odt");
+save(mpFilter);
 htmlDocUniquePtr pDoc = parseHtml(maTempFile);
 CPPUNIT_ASSERT(pDoc);
 
@@ -505,8 +510,10 @@ DECLARE_HTMLEXPORT_TEST(testExportUrlEncoding, 
"tdf76291.odt")
 
"http://www.youtube.com/results?search_query=%E7%B2%B5%E8%AA%9Emv&sm=12";);
 }
 
-DECLARE_HTMLEXPORT_TEST(testExportInternalUrl, "tdf90905.odt")
+CPPUNIT_TEST_FIXTURE(HtmlExportTest, testExportInternalUrl)
 {
+createSwDoc("tdf90905.odt");
+save(mpFilter);
 htmlDocUniquePtr pDoc = parseHtml(maTempFile);
 CPPUNIT_ASSERT(pDoc);
 
@@ -515,8 +522,10 @@ DECLARE_HTMLEXPORT_TEST(testExportInternalUrl, 
"tdf90905.odt")
 assertXPath(pDoc, "/html/body/p[2]/a"_ostr, "href"_ostr, "#bookmark");
 }
 
-DECLARE_HTMLEXPORT_TEST(testExportImageBulletList, "tdf66822.odt")
+CPPUNIT_TEST_FIXTURE(HtmlExportTest, testExportImageBulletList)
 {
+createSwDoc("tdf66822.odt");
+save(mpFilter);
 htmlDocUniquePtr pDoc = parseHtml(maTempFile);
 CPPUNIT_ASSERT(pDoc);
 
@@ -553,16 +562,20 @@ DECLARE_HTMLEXPORT_TEST(testExportImageBulletList, 
"tdf66822.odt")
 "4NCjwvc3ZnPg0K);");
 }
 
-DECLARE_HTMLEXPORT_TEST(testTdf83890, "tdf83890.odt")
+CPPUNIT_TEST_FIXTURE(HtmlExportTest, testTdf83890)
 {
+createSwDoc("tdf83890.odt");
+save(mpFilter);
 htmlDocUniquePtr pDoc = parseHtml(maTempFile);
 CPPUNIT_ASSERT(pDoc);
 
 assertXPath(pDoc, "/html/body/ol[2]/ol"_ostr, "start"_ostr, "2");
 }
 
-DECLARE_HTMLEXPORT_TEST(testExtbChars, "extb.html")
+CPPUNIT_TEST_FIXTURE(HtmlExportTest, testExtbChars)
 {
+createSwWebDoc("extb.html");
+save(mpFilter);
 OUString aExpected(u"\U00024b62"_ustr);
 // Assert that UTF8 encoded non-BMP Unicode character is correct
 uno::Reference xTextRange1 = getRun(getParagraph(1), 1);
@@ -573,8 +586,10 @@ DECLARE_HTMLEXPORT_TEST(testExtbChars, "extb.html")
 CPPUNIT_ASSERT_EQUAL(aExpected, xTextRange2->getString());
 }
 
-DECLARE_HTMLEXPORT_TEST(testNormalImageExport, "textAndImage.docx")
+CPPUNIT_TEST_FIXTURE(HtmlExportTest, testNormalImageExport)
 {
+createSwDoc("textAndImage.docx");
+save(mpFilter);
 htmlDocUniquePtr pDoc = parseHtml(maTempFile);
 CPPUNIT_ASSERT(pDoc);
 
@@ -992,8 +1007,10 @@ CPPUNIT_TEST_FIXTURE(HtmlExportTes

core.git: Branch 'libreoffice-24-2' - basegfx/source include/basegfx

2024-03-27 Thread Noel Grandin (via logerrit)
 basegfx/source/polygon/b2dpolygontools.cxx  |   51 ++--
 include/basegfx/polygon/b2dpolygontools.hxx |2 -
 2 files changed, 13 insertions(+), 40 deletions(-)

New commits:
commit e3d3581b327fd201d77f63a71fad52a52b53842f
Author: Noel Grandin 
AuthorDate: Tue Mar 26 13:35:53 2024 +0200
Commit: Xisco Fauli 
CommitDate: Wed Mar 27 09:23:13 2024 +0100

tdf#159805 Printing line style dotted lines (horizontal) turns into dashes.

I could not find a good place to distinguish between the dragging
visualisation (where we could safely use approximation), and the
non-dragging case, so just revert.

Revert
commit 9f4ccc63346b26d8d774b22124da0842ef18e0bc
Author: Noel Grandin 
Date:   Wed Sep 13 14:27:02 2023 +0200
tdf#156995 speed up dragging complex group objects

Change-Id: I2ba52f07ea7299643c0f145459038e368a17dea8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165332
Tested-by: Jenkins
Reviewed-by: Noel Grandin 
(cherry picked from commit fc5d84681d5d898b56171a9622294ecb23623bfd)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165320
Reviewed-by: Xisco Fauli 

diff --git a/basegfx/source/polygon/b2dpolygontools.cxx 
b/basegfx/source/polygon/b2dpolygontools.cxx
index b3f43669ddf4..d33c752008b4 100644
--- a/basegfx/source/polygon/b2dpolygontools.cxx
+++ b/basegfx/source/polygon/b2dpolygontools.cxx
@@ -475,7 +475,7 @@ namespace basegfx::utils
 return fRetval;
 }
 
-double getLength(const B2DPolygon& rCandidate, bool 
bApproximateBezierLength)
+double getLength(const B2DPolygon& rCandidate)
 {
 double fRetval(0.0);
 const sal_uInt32 nPointCount(rCandidate.count());
@@ -486,45 +486,18 @@ namespace basegfx::utils
 
 if(rCandidate.areControlPointsUsed())
 {
-if (bApproximateBezierLength)
-{
-B2DPoint aStartPoint = rCandidate.getB2DPoint(0);
-
-for(sal_uInt32 a(0); a < nEdgeCount; a++)
-{
-// An approximate length of a cubic Bezier curve 
is the average
-// of its chord length and the sum of the lengths 
of its control net sides.
-const sal_uInt32 nNextIndex((a + 1) % nPointCount);
-const B2DPoint& aControlPoint1 = 
rCandidate.getNextControlPoint(a);
-const B2DPoint& aControlPoint2 = 
rCandidate.getPrevControlPoint(nNextIndex);
-const B2DPoint& aEndPoint = 
rCandidate.getB2DPoint(nNextIndex);
-
-double chord_length = B2DVector(aEndPoint - 
aStartPoint).getLength();
-double control_net_length = B2DVector(aStartPoint 
- aControlPoint1).getLength()
-+ B2DVector(aControlPoint2 - 
aControlPoint1).getLength()
-+ B2DVector(aEndPoint - 
aControlPoint2).getLength();
-double approximate_arc_length = 
(control_net_length + chord_length) / 2;
-
-fRetval += approximate_arc_length;
-aStartPoint = aEndPoint;
-}
+B2DCubicBezier aEdge;
+aEdge.setStartPoint(rCandidate.getB2DPoint(0));
 
-}
-else
+for(sal_uInt32 a(0); a < nEdgeCount; a++)
 {
-B2DCubicBezier aEdge;
-aEdge.setStartPoint(rCandidate.getB2DPoint(0));
-
-for(sal_uInt32 a(0); a < nEdgeCount; a++)
-{
-const sal_uInt32 nNextIndex((a + 1) % nPointCount);
-
aEdge.setControlPointA(rCandidate.getNextControlPoint(a));
-
aEdge.setControlPointB(rCandidate.getPrevControlPoint(nNextIndex));
-
aEdge.setEndPoint(rCandidate.getB2DPoint(nNextIndex));
+const sal_uInt32 nNextIndex((a + 1) % nPointCount);
+
aEdge.setControlPointA(rCandidate.getNextControlPoint(a));
+
aEdge.setControlPointB(rCandidate.getPrevControlPoint(nNextIndex));
+aEdge.setEndPoint(rCandidate.getB2DPoint(nNextIndex));
 
-fRetval += aEdge.getLength();
-aEdge.setStartPoint(aEdge.getEndPoint());
-}
+fRetval += aEdge.getLength();
+aEdge.setStartPoint(aEdge.getEndPoint());
 }
 }
 else
@@ -1259,9 +1232,9 @@ namespace basegfx::utils
 // precalculate maximal acceptable length of candidate polygon 
ass

core.git: chart2/inc chart2/IwyuFilter_chart2.yaml chart2/qa chart2/source

2024-03-27 Thread Rafał Dobrakowski (via logerrit)
 chart2/IwyuFilter_chart2.yaml   |  
 13 ---
 chart2/inc/ChartTypeManager.hxx |  
  3 -
 chart2/qa/extras/chart2export.cxx   |  
  1 
 chart2/qa/extras/chart2export3.cxx  |  
  8 
 chart2/qa/extras/chart2geometry.cxx |  
  2 -
 chart2/qa/extras/chart2import.cxx   |  
  1 
 chart2/qa/extras/uichart.cxx|  
  1 
 chart2/source/controller/accessibility/AccessibleBase.cxx   |  
  3 -
 chart2/source/controller/accessibility/AccessibleChartElement.cxx   |  
  6 ---
 chart2/source/controller/accessibility/AccessibleChartView.cxx  |  
  3 -
 chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx   |  
  3 -
 chart2/source/controller/chartapiwrapper/GridWrapper.cxx|  
  1 
 chart2/source/controller/chartapiwrapper/MinMaxLineWrapper.cxx  |  
  1 
 chart2/source/controller/chartapiwrapper/UpDownBarWrapper.cxx   |  
  1 
 chart2/source/controller/chartapiwrapper/UpDownBarWrapper.hxx   |  
  1 
 chart2/source/controller/chartapiwrapper/WrappedGapwidthProperty.cxx|  
  1 
 chart2/source/controller/chartapiwrapper/WrappedNumberFormatProperty.cxx|  
  1 
 chart2/source/controller/chartapiwrapper/WrappedSceneProperty.cxx   |  
  1 
 chart2/source/controller/chartapiwrapper/WrappedSeriesOrDiagramProperty.hxx |  
  1 
 chart2/source/controller/chartapiwrapper/WrappedSplineProperties.cxx|  
  1 
 chart2/source/controller/chartapiwrapper/WrappedStockProperties.cxx |  
  1 
 chart2/source/controller/dialogs/ChartTypeDialogController.cxx  |  
  1 
 chart2/source/controller/dialogs/DataBrowserModel.cxx   |  
  1 
 chart2/source/controller/dialogs/DialogModel.cxx|  
  1 
 chart2/source/controller/dialogs/DialogModel.hxx|  
  2 -
 chart2/source/controller/dialogs/ObjectNameProvider.cxx |  
  3 -
 chart2/source/controller/dialogs/TitleDialogData.cxx|  
  1 
 chart2/source/controller/dialogs/dlg_DataEditor.cxx |  
  1 
 chart2/source/controller/dialogs/dlg_DataSource.cxx |  
  1 
 chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx|  
  4 --
 chart2/source/controller/dialogs/res_LegendPosition.cxx |  
  1 
 chart2/source/controller/dialogs/tp_3D_SceneAppearance.cxx  |  
  1 
 chart2/source/controller/dialogs/tp_3D_SceneGeometry.cxx|  
  1 
 chart2/source/controller/dialogs/tp_3D_SceneIllumination.cxx|  
  1 
 chart2/source/controller/dialogs/tp_ChartType.cxx   |  
  2 -
 chart2/source/controller/dialogs/tp_DataSource.cxx  |  
  1 
 chart2/source/controller/dialogs/tp_LegendPosition.hxx  |  
  1 
 chart2/source/controller/dialogs/tp_Wizard_TitlesAndObjects.cxx |  
  1 
 chart2/source/controller/drawinglayer/DrawViewWrapper.cxx   |  
  1 
 chart2/source/controller/drawinglayer/ViewElementListProvider.cxx   |  
  1 
 chart2/source/controller/inc/AccessibleBase.hxx |  
  1 
 chart2/source/controller/inc/AccessibleTextHelper.hxx   |  
  1 
 chart2/source/controller/inc/TabPageNotifiable.hxx  |  
  2 +
 chart2/source/controller/inc/TitleDialogData.hxx|  
  1 
 chart2/source/controller/itemsetwrapper/AxisItemConverter.cxx   |  
  1 
 chart2/source/controller/itemsetwrapper/DataPointItemConverter.cxx  |  
  3 -
 chart2/source/controller/itemsetwrapper/DataTableItemConverter.cxx  |  
 17 --
 chart2/source/controller/itemsetwrapper/MultipleChartConverters.cxx |  
  1 
 chart2/source/controller/itemsetwrapper/SeriesOptionsItemConverter.cxx  |  
  2 -
 chart2/source/controller/itemsetwrapper/TextLabelItemConverter.cxx  |  
  3 -
 chart2/source/controller/main/ChartController.cxx   |  
  8 
 chart2/source/controller/main/ChartController_Insert.cxx|  
  2 -
 chart2/source/controller/main/ChartController_Position.cxx  |  
  2 -
 chart2/source/controller/main/ChartController_Properties.cxx|  
  4 --
 chart2/source/controller/main/ChartController_TextEdit.cxx  |  
  1 
 chart2/source/controller/main/ChartController_Tools.cxx |  
  2 -
 chart2/source/controller/main/ChartController_Window.cxx|  
  2 -
 chart2/source/controller/main/ChartModelClone.cx

If your build starts to fail due to missing ETIME (was: core.git: sal/osl)

2024-03-27 Thread Stephan Bergmann
FYI, if your (Unix-like-platform) build starts to fail (in 
sal/osl/unx/uunxapi.cxx) due to missing ETIME, please proceed as 
indicated preceding the "SEE HERE" below:


On 3/26/24 14:24, Stephan Bergmann (via logerrit) wrote:

  sal/osl/unx/system.hxx |   21 -
  1 file changed, 21 deletions(-)

New commits:
commit 1590e2c359fd3b506b8721d99a0054a0bd4dd200
Author: Stephan Bergmann 
AuthorDate: Tue Mar 26 09:37:43 2024 +0100
Commit: Stephan Bergmann 
CommitDate: Tue Mar 26 14:24:06 2024 +0100

 No need to define ETIME
 
 (which is an obsolescent XSI-STREAMS Posix extension).  It's only use is in the

 big switch in UnixErrnoString in sal/osl/unx/uunxapi.cxx, so if any 
platform
 should actually lack it, we should rather #ifdef its use there than 
introduce it
 here.


^^^ SEE HERE ^^^


 (This started to cause
 
 > sal/osl/unx/system.hxx:190:12: error: macro 'ETIME' has been marked as deprecated: ETIME is deprecated in ISO C++ [-Werror,-Wdeprecated-pragma]

 >   190 | #   ifndef ETIME
 >   |^
 > ~/llvm/inst/bin/../include/c++/v1/cerrno:51:67: note: macro marked 
'deprecated' here
 >51 | #  pragma clang deprecated(ETIME, "ETIME is deprecated in ISO 
C++")
 >   |  
 ^
 
 with recent LLVM 19 trunk on macOS now.)
 
 Change-Id: I01a586f08a4d9e4643c797fce5ce53c5f3ce8b81

 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165303
 Tested-by: Jenkins
 Reviewed-by: Stephan Bergmann 

diff --git a/sal/osl/unx/system.hxx b/sal/osl/unx/system.hxx
index 5f5a16aa3671..1337913f7abb 100644
--- a/sal/osl/unx/system.hxx
+++ b/sal/osl/unx/system.hxx
@@ -47,10 +47,6 @@
  #   define  NO_PTHREAD_PRIORITY
  #   define  PTHREAD_SIGACTION   pthread_sigaction
  
-#   ifndef ETIME

-#   define ETIME ETIMEDOUT
-#   endif
-
  #endif
  
  #ifdef HAIKU

@@ -71,9 +67,6 @@
  #   define  NO_PTHREAD_RTL
  #   define  PTHREAD_SIGACTION   pthread_sigaction
  
-#   ifndef ETIME

-#   define ETIME ETIMEDOUT
-#   endif
  #   define SIGIOT SIGABRT
  #   define SOCK_RDM 0
  //  hack: Haiku defines SOL_SOCKET as -1, but this makes GCC complain about
@@ -104,9 +97,6 @@
  #endif
  
  #ifdef FREEBSD

-#   ifndef ETIME
-#   define ETIME ETIMEDOUT
-#   endif
  #   include 
  #   include 
  #   include 
@@ -128,7 +118,6 @@
  #endif
  
  #ifdef OPENBSD

-#   define  ETIME ETIMEDOUT
  #   include 
  #   include 
  #   include 
@@ -152,7 +141,6 @@
  #endif
  
  #if defined(DRAGONFLY) || defined(NETBSD)

-#   define  ETIME ETIMEDOUT
  #   include 
  #   include 
  #   include 
@@ -187,9 +175,6 @@
  #define TimeValue CFTimeValue  // Do not conflict with TimeValue in 
sal/inc/osl/time.h
  #include 
  #undef TimeValue
-#   ifndef ETIME
-#   define  ETIME ETIMEDOUT
-#   endif
  #   include 
  #   include 
  #   include 
@@ -208,9 +193,6 @@ int macxp_resolveAlias(char *path, int buflen);
  #endif
  
  #ifdef IOS

-#   ifndef ETIME
-#   define  ETIME ETIMEDOUT
-#   endif
  #   include 
  #   include 
  #   include 
@@ -225,9 +207,6 @@ int macxp_resolveAlias(char *path, int buflen);
  #endif
  
  #ifdef EMSCRIPTEN

-#   ifndef ETIME
-#   define  ETIME ETIMEDOUT
-#   endif
  #   include 
  #   include 
  #   include 




core.git: Branch 'libreoffice-7-6' - svgio/inc svgio/qa svgio/source

2024-03-27 Thread Xisco Fauli (via logerrit)
 svgio/inc/svgstyleattributes.hxx  |9 +++---
 svgio/qa/cppunit/SvgImportTest.cxx|   14 ++
 svgio/qa/cppunit/data/tdf160373.svg   |   14 ++
 svgio/source/svgreader/svgstyleattributes.cxx |   36 +++---
 4 files changed, 55 insertions(+), 18 deletions(-)

New commits:
commit d6d502f41346b021d369c27c9ed969d75d680986
Author: Xisco Fauli 
AuthorDate: Tue Mar 26 14:13:21 2024 +0100
Commit: Xisco Fauli 
CommitDate: Wed Mar 27 08:51:49 2024 +0100

tdf#160373: Iterate over all parents to check whether it's a clipPath 
content

Change-Id: I383ec264e4c88ebcee2ae6a839b762bba8abfc12
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165347
Tested-by: Jenkins
Reviewed-by: Xisco Fauli 
(cherry picked from commit 261985b6936ede212852e806c4b140ea634a5af3)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165318
Reviewed-by: Stéphane Guillou 

diff --git a/svgio/inc/svgstyleattributes.hxx b/svgio/inc/svgstyleattributes.hxx
index 4e55ab3fc644..1b5db09eb687 100644
--- a/svgio/inc/svgstyleattributes.hxx
+++ b/svgio/inc/svgstyleattributes.hxx
@@ -241,10 +241,6 @@ namespace svgio::svgreader
 
 mutable std::vector maResolvingParent;
 
-// defines if this attributes are part of a ClipPath. If yes,
-// rough geometry will be created on decomposition by patching
-// values for fill, stroke, strokeWidth and others
-boolmbIsClipPathContent : 1;
 
 // #121221# Defines if evtl. an empty array *is* set
 boolmbStrokeDasharraySet : 1;
@@ -316,6 +312,11 @@ namespace svgio::svgreader
 SvgStyleAttributes(SvgNode& rOwner);
 ~SvgStyleAttributes();
 
+// Check if this attribute is part of a ClipPath.
+// If so, rough geometry will be created on decomposition by 
patching
+// values for fill, stroke, strokeWidth and others
+bool isClipPathContent() const;
+
 /// fill content
 bool isFillSet() const; // #i125258# ask if fill is a direct hard 
attribute (no hierarchy)
 const basegfx::BColor* getFill() const;
diff --git a/svgio/qa/cppunit/SvgImportTest.cxx 
b/svgio/qa/cppunit/SvgImportTest.cxx
index 90b62bcce7ff..262c5cadcc68 100644
--- a/svgio/qa/cppunit/SvgImportTest.cxx
+++ b/svgio/qa/cppunit/SvgImportTest.cxx
@@ -441,6 +441,20 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf156168)
 assertXPath(pDocument, "/primitive2D/transform/polypolygonstroke[4]/line", 
"color", "#00ff00");
 }
 
+CPPUNIT_TEST_FIXTURE(Test, testTdf160373)
+{
+Primitive2DSequence aSequence = 
parseSvg(u"/svgio/qa/cppunit/data/tdf160373.svg");
+CPPUNIT_ASSERT_EQUAL(1, static_cast(aSequence.getLength()));
+
+drawinglayer::Primitive2dXmlDump dumper;
+xmlDocUniquePtr pDocument = dumper.dumpAndParse(aSequence);
+
+CPPUNIT_ASSERT (pDocument);
+
+// Without the fix in place, nothing would be displayed
+assertXPath(pDocument, 
"/primitive2D/transform/transform/polypolygoncolor", "color", "#ff");
+}
+
 CPPUNIT_TEST_FIXTURE(Test, testTdf129356)
 {
 Primitive2DSequence aSequence = 
parseSvg(u"/svgio/qa/cppunit/data/tdf129356.svg");
diff --git a/svgio/qa/cppunit/data/tdf160373.svg 
b/svgio/qa/cppunit/data/tdf160373.svg
new file mode 100644
index ..73b18bb2ea61
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf160373.svg
@@ -0,0 +1,14 @@
+
+
+
+  
+
+  
+
+  
+
+
+
+
diff --git a/svgio/source/svgreader/svgstyleattributes.cxx 
b/svgio/source/svgreader/svgstyleattributes.cxx
index b0fd42303976..826f00b6687a 100644
--- a/svgio/source/svgreader/svgstyleattributes.cxx
+++ b/svgio/source/svgreader/svgstyleattributes.cxx
@@ -1292,18 +1292,9 @@ namespace svgio::svgreader
 maBaselineShift(BaselineShift::Baseline),
 maBaselineShiftNumber(0),
 maDominantBaseline(DominantBaseline::Auto),
-maResolvingParent(31, 0),
-mbIsClipPathContent(SVGToken::ClipPathNode == mrOwner.getType()),
+maResolvingParent(32, 0),
 mbStrokeDasharraySet(false)
 {
-const SvgStyleAttributes* pParentStyle = getParentStyle();
-if(!mbIsClipPathContent)
-{
-if(pParentStyle)
-{
-mbIsClipPathContent = pParentStyle->mbIsClipPathContent;
-}
-}
 }
 
 SvgStyleAttributes::~SvgStyleAttributes()
@@ -1995,10 +1986,27 @@ namespace svgio::svgreader
 }
 }
 
+bool SvgStyleAttributes::isClipPathContent() const
+{
+if (SVGToken::ClipPathNode == mrOwner.getType())
+return true;
+
+const SvgStyleAttributes* pSvgStyleAttributes = getParentStyle();
+if (pSvgStyleAttributes && maResolvingParent[31] < 
nStyleDepth

core.git: Branch 'libreoffice-24-2' - svgio/inc svgio/qa svgio/source

2024-03-27 Thread Xisco Fauli (via logerrit)
 svgio/inc/svgstyleattributes.hxx  |9 +++---
 svgio/qa/cppunit/SvgImportTest.cxx|   14 ++
 svgio/qa/cppunit/data/tdf160373.svg   |   14 ++
 svgio/source/svgreader/svgstyleattributes.cxx |   36 +++---
 4 files changed, 55 insertions(+), 18 deletions(-)

New commits:
commit ea3d61886a2b420b985bed162c28b94698283c76
Author: Xisco Fauli 
AuthorDate: Tue Mar 26 14:13:21 2024 +0100
Commit: Xisco Fauli 
CommitDate: Wed Mar 27 08:51:39 2024 +0100

tdf#160373: Iterate over all parents to check whether it's a clipPath 
content

Change-Id: I383ec264e4c88ebcee2ae6a839b762bba8abfc12
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165347
Tested-by: Jenkins
Reviewed-by: Xisco Fauli 
(cherry picked from commit 261985b6936ede212852e806c4b140ea634a5af3)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165317
Reviewed-by: Stéphane Guillou 

diff --git a/svgio/inc/svgstyleattributes.hxx b/svgio/inc/svgstyleattributes.hxx
index bf921f8b1bb0..c5c095462f3d 100644
--- a/svgio/inc/svgstyleattributes.hxx
+++ b/svgio/inc/svgstyleattributes.hxx
@@ -243,10 +243,6 @@ namespace svgio::svgreader
 
 mutable std::vector maResolvingParent;
 
-// defines if this attributes are part of a ClipPath. If yes,
-// rough geometry will be created on decomposition by patching
-// values for fill, stroke, strokeWidth and others
-boolmbIsClipPathContent : 1;
 
 // #121221# Defines if evtl. an empty array *is* set
 boolmbStrokeDasharraySet : 1;
@@ -318,6 +314,11 @@ namespace svgio::svgreader
 SvgStyleAttributes(SvgNode& rOwner);
 ~SvgStyleAttributes();
 
+// Check if this attribute is part of a ClipPath.
+// If so, rough geometry will be created on decomposition by 
patching
+// values for fill, stroke, strokeWidth and others
+bool isClipPathContent() const;
+
 /// fill content
 bool isFillSet() const; // #i125258# ask if fill is a direct hard 
attribute (no hierarchy)
 const basegfx::BColor* getFill() const;
diff --git a/svgio/qa/cppunit/SvgImportTest.cxx 
b/svgio/qa/cppunit/SvgImportTest.cxx
index 326e8f38ffb6..c7188dedd7c0 100644
--- a/svgio/qa/cppunit/SvgImportTest.cxx
+++ b/svgio/qa/cppunit/SvgImportTest.cxx
@@ -441,6 +441,20 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf156168)
 assertXPath(pDocument, 
"/primitive2D/transform/polypolygonstroke[4]/line"_ostr, "color"_ostr, 
"#00ff00");
 }
 
+CPPUNIT_TEST_FIXTURE(Test, testTdf160373)
+{
+Primitive2DSequence aSequence = 
parseSvg(u"/svgio/qa/cppunit/data/tdf160373.svg");
+CPPUNIT_ASSERT_EQUAL(1, static_cast(aSequence.getLength()));
+
+drawinglayer::Primitive2dXmlDump dumper;
+xmlDocUniquePtr pDocument = dumper.dumpAndParse(aSequence);
+
+CPPUNIT_ASSERT (pDocument);
+
+// Without the fix in place, nothing would be displayed
+assertXPath(pDocument, 
"/primitive2D/transform/transform/polypolygoncolor"_ostr, "color"_ostr, 
"#ff");
+}
+
 CPPUNIT_TEST_FIXTURE(Test, testTdf129356)
 {
 Primitive2DSequence aSequence = 
parseSvg(u"/svgio/qa/cppunit/data/tdf129356.svg");
diff --git a/svgio/qa/cppunit/data/tdf160373.svg 
b/svgio/qa/cppunit/data/tdf160373.svg
new file mode 100644
index ..73b18bb2ea61
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf160373.svg
@@ -0,0 +1,14 @@
+
+
+
+  
+
+  
+
+  
+
+
+
+
diff --git a/svgio/source/svgreader/svgstyleattributes.cxx 
b/svgio/source/svgreader/svgstyleattributes.cxx
index 19070989bb55..58bdb9add84b 100644
--- a/svgio/source/svgreader/svgstyleattributes.cxx
+++ b/svgio/source/svgreader/svgstyleattributes.cxx
@@ -1287,18 +1287,9 @@ namespace svgio::svgreader
 maBaselineShift(BaselineShift::Baseline),
 maBaselineShiftNumber(0),
 maDominantBaseline(DominantBaseline::Auto),
-maResolvingParent(31, 0),
-mbIsClipPathContent(SVGToken::ClipPathNode == mrOwner.getType()),
+maResolvingParent(32, 0),
 mbStrokeDasharraySet(false)
 {
-const SvgStyleAttributes* pParentStyle = getParentStyle();
-if(!mbIsClipPathContent)
-{
-if(pParentStyle)
-{
-mbIsClipPathContent = pParentStyle->mbIsClipPathContent;
-}
-}
 }
 
 SvgStyleAttributes::~SvgStyleAttributes()
@@ -2005,10 +1996,27 @@ namespace svgio::svgreader
 }
 }
 
+bool SvgStyleAttributes::isClipPathContent() const
+{
+if (SVGToken::ClipPathNode == mrOwner.getType())
+return true;
+
+const SvgStyleAttributes* pSvgStyleAttributes = getParentStyle();
+if (pSvgStyleAttributes && maResolvingPar

Re: Adding support for the Common Print Dialog Backends (CPDB)

2024-03-27 Thread Michael Weghorn

On 2024-03-26 18:26, Till Kamppeter wrote:
This is no problem to keep it optional, so that the packager/admin/user 
can choose, at least at build time, perhaps even at run time.


Great.

But note that PPD files and classic CUPS drivers are deprecated. CUPS 
3.x, getting completeky released near the end of this year will not 
support PPD files and addable driver filters any more, but exclusively 
support driverless IPP printers. For legacy (non-driverless) we have 
introduced the concept of Printer Applications, software emulations of 
driverless IPP printers.


This requires changes on the print dialog:

- List IPP print destinations, independent whether there is a CUPS queue 
for them or not (if not, CUPS would create a temporary queue)
- Obtain printer capabilities and options via IPP, do not try to 
download the PPD file via CUPS or even try to directly access it in the 
file system.


This can be principally obtained by using the current CUPS APIs (the 
"Dest" ones, already available in libcups2 for several years). Also all 
PPD-related APIs will go away in libcups3.


The CPDB backend for CUPS is already completely updated to the new CUPS 
3.x realm and can actually be built with libcups3. This means with a 
CPDB-supporting print dialog we can smoothly transition from CUPS 2.x to 
CUPS 3.x without loss of functionality and without loss of access to any 
of the available print destinations.


Also the CPDB backend for CUPS is maintained by OpenPrinting, the 
maintainer of CUPS and is updated along with any future change on CUPS. 
So CPDB-supporting print dialogs will keep working in case of such a 
change, so the maintainers of the print dialogs do not have to keep pace 
with that.


So the CPDB option for the LibreOffice dialog will work with CUPS 3.x 
and future versions, the CUPS/PPD option requires updating by the 
maintainers of the LibreOffice dialog.


Thanks for the detailed description. Since printing is a critical 
feature for many users and the current CUPS/PPD API implementation has 
been used successfully for quite a long time now, I wouldn't feel 
comfortable unconditionally replacing it with the CPDB-based approach at 
this point in time. (So I'm glad that isn't the goal for the GSoc project.)


Of course, switching the default to the CPDB-based implementation and 
ultimately dropping the custom CUPS/PPD API implementation are things 
that can be considered at some point in the future, once the CPDB-based 
implementation has proven to be able to cover all relevant use cases and 
all relevant distros provide the libraries and printer applications,


(I remember that the CUPS PPD API has been deprecated for a long time, 
and the IPP-based API would have provided the necessary means to make 
everything work in theory. But at least in pre-printer-application 
times, the practical problem I saw years ago was that - even then new - 
printers weren't offering all of their functionality as IPP attributes, 
so still using the deprecated API was the only way to not lose that 
functionality. IIUC, printer applications are meant to bridge that gap now.)


So I am inviting you as GSoC mentor officially. To get access to all 
resources I do an invitation to the GSoC dashboard. Please watch out for 
an e-mail from Google and follow the instructions in it. If you do not 
feel comfortable to use these facilities, please tell me and I will do 
the official part.


Thanks! I've followed those instructions, am happy to co-mentor.


OpenPGP_signature.asc
Description: OpenPGP digital signature


Re: Adding support for the Common Print Dialog Backends (CPDB)

2024-03-27 Thread Heiko Tietze

On 26.03.24 6:26 PM, Till Kamppeter wrote:

This requires changes on the print dialog:

- List IPP print destinations, independent whether there is a CUPS queue for 
them or not (if not, CUPS would create a temporary queue)
- Obtain printer capabilities and options via IPP, do not try to download the 
PPD file via CUPS or even try to directly access it in the file system.

Our users are quite picky with the print dialog.

Most of the redesign was done by Daniel Silva for GSoC 2019 with numerous 
follow-up, see https://bugs.documentfoundation.org/show_bug.cgi?id=103309.


One of the discussion was whether the option to print odd/even pages from a 
range is important enough to be on the primary view (bug 127680). The CPDB does 
not have this option, as far I can see.


OpenPGP_signature.asc
Description: OpenPGP digital signature