summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShivam Kumar Singh <shivamhere247@gmail.com>2020-07-10 16:00:37 +0530
committerHeiko Tietze <heiko.tietze@documentfoundation.org>2020-07-13 11:11:55 +0200
commit00be56d9db396d284f66ab723d6fbb898b888dfb (patch)
tree103437f6f9f9f2f1d9d43bbed3380916644ebe84
parentd7ffeae2dd588a891d0aef5dd136f394a55200c0 (diff)
tdf#134661 Issue in Inspector update
This patch now uses AttrChangedNotify instead of NotifyItemUpdate to check for cursor change Change-Id: Ibdbd1565d72097d2f78ecb8194a201585951ce9d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98490 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
-rw-r--r--sw/source/uibase/sidebar/SwPanelFactory.cxx2
-rw-r--r--sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx71
-rw-r--r--sw/source/uibase/sidebar/WriterInspectorTextPanel.hxx21
3 files changed, 35 insertions, 59 deletions
diff --git a/sw/source/uibase/sidebar/SwPanelFactory.cxx b/sw/source/uibase/sidebar/SwPanelFactory.cxx
index b3d1bbf6932f..b073b2801733 100644
--- a/sw/source/uibase/sidebar/SwPanelFactory.cxx
+++ b/sw/source/uibase/sidebar/SwPanelFactory.cxx
@@ -172,7 +172,7 @@ Reference<ui::XUIElement> SAL_CALL SwPanelFactory::createUIElement (
}
else if (rsResourceURL.endsWith("/WriterInspectorTextPanel"))
{
- VclPtr<vcl::Window> pPanel = sw::sidebar::WriterInspectorTextPanel::Create( pParentWindow, xFrame, pBindings);
+ VclPtr<vcl::Window> pPanel = sw::sidebar::WriterInspectorTextPanel::Create( pParentWindow, xFrame);
xElement = sfx2::sidebar::SidebarPanelBase::Create(
rsResourceURL,
xFrame,
diff --git a/sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx b/sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx
index 0bfafc0a5bc9..7222c3de0989 100644
--- a/sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx
+++ b/sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx
@@ -35,8 +35,7 @@
namespace sw::sidebar
{
VclPtr<vcl::Window> WriterInspectorTextPanel::Create(vcl::Window* pParent,
- const uno::Reference<frame::XFrame>& rxFrame,
- SfxBindings* pBindings)
+ const uno::Reference<frame::XFrame>& rxFrame)
{
if (pParent == nullptr)
throw lang::IllegalArgumentException(
@@ -44,20 +43,18 @@ VclPtr<vcl::Window> WriterInspectorTextPanel::Create(vcl::Window* pParent,
if (!rxFrame.is())
throw lang::IllegalArgumentException("no XFrame given to WriterInspectorTextPanel::Create",
nullptr, 1);
- if (pBindings == nullptr)
- throw lang::IllegalArgumentException(
- "no SfxBindings given to WriterInspectorTextPanel::Create", nullptr, 2);
- return VclPtr<WriterInspectorTextPanel>::Create(pParent, rxFrame, pBindings);
+ return VclPtr<WriterInspectorTextPanel>::Create(pParent, rxFrame);
}
WriterInspectorTextPanel::WriterInspectorTextPanel(vcl::Window* pParent,
- const uno::Reference<frame::XFrame>& rxFrame,
- SfxBindings* pBindings)
+ const uno::Reference<frame::XFrame>& rxFrame)
: InspectorTextPanel(pParent, rxFrame)
- , maCharStyle(SID_STYLE_FAMILY1, *pBindings, *this)
- , maParaStyle(SID_STYLE_FAMILY2, *pBindings, *this)
{
+ SwDocShell* pDocSh = static_cast<SwDocShell*>(SfxObjectShell::Current());
+ SwWrtShell* pShell = pDocSh->GetWrtShell();
+ if (pShell)
+ pShell->SetChgLnk(LINK(this, WriterInspectorTextPanel, AttrChangedNotify));
}
static bool GetPropertyValues(const beans::Property rProperty, const uno::Any& rAny,
@@ -229,44 +226,34 @@ static void UpdateTree(SwDocShell* pDocSh, svx::sidebar::TreeNode& pParentNode,
std::reverse(pParentNode.children.begin(), pParentNode.children.end());
}
-void WriterInspectorTextPanel::NotifyItemUpdate(const sal_uInt16 nSId,
- const SfxItemState /*eState*/,
- const SfxPoolItem* /*pState*/)
+IMPL_LINK_NOARG(WriterInspectorTextPanel, AttrChangedNotify, LinkParamNone*, void)
{
SwDocShell* pDocSh = static_cast<SwDocShell*>(SfxObjectShell::Current());
std::vector<svx::sidebar::TreeNode> aStore;
std::unordered_map<OUString, bool> maIsDefined;
- switch (nSId)
+ if (pDocSh && pDocSh->GetDoc()->GetEditShell()->GetCursor()->GetNode().GetTextNode())
{
- case SID_STYLE_FAMILY1:
- case SID_STYLE_FAMILY2:
- {
- if (pDocSh && pDocSh->GetDoc()->GetEditShell()->GetCursor()->GetNode().GetTextNode())
- {
- /*
- First check in the property set of Character Styles
- (as CS has higher priority over PS), then look into
- property set of Paragraph Styles;
- */
- svx::sidebar::TreeNode pTempChar;
- pTempChar.sNodeName = "CHARACTER STYLES";
- UpdateTree(pDocSh, pTempChar, maIsDefined, CHARACTERSTYLES);
- svx::sidebar::TreeNode pTempPara;
- pTempPara.sNodeName = "PARAGRAPH STYLES";
- UpdateTree(pDocSh, pTempPara, maIsDefined, PARAGRAPHSTYLES);
-
- /*
- Order:-
- PARAGRAPH STYLES
- CHARACTER STYLES
- DEFAULT FORMATTING
- */
- aStore.push_back(pTempPara);
- aStore.push_back(pTempChar);
- }
- }
- break;
+ /*
+ First check in the property set of Character Styles
+ (as CS has higher priority over PS), then look into
+ property set of Paragraph Styles;
+ */
+ svx::sidebar::TreeNode pTempChar;
+ pTempChar.sNodeName = "CHARACTER STYLES";
+ UpdateTree(pDocSh, pTempChar, maIsDefined, CHARACTERSTYLES);
+ svx::sidebar::TreeNode pTempPara;
+ pTempPara.sNodeName = "PARAGRAPH STYLES";
+ UpdateTree(pDocSh, pTempPara, maIsDefined, PARAGRAPHSTYLES);
+
+ /*
+ Order:-
+ PARAGRAPH STYLES
+ CHARACTER STYLES
+ DEFAULT FORMATTING
+ */
+ aStore.push_back(pTempPara);
+ aStore.push_back(pTempChar);
}
updateEntries(aStore);
diff --git a/sw/source/uibase/sidebar/WriterInspectorTextPanel.hxx b/sw/source/uibase/sidebar/WriterInspectorTextPanel.hxx
index 2e54329b7b81..8c674e380812 100644
--- a/sw/source/uibase/sidebar/WriterInspectorTextPanel.hxx
+++ b/sw/source/uibase/sidebar/WriterInspectorTextPanel.hxx
@@ -19,7 +19,6 @@
#pragma once
#include <sfx2/weldutils.hxx>
-#include <sfx2/sidebar/ControllerItem.hxx>
#include <docsh.hxx>
#include <unordered_map>
@@ -36,29 +35,19 @@ namespace sw
{
namespace sidebar
{
-class WriterInspectorTextPanel final
- : public svx::sidebar::InspectorTextPanel,
- public sfx2::sidebar::ControllerItem::ItemUpdateReceiverInterface
+class WriterInspectorTextPanel final : public svx::sidebar::InspectorTextPanel
{
public:
static VclPtr<vcl::Window> Create(vcl::Window* pParent,
- const css::uno::Reference<css::frame::XFrame>& rxFrame,
- SfxBindings* pBindings);
+ const css::uno::Reference<css::frame::XFrame>& rxFrame);
WriterInspectorTextPanel(vcl::Window* pParent,
- const css::uno::Reference<css::frame::XFrame>& rxFrame,
- SfxBindings* pBindings);
+ const css::uno::Reference<css::frame::XFrame>& rxFrame);
// virtual ~WriterInspectorTextPanel();
- virtual void NotifyItemUpdate(const sal_uInt16 nSId, const SfxItemState eState,
- const SfxPoolItem* pState) override;
- virtual void GetControlState(const sal_uInt16 /*nSId*/,
- boost::property_tree::ptree& /*rState*/) override{};
-
-private:
- sfx2::sidebar::ControllerItem maCharStyle;
- sfx2::sidebar::ControllerItem maParaStyle;
+ // attributes have changed
+ DECL_LINK(AttrChangedNotify, LinkParamNone*, void);
};
}
} // end of namespace svx::sidebar