From f30b14b0f7ff46f0fde31808746a70daf0576d91 Mon Sep 17 00:00:00 2001 From: twanvl Date: Mon, 14 May 2007 00:43:54 +0000 Subject: [PATCH] Alignment is preserved when sorting (changing column images) git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@366 0fc631ac-6414-0410-93d0-97cfa31319b6 --- src/gui/control/item_list.cpp | 12 +++++++++++- src/gui/control/item_list.hpp | 2 ++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/gui/control/item_list.cpp b/src/gui/control/item_list.cpp index 9f8df836..f6bb0fa7 100644 --- a/src/gui/control/item_list.cpp +++ b/src/gui/control/item_list.cpp @@ -132,7 +132,7 @@ void ItemList::sortBy(long column, bool ascending) { if (i == column) { SetColumnImage(i, sort_ascending ? 0 : 1); // arrow up/down } else if (i == sort_by_column) { - ClearColumnImage(i); + SetColumnImage(i, -1); } } // sort list @@ -141,6 +141,16 @@ void ItemList::sortBy(long column, bool ascending) { refreshList(); } +void ItemList::SetColumnImage(int col, int image) { + // The wx version of this function is broken, + // setting the wxLIST_MASK_IMAGE also sets the FORMAT flag, so we lose alignment info + wxListItem item; + item.SetMask(wxLIST_MASK_IMAGE | wxLIST_MASK_FORMAT); + GetColumn(col, item); + item.SetImage(image); + SetColumn(col, item); +} + // ----------------------------------------------------------------------------- : ItemList : Window events void ItemList::onColumnClick(wxListEvent& ev) { diff --git a/src/gui/control/item_list.hpp b/src/gui/control/item_list.hpp index 2a7b9cbf..4e4dd899 100644 --- a/src/gui/control/item_list.hpp +++ b/src/gui/control/item_list.hpp @@ -92,6 +92,8 @@ class ItemList : public wxListView { private: struct ItemComparer; // for comparing items + void SetColumnImage(int col, int image); + // --------------------------------------------------- : Window events DECLARE_EVENT_TABLE();