summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/svx/ctredlin.hxx17
-rw-r--r--sc/source/ui/miscdlgs/conflictsdlg.cxx3
-rw-r--r--solenv/sanitizers/ui/svx.suppr1
-rw-r--r--svx/source/dialog/ctredlin.cxx22
-rw-r--r--svx/uiconfig/ui/redlineviewpage.ui75
-rw-r--r--sw/source/uibase/inc/redlndlg.hxx2
-rw-r--r--sw/source/uibase/misc/redlndlg.cxx22
7 files changed, 123 insertions, 19 deletions
diff --git a/include/svx/ctredlin.hxx b/include/svx/ctredlin.hxx
index f852a4886bd7..c098efa6a11b 100644
--- a/include/svx/ctredlin.hxx
+++ b/include/svx/ctredlin.hxx
@@ -83,6 +83,8 @@ private:
std::unique_ptr<weld::TreeView> xCalcTreeView;
weld::TreeView* pTreeView;
+ weld::ComboBox* m_pSortByComboBox;
+
sal_uInt16 nDatePos;
bool bAuthor;
bool bDate;
@@ -100,7 +102,8 @@ private:
public:
SvxRedlinTable(std::unique_ptr<weld::TreeView> xWriterControl,
- std::unique_ptr<weld::TreeView> xCalcControl);
+ std::unique_ptr<weld::TreeView> xCalcControl,
+ weld::ComboBox* pSortByControl);
weld::TreeView& GetWidget() { return *pTreeView; }
bool IsSorted() const { return bSorted; }
@@ -256,13 +259,14 @@ public:
class SAL_WARN_UNUSED SVX_DLLPUBLIC SvxTPView final : public SvxTPage
{
private:
-
Link<SvxTPView*,void> AcceptClickLk;
Link<SvxTPView*,void> AcceptAllClickLk;
Link<SvxTPView*,void> RejectClickLk;
Link<SvxTPView*,void> RejectAllClickLk;
Link<SvxTPView*,void> UndoClickLk;
+ Link<SvxTPView*,void> SortByComboBoxChangedLk;
+
bool bEnableAccept;
bool bEnableAcceptAll;
bool bEnableReject;
@@ -277,9 +281,11 @@ private:
std::unique_ptr<weld::Button> m_xAcceptAll;
std::unique_ptr<weld::Button> m_xRejectAll;
std::unique_ptr<weld::Button> m_xUndo;
+ std::unique_ptr<weld::ComboBox> m_xSortByComboBox;
std::unique_ptr<SvxRedlinTable> m_xViewData;
DECL_DLLPRIVATE_LINK( PbClickHdl, weld::Button&, void );
+ DECL_DLLPRIVATE_LINK(SortByComboBoxChangedHdl, weld::ComboBox&, void);
public:
SvxTPView(weld::Container* pParent);
@@ -287,6 +293,8 @@ public:
SvxRedlinTable* GetTableControl() { return m_xViewData.get(); }
+ weld::ComboBox* GetSortByComboBoxControl() { return m_xSortByComboBox.get(); }
+
void EnableAccept(bool bFlag);
void EnableAcceptAll(bool bFlag);
void EnableReject(bool bFlag);
@@ -307,6 +315,11 @@ public:
void SetUndoClickHdl( const Link<SvxTPView*,void>& rLink ) { UndoClickLk = rLink; }
+ void SetSortByComboBoxChangedHdl(const Link<SvxTPView*, void>& rLink)
+ {
+ SortByComboBoxChangedLk = rLink;
+ }
+
virtual void ActivatePage() override;
void DeactivatePage();
};
diff --git a/sc/source/ui/miscdlgs/conflictsdlg.cxx b/sc/source/ui/miscdlgs/conflictsdlg.cxx
index a70cff4641b0..6e20e04e0414 100644
--- a/sc/source/ui/miscdlgs/conflictsdlg.cxx
+++ b/sc/source/ui/miscdlgs/conflictsdlg.cxx
@@ -334,7 +334,8 @@ ScConflictsDlg::ScConflictsDlg(weld::Window* pParent, ScViewData* pViewData, ScD
, m_xBtnKeepOther(m_xBuilder->weld_button(u"keepother"_ustr))
, m_xBtnKeepAllMine(m_xBuilder->weld_button(u"keepallmine"_ustr))
, m_xBtnKeepAllOthers(m_xBuilder->weld_button(u"keepallothers"_ustr))
- , m_xLbConflicts(new SvxRedlinTable(m_xBuilder->weld_tree_view(u"container"_ustr), nullptr))
+ , m_xLbConflicts(new SvxRedlinTable(m_xBuilder->weld_tree_view(u"container"_ustr), nullptr,
+ nullptr))
{
OSL_ENSURE( mpViewData, "ScConflictsDlg CTOR: mpViewData is null!" );
mpOwnDoc = ( mpViewData ? &mpViewData->GetDocument() : nullptr );
diff --git a/solenv/sanitizers/ui/svx.suppr b/solenv/sanitizers/ui/svx.suppr
index 0c952e5dc460..5f2d0d8a8bc6 100644
--- a/solenv/sanitizers/ui/svx.suppr
+++ b/solenv/sanitizers/ui/svx.suppr
@@ -72,6 +72,7 @@ svx/uiconfig/ui/redlinefilterpage.ui://GtkComboBoxText[@id='authorlist'] missing
svx/uiconfig/ui/redlinefilterpage.ui://GtkEntry[@id='rangeedit'] missing-label-for
svx/uiconfig/ui/redlinefilterpage.ui://GtkComboBoxText[@id='datecond'] missing-label-for
svx/uiconfig/ui/redlinefilterpage.ui://GtkLabel[@id='and'] orphan-label
+svx/uiconfig/ui/redlineviewpage.ui://GtkLabel[@id='sortbylabel'] orphan-label
svx/uiconfig/ui/safemodedialog.ui://GtkLabel[@id='label1'] orphan-label
svx/uiconfig/ui/safemodedialog.ui://GtkLabel[@id='label3'] orphan-label
svx/uiconfig/ui/safemodedialog.ui://GtkLabel[@id='label4'] orphan-label
diff --git a/svx/source/dialog/ctredlin.cxx b/svx/source/dialog/ctredlin.cxx
index 49091e01578a..1657bdd53c04 100644
--- a/svx/source/dialog/ctredlin.cxx
+++ b/svx/source/dialog/ctredlin.cxx
@@ -47,12 +47,14 @@ RedlinData::~RedlinData()
}
SvxRedlinTable::SvxRedlinTable(std::unique_ptr<weld::TreeView> xWriterControl,
- std::unique_ptr<weld::TreeView> xCalcControl)
+ std::unique_ptr<weld::TreeView> xCalcControl,
+ weld::ComboBox* pSortByControl)
: xSorter(new comphelper::string::NaturalStringSorter(::comphelper::getProcessComponentContext(),
Application::GetSettings().GetUILanguageTag().getLocale()))
, xWriterTreeView(std::move(xWriterControl))
, xCalcTreeView(std::move(xCalcControl))
, pTreeView(nullptr)
+ , m_pSortByComboBox(pSortByControl)
, nDatePos(WRITER_DATE)
, bAuthor(false)
, bDate(false)
@@ -121,6 +123,8 @@ IMPL_LINK(SvxRedlinTable, HeaderBarClick, int, nColumn, void)
{
//sort lists
pTreeView->set_sort_indicator(bSortAtoZ ? TRISTATE_TRUE : TRISTATE_FALSE, nColumn);
+ if (m_pSortByComboBox)
+ m_pSortByComboBox->set_active(nColumn);
}
}
@@ -311,9 +315,13 @@ SvxTPView::SvxTPView(weld::Container* pParent)
, m_xAcceptAll(m_xBuilder->weld_button(u"acceptall"_ustr))
, m_xRejectAll(m_xBuilder->weld_button(u"rejectall"_ustr))
, m_xUndo(m_xBuilder->weld_button(u"undo"_ustr))
+ , m_xSortByComboBox(m_xBuilder->weld_combo_box(u"sortbycombobox"_ustr))
, m_xViewData(new SvxRedlinTable(m_xBuilder->weld_tree_view(u"writerchanges"_ustr),
- m_xBuilder->weld_tree_view(u"calcchanges"_ustr)))
+ m_xBuilder->weld_tree_view(u"calcchanges"_ustr),
+ m_xSortByComboBox.get()))
{
+ m_xSortByComboBox->connect_changed(LINK(this, SvxTPView, SortByComboBoxChangedHdl));
+
Link<weld::Button&,void> aLink=LINK( this, SvxTPView, PbClickHdl);
m_xAccept->connect_clicked(aLink);
@@ -351,6 +359,8 @@ void SvxRedlinTable::SetWriterView()
if (xCalcTreeView)
xCalcTreeView->hide();
xWriterTreeView->show();
+ if (m_pSortByComboBox)
+ m_pSortByComboBox->weld_parent()->show();
pTreeView = xWriterTreeView.get();
auto nDigitWidth = pTreeView->get_approximate_digit_width();
@@ -368,6 +378,8 @@ void SvxRedlinTable::SetCalcView()
nDatePos = CALC_DATE;
if (xWriterTreeView)
xWriterTreeView->hide();
+ if (m_pSortByComboBox)
+ m_pSortByComboBox->weld_parent()->hide();
xCalcTreeView->show();
pTreeView = xCalcTreeView.get();
@@ -431,6 +443,12 @@ void SvxTPView::EnableUndo(bool bFlag)
m_xUndo->set_sensitive(bFlag);
}
+IMPL_LINK_NOARG(SvxTPView, SortByComboBoxChangedHdl, weld::ComboBox&, void)
+{
+ if (SortByComboBoxChangedLk.IsSet())
+ SortByComboBoxChangedLk.Call(this);
+}
+
IMPL_LINK( SvxTPView, PbClickHdl, weld::Button&, rPushB, void)
{
if (&rPushB == m_xAccept.get())
diff --git a/svx/uiconfig/ui/redlineviewpage.ui b/svx/uiconfig/ui/redlineviewpage.ui
index ee49056c02c8..ddf87a9d4185 100644
--- a/svx/uiconfig/ui/redlineviewpage.ui
+++ b/svx/uiconfig/ui/redlineviewpage.ui
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.38.2 -->
+<!-- Generated with glade 3.40.0 -->
<interface domain="svx">
<requires lib="gtk+" version="3.20"/>
<object class="GtkTreeStore" id="liststore1">
@@ -47,6 +47,53 @@
<property name="orientation">vertical</property>
<property name="spacing">12</property>
<child>
+ <object class="GtkBox">
+ <property name="can-focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkLabel" id="sortbylabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes" context="redlineviewpage|sortbylabel">Sort by:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="sortbycombobox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="active">4</property>
+ <items>
+ <item id="action" translatable="yes" context="redlineviewpage|sortbycombobox">Action</item>
+ <item id="author" translatable="yes" context="redlineviewpage|sortbycombobox">Author</item>
+ <item id="date" translatable="yes" context="redlineviewpage|sortbycombobox">Date</item>
+ <item id="comment" translatable="yes" context="redlineviewpage|sortbycombox">Comment</item>
+ <item id="documentposition" translatable="yes" context="redlineviewpage|sortbycombobox">Document Position</item>
+ </items>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="sortbycombobox-atkobject">
+ <property name="AtkObject::accessible-description" translatable="yes" context="redlineviewpage|extended_tip|SortByComboBox">How to sort the changes list.</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
<object class="GtkScrolledWindow">
<property name="can-focus">True</property>
<property name="hexpand">True</property>
@@ -128,18 +175,18 @@
</child>
</object>
</child>
- </object>
- </child>
- <child internal-child="accessible">
- <object class="AtkObject">
- <property name="AtkObject::accessible-name" translatable="yes" context="redlineviewpage|writerchanges-atkobject">Changes</property>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="writerchanges-atkobject">
+ <property name="AtkObject::accessible-name" translatable="yes" context="redlineviewpage|writerchanges-atkobject">Changes</property>
+ </object>
+ </child>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
- <property name="position">0</property>
+ <property name="position">1</property>
</packing>
</child>
<child>
@@ -234,18 +281,18 @@
</child>
</object>
</child>
- </object>
- </child>
- <child internal-child="accessible">
- <object class="AtkObject">
- <property name="AtkObject::accessible-name" translatable="yes" context="redlineviewpage|calcchanges-atkobject">Changes</property>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="calcchanges-atkobject">
+ <property name="AtkObject::accessible-name" translatable="yes" context="redlineviewpage|calcchanges-atkobject">Changes</property>
+ </object>
+ </child>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
- <property name="position">1</property>
+ <property name="position">2</property>
</packing>
</child>
<child>
@@ -354,7 +401,7 @@
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">2</property>
+ <property name="position">3</property>
</packing>
</child>
<child internal-child="accessible">
diff --git a/sw/source/uibase/inc/redlndlg.hxx b/sw/source/uibase/inc/redlndlg.hxx
index b0c53e00f350..ef8c0cd8dce3 100644
--- a/sw/source/uibase/inc/redlndlg.hxx
+++ b/sw/source/uibase/inc/redlndlg.hxx
@@ -85,6 +85,8 @@ class SW_DLLPUBLIC SwRedlineAcceptDlg final : public SfxListener
SvxTPView* m_pTPView;
SvxRedlinTable* m_pTable; // PB 2006/02/02 #i48648 now SvHeaderTabListBox
+ DECL_DLLPRIVATE_LINK(SortByComboBoxChangedHdl, SvxTPView*, void);
+
DECL_DLLPRIVATE_LINK( AcceptHdl, SvxTPView*, void );
DECL_DLLPRIVATE_LINK( AcceptAllHdl, SvxTPView*, void );
DECL_DLLPRIVATE_LINK( RejectHdl, SvxTPView*, void );
diff --git a/sw/source/uibase/misc/redlndlg.cxx b/sw/source/uibase/misc/redlndlg.cxx
index 5efd064889ab..26b40b917e50 100644
--- a/sw/source/uibase/misc/redlndlg.cxx
+++ b/sw/source/uibase/misc/redlndlg.cxx
@@ -167,6 +167,11 @@ SwRedlineAcceptDlg::SwRedlineAcceptDlg(std::shared_ptr<weld::Window> xParent, we
m_pTable = m_pTPView->GetTableControl();
m_pTable->SetWriterView();
+ m_pTPView->GetSortByComboBoxControl()->set_active(4);
+
+ m_pTPView->SetSortByComboBoxChangedHdl(
+ LINK(this, SwRedlineAcceptDlg, SortByComboBoxChangedHdl));
+
m_pTPView->SetAcceptClickHdl(LINK(this, SwRedlineAcceptDlg, AcceptHdl));
m_pTPView->SetAcceptAllClickHdl(LINK(this, SwRedlineAcceptDlg, AcceptAllHdl));
m_pTPView->SetRejectClickHdl(LINK(this, SwRedlineAcceptDlg, RejectHdl));
@@ -1174,6 +1179,20 @@ SwRedlineTable::size_type SwRedlineAcceptDlg::GetRedlinePos(const weld::TreeIter
rTreeView.get_id(rEntry))->pData)->pData );
}
+IMPL_LINK_NOARG(SwRedlineAcceptDlg, SortByComboBoxChangedHdl, SvxTPView*, void)
+{
+ SwView* pView = GetActiveView();
+ if (!pView)
+ return;
+ SwWait aWait(*pView->GetDocShell(), false);
+ auto nSortMode = m_pTPView->GetSortByComboBoxControl()->get_active();
+ if (nSortMode == 4)
+ nSortMode = -1;
+ m_pTable->HeaderBarClick(nSortMode);
+ if (nSortMode == -1)
+ Init();
+}
+
IMPL_LINK_NOARG(SwRedlineAcceptDlg, AcceptHdl, SvxTPView*, void)
{
CallAcceptReject( true, true );
@@ -1455,6 +1474,9 @@ IMPL_LINK(SwRedlineAcceptDlg, CommandHdl, const CommandEvent&, rCEvt, bool)
if (nSortMode == 4 && nColumn == 4)
return true; // we already have it
+
+ m_pTPView->GetSortByComboBoxControl()->set_active(nSortMode);
+
if (nSortMode == 4)
nSortMode = -1; // unsorted / sorted by position