From 07b224028963a3ce9c1a0401c0dc9fb4538d515e Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Tue, 15 Jan 2019 11:15:50 +0000 Subject: Related: tdf#122627 auto detect of toggle column doesn't work MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit so remove it and explicitly state what column contains the toggle Change-Id: I58fb12a4b8fa9eeb9c038f796e48b0aeaa0b2404 Reviewed-on: https://gerrit.libreoffice.org/66379 Tested-by: Jenkins Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara --- vcl/source/app/salvtables.cxx | 7 ------- vcl/unx/gtk3/gtk3gtkinst.cxx | 19 ++++++++++--------- 2 files changed, 10 insertions(+), 16 deletions(-) (limited to 'vcl') diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index 19af48748b34..828468d23a70 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -2208,8 +2208,6 @@ public: virtual bool get_toggle(int pos, int col) const override { SvTreeListEntry* pEntry = m_xTreeView->GetEntry(nullptr, pos); - if (col == -1) - return m_xTreeView->GetCheckButtonState(pEntry) == SvButtonState::Checked; ++col; //skip dummy/expander column @@ -2225,11 +2223,6 @@ public: virtual void set_toggle(int pos, bool bOn, int col) override { SvTreeListEntry* pEntry = m_xTreeView->GetEntry(nullptr, pos); - if (col == -1) - { - m_xTreeView->SetCheckButtonState(pEntry, bOn ? SvButtonState::Checked : SvButtonState::Unchecked); - return; - } bool bRadio = std::find(m_aRadioIndexes.begin(), m_aRadioIndexes.end(), col) != m_aRadioIndexes.end(); ++col; //skip dummy/expander column diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx index bb9e7a3fa8e9..2031622a77ef 100644 --- a/vcl/unx/gtk3/gtk3gtkinst.cxx +++ b/vcl/unx/gtk3/gtk3gtkinst.cxx @@ -4818,8 +4818,9 @@ private: GtkTreeView* m_pTreeView; GtkTreeStore* m_pTreeStore; std::unique_ptr m_xSorter; + // map from toggle column to toggle visibility column + std::map m_aToggleVisMap; gint m_nTextCol; - gint m_nToggleCol; gint m_nImageCol; gint m_nExpanderImageCol; gint m_nIdCol; @@ -5009,7 +5010,6 @@ public: , m_pTreeView(pTreeView) , m_pTreeStore(GTK_TREE_STORE(gtk_tree_view_get_model(m_pTreeView))) , m_nTextCol(-1) - , m_nToggleCol(-1) , m_nImageCol(-1) , m_nExpanderImageCol(-1) , m_nChangedSignalId(g_signal_connect(gtk_tree_view_get_selection(pTreeView), "changed", @@ -5030,10 +5030,9 @@ public: m_nTextCol = nIndex; else if (GTK_IS_CELL_RENDERER_TOGGLE(pCellRenderer)) { - if (m_nToggleCol == -1) - m_nToggleCol = nIndex; g_object_set_data(G_OBJECT(pCellRenderer), "g-lo-CellIndex", reinterpret_cast(nIndex)); g_signal_connect(G_OBJECT(pCellRenderer), "toggled", G_CALLBACK(signalCellToggled), this); + m_aToggleVisMap[nIndex] = -1; } else if (GTK_IS_CELL_RENDERER_PIXBUF(pCellRenderer)) { @@ -5048,7 +5047,11 @@ public: g_list_free(pRenderers); } g_list_free(pColumns); - m_nIdCol = nIndex; + m_nIdCol = nIndex++; + for (auto& a : m_aToggleVisMap) + { + a.second = nIndex++; + } } virtual void set_column_fixed_widths(const std::vector& rWidths) override @@ -5263,15 +5266,13 @@ public: virtual bool get_toggle(int pos, int col) const override { - if (col == -1) - return get_bool(pos, m_nToggleCol); return get_bool(pos, col); } virtual void set_toggle(int pos, bool bOn, int col) override { - if (col == -1) - return set(pos, m_nToggleCol, bOn); + // checkbuttons are invisible until toggled on or off + set(pos, m_aToggleVisMap[col], true); return set(pos, col, bOn); } -- cgit