summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-12-03 16:27:28 +0000
committerCaolán McNamara <caolanm@redhat.com>2018-12-04 09:54:39 +0100
commit486268cc87907a399649bd4612078031dce262d4 (patch)
treec4476a8715ea4a7cded6de70508ab8959a363ab2 /vcl
parenta89e8c54e8aa95e7f59f204cc3396e2acbdd860a (diff)
weld OfaAutoCorrDlg
Change-Id: Iba217a2998de57bf963872f9b8c1cf38694eb935 Reviewed-on: https://gerrit.libreoffice.org/64476 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/source/app/salvtables.cxx6
-rw-r--r--vcl/unx/gtk3/gtk3gtkinst.cxx48
2 files changed, 52 insertions, 2 deletions
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index ca9669531403..6adc7d802775 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -3000,6 +3000,12 @@ public:
return *pRet;
}
+ virtual void set_id(int row, const OUString& rId) override
+ {
+ m_aUserData.emplace_back(o3tl::make_unique<OUString>(rId));
+ m_xComboBox->SetEntryData(row, m_aUserData.back().get());
+ }
+
virtual void insert_vector(const std::vector<weld::ComboBoxEntry>& rItems, bool bKeepExisting) override
{
freeze();
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 19ad71bfc4b4..862987edfc77 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -4518,6 +4518,29 @@ private:
return bRet;
}
+ static void signalToggled(GtkCellRendererToggle* pCell, const gchar *path, gpointer widget)
+ {
+ GtkInstanceTreeView* pThis = static_cast<GtkInstanceTreeView*>(widget);
+ void* pData = g_object_get_data(G_OBJECT(pCell), "g-lo-CellIndex");
+ pThis->signal_toggled(path, reinterpret_cast<sal_IntPtr>(pData));
+ }
+
+ void signal_toggled(const gchar *path, int nIndex)
+ {
+ GtkTreePath *tree_path = gtk_tree_path_new_from_string(path);
+
+ GtkTreeModel *pModel = GTK_TREE_MODEL(m_pTreeStore);
+ GtkTreeIter iter;
+ gtk_tree_model_get_iter(pModel, &iter, tree_path);
+
+ gboolean bRet(false);
+ gtk_tree_model_get(pModel, &iter, nIndex, &bRet, -1);
+ bRet = !bRet;
+ gtk_tree_store_set(m_pTreeStore, &iter, nIndex, bRet, -1);
+
+ gtk_tree_path_free(tree_path);
+ }
+
public:
GtkInstanceTreeView(GtkTreeView* pTreeView, bool bTakeOwnership)
: GtkInstanceContainer(GTK_CONTAINER(pTreeView), bTakeOwnership)
@@ -4543,8 +4566,13 @@ public:
GtkCellRenderer* pCellRenderer = GTK_CELL_RENDERER(pRenderer->data);
if (m_nTextCol == -1 && GTK_IS_CELL_RENDERER_TEXT(pCellRenderer))
m_nTextCol = nIndex;
- else if (m_nToggleCol == -1 && GTK_IS_CELL_RENDERER_TOGGLE(pCellRenderer))
- m_nToggleCol = 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<gpointer>(nIndex));
+ g_signal_connect(G_OBJECT(pCellRenderer), "toggled", G_CALLBACK(signalToggled), this);
+ }
else if (GTK_IS_CELL_RENDERER_PIXBUF(pCellRenderer))
{
const bool bExpander = g_list_next(pRenderer) != nullptr;
@@ -5984,6 +6012,16 @@ private:
return sRet;
}
+ void set(int pos, int col, const OUString& rText)
+ {
+ GtkTreeIter iter;
+ if (gtk_tree_model_iter_nth_child(m_pTreeModel, &iter, nullptr, pos))
+ {
+ OString aStr(OUStringToOString(rText, RTL_TEXTENCODING_UTF8));
+ gtk_list_store_set(GTK_LIST_STORE(m_pTreeModel), &iter, col, aStr.getStr(), -1);
+ }
+ }
+
int find(const OUString& rStr, int col) const
{
GtkTreeIter iter;
@@ -6301,6 +6339,12 @@ public:
return get(pos, id_column);
}
+ virtual void set_id(int pos, const OUString& rId) override
+ {
+ gint id_column = gtk_combo_box_get_id_column(m_pComboBox);
+ set(pos, id_column, rId);
+ }
+
// https://gitlab.gnome.org/GNOME/gtk/issues/94
// when a super tall combobox menu is activated, and the selected entry is sufficiently
// far down the list, then the menu doesn't appear under wayland