summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-10-25 10:02:34 +0100
committerCaolán McNamara <caolanm@redhat.com>2018-10-25 13:23:20 +0200
commitce155a8943bdd8cfa8e32e38fc83160df25beee1 (patch)
tree0e208aafd4ce8fb555d2c4d207f77b58d2356bb8 /vcl
parent749ef30c823e595f42e9844fb438441250389a0a (diff)
weld SwTOXStylesTabPage
Change-Id: I1e7056ef8293ddc7072e95ee248e45b2785d1234 Reviewed-on: https://gerrit.libreoffice.org/62347 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.cxx5
-rw-r--r--vcl/unx/gtk3/gtk3gtkinst.cxx55
2 files changed, 43 insertions, 17 deletions
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 972e23dacaf9..485b404ac200 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -1860,6 +1860,11 @@ public:
return m_xTreeView->CalcWindowSizePixel(nRows);
}
+ virtual void make_sorted() override
+ {
+ m_xTreeView->SetStyle(m_xTreeView->GetStyle() | WB_SORT);
+ }
+
ListBox& getTreeView()
{
return *m_xTreeView;
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 90f104511547..09594386fa1d 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -3912,11 +3912,29 @@ namespace
}
}
+namespace
+{
+ gint sort_func(GtkTreeModel* pModel, GtkTreeIter* a, GtkTreeIter* b, gpointer data)
+ {
+ comphelper::string::NaturalStringSorter* pSorter = static_cast<comphelper::string::NaturalStringSorter*>(data);
+ gchar* pName1;
+ gchar* pName2;
+ gtk_tree_model_get(pModel, a, 0, &pName1, -1);
+ gtk_tree_model_get(pModel, b, 0, &pName2, -1);
+ gint ret = pSorter->compare(OUString(pName1, strlen(pName1), RTL_TEXTENCODING_UTF8),
+ OUString(pName2, strlen(pName2), RTL_TEXTENCODING_UTF8));
+ g_free(pName1);
+ g_free(pName2);
+ return ret;
+ }
+}
+
class GtkInstanceTreeView : public GtkInstanceContainer, public virtual weld::TreeView
{
private:
GtkTreeView* m_pTreeView;
GtkListStore* m_pListStore;
+ std::unique_ptr<comphelper::string::NaturalStringSorter> m_xSorter;
gulong m_nChangedSignalId;
gulong m_nRowActivatedSignalId;
@@ -4036,6 +4054,16 @@ public:
enable_notify_events();
}
+ virtual void make_sorted() override
+ {
+ m_xSorter.reset(new comphelper::string::NaturalStringSorter(
+ ::comphelper::getProcessComponentContext(),
+ Application::GetSettings().GetUILanguageTag().getLocale()));
+ GtkTreeSortable* pSortable = GTK_TREE_SORTABLE(m_pListStore);
+ gtk_tree_sortable_set_sort_func(pSortable, 0, sort_func, m_xSorter.get(), nullptr);
+ gtk_tree_sortable_set_sort_column_id(pSortable, 0, GTK_SORT_ASCENDING);
+ }
+
virtual int n_children() const override
{
return gtk_tree_model_iter_n_children(GTK_TREE_MODEL(m_pListStore), nullptr);
@@ -4122,12 +4150,22 @@ public:
g_object_ref(m_pListStore);
GtkInstanceContainer::freeze();
gtk_tree_view_set_model(m_pTreeView, nullptr);
+ if (m_xSorter)
+ {
+ GtkTreeSortable* pSortable = GTK_TREE_SORTABLE(m_pListStore);
+ gtk_tree_sortable_set_sort_column_id(pSortable, GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID, GTK_SORT_ASCENDING);
+ }
enable_notify_events();
}
virtual void thaw() override
{
disable_notify_events();
+ if (m_xSorter)
+ {
+ GtkTreeSortable* pSortable = GTK_TREE_SORTABLE(m_pListStore);
+ gtk_tree_sortable_set_sort_column_id(pSortable, 0, GTK_SORT_ASCENDING);
+ }
gtk_tree_view_set_model(m_pTreeView, GTK_TREE_MODEL(m_pListStore));
GtkInstanceContainer::thaw();
g_object_unref(m_pListStore);
@@ -4853,23 +4891,6 @@ public:
}
};
-namespace
-{
- gint sort_func(GtkTreeModel* pModel, GtkTreeIter* a, GtkTreeIter* b, gpointer data)
- {
- comphelper::string::NaturalStringSorter* pSorter = static_cast<comphelper::string::NaturalStringSorter*>(data);
- gchar* pName1;
- gchar* pName2;
- gtk_tree_model_get(pModel, a, 0, &pName1, -1);
- gtk_tree_model_get(pModel, b, 0, &pName2, -1);
- gint ret = pSorter->compare(OUString(pName1, strlen(pName1), RTL_TEXTENCODING_UTF8),
- OUString(pName2, strlen(pName2), RTL_TEXTENCODING_UTF8));
- g_free(pName1);
- g_free(pName2);
- return ret;
- }
-}
-
class GtkInstanceComboBox : public GtkInstanceContainer, public vcl::ISearchableStringList, public virtual weld::ComboBox
{
private: