summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2020-06-05 12:31:58 +0100
committerCaolán McNamara <caolanm@redhat.com>2020-06-05 16:57:17 +0200
commit32e49998b2edde7a6a8fecddf5da71f3aa5815c2 (patch)
tree30fabfd02f76a484b63d1ea2bf97315c368bd24d
parentd58a3e5f85d44efc9d21dd56329a3ef20cb3692f (diff)
we can't mix radiobuttons and checkbuttons so don't imply otherwise
Change-Id: I11a85090bd14d8655efb95433417764dd1f79052 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95592 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--cui/source/dialogs/multipat.cxx5
-rw-r--r--cui/source/options/certpath.cxx5
-rw-r--r--cui/source/options/optjava.cxx5
-rw-r--r--include/vcl/weld.hxx5
-rw-r--r--sw/source/ui/index/cnttab.cxx6
-rw-r--r--vcl/source/app/salvtables.cxx11
-rw-r--r--vcl/unx/gtk3/gtk3gtkinst.cxx18
7 files changed, 32 insertions, 23 deletions
diff --git a/cui/source/dialogs/multipat.cxx b/cui/source/dialogs/multipat.cxx
index 5b38d584d76f..bd121578c3bb 100644
--- a/cui/source/dialogs/multipat.cxx
+++ b/cui/source/dialogs/multipat.cxx
@@ -197,10 +197,7 @@ SvxMultiPathDialog::SvxMultiPathDialog(weld::Window* pParent)
std::vector<int> aWidths;
aWidths.push_back(m_xRadioLB->get_checkbox_column_width());
m_xRadioLB->set_column_fixed_widths(aWidths);
-
- std::vector<int> aRadioColumns;
- aRadioColumns.push_back(0);
- m_xRadioLB->set_toggle_columns_as_radio(aRadioColumns);
+ m_xRadioLB->set_toggle_columns_as_radio();
m_xRadioLB->connect_toggled(LINK(this, SvxMultiPathDialog, CheckHdl_Impl));
m_xRadioLB->connect_changed(LINK(this, SvxMultiPathDialog, SelectHdl_Impl));
m_xAddBtn->connect_clicked(LINK(this, SvxMultiPathDialog, AddHdl_Impl));
diff --git a/cui/source/options/certpath.cxx b/cui/source/options/certpath.cxx
index 3f2359a5ac50..3b491dadaf89 100644
--- a/cui/source/options/certpath.cxx
+++ b/cui/source/options/certpath.cxx
@@ -38,10 +38,7 @@ CertPathDialog::CertPathDialog(weld::Window* pParent)
aWidths.push_back(m_xCertPathList->get_checkbox_column_width());
aWidths.push_back(m_xCertPathList->get_approximate_digit_width() * 20);
m_xCertPathList->set_column_fixed_widths(aWidths);
-
- std::vector<int> aRadioColumns;
- aRadioColumns.push_back(0);
- m_xCertPathList->set_toggle_columns_as_radio(aRadioColumns);
+ m_xCertPathList->set_toggle_columns_as_radio();
m_xCertPathList->connect_toggled(LINK(this, CertPathDialog, CheckHdl_Impl));
m_xManualButton->connect_clicked( LINK( this, CertPathDialog, ManualHdl_Impl ) );
diff --git a/cui/source/options/optjava.cxx b/cui/source/options/optjava.cxx
index 2d4df6cb3069..d9a54e0f250d 100644
--- a/cui/source/options/optjava.cxx
+++ b/cui/source/options/optjava.cxx
@@ -92,10 +92,7 @@ SvxJavaOptionsPage::SvxJavaOptionsPage(weld::Container* pPage, weld::DialogContr
aWidths.push_back(m_xJavaList->get_checkbox_column_width());
aWidths.push_back(m_xJavaList->get_pixel_size("Sun Microsystems Inc.").Width());
m_xJavaList->set_column_fixed_widths(aWidths);
-
- std::vector<int> aRadioColumns;
- aRadioColumns.push_back(0);
- m_xJavaList->set_toggle_columns_as_radio(aRadioColumns);
+ m_xJavaList->set_toggle_columns_as_radio();
m_xJavaEnableCB->connect_clicked( LINK( this, SvxJavaOptionsPage, EnableHdl_Impl ) );
m_xJavaList->connect_toggled( LINK( this, SvxJavaOptionsPage, CheckHdl_Impl ) );
diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index fedf414432c3..b53bf27c7902 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -793,8 +793,6 @@ protected:
std::function<int(const weld::TreeIter&, const weld::TreeIter&)> m_aCustomSort;
protected:
- std::vector<int> m_aRadioIndexes;
-
void signal_changed() { m_aChangeHdl.Call(*this); }
bool signal_row_activated() { return m_aRowActivatedHdl.Call(*this); }
void signal_column_clicked(int nColumn) { m_aColumnClickedHdl.Call(nColumn); }
@@ -1134,7 +1132,8 @@ public:
// remove the selected nodes
virtual void remove_selection() = 0;
- void set_toggle_columns_as_radio(const std::vector<int>& rCols) { m_aRadioIndexes = rCols; }
+ // call before inserting any content
+ virtual void set_toggle_columns_as_radio() = 0;
virtual void vadjustment_set_value(int value) = 0;
virtual int vadjustment_get_value() const = 0;
diff --git a/sw/source/ui/index/cnttab.cxx b/sw/source/ui/index/cnttab.cxx
index 91e41c7a8b2e..300d046df5d0 100644
--- a/sw/source/ui/index/cnttab.cxx
+++ b/sw/source/ui/index/cnttab.cxx
@@ -499,11 +499,7 @@ SwAddStylesDlg_Impl::SwAddStylesDlg_Impl(weld::Window* pParent,
m_xLeftPB->connect_clicked(LINK(this, SwAddStylesDlg_Impl, LeftRightHdl));
m_xRightPB->connect_clicked(LINK(this, SwAddStylesDlg_Impl, LeftRightHdl));
m_xHeaderTree->connect_size_allocate(LINK(this, SwAddStylesDlg_Impl, TreeSizeAllocHdl));
-
- std::vector<int> aRadioColumns;
- for (sal_uInt16 i = 0; i <= MAXLEVEL; ++i)
- aRadioColumns.push_back(i + 1);
- m_xHeaderTree->set_toggle_columns_as_radio(aRadioColumns);
+ m_xHeaderTree->set_toggle_columns_as_radio();
m_xHeaderTree->connect_toggled(LINK(this, SwAddStylesDlg_Impl, RadioToggleOnHdl));
std::vector<int> aWidths;
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index e00adc86f6a5..5125af466f6b 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -3202,6 +3202,7 @@ private:
o3tl::sorted_vector<SvTreeListEntry*> m_aExpandingPlaceHolderParents;
// which columns should be custom rendered
o3tl::sorted_vector<int> m_aCustomRenders;
+ bool m_bTogglesAsRadio;
bool m_bDisableCheckBoxAutoWidth;
int m_nSortColumn;
@@ -3329,6 +3330,7 @@ public:
, m_xTreeView(pTreeView)
, m_aCheckButtonData(pTreeView, false)
, m_aRadioButtonData(pTreeView, true)
+ , m_bTogglesAsRadio(false)
, m_bDisableCheckBoxAutoWidth(false)
, m_nSortColumn(-1)
{
@@ -3814,10 +3816,13 @@ public:
return ::get_toggle(rVclIter.iter, col);
}
+ virtual void set_toggle_columns_as_radio() override
+ {
+ m_bTogglesAsRadio = true;
+ }
+
void set_toggle(SvTreeListEntry* pEntry, TriState eState, int col)
{
- bool bRadio = std::find(m_aRadioIndexes.begin(), m_aRadioIndexes.end(), col)
- != m_aRadioIndexes.end();
++col; //skip dummy/expander column
// blank out missing entries
@@ -3826,7 +3831,7 @@ public:
if (static_cast<size_t>(col) == pEntry->ItemCount())
{
- SvLBoxButtonData* pData = bRadio ? &m_aRadioButtonData : &m_aCheckButtonData;
+ SvLBoxButtonData* pData = m_bTogglesAsRadio ? &m_aRadioButtonData : &m_aCheckButtonData;
// if we want to have the implicit auto-sizing of the checkbox
// column we need to call EnableCheckButton and CheckBoxInserted to
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index b07acf43e0b6..f48e98c46903 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -10430,6 +10430,24 @@ public:
}
}
+ virtual void set_toggle_columns_as_radio() override
+ {
+ for (GList* pEntry = g_list_first(m_pColumns); pEntry; pEntry = g_list_next(pEntry))
+ {
+ GtkTreeViewColumn* pColumn = GTK_TREE_VIEW_COLUMN(pEntry->data);
+ GList *pRenderers = gtk_cell_layout_get_cells(GTK_CELL_LAYOUT(pColumn));
+ for (GList* pRenderer = g_list_first(pRenderers); pRenderer; pRenderer = g_list_next(pRenderer))
+ {
+ GtkCellRenderer* pCellRenderer = GTK_CELL_RENDERER(pRenderer->data);
+ if (!GTK_IS_CELL_RENDERER_TOGGLE(pCellRenderer))
+ continue;
+ GtkCellRendererToggle* pToggle = GTK_CELL_RENDERER_TOGGLE(pCellRenderer);
+ gtk_cell_renderer_toggle_set_radio(pToggle, true);
+ }
+ g_list_free(pRenderers);
+ }
+ }
+
virtual void set_extra_row_indent(const weld::TreeIter& rIter, int nIndentLevel) override
{
const GtkInstanceTreeIter& rGtkIter = static_cast<const GtkInstanceTreeIter&>(rIter);