diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2013-01-08 08:48:13 -0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2013-01-08 08:48:13 -0800 |
commit | bf395ebf45626eece9163dd387bce3dbbeb56a68 (patch) | |
tree | 4299200dbe328cc85741ba89255e413bc4b77d76 /display-gtk.h | |
parent | 7a18edddbbbfa82ba44035557618c92e4535a6de (diff) | |
download | subsurface-bf395ebf45626eece9163dd387bce3dbbeb56a68.tar.gz |
Avoid pointless calls to dive planner
Stupid Gtk. Seriously. So in order to get a notification if the user
selects the drop down for the gas with the mouse I need to connect to the
"changed" signal for the combobox. But that also fires whenever the user
types something into the GtkEntry. Which means we once again get called
for all kinds of silly partial names.
Instead we want to handle the manual entry in the "focus-out" callback
(the user has hit tab or something else to move away from the GtkEntry -
let's assume that this is the text he wants us to use) and only respond to
the changed signal on the combobox if the user selected something from the
dropdown.
The easiest way to do that (I think) is to check the text with the strings
stored in the model. If this indeed matches a string stored in the model
then most likely this is something the user selected from the dropdown.
But more importantly if it isn't in the model, then we KNOW that this is
just a partial string that was typed in. And we can ignore that one.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'display-gtk.h')
-rw-r--r-- | display-gtk.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/display-gtk.h b/display-gtk.h index 2613a20b6..303eff564 100644 --- a/display-gtk.h +++ b/display-gtk.h @@ -94,8 +94,16 @@ extern int process_ui_events(void); extern void update_progressbar(progressbar_t *progress, double value); extern void update_progressbar_text(progressbar_t *progress, const char *text); +// info.c +enum { + MATCH_EXACT, + MATCH_PREPEND, + MATCH_AFTER +} found_string_entry; + extern GtkWidget *create_date_time_widget(struct tm *time, GtkWidget **cal, GtkWidget **h, GtkWidget **m); extern void add_string_list_entry(const char *string, GtkListStore *list); +extern int match_list(GtkListStore *list, const char *string); extern GtkWidget *dive_profile_widget(void); extern GtkWidget *dive_info_frame(void); |