mirror of
https://github.com/amyinspace/MagicSetEditor2.git
synced 2026-06-12 05:36:59 -04:00
Reduced flicker in card list
git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@1202 0fc631ac-6414-0410-93d0-97cfa31319b6
This commit is contained in:
@@ -287,7 +287,7 @@ void AutoReplaceWindow::updateItem() {
|
|||||||
ar->replace = replace->GetValue();
|
ar->replace = replace->GetValue();
|
||||||
ar->enabled = enabled->GetValue();
|
ar->enabled = enabled->GetValue();
|
||||||
ar->whole_word = whole_word->GetValue();
|
ar->whole_word = whole_word->GetValue();
|
||||||
list->refreshList();
|
list->refreshList(true);
|
||||||
in_event = false;
|
in_event = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ void CardListBase::onAction(const Action& action, bool undone) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
TYPE_CASE(action, ValueAction) {
|
TYPE_CASE(action, ValueAction) {
|
||||||
if (action.card) refreshList();
|
if (action.card) refreshList(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -147,26 +147,34 @@ struct ItemList::ItemComparer {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
void ItemList::refreshList() {
|
void ItemList::refreshList(bool refresh_current_only) {
|
||||||
Freeze();
|
|
||||||
// Get all items
|
// Get all items
|
||||||
sorted_list.clear();
|
vector<VoidP> old_sorted_list;
|
||||||
|
swap(sorted_list, old_sorted_list);
|
||||||
getItems(sorted_list);
|
getItems(sorted_list);
|
||||||
long item_count = (long)sorted_list.size();
|
|
||||||
SetItemCount(item_count);
|
|
||||||
// Sort the list
|
// Sort the list
|
||||||
if (sort_by_column >= 0) {
|
if (sort_by_column >= 0) {
|
||||||
sort(sorted_list.begin(), sorted_list.end(), ItemComparer(*this));
|
sort(sorted_list.begin(), sorted_list.end(), ItemComparer(*this));
|
||||||
}
|
}
|
||||||
|
// Has the entire list changed?
|
||||||
|
if (refresh_current_only && sorted_list == old_sorted_list) {
|
||||||
|
if (selected_item_pos > 0) RefreshItem(selected_item_pos);
|
||||||
|
return;
|
||||||
|
}
|
||||||
// refresh
|
// refresh
|
||||||
if (item_count)
|
// Note: Freeze/Thaw makes flicker worse
|
||||||
RefreshItems(0, item_count - 1);
|
long item_count = (long)sorted_list.size();
|
||||||
if (item_count == 0) Refresh();
|
SetItemCount(item_count);
|
||||||
// (re)select current item
|
// (re)select current item
|
||||||
findSelectedItemPos();
|
findSelectedItemPos();
|
||||||
focusNone();
|
focusNone();
|
||||||
focusSelectedItem(true);
|
focusSelectedItem(true);
|
||||||
Thaw();
|
// refresh items
|
||||||
|
if (item_count == 0) {
|
||||||
|
Refresh();
|
||||||
|
} else {
|
||||||
|
RefreshItems(0, item_count - 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ItemList::sortBy(long column, bool ascending) {
|
void ItemList::sortBy(long column, bool ascending) {
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ class ItemList : public wxListView {
|
|||||||
/// Sort by the given column
|
/// Sort by the given column
|
||||||
virtual void sortBy(long column, bool ascending);
|
virtual void sortBy(long column, bool ascending);
|
||||||
/// Refresh the card list (resort, refresh and reselect current item)
|
/// Refresh the card list (resort, refresh and reselect current item)
|
||||||
void refreshList();
|
void refreshList(bool refresh_current_only = false);
|
||||||
/// Set the image of a column header (fixes wx bug)
|
/// Set the image of a column header (fixes wx bug)
|
||||||
void SetColumnImage(int col, int image);
|
void SetColumnImage(int col, int image);
|
||||||
|
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ void KeywordList::onAction(const Action& action, bool undone) {
|
|||||||
KeywordTextValue* value = dynamic_cast<KeywordTextValue*>(action.valueP.get());
|
KeywordTextValue* value = dynamic_cast<KeywordTextValue*>(action.valueP.get());
|
||||||
if (value) {
|
if (value) {
|
||||||
// this is indeed an action on a keyword, refresh
|
// this is indeed an action on a keyword, refresh
|
||||||
refreshList();
|
refreshList(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user