diff options
author | Caolán McNamara <caolanm@redhat.com> | 2020-06-05 12:31:58 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2020-06-05 16:57:17 +0200 |
commit | 32e49998b2edde7a6a8fecddf5da71f3aa5815c2 (patch) | |
tree | 30fabfd02f76a484b63d1ea2bf97315c368bd24d | |
parent | d58a3e5f85d44efc9d21dd56329a3ef20cb3692f (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.cxx | 5 | ||||
-rw-r--r-- | cui/source/options/certpath.cxx | 5 | ||||
-rw-r--r-- | cui/source/options/optjava.cxx | 5 | ||||
-rw-r--r-- | include/vcl/weld.hxx | 5 | ||||
-rw-r--r-- | sw/source/ui/index/cnttab.cxx | 6 | ||||
-rw-r--r-- | vcl/source/app/salvtables.cxx | 11 | ||||
-rw-r--r-- | vcl/unx/gtk3/gtk3gtkinst.cxx | 18 |
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); |