[Libreoffice-commits] core.git: Branch 'feature/jsdialogs' - 15 commits - desktop/source include/vcl sc/inc sc/source sd/inc sd/source svx/source sw/inc sw/source vcl/inc vcl/jsdialog vcl/source
Szymon KÅos (via logerrit)
logerrit at kemper.freedesktop.org
Sun Mar 22 13:25:44 UTC 2020
desktop/source/lib/init.cxx | 40 +++++++++
include/vcl/jsdialog/jsdialogbuilder.hxx | 39 +++++++++
include/vcl/salvtables.hxx | 39 +++++++++
include/vcl/svapp.hxx | 3
include/vcl/vclmedit.hxx | 2
include/vcl/weld.hxx | 2
sc/inc/global.hxx | 4
sc/source/core/data/global.cxx | 24 -----
sc/source/core/data/validat.cxx | 7 +
sc/source/ui/app/inputhdl.cxx | 16 ++-
sc/source/ui/inc/tabvwsh.hxx | 6 +
sc/source/ui/vba/vbarange.cxx | 15 ++-
sc/source/ui/view/tabvwsh4.cxx | 5 -
sc/source/ui/view/tabvwsha.cxx | 2
sc/source/ui/view/tabvwshe.cxx | 32 ++++++-
sc/source/ui/view/viewfun2.cxx | 6 -
sd/inc/sdmod.hxx | 5 -
sd/source/ui/app/sdmod.cxx | 9 --
sd/source/ui/docshell/docshel3.cxx | 4
sd/source/ui/docshell/docshell.cxx | 2
sd/source/ui/inc/ViewShell.hxx | 5 +
sd/source/ui/view/viewshel.cxx | 10 ++
svx/source/dialog/srchdlg.cxx | 10 +-
sw/inc/view.hxx | 14 +--
sw/source/core/crsr/findtxt.cxx | 2
sw/source/uibase/uiview/view.cxx | 17 +---
vcl/jsdialog/jsdialogbuilder.cxx | 85 ++++++++++++++++++++-
vcl/source/app/salvtables.cxx | 125 +++++++++++++------------------
vcl/source/edit/vclmedit.cxx | 9 ++
vcl/source/window/builder.cxx | 10 +-
vcl/source/window/dialog.cxx | 2
vcl/source/window/layout.cxx | 2
32 files changed, 388 insertions(+), 165 deletions(-)
New commits:
commit 8bc6891e71b996c4713c784c9d599e71c26bc135
Author: Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Fri Mar 20 16:41:27 2020 +0100
Commit: Szymon Kłos <szymon.klos at collabora.com>
CommitDate: Fri Mar 20 16:41:27 2020 +0100
Deglobalize find & replace data in Impress
Change-Id: I16e914b4673e2aa80823d630306217b4cda50bad
diff --git a/sd/inc/sdmod.hxx b/sd/inc/sdmod.hxx
index 3196bafe07da..362691794a9e 100644
--- a/sd/inc/sdmod.hxx
+++ b/sd/inc/sdmod.hxx
@@ -33,7 +33,6 @@
#include <memory>
class SdOptions;
-class SvxSearchItem;
class EditFieldInfo;
class SdTransferable;
class SvNumberFormatter;
@@ -94,9 +93,6 @@ public:
bool GetWaterCan() const { return bWaterCan; }
void SetWaterCan( bool bWC ) { bWaterCan = bWC; }
- SvxSearchItem* GetSearchItem() { return pSearchItem.get(); }
- void SetSearchItem(std::unique_ptr<SvxSearchItem> pItem);
-
/** Return the virtual device that can be used for printer independent
layout.
@return
@@ -123,7 +119,6 @@ private:
SdOptions* pImpressOptions;
SdOptions* pDrawOptions;
- std::unique_ptr<SvxSearchItem> pSearchItem;
std::unique_ptr<SvNumberFormatter> pNumberFormatter;
tools::SvRef<SotStorage> xOptionStorage;
bool bWaterCan;
diff --git a/sd/source/ui/app/sdmod.cxx b/sd/source/ui/app/sdmod.cxx
index b55213c44ed2..8d80c8f1b058 100644
--- a/sd/source/ui/app/sdmod.cxx
+++ b/sd/source/ui/app/sdmod.cxx
@@ -37,7 +37,6 @@
#include <svtools/ehdl.hxx>
#include <svx/svxids.hrc>
-#include <svl/srchitem.hxx>
#include <svx/svxerr.hxx>
#include <svx/xmlsecctrl.hxx>
@@ -76,8 +75,6 @@ SdModule::SdModule(SfxObjectFactory* pFact1, SfxObjectFactory* pFact2 )
mpColorConfig(new svtools::ColorConfig)
{
SetName( "StarDraw" ); // Do not translate!
- pSearchItem.reset( new SvxSearchItem(SID_SEARCH_ITEM) );
- pSearchItem->SetAppFlag(SvxSearchApp::DRAW);
StartListening( *SfxGetpApp() );
SvxErrorHandler::ensure();
mpErrorHdl.reset( new SfxErrorHandler(RID_SD_ERRHDL, ErrCodeArea::Sd, ErrCodeArea::Sd, GetResLocale()) );
@@ -98,7 +95,6 @@ OUString SdResId(const char* pId)
// Dtor
SdModule::~SdModule()
{
- pSearchItem.reset();
pNumberFormatter.reset();
if (mbEventListenerAdded)
@@ -110,11 +106,6 @@ SdModule::~SdModule()
mpVirtualRefDevice.disposeAndClear();
}
-void SdModule::SetSearchItem(std::unique_ptr<SvxSearchItem> pItem)
-{
- pSearchItem = std::move(pItem);
-}
-
/// get notifications
void SdModule::Notify( SfxBroadcaster&, const SfxHint& rHint )
{
diff --git a/sd/source/ui/docshell/docshel3.cxx b/sd/source/ui/docshell/docshel3.cxx
index 8aab98e8dd65..2143771a147d 100644
--- a/sd/source/ui/docshell/docshel3.cxx
+++ b/sd/source/ui/docshell/docshel3.cxx
@@ -157,7 +157,7 @@ void DrawDocShell::Execute( SfxRequest& rReq )
{
const SvxSearchItem & rSearchItem = pReqArgs->Get(SID_SEARCH_ITEM);
- SD_MOD()->SetSearchItem(std::unique_ptr<SvxSearchItem>(static_cast<SvxSearchItem*>(rSearchItem.Clone())));
+ GetViewShell()->SetSearchItem(std::unique_ptr<SvxSearchItem>(static_cast<SvxSearchItem*>(rSearchItem.Clone())));
}
rReq.Done();
@@ -220,7 +220,7 @@ void DrawDocShell::Execute( SfxRequest& rReq )
{
const SvxSearchItem& rSearchItem = pReqArgs->Get(SID_SEARCH_ITEM);
- SD_MOD()->SetSearchItem(std::unique_ptr<SvxSearchItem>(static_cast<SvxSearchItem*>( rSearchItem.Clone() )));
+ GetViewShell()->SetSearchItem(std::unique_ptr<SvxSearchItem>(static_cast<SvxSearchItem*>( rSearchItem.Clone() )));
xFuSearch->SearchAndReplace(&rSearchItem);
}
}
diff --git a/sd/source/ui/docshell/docshell.cxx b/sd/source/ui/docshell/docshell.cxx
index 13e9dcd72771..8baae6075ee5 100644
--- a/sd/source/ui/docshell/docshell.cxx
+++ b/sd/source/ui/docshell/docshell.cxx
@@ -227,7 +227,7 @@ void DrawDocShell::GetState(SfxItemSet &rSet)
case SID_SEARCH_ITEM:
{
- rSet.Put( *SD_MOD()->GetSearchItem() );
+ rSet.Put( *GetViewShell()->GetSearchItem() );
}
break;
diff --git a/sd/source/ui/inc/ViewShell.hxx b/sd/source/ui/inc/ViewShell.hxx
index 57c2d1df78c6..070ff47333a3 100644
--- a/sd/source/ui/inc/ViewShell.hxx
+++ b/sd/source/ui/inc/ViewShell.hxx
@@ -417,6 +417,9 @@ public:
/// Allows starting or ending a graphic move or resize action.
void SetGraphicMm100Position(bool bStart, const Point& rPosition);
+ SvxSearchItem* GetSearchItem() { return mpSearchItem.get(); }
+ void SetSearchItem(std::unique_ptr<SvxSearchItem> pItem);
+
class Implementation;
protected:
@@ -546,6 +549,8 @@ private:
/** Create the rulers.
*/
void SetupRulers();
+
+ std::unique_ptr<SvxSearchItem> mpSearchItem;
};
SdrView* ViewShell::GetDrawView() const
diff --git a/sd/source/ui/view/viewshel.cxx b/sd/source/ui/view/viewshel.cxx
index 6a5afbc3d366..9bbbc423e934 100644
--- a/sd/source/ui/view/viewshel.cxx
+++ b/sd/source/ui/view/viewshel.cxx
@@ -87,6 +87,7 @@
#include <editeng/editview.hxx>
#include <editeng/editeng.hxx>
#include <svl/poolitem.hxx>
+#include <svl/srchitem.hxx>
#include <strings.hxx>
#include <sdmod.hxx>
#include <AccessibleDocumentViewBase.hxx>
@@ -137,12 +138,16 @@ SfxViewFrame* ViewShell::GetViewFrame() const
ViewShell::ViewShell( vcl::Window* pParentWindow, ViewShellBase& rViewShellBase)
: SfxShell(&rViewShellBase)
, mpParentWindow(pParentWindow)
+, mpSearchItem(new SvxSearchItem(SID_SEARCH_ITEM))
{
+ mpSearchItem->SetAppFlag(SvxSearchApp::DRAW);
construct();
}
ViewShell::~ViewShell()
{
+ mpSearchItem.reset();
+
// Keep the content window from accessing in its destructor the
// WindowUpdater.
if (mpContentWindow)
@@ -1575,6 +1580,11 @@ sd::Window* ViewShell::GetContentWindow() const
return mpContentWindow.get();
}
+void ViewShell::SetSearchItem(std::unique_ptr<SvxSearchItem> pItem)
+{
+ mpSearchItem = std::move(pItem);
+}
+
} // end of namespace sd
//===== ViewShellObjectBarFactory =============================================
commit 213dbcb71ecc4b23bb2b787a3e0b3cf07f3e21ed
Author: Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Fri Mar 20 15:21:17 2020 +0100
Commit: Szymon Kłos <szymon.klos at collabora.com>
CommitDate: Fri Mar 20 15:21:17 2020 +0100
Deglobalize find & replace data in Calc
Change-Id: I57d28b53ff1f5aa1bc578a52d250230f3c78ccab
diff --git a/sc/inc/global.hxx b/sc/inc/global.hxx
index cb0c522e30ad..d1d1e5ed86e1 100644
--- a/sc/inc/global.hxx
+++ b/sc/inc/global.hxx
@@ -466,7 +466,6 @@ struct ScImportParam
};
class ScDocShell;
-class SvxSearchItem;
class ScAutoFormat;
class LegacyFuncCollection;
class ScUnoAddInCollection;
@@ -501,7 +500,6 @@ namespace utl {
class ScGlobal
{
- static SvxSearchItem* pSearchItem;
static ScAutoFormat* pAutoFormat;
static std::atomic<LegacyFuncCollection*> pLegacyFuncCollection;
static std::atomic<ScUnoAddInCollection*> pAddInCollection;
@@ -555,8 +553,6 @@ public:
static const OUString& GetClipDocName();
static void SetClipDocName( const OUString& rNew );
- SC_DLLPUBLIC static const SvxSearchItem& GetSearchItem();
- SC_DLLPUBLIC static void SetSearchItem( const SvxSearchItem& rNew );
SC_DLLPUBLIC static ScAutoFormat* GetAutoFormat();
SC_DLLPUBLIC static ScAutoFormat* GetOrCreateAutoFormat();
static void ClearAutoFormat(); //BugId 54209
diff --git a/sc/source/core/data/global.cxx b/sc/source/core/data/global.cxx
index aed73d93b3bd..27cd2af9cf25 100644
--- a/sc/source/core/data/global.cxx
+++ b/sc/source/core/data/global.cxx
@@ -68,7 +68,6 @@
#include <docsh.hxx>
tools::SvRef<ScDocShell> ScGlobal::xDrawClipDocShellRef;
-SvxSearchItem* ScGlobal::pSearchItem = nullptr;
ScAutoFormat* ScGlobal::pAutoFormat = nullptr;
std::atomic<LegacyFuncCollection*> ScGlobal::pLegacyFuncCollection(nullptr);
std::atomic<ScUnoAddInCollection*> ScGlobal::pAddInCollection(nullptr);
@@ -210,28 +209,6 @@ bool ScGlobal::CheckWidthInvalidate( bool& bNumFormatChanged,
);
}
-const SvxSearchItem& ScGlobal::GetSearchItem()
-{
- assert(!bThreadedGroupCalcInProgress);
- if (!pSearchItem)
- {
- pSearchItem = new SvxSearchItem( SID_SEARCH_ITEM );
- pSearchItem->SetAppFlag( SvxSearchApp::CALC );
- }
- return *pSearchItem;
-}
-
-void ScGlobal::SetSearchItem( const SvxSearchItem& rNew )
-{
- assert(!bThreadedGroupCalcInProgress);
- // FIXME: An assignment operator would be nice here
- delete pSearchItem;
- pSearchItem = static_cast<SvxSearchItem*>(rNew.Clone());
-
- pSearchItem->SetWhich( SID_SEARCH_ITEM );
- pSearchItem->SetAppFlag( SvxSearchApp::CALC );
-}
-
void ScGlobal::ClearAutoFormat()
{
assert(!bThreadedGroupCalcInProgress);
@@ -541,7 +518,6 @@ void ScGlobal::Clear()
theAddInAsyncTbl.clear();
ExitExternalFunc();
ClearAutoFormat();
- DELETEZ(pSearchItem);
delete pLegacyFuncCollection.load(); pLegacyFuncCollection = nullptr;
delete pAddInCollection.load(); pAddInCollection = nullptr;
DELETEZ(pUserList);
diff --git a/sc/source/ui/inc/tabvwsh.hxx b/sc/source/ui/inc/tabvwsh.hxx
index e09d1ceb93c4..10c1f6ce5b8f 100644
--- a/sc/source/ui/inc/tabvwsh.hxx
+++ b/sc/source/ui/inc/tabvwsh.hxx
@@ -168,6 +168,9 @@ private:
bool mbInSwitch;
OUString maName;
OUString maScope;
+
+ SvxSearchItem* pSearchItem;
+
private:
void Construct( TriState nForceDesignMode );
@@ -403,6 +406,9 @@ public:
void InitFormEditData();
void ClearFormEditData();
ScFormEditData* GetFormEditData() { return mpFormEditData.get(); }
+
+ const SvxSearchItem& GetSearchItem();
+ void SetSearchItem( const SvxSearchItem& rNew );
};
#endif
diff --git a/sc/source/ui/vba/vbarange.cxx b/sc/source/ui/vba/vbarange.cxx
index d3bdf3a59796..1820a97d1643 100644
--- a/sc/source/ui/vba/vbarange.cxx
+++ b/sc/source/ui/vba/vbarange.cxx
@@ -3037,7 +3037,11 @@ ScVbaRange::Replace( const OUString& What, const OUString& Replacement, const un
OUString sWhat = VBAToRegexp( What);
// #TODO #FIXME SearchFormat & ReplacesFormat are not processed
// What do we do about MatchByte.. we don't seem to support that
- const SvxSearchItem& globalSearchOptions = ScGlobal::GetSearchItem();
+ ScTabViewShell* pViewShell = static_cast<ScTabViewShell*>(SfxViewShell::Current());
+ if (!pViewShell)
+ return true;
+
+ const SvxSearchItem& globalSearchOptions = pViewShell->GetSearchItem();
SvxSearchItem newOptions( globalSearchOptions );
uno::Reference< util::XReplaceable > xReplace( mxRange, uno::UNO_QUERY );
@@ -3089,7 +3093,7 @@ ScVbaRange::Replace( const OUString& What, const OUString& Replacement, const un
xDescriptor->setPropertyValue( SC_UNO_SRCHCASE, uno::makeAny( bMatchCase ) );
}
- ScGlobal::SetSearchItem( newOptions );
+ pViewShell->SetSearchItem( newOptions );
// ignore MatchByte for the moment, it's not supported in
// OOo.org afaik
@@ -3144,7 +3148,10 @@ ScVbaRange::Find( const uno::Any& What, const uno::Any& After, const uno::Any& L
OUString sSearch = VBAToRegexp( sWhat );
- const SvxSearchItem& globalSearchOptions = ScGlobal::GetSearchItem();
+ ScTabViewShell* pViewShell = static_cast<ScTabViewShell*>(SfxViewShell::Current());
+ if (!pViewShell)
+ return uno::Reference< excel::XRange >();
+ const SvxSearchItem& globalSearchOptions = pViewShell->GetSearchItem();
SvxSearchItem newOptions( globalSearchOptions );
uno::Reference< util::XSearchable > xSearch( mxRange, uno::UNO_QUERY );
@@ -3254,7 +3261,7 @@ ScVbaRange::Find( const uno::Any& What, const uno::Any& After, const uno::Any& L
// SearchFormat
// ignore
- ScGlobal::SetSearchItem( newOptions );
+ pViewShell->SetSearchItem( newOptions );
uno::Reference< uno::XInterface > xInterface = xStartCell.is() ? xSearch->findNext( xStartCell, xDescriptor) : xSearch->findFirst( xDescriptor );
uno::Reference< table::XCellRange > xCellRange( xInterface, uno::UNO_QUERY );
diff --git a/sc/source/ui/view/tabvwsh4.cxx b/sc/source/ui/view/tabvwsh4.cxx
index ec912c115848..82981bbf63e2 100644
--- a/sc/source/ui/view/tabvwsh4.cxx
+++ b/sc/source/ui/view/tabvwsh4.cxx
@@ -1645,7 +1645,8 @@ ScTabViewShell::ScTabViewShell( SfxViewFrame* pViewFrame,
bInPrepareClose(false),
bInDispose(false),
nCurRefDlgId(0),
- mbInSwitch(false)
+ mbInSwitch(false),
+ pSearchItem(nullptr)
{
const ScAppOptions& rAppOpt = SC_MOD()->GetAppOptions();
@@ -1787,6 +1788,8 @@ ScTabViewShell::~ScTabViewShell()
pFormShell.reset();
pAccessibilityBroadcaster.reset();
+
+ DELETEZ(pSearchItem);
}
void ScTabViewShell::SetDialogDPObject( std::unique_ptr<ScDPObject> pObj )
diff --git a/sc/source/ui/view/tabvwsha.cxx b/sc/source/ui/view/tabvwsha.cxx
index 815ae6745a80..167bc282001c 100644
--- a/sc/source/ui/view/tabvwsha.cxx
+++ b/sc/source/ui/view/tabvwsha.cxx
@@ -219,7 +219,7 @@ void ScTabViewShell::GetState( SfxItemSet& rSet )
case SID_SEARCH_ITEM:
{
- SvxSearchItem aItem(ScGlobal::GetSearchItem()); // make a copy.
+ SvxSearchItem aItem(GetSearchItem()); // make a copy.
// Search on current selection if a range is marked.
aItem.SetSelection(rMark.IsMarked());
rSet.Put(aItem);
diff --git a/sc/source/ui/view/tabvwshe.cxx b/sc/source/ui/view/tabvwshe.cxx
index d6557932ea34..9f5b711727ff 100644
--- a/sc/source/ui/view/tabvwshe.cxx
+++ b/sc/source/ui/view/tabvwshe.cxx
@@ -232,6 +232,28 @@ void ScTabViewShell::InsertURLField( const OUString& rName, const OUString& rURL
pHdl->DataChanged();
}
+const SvxSearchItem& ScTabViewShell::GetSearchItem()
+{
+ assert(!ScGlobal::bThreadedGroupCalcInProgress);
+ if (!pSearchItem)
+ {
+ pSearchItem = new SvxSearchItem( SID_SEARCH_ITEM );
+ pSearchItem->SetAppFlag( SvxSearchApp::CALC );
+ }
+ return *pSearchItem;
+}
+
+void ScTabViewShell::SetSearchItem( const SvxSearchItem& rNew )
+{
+ assert(!ScGlobal::bThreadedGroupCalcInProgress);
+ // FIXME: An assignment operator would be nice here
+ delete pSearchItem;
+ pSearchItem = static_cast<SvxSearchItem*>(rNew.Clone());
+
+ pSearchItem->SetWhich( SID_SEARCH_ITEM );
+ pSearchItem->SetAppFlag( SvxSearchApp::CALC );
+}
+
void ScTabViewShell::ExecSearch( SfxRequest& rReq )
{
const SfxItemSet* pReqArgs = rReq.GetArgs();
@@ -248,7 +270,7 @@ void ScTabViewShell::ExecSearch( SfxRequest& rReq )
OSL_ENSURE( dynamic_cast<const SvxSearchItem*>( pItem) != nullptr, "wrong Item" );
const SvxSearchItem* pSearchItem = static_cast<const SvxSearchItem*>(pItem);
- ScGlobal::SetSearchItem( *pSearchItem );
+ SetSearchItem( *pSearchItem );
bool bSuccess = SearchAndReplace( pSearchItem, true, rReq.IsAPI() );
SfxChildWindow* pChildWindow = SfxViewFrame::Current()->GetChildWindow(
SvxSearchDialogWrapper::GetChildWindowId());
@@ -280,7 +302,7 @@ void ScTabViewShell::ExecSearch( SfxRequest& rReq )
{
// remember search item
OSL_ENSURE( dynamic_cast<const SvxSearchItem*>( pItem) != nullptr, "wrong Item" );
- ScGlobal::SetSearchItem( *static_cast<const SvxSearchItem*>(pItem ));
+ SetSearchItem( *static_cast<const SvxSearchItem*>(pItem ));
}
else
{
@@ -296,7 +318,7 @@ void ScTabViewShell::ExecSearch( SfxRequest& rReq )
{
// get search item
- SvxSearchItem aSearchItem = ScGlobal::GetSearchItem();
+ SvxSearchItem aSearchItem = GetSearchItem();
// fill search item
@@ -349,9 +371,9 @@ void ScTabViewShell::ExecSearch( SfxRequest& rReq )
break;
case FID_REPEAT_SEARCH:
{
- // once more with ScGlobal::GetSearchItem()
+ // once more with GetSearchItem()
- SvxSearchItem aSearchItem = ScGlobal::GetSearchItem();
+ SvxSearchItem aSearchItem = GetSearchItem();
aSearchItem.SetWhich(SID_SEARCH_ITEM);
GetViewData().GetDispatcher().ExecuteList( FID_SEARCH_NOW,
rReq.IsAPI() ? SfxCallMode::API|SfxCallMode::SYNCHRON :
diff --git a/sc/source/ui/view/viewfun2.cxx b/sc/source/ui/view/viewfun2.cxx
index 1b948b916746..4d78adb15ed6 100644
--- a/sc/source/ui/view/viewfun2.cxx
+++ b/sc/source/ui/view/viewfun2.cxx
@@ -2013,11 +2013,13 @@ bool ScViewFunc::SearchAndReplace( const SvxSearchItem* pSearchItem,
{
pDocSh->PostPaint( nCol,nRow,nTab, nCol,nRow,nTab, PaintPartFlags::Grid );
+ ScTabViewShell* pViewShell = GetViewData().GetViewShell();
+
// jump to next cell if we replaced everything in the cell
// where the cursor was positioned (but avoid switching tabs)
- if ( nCol == nOldCol && nRow == nOldRow && nTab == nOldTab )
+ if ( nCol == nOldCol && nRow == nOldRow && nTab == nOldTab && pViewShell )
{
- SvxSearchItem aSearchItem = ScGlobal::GetSearchItem();
+ SvxSearchItem aSearchItem = pViewShell->GetSearchItem();
aSearchItem.SetCommand(SvxSearchCmd::FIND);
aSearchItem.SetWhich(SID_SEARCH_ITEM);
commit 5135d9596b06e6146217adffb7d5febe5860592a
Author: Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Fri Mar 20 10:19:56 2020 +0100
Commit: Szymon Kłos <szymon.klos at collabora.com>
CommitDate: Fri Mar 20 15:20:36 2020 +0100
Deglobalize find & replace data in Writer
Thanks to that we don't interfere with searching options
in other views in online case.
Change-Id: Ie7c3eb06f34743d4e96a44f8f952652df092022d
diff --git a/svx/source/dialog/srchdlg.cxx b/svx/source/dialog/srchdlg.cxx
index fdeb5b29266b..9ec0d2fde52a 100644
--- a/svx/source/dialog/srchdlg.cxx
+++ b/svx/source/dialog/srchdlg.cxx
@@ -154,8 +154,11 @@ struct SearchDlg_Impl
static void ListToStrArr_Impl( sal_uInt16 nId, std::vector<OUString>& rStrLst, weld::ComboBox& rCBox )
{
+ SfxShell* pShell = comphelper::LibreOfficeKit::isActive()
+ ? static_cast<SfxShell*>(SfxViewShell::Current())
+ : static_cast<SfxShell*>(SfxGetpApp());
const SfxStringListItem* pSrchItem =
- static_cast<const SfxStringListItem*>(SfxGetpApp()->GetItem( nId ));
+ static_cast<const SfxStringListItem*>(pShell->GetItem( nId ));
if (pSrchItem)
{
@@ -172,7 +175,10 @@ static void ListToStrArr_Impl( sal_uInt16 nId, std::vector<OUString>& rStrLst, w
static void StrArrToList_Impl( sal_uInt16 nId, const std::vector<OUString>& rStrLst )
{
DBG_ASSERT( !rStrLst.empty(), "check in advance");
- SfxGetpApp()->PutItem( SfxStringListItem( nId, &rStrLst ) );
+ SfxShell* pShell = comphelper::LibreOfficeKit::isActive()
+ ? static_cast<SfxShell*>(SfxViewShell::Current())
+ : static_cast<SfxShell*>(SfxGetpApp());
+ pShell->PutItem( SfxStringListItem( nId, &rStrLst ) );
}
SearchAttrItemList::SearchAttrItemList( const SearchAttrItemList& rList ) :
diff --git a/sw/inc/view.hxx b/sw/inc/view.hxx
index 94e2cc86e81e..dc652f9e23f4 100644
--- a/sw/inc/view.hxx
+++ b/sw/inc/view.hxx
@@ -149,17 +149,17 @@ class SW_DLLPUBLIC SwView: public SfxViewShell
friend class SwClipboardChangeListener;
// search & replace
- static SvxSearchItem *m_pSrchItem;
+ SvxSearchItem *m_pSrchItem;
static sal_uInt16 m_nMoveType; // for buttons below the scrollbar (viewmdi)
static sal_Int32 m_nActMark; // current jump mark for unknown mark
- static bool m_bExtra;
- static bool m_bFound;
- static bool m_bJustOpened;
+ bool m_bExtra;
+ bool m_bFound;
+ bool m_bJustOpened;
- static SearchAttrItemList* m_pSrchList;
- static SearchAttrItemList* m_pReplList;
+ SearchAttrItemList* m_pSrchList;
+ SearchAttrItemList* m_pReplList;
Timer m_aTimer; // for delayed ChgLnks during an action
OUString m_sSwViewData,
@@ -629,7 +629,7 @@ public:
SAL_DLLPRIVATE virtual bool HasPrintOptionsPage() const override;
SAL_DLLPRIVATE virtual VclPtr<SfxTabPage> CreatePrintOptionsPage(TabPageParent pParent,
const SfxItemSet& rSet) override;
- static SvxSearchItem* GetSearchItem() { return m_pSrchItem; }
+ SvxSearchItem* GetSearchItem() { return m_pSrchItem; }
/// See SfxViewShell::getPart().
int getPart() const override;
/// See SfxViewShell::dumpAsXml().
diff --git a/sw/source/core/crsr/findtxt.cxx b/sw/source/core/crsr/findtxt.cxx
index 03239dfb1063..436d84eec2c0 100644
--- a/sw/source/core/crsr/findtxt.cxx
+++ b/sw/source/core/crsr/findtxt.cxx
@@ -532,7 +532,7 @@ bool FindTextImpl(SwPaM & rSearchPam,
if (comphelper::LibreOfficeKit::isActive())
{
// Writer and editeng selections are not supported in parallel.
- SvxSearchItem* pSearchItem = SwView::GetSearchItem();
+ SvxSearchItem* pSearchItem = pDocShell->GetView()->GetSearchItem();
// If we just finished search in shape text, don't attempt to do that again.
if (!bEndedTextEdit && !(pSearchItem && pSearchItem->GetCommand() == SvxSearchCmd::FIND_ALL))
{
diff --git a/sw/source/uibase/uiview/view.cxx b/sw/source/uibase/uiview/view.cxx
index 039977ff6827..46b3f68ba5c9 100644
--- a/sw/source/uibase/uiview/view.cxx
+++ b/sw/source/uibase/uiview/view.cxx
@@ -125,19 +125,8 @@ using namespace ::com::sun::star::scanner;
#define SWVIEWFLAGS SfxViewShellFlags::HAS_PRINTOPTIONS
-// Statics. OMG.
-
bool bDocSzUpdated = true;
-SvxSearchItem* SwView::m_pSrchItem = nullptr;
-
-bool SwView::m_bExtra = false;
-bool SwView::m_bFound = false;
-bool SwView::m_bJustOpened = false;
-
-SearchAttrItemList* SwView::m_pSrchList = nullptr;
-SearchAttrItemList* SwView::m_pReplList = nullptr;
-
SfxDispatcher &SwView::GetDispatcher()
{
return *GetViewFrame()->GetDispatcher();
@@ -715,6 +704,12 @@ void SwView::CheckReadonlySelection()
SwView::SwView( SfxViewFrame *_pFrame, SfxViewShell* pOldSh )
: SfxViewShell( _pFrame, SWVIEWFLAGS ),
+ m_pSrchItem(nullptr),
+ m_bExtra(false),
+ m_bFound(false),
+ m_bJustOpened(false),
+ m_pSrchList(nullptr),
+ m_pReplList(nullptr),
m_nNewPage(USHRT_MAX),
m_nOldPageNum(0),
m_pNumRuleNodeFromDoc(nullptr),
commit c156551a08a6a5920868668b1c753cc2901af3d3
Author: Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Thu Mar 19 13:54:18 2020 +0100
Commit: Szymon Kłos <szymon.klos at collabora.com>
CommitDate: Thu Mar 19 13:54:21 2020 +0100
Fix sending reference marks for current selection
When selecting range on mobile in validation dialog
the message wasn't sent due to missing ViewShell
Change-Id: Iaab543368469cd363b54b1a89f6983b8c01877ce
diff --git a/sc/source/ui/app/inputhdl.cxx b/sc/source/ui/app/inputhdl.cxx
index 5c4d4de77f96..d5a341089e2a 100644
--- a/sc/source/ui/app/inputhdl.cxx
+++ b/sc/source/ui/app/inputhdl.cxx
@@ -465,10 +465,16 @@ ReferenceMark ScInputHandler::GetReferenceMark( ScViewData& rViewData, ScDocShel
void ScInputHandler::UpdateLokReferenceMarks()
{
- if ( !comphelper::LibreOfficeKit::isActive() || !pActiveViewSh )
+ if ( !comphelper::LibreOfficeKit::isActive())
return;
- ScViewData& rViewData = pActiveViewSh->GetViewData();
+ ScTabViewShell* pShell = pActiveViewSh ? pActiveViewSh
+ : dynamic_cast<ScTabViewShell*>(SfxViewShell::Current());
+
+ if (!pShell)
+ return;
+
+ ScViewData& rViewData = pShell->GetViewData();
ScDocShell* pDocSh = rViewData.GetDocShell();
ScRangeFindList* pRangeFinder = GetRangeFindList();
@@ -521,18 +527,18 @@ void ScInputHandler::UpdateLokReferenceMarks()
nX1, nX2, nY1, nY2,
nTab, Color( rData.nColor ) );
- ScInputHandler::SendReferenceMarks( pActiveViewSh, aReferenceMarks );
+ ScInputHandler::SendReferenceMarks( pShell, aReferenceMarks );
}
}
else if ( nCount )
{
- ScInputHandler::SendReferenceMarks( pActiveViewSh, aReferenceMarks );
+ ScInputHandler::SendReferenceMarks( pShell, aReferenceMarks );
}
else
{
// Clear
aReferenceMarks.clear();
- ScInputHandler::SendReferenceMarks( pActiveViewSh, aReferenceMarks );
+ ScInputHandler::SendReferenceMarks( pShell, aReferenceMarks );
}
}
commit 88d2f871156b5380f0a8176c3def36a88e9ca6e3
Author: Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Thu Mar 19 12:45:59 2020 +0100
Commit: Szymon Kłos <szymon.klos at collabora.com>
CommitDate: Thu Mar 19 12:45:59 2020 +0100
jsdialog: rerender after action
Change-Id: I2896d22d915502b1a7a8dcead1a056235a65a0b8
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 4316974be9ad..215979d0d5d0 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -3641,10 +3641,32 @@ static void doc_sendDialogEvent(LibreOfficeKitDocument* /*pThis*/, unsigned nWin
bContinueWithLOKWindow = true;
}
}
+ else if (sControlType == "checkbox")
+ {
+ auto pCheckButton = dynamic_cast<weld::CheckButton*>(pWidget);
+ if (pCheckButton)
+ {
+ if (sAction == "change")
+ {
+ if (aMap["data"] == "true" || aMap["data"] == "false")
+ pCheckButton->set_state(
+ aMap["data"] == "true" ? TRISTATE_TRUE : TRISTATE_FALSE);
+ }
+ else
+ bContinueWithLOKWindow = true;
+ }
+ }
else
{
bContinueWithLOKWindow = true;
}
+
+ if (!bContinueWithLOKWindow)
+ {
+ JSDialogSender* pSender = dynamic_cast<JSDialogSender*>(pWidget);
+ if (pSender)
+ pSender->notifyDialogState();
+ }
}
if (!bIsWeldedDialog || bContinueWithLOKWindow)
diff --git a/include/vcl/jsdialog/jsdialogbuilder.hxx b/include/vcl/jsdialog/jsdialogbuilder.hxx
index 9014dd94207b..6e7324edc6b9 100644
--- a/include/vcl/jsdialog/jsdialogbuilder.hxx
+++ b/include/vcl/jsdialog/jsdialogbuilder.hxx
@@ -13,7 +13,7 @@
typedef std::map<OString, weld::Widget*> WidgetMap;
-class JSDialogSender
+class VCL_DLLPUBLIC JSDialogSender
{
VclPtr<vcl::Window> m_aOwnedToplevel;
public:
commit 7a202adec230df7b67bd296e6fdd23dbc14aa3a7
Author: Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Thu Mar 19 12:29:33 2020 +0100
Commit: Szymon Kłos <szymon.klos at collabora.com>
CommitDate: Thu Mar 19 12:29:33 2020 +0100
jsdialog: checkbutton set_state action
Change-Id: I259d79004f795d1e5892b9fc163e6c1eca9ddc68
diff --git a/include/vcl/jsdialog/jsdialogbuilder.hxx b/include/vcl/jsdialog/jsdialogbuilder.hxx
index 9e32fe034d25..9014dd94207b 100644
--- a/include/vcl/jsdialog/jsdialogbuilder.hxx
+++ b/include/vcl/jsdialog/jsdialogbuilder.hxx
@@ -76,8 +76,10 @@ public:
virtual void set_sensitive(bool sensitive) override
{
+ bool change = sensitive != BaseInstanceClass::get_sensitive();
BaseInstanceClass::set_sensitive(sensitive);
- notifyDialogState();
+ if (change)
+ notifyDialogState();
}
};
@@ -177,7 +179,7 @@ public:
JSCheckButton(VclPtr<vcl::Window> aOwnedToplevel, ::CheckBox* pCheckBox,
SalInstanceBuilder* pBuilder, bool bTakeOwnership);
- virtual void set_active(bool active) override;
+ virtual void set_state(TriState eState) override;
};
#endif
diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index 6c207e59cc13..8e4cf537414a 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -617,7 +617,7 @@ public:
return TRISTATE_FALSE;
}
- void set_state(TriState eState)
+ virtual void set_state(TriState eState)
{
switch (eState)
{
diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx
index ff07303dcc16..c0d56198bfdd 100644
--- a/vcl/jsdialog/jsdialogbuilder.cxx
+++ b/vcl/jsdialog/jsdialogbuilder.cxx
@@ -415,8 +415,8 @@ JSCheckButton::JSCheckButton(VclPtr<vcl::Window> aOwnedToplevel, ::CheckBox* pCh
{
}
-void JSCheckButton::set_active(bool active)
+void JSCheckButton::set_state(TriState eState)
{
- SalInstanceCheckButton::set_active(active);
+ SalInstanceCheckButton::set_state(eState);
notifyDialogState();
}
commit 93d4afbc235c9f6a2ce10dc3b7be4e2410525d26
Author: Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Wed Mar 18 11:12:36 2020 +0100
Commit: Szymon Kłos <szymon.klos at collabora.com>
CommitDate: Wed Mar 18 11:14:22 2020 +0100
jsdialog: weld checkbutton
Change-Id: I4bf89601e2ff6a0534e76ef78d2d896160a72850
diff --git a/include/vcl/jsdialog/jsdialogbuilder.hxx b/include/vcl/jsdialog/jsdialogbuilder.hxx
index cef8c602e6cc..9e32fe034d25 100644
--- a/include/vcl/jsdialog/jsdialogbuilder.hxx
+++ b/include/vcl/jsdialog/jsdialogbuilder.hxx
@@ -45,6 +45,7 @@ public:
virtual std::unique_ptr<weld::ComboBox> weld_combo_box(const OString& id, bool bTakeOwnership = false) override;
virtual std::unique_ptr<weld::Notebook> weld_notebook(const OString &id, bool bTakeOwnership = false) override;
virtual std::unique_ptr<weld::SpinButton> weld_spin_button(const OString &id, bool bTakeOwnership = false) override;
+ virtual std::unique_ptr<weld::CheckButton> weld_check_button(const OString &id, bool bTakeOwnership = false) override;
static weld::MessageDialog* CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType,
VclButtonsType eButtonType, const OUString& rPrimaryMessage);
@@ -170,4 +171,13 @@ public:
virtual void set_secondary_text(const OUString& rText) override;
};
+class VCL_DLLPUBLIC JSCheckButton : public JSWidget<SalInstanceCheckButton, ::CheckBox>
+{
+public:
+ JSCheckButton(VclPtr<vcl::Window> aOwnedToplevel, ::CheckBox* pCheckBox,
+ SalInstanceBuilder* pBuilder, bool bTakeOwnership);
+
+ virtual void set_active(bool active) override;
+};
+
#endif
diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx
index 73a34564f4c1..ff07303dcc16 100644
--- a/vcl/jsdialog/jsdialogbuilder.cxx
+++ b/vcl/jsdialog/jsdialogbuilder.cxx
@@ -209,6 +209,19 @@ std::unique_ptr<weld::SpinButton> JSInstanceBuilder::weld_spin_button(const OStr
return pWeldWidget;
}
+std::unique_ptr<weld::CheckButton> JSInstanceBuilder::weld_check_button(const OString &id, bool bTakeOwnership)
+{
+ CheckBox* pCheckButton = m_xBuilder->get<CheckBox>(id);
+ auto pWeldWidget = pCheckButton ?
+ std::make_unique<JSCheckButton>(m_bHasTopLevelDialog ? m_aOwnedToplevel : m_aParentDialog,
+ pCheckButton, this, bTakeOwnership) : nullptr;
+
+ if (pWeldWidget)
+ RememberWidget(id, pWeldWidget.get());
+
+ return pWeldWidget;
+}
+
weld::MessageDialog* JSInstanceBuilder::CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType,
VclButtonsType eButtonType, const OUString& rPrimaryMessage)
{
@@ -395,3 +408,15 @@ void JSMessageDialog::set_secondary_text(const OUString& rText)
SalInstanceMessageDialog::set_secondary_text(rText);
notifyDialogState();
}
+
+JSCheckButton::JSCheckButton(VclPtr<vcl::Window> aOwnedToplevel, ::CheckBox* pCheckBox,
+ SalInstanceBuilder* pBuilder, bool bTakeOwnership)
+: JSWidget<SalInstanceCheckButton, ::CheckBox>(aOwnedToplevel, pCheckBox, pBuilder, bTakeOwnership)
+{
+}
+
+void JSCheckButton::set_active(bool active)
+{
+ SalInstanceCheckButton::set_active(active);
+ notifyDialogState();
+}
commit 83e2b4ca9aadba6908a1a6e3d5d408395609b790
Author: Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Wed Mar 18 11:07:02 2020 +0100
Commit: Szymon Kłos <szymon.klos at collabora.com>
CommitDate: Wed Mar 18 11:07:02 2020 +0100
Move SalInstanceCheckButton to header file
Change-Id: Id6597cd259abefe69a61f0ab414c6bd2114c9749
diff --git a/include/vcl/salvtables.hxx b/include/vcl/salvtables.hxx
index bdc9963c30d9..07defb2472ef 100644
--- a/include/vcl/salvtables.hxx
+++ b/include/vcl/salvtables.hxx
@@ -729,4 +729,24 @@ public:
virtual weld::Container* weld_message_area() override;
};
+class SalInstanceCheckButton : public SalInstanceButton, public virtual weld::CheckButton
+{
+private:
+ VclPtr<CheckBox> m_xCheckButton;
+
+ DECL_LINK(ToggleHdl, CheckBox&, void);
+public:
+ SalInstanceCheckButton(CheckBox* pButton, SalInstanceBuilder* pBuilder, bool bTakeOwnership);
+
+ virtual void set_active(bool active) override;
+
+ virtual bool get_active() const override;
+
+ virtual void set_inconsistent(bool inconsistent) override;
+
+ virtual bool get_inconsistent() const override;
+
+ virtual ~SalInstanceCheckButton() override;
+};
+
#endif
\ No newline at end of file
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 5f03ccf8e88b..52babe2355b3 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -1553,51 +1553,43 @@ IMPL_LINK(SalInstanceToggleButton, ToggleListener, VclWindowEvent&, rEvent, void
signal_toggled();
}
-class SalInstanceCheckButton : public SalInstanceButton, public virtual weld::CheckButton
+SalInstanceCheckButton::SalInstanceCheckButton(CheckBox* pButton, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
+ : SalInstanceButton(pButton, pBuilder, bTakeOwnership)
+ , m_xCheckButton(pButton)
{
-private:
- VclPtr<CheckBox> m_xCheckButton;
-
- DECL_LINK(ToggleHdl, CheckBox&, void);
-public:
- SalInstanceCheckButton(CheckBox* pButton, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
- : SalInstanceButton(pButton, pBuilder, bTakeOwnership)
- , m_xCheckButton(pButton)
- {
- m_xCheckButton->SetToggleHdl(LINK(this, SalInstanceCheckButton, ToggleHdl));
- }
+ m_xCheckButton->SetToggleHdl(LINK(this, SalInstanceCheckButton, ToggleHdl));
+}
- virtual void set_active(bool active) override
- {
- disable_notify_events();
- m_xCheckButton->EnableTriState(false);
- m_xCheckButton->Check(active);
- enable_notify_events();
- }
+void SalInstanceCheckButton::set_active(bool active)
+{
+ disable_notify_events();
+ m_xCheckButton->EnableTriState(false);
+ m_xCheckButton->Check(active);
+ enable_notify_events();
+}
- virtual bool get_active() const override
- {
- return m_xCheckButton->IsChecked();
- }
+bool SalInstanceCheckButton::get_active() const
+{
+ return m_xCheckButton->IsChecked();
+}
- virtual void set_inconsistent(bool inconsistent) override
- {
- disable_notify_events();
- m_xCheckButton->EnableTriState(true);
- m_xCheckButton->SetState(inconsistent ? TRISTATE_INDET : TRISTATE_FALSE);
- enable_notify_events();
- }
+void SalInstanceCheckButton::set_inconsistent(bool inconsistent)
+{
+ disable_notify_events();
+ m_xCheckButton->EnableTriState(true);
+ m_xCheckButton->SetState(inconsistent ? TRISTATE_INDET : TRISTATE_FALSE);
+ enable_notify_events();
+}
- virtual bool get_inconsistent() const override
- {
- return m_xCheckButton->GetState() == TRISTATE_INDET;
- }
+bool SalInstanceCheckButton::get_inconsistent() const
+{
+ return m_xCheckButton->GetState() == TRISTATE_INDET;
+}
- virtual ~SalInstanceCheckButton() override
- {
- m_xCheckButton->SetToggleHdl(Link<CheckBox&, void>());
- }
-};
+SalInstanceCheckButton::~SalInstanceCheckButton()
+{
+ m_xCheckButton->SetToggleHdl(Link<CheckBox&, void>());
+}
IMPL_LINK_NOARG(SalInstanceCheckButton, ToggleHdl, CheckBox&, void)
{
commit 061af5f34d130f823050daae429f11eb1f6092fa
Author: Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Wed Mar 18 10:31:09 2020 +0100
Commit: Szymon Kłos <szymon.klos at collabora.com>
CommitDate: Wed Mar 18 10:31:09 2020 +0100
jsdialog: implement plus/minus for welded spinfields
Change-Id: I8a0bf4190c09520d7be78c44742902539cb9bf38
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index e0449a3827ee..4316974be9ad 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -3624,6 +3624,23 @@ static void doc_sendDialogEvent(LibreOfficeKitDocument* /*pThis*/, unsigned nWin
bContinueWithLOKWindow = true;
}
}
+ else if (sControlType == "spinfield")
+ {
+ auto pSpinField = dynamic_cast<weld::SpinButton*>(pWidget);
+ if (pSpinField)
+ {
+ if (sAction == "plus")
+ {
+ pSpinField->set_value(pSpinField->get_value() + 1);
+ }
+ else if (sAction == "minus")
+ {
+ pSpinField->set_value(pSpinField->get_value() - 1);
+ }
+ else
+ bContinueWithLOKWindow = true;
+ }
+ }
else
{
bContinueWithLOKWindow = true;
commit b83ca87974f1707799285b23aa474f1c5ad59707
Author: Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Wed Mar 18 09:57:09 2020 +0100
Commit: Szymon Kłos <szymon.klos at collabora.com>
CommitDate: Wed Mar 18 09:57:09 2020 +0100
Move messagedialog header to shared include
Change-Id: Ice8d01d2bb62667667a4c5f0366120cdb7600472
diff --git a/vcl/inc/messagedialog.hxx b/include/vcl/messagedialog.hxx
similarity index 100%
rename from vcl/inc/messagedialog.hxx
rename to include/vcl/messagedialog.hxx
diff --git a/include/vcl/salvtables.hxx b/include/vcl/salvtables.hxx
index 88ba9b1e0507..bdc9963c30d9 100644
--- a/include/vcl/salvtables.hxx
+++ b/include/vcl/salvtables.hxx
@@ -13,7 +13,7 @@
#include <vcl/lstbox.hxx>
#include <vcl/tabctrl.hxx>
#include <vcl/layout.hxx>
-#include <messagedialog.hxx>
+#include <vcl/messagedialog.hxx>
class SalInstanceBuilder : public weld::Builder
{
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index 666fe5a70fbc..efd46f9adec0 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -53,7 +53,7 @@
#include <vcl/commandinfoprovider.hxx>
#include <svdata.hxx>
#include <bitmaps.hlst>
-#include <messagedialog.hxx>
+#include <vcl/messagedialog.hxx>
#include <window.h>
#include <xmlreader/xmlreader.hxx>
#include <desktop/crashreport.hxx>
diff --git a/vcl/source/window/dialog.cxx b/vcl/source/window/dialog.cxx
index 79e2cd95300d..209179cc9591 100644
--- a/vcl/source/window/dialog.cxx
+++ b/vcl/source/window/dialog.cxx
@@ -63,7 +63,7 @@
#include <vcl/uitest/logger.hxx>
#include <vcl/virdev.hxx>
#include <vcl/IDialogRenderable.hxx>
-#include <messagedialog.hxx>
+#include <vcl/messagedialog.hxx>
#include <salframe.hxx>
#include <iostream>
diff --git a/vcl/source/window/layout.cxx b/vcl/source/window/layout.cxx
index ce7a69e6455d..355a0d338778 100644
--- a/vcl/source/window/layout.cxx
+++ b/vcl/source/window/layout.cxx
@@ -16,7 +16,7 @@
#include <vcl/msgbox.hxx>
#include <vcl/svapp.hxx>
#include <vcl/settings.hxx>
-#include <messagedialog.hxx>
+#include <vcl/messagedialog.hxx>
#include <window.h>
#include <boost/multi_array.hpp>
#include <officecfg/Office/Common.hxx>
commit 86e5db11442ef2a7918087c73f0de5ade74ed387
Author: Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Wed Mar 18 09:46:03 2020 +0100
Commit: Szymon Kłos <szymon.klos at collabora.com>
CommitDate: Wed Mar 18 09:46:03 2020 +0100
jsdialog: regenerate JSON on dialog collapse
Change-Id: I407979546a7610630e8109b57db8c98c956baaee
diff --git a/include/vcl/jsdialog/jsdialogbuilder.hxx b/include/vcl/jsdialog/jsdialogbuilder.hxx
index 9cc569ed0f1b..cef8c602e6cc 100644
--- a/include/vcl/jsdialog/jsdialogbuilder.hxx
+++ b/include/vcl/jsdialog/jsdialogbuilder.hxx
@@ -80,6 +80,16 @@ public:
}
};
+class VCL_DLLPUBLIC JSDialog : public JSWidget<SalInstanceDialog, ::Dialog>
+{
+public:
+ JSDialog(VclPtr<vcl::Window> aOwnedToplevel, ::Dialog* pDialog,
+ SalInstanceBuilder* pBuilder, bool bTakeOwnership);
+
+ virtual void collapse(weld::Widget* pEdit, weld::Widget* pButton) override;
+ virtual void undo_collapse() override;
+};
+
class VCL_DLLPUBLIC JSLabel : public JSWidget<SalInstanceLabel, FixedText>
{
public:
diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx
index e7f5380a5523..73a34564f4c1 100644
--- a/vcl/jsdialog/jsdialogbuilder.cxx
+++ b/vcl/jsdialog/jsdialogbuilder.cxx
@@ -95,7 +95,6 @@ std::unique_ptr<weld::Dialog> JSInstanceBuilder::weld_dialog(const OString& id,
InsertWindowToMap(m_nWindowId);
- std::unique_ptr<weld::Dialog> pRet(pDialog ? new SalInstanceDialog(pDialog, this, false) : nullptr);
if (bTakeOwnership && pDialog)
{
assert(!m_aOwnedToplevel && "only one toplevel per .ui allowed");
@@ -103,6 +102,7 @@ std::unique_ptr<weld::Dialog> JSInstanceBuilder::weld_dialog(const OString& id,
m_xBuilder->drop_ownership(pDialog);
m_bHasTopLevelDialog = true;
}
+ std::unique_ptr<weld::Dialog> pRet(pDialog ? new JSDialog(m_aOwnedToplevel, pDialog, this, false) : nullptr);
const vcl::ILibreOfficeKitNotifier* pNotifier = pDialog->GetLOKNotifier();
if (pNotifier)
@@ -231,6 +231,24 @@ weld::MessageDialog* JSInstanceBuilder::CreateMessageDialog(weld::Widget* pParen
return new JSMessageDialog(xMessageDialog, nullptr, true);
}
+JSDialog::JSDialog(VclPtr<vcl::Window> aOwnedToplevel, ::Dialog* pDialog,
+ SalInstanceBuilder* pBuilder, bool bTakeOwnership)
+: JSWidget<SalInstanceDialog, ::Dialog>(aOwnedToplevel, pDialog, pBuilder, bTakeOwnership)
+{
+}
+
+void JSDialog::collapse(weld::Widget* pEdit, weld::Widget* pButton)
+{
+ SalInstanceDialog::collapse(pEdit, pButton);
+ notifyDialogState();
+}
+
+void JSDialog::undo_collapse()
+{
+ SalInstanceDialog::undo_collapse();
+ notifyDialogState();
+}
+
JSLabel::JSLabel(VclPtr<vcl::Window> aOwnedToplevel, FixedText* pLabel,
SalInstanceBuilder* pBuilder, bool bTakeOwnership)
: JSWidget<SalInstanceLabel, FixedText>(aOwnedToplevel, pLabel, pBuilder, bTakeOwnership)
commit 2591c2890d9fd78532716be54ee392799d13e880
Author: Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Tue Mar 17 15:17:14 2020 +0100
Commit: Szymon Kłos <szymon.klos at collabora.com>
CommitDate: Tue Mar 17 15:32:17 2020 +0100
jsdialog: export cursor visibility for text areas
Change-Id: I404e496a6f68f5cc2e2e628b51c759be49c7fecd
diff --git a/include/vcl/vclmedit.hxx b/include/vcl/vclmedit.hxx
index eaffca059a0d..8742f130877f 100644
--- a/include/vcl/vclmedit.hxx
+++ b/include/vcl/vclmedit.hxx
@@ -179,6 +179,8 @@ public:
virtual FactoryFunction GetUITestFactory() const override;
virtual bool set_property(const OString &rKey, const OUString &rValue) override;
+
+ virtual boost::property_tree::ptree DumpAsPropertyTree() override;
};
#endif // INCLUDED_VCL_VCLMEDIT_HXX
diff --git a/vcl/source/edit/vclmedit.cxx b/vcl/source/edit/vclmedit.cxx
index 7ba7ee3c056f..a6b9ca5129bf 100644
--- a/vcl/source/edit/vclmedit.cxx
+++ b/vcl/source/edit/vclmedit.cxx
@@ -1562,4 +1562,13 @@ bool VclMultiLineEdit::set_property(const OString &rKey, const OUString &rValue)
return true;
}
+boost::property_tree::ptree VclMultiLineEdit::DumpAsPropertyTree()
+{
+ boost::property_tree::ptree aTree = Edit::DumpAsPropertyTree();
+
+ aTree.put("cursor", pImpVclMEdit->GetTextWindow()->GetTextView()->IsCursorEnabled());
+
+ return aTree;
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 953caeaf85707f281fcd87fe5a1678a589e69961
Author: Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Tue Mar 17 14:50:39 2020 +0100
Commit: Szymon Kłos <szymon.klos at collabora.com>
CommitDate: Tue Mar 17 15:32:11 2020 +0100
jsdialog: use for message dialogs on mobile
Change-Id: Ib172dc264d7f55fef08dc474f7e6f4d1b3108085
diff --git a/include/vcl/jsdialog/jsdialogbuilder.hxx b/include/vcl/jsdialog/jsdialogbuilder.hxx
index 5e79197f09e1..9cc569ed0f1b 100644
--- a/include/vcl/jsdialog/jsdialogbuilder.hxx
+++ b/include/vcl/jsdialog/jsdialogbuilder.hxx
@@ -45,6 +45,9 @@ public:
virtual std::unique_ptr<weld::ComboBox> weld_combo_box(const OString& id, bool bTakeOwnership = false) override;
virtual std::unique_ptr<weld::Notebook> weld_notebook(const OString &id, bool bTakeOwnership = false) override;
virtual std::unique_ptr<weld::SpinButton> weld_spin_button(const OString &id, bool bTakeOwnership = false) override;
+
+ static weld::MessageDialog* CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType,
+ VclButtonsType eButtonType, const OUString& rPrimaryMessage);
static weld::Widget* FindWeldWidgetsMap(vcl::LOKWindowId nWindowId, const OString& rWidget);
};
@@ -147,4 +150,14 @@ public:
virtual void set_value(int value) override;
};
+class VCL_DLLPUBLIC JSMessageDialog : public SalInstanceMessageDialog, public JSDialogSender
+{
+public:
+ JSMessageDialog(::MessageDialog* pDialog, SalInstanceBuilder* pBuilder, bool bTakeOwnership);
+
+ virtual void set_primary_text(const OUString& rText) override;
+
+ virtual void set_secondary_text(const OUString& rText) override;
+};
+
#endif
diff --git a/include/vcl/salvtables.hxx b/include/vcl/salvtables.hxx
index eef1403fbcd4..88ba9b1e0507 100644
--- a/include/vcl/salvtables.hxx
+++ b/include/vcl/salvtables.hxx
@@ -713,7 +713,7 @@ public:
class SalInstanceMessageDialog : public SalInstanceDialog, public virtual weld::MessageDialog
{
-private:
+protected:
VclPtr<::MessageDialog> m_xMessageDialog;
public:
SalInstanceMessageDialog(::MessageDialog* pDialog, SalInstanceBuilder* pBuilder, bool bTakeOwnership);
diff --git a/include/vcl/svapp.hxx b/include/vcl/svapp.hxx
index f8be58bb6629..0707a4668e14 100644
--- a/include/vcl/svapp.hxx
+++ b/include/vcl/svapp.hxx
@@ -1381,7 +1381,8 @@ public:
static weld::Builder* CreateInterimBuilder(weld::Widget* pParent, const OUString &rUIFile); //for the duration of same SfxTabPages in mixed parent types
static weld::MessageDialog* CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType,
- VclButtonsType eButtonType, const OUString& rPrimaryMessage);
+ VclButtonsType eButtonType, const OUString& rPrimaryMessage,
+ bool bMobile = false);
static weld::Window* GetFrameWeld(const css::uno::Reference<css::awt::XWindow>& rWindow);
private:
diff --git a/sc/source/core/data/validat.cxx b/sc/source/core/data/validat.cxx
index c194da86e3e2..7ad0e836a4e3 100644
--- a/sc/source/core/data/validat.cxx
+++ b/sc/source/core/data/validat.cxx
@@ -47,6 +47,8 @@
#include <tokenarray.hxx>
#include <scmatrix.hxx>
#include <cellvalue.hxx>
+#include <comphelper/lok.hxx>
+#include <sfx2/lokhelper.hxx>
#include <math.h>
#include <memory>
@@ -403,8 +405,11 @@ bool ScValidationData::DoError(weld::Window* pParent, const OUString& rInput,
break;
}
+ bool bIsMobile = comphelper::LibreOfficeKit::isActive()
+ && comphelper::LibreOfficeKit::isMobile(SfxLokHelper::getView());
+
std::unique_ptr<weld::MessageDialog> xBox(Application::CreateMessageDialog(pParent, eType,
- eStyle, aMessage));
+ eStyle, aMessage, bIsMobile));
xBox->set_title(aTitle);
switch (eErrorStyle)
diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx
index afdd7158e51b..e7f5380a5523 100644
--- a/vcl/jsdialog/jsdialogbuilder.cxx
+++ b/vcl/jsdialog/jsdialogbuilder.cxx
@@ -209,6 +209,28 @@ std::unique_ptr<weld::SpinButton> JSInstanceBuilder::weld_spin_button(const OStr
return pWeldWidget;
}
+weld::MessageDialog* JSInstanceBuilder::CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType,
+ VclButtonsType eButtonType, const OUString& rPrimaryMessage)
+{
+ SalInstanceWidget* pParentInstance = dynamic_cast<SalInstanceWidget*>(pParent);
+ SystemWindow* pParentWidget = pParentInstance ? pParentInstance->getSystemWindow() : nullptr;
+ VclPtrInstance<::MessageDialog> xMessageDialog(pParentWidget, rPrimaryMessage, eMessageType,
+ eButtonType);
+
+ const vcl::ILibreOfficeKitNotifier* pNotifier = xMessageDialog->GetLOKNotifier();
+ if (pNotifier)
+ {
+ std::stringstream aStream;
+ boost::property_tree::ptree aTree = xMessageDialog->DumpAsPropertyTree();
+ aTree.put("id", xMessageDialog->GetLOKWindowId());
+ boost::property_tree::write_json(aStream, aTree);
+ const std::string message = aStream.str();
+ pNotifier->libreOfficeKitViewCallback(LOK_CALLBACK_JSDIALOG, message.c_str());
+ }
+
+ return new JSMessageDialog(xMessageDialog, nullptr, true);
+}
+
JSLabel::JSLabel(VclPtr<vcl::Window> aOwnedToplevel, FixedText* pLabel,
SalInstanceBuilder* pBuilder, bool bTakeOwnership)
: JSWidget<SalInstanceLabel, FixedText>(aOwnedToplevel, pLabel, pBuilder, bTakeOwnership)
@@ -337,3 +359,21 @@ void JSSpinButton::set_value(int value)
SalInstanceSpinButton::set_value(value);
notifyDialogState();
}
+
+JSMessageDialog::JSMessageDialog(::MessageDialog* pDialog, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
+: SalInstanceMessageDialog(pDialog, pBuilder, bTakeOwnership)
+, JSDialogSender(m_xMessageDialog)
+{
+}
+
+void JSMessageDialog::set_primary_text(const OUString& rText)
+{
+ SalInstanceMessageDialog::set_primary_text(rText);
+ notifyDialogState();
+}
+
+void JSMessageDialog::set_secondary_text(const OUString& rText)
+{
+ SalInstanceMessageDialog::set_secondary_text(rText);
+ notifyDialogState();
+}
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index 95c9240c441d..666fe5a70fbc 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -170,9 +170,13 @@ weld::Builder* Application::CreateInterimBuilder(vcl::Window* pParent, const OUS
}
weld::MessageDialog* Application::CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType,
- VclButtonsType eButtonType, const OUString& rPrimaryMessage)
+ VclButtonsType eButtonType, const OUString& rPrimaryMessage,
+ bool bMobile)
{
- return ImplGetSVData()->mpDefInst->CreateMessageDialog(pParent, eMessageType, eButtonType, rPrimaryMessage);
+ if (bMobile)
+ return JSInstanceBuilder::CreateMessageDialog(pParent, eMessageType, eButtonType, rPrimaryMessage);
+ else
+ return ImplGetSVData()->mpDefInst->CreateMessageDialog(pParent, eMessageType, eButtonType, rPrimaryMessage);
}
weld::Window* Application::GetFrameWeld(const css::uno::Reference<css::awt::XWindow>& rWindow)
commit 4d83431585d72ecbdf3ae8aa4be4181ecb405feb
Author: Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Tue Mar 17 14:25:01 2020 +0100
Commit: Szymon Kłos <szymon.klos at collabora.com>
CommitDate: Tue Mar 17 15:32:05 2020 +0100
Move SalInstanceMessageDialog to header file
Change-Id: Ie982bae356f3e13ec40012e5dd9bac45887d2925
diff --git a/include/vcl/salvtables.hxx b/include/vcl/salvtables.hxx
index 3a798e560a25..eef1403fbcd4 100644
--- a/include/vcl/salvtables.hxx
+++ b/include/vcl/salvtables.hxx
@@ -13,6 +13,7 @@
#include <vcl/lstbox.hxx>
#include <vcl/tabctrl.hxx>
#include <vcl/layout.hxx>
+#include <messagedialog.hxx>
class SalInstanceBuilder : public weld::Builder
{
@@ -710,4 +711,22 @@ public:
virtual ~SalInstanceNotebook() override;
};
+class SalInstanceMessageDialog : public SalInstanceDialog, public virtual weld::MessageDialog
+{
+private:
+ VclPtr<::MessageDialog> m_xMessageDialog;
+public:
+ SalInstanceMessageDialog(::MessageDialog* pDialog, SalInstanceBuilder* pBuilder, bool bTakeOwnership);
+
+ virtual void set_primary_text(const OUString& rText) override;
+
+ virtual OUString get_primary_text() const override;
+
+ virtual void set_secondary_text(const OUString& rText) override;
+
+ virtual OUString get_secondary_text() const override;
+
+ virtual weld::Container* weld_message_area() override;
+};
+
#endif
\ No newline at end of file
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index c88426dd61b6..5f03ccf8e88b 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -30,7 +30,6 @@
#include <salobj.hxx>
#include <salmenu.hxx>
#include <svdata.hxx>
-#include <messagedialog.hxx>
#include <unotools/accessiblerelationsethelper.hxx>
#include <utility>
#include <vcl/builder.hxx>
@@ -991,42 +990,36 @@ weld::Container* SalInstanceDialog::weld_content_area()
return new SalInstanceContainer(m_xDialog->get_content_area(), m_pBuilder, false);
}
-class SalInstanceMessageDialog : public SalInstanceDialog, public virtual weld::MessageDialog
+SalInstanceMessageDialog::SalInstanceMessageDialog(::MessageDialog* pDialog, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
+ : SalInstanceDialog(pDialog, pBuilder, bTakeOwnership)
+ , m_xMessageDialog(pDialog)
{
-private:
- VclPtr<::MessageDialog> m_xMessageDialog;
-public:
- SalInstanceMessageDialog(::MessageDialog* pDialog, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
- : SalInstanceDialog(pDialog, pBuilder, bTakeOwnership)
- , m_xMessageDialog(pDialog)
- {
- }
+}
- virtual void set_primary_text(const OUString& rText) override
- {
- m_xMessageDialog->set_primary_text(rText);
- }
+void SalInstanceMessageDialog::set_primary_text(const OUString& rText)
+{
+ m_xMessageDialog->set_primary_text(rText);
+}
- virtual OUString get_primary_text() const override
- {
- return m_xMessageDialog->get_primary_text();
- }
+OUString SalInstanceMessageDialog::get_primary_text() const
+{
+ return m_xMessageDialog->get_primary_text();
+}
- virtual void set_secondary_text(const OUString& rText) override
- {
- m_xMessageDialog->set_secondary_text(rText);
- }
+void SalInstanceMessageDialog::set_secondary_text(const OUString& rText)
+{
+ m_xMessageDialog->set_secondary_text(rText);
+}
- virtual OUString get_secondary_text() const override
- {
- return m_xMessageDialog->get_secondary_text();
- }
+OUString SalInstanceMessageDialog::get_secondary_text() const
+{
+ return m_xMessageDialog->get_secondary_text();
+}
- virtual Container* weld_message_area() override
- {
- return new SalInstanceContainer(m_xMessageDialog->get_message_area(), m_pBuilder, false);
- }
-};
+weld::Container* SalInstanceMessageDialog::weld_message_area()
+{
+ return new SalInstanceContainer(m_xMessageDialog->get_message_area(), m_pBuilder, false);
+}
class SalInstanceFrame : public SalInstanceContainer, public virtual weld::Frame
{
commit 4c44decc50449908b4100c68abbeaabf51043377
Author: Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Mon Mar 16 19:02:00 2020 +0100
Commit: Szymon Kłos <szymon.klos at collabora.com>
CommitDate: Tue Mar 17 15:31:57 2020 +0100
jsdialog: optimization, use latest state, ignore previous
Change-Id: Id637accc4f006ae6206b4e87a44b30d1a8340723
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 02b020d8ea1b..e0449a3827ee 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -1481,6 +1481,7 @@ void CallbackFlushHandler::queue(const int type, const char* data)
case LOK_CALLBACK_TEXT_VIEW_SELECTION:
case LOK_CALLBACK_VIEW_CURSOR_VISIBLE:
case LOK_CALLBACK_CALC_FUNCTION_LIST:
+ case LOK_CALLBACK_JSDIALOG:
{
const int nViewId = lcl_getViewId(payload);
removeAll(
More information about the Libreoffice-commits
mailing list