Replace DoRefresh() with UseModel() helper function

The new function both sets the new model and calls
gtk_entry_completion_complete() instead of always doing first the one
and then the other: if both calls needs to always be done together, it
makes sense to have a function doing both of them.
This commit is contained in:
Vadim Zeitlin
2018-01-27 00:22:25 +01:00
parent 9b9d138077
commit 6f229cdcde

View File

@@ -240,10 +240,8 @@ public:
AppendToStore(store, *i); AppendToStore(store, *i);
} }
gtk_entry_completion_set_model (GetEntryCompletion(), GTK_TREE_MODEL(store)); UseModel(store);
g_object_unref (store); g_object_unref (store);
DoRefresh();
} }
// Takes ownership of the pointer if it is non-NULL. // Takes ownership of the pointer if it is non-NULL.
@@ -375,9 +373,12 @@ private:
} }
} }
void DoRefresh() // Really change the completion model (which may be NULL).
void UseModel(GtkListStore* store)
{ {
gtk_entry_completion_complete (GetEntryCompletion()); GtkEntryCompletion* const c = gtk_entry_get_completion (GetGtkEntry());
gtk_entry_completion_set_model (c, GTK_TREE_MODEL(store));
gtk_entry_completion_complete (c);
} }
// Recreate the model to contain all completions for the current prefix. // Recreate the model to contain all completions for the current prefix.
@@ -402,17 +403,15 @@ private:
AppendToStore(store, s); AppendToStore(store, s);
} }
gtk_entry_completion_set_model (GetEntryCompletion(), GTK_TREE_MODEL(store)); UseModel(store);
g_object_unref (store); g_object_unref (store);
m_newCompletionsNeeded = false; m_newCompletionsNeeded = false;
} }
else else
{ {
gtk_entry_completion_set_model (GetEntryCompletion(), NULL); UseModel(NULL);
} }
DoRefresh();
} }