diff options
author | Søren Sandmann Pedersen <ssp@dhcp-100-2-40.bos.redhat.com> | 2009-04-13 19:12:47 -0400 |
---|---|---|
committer | Søren Sandmann Pedersen <ssp@dhcp-100-2-40.bos.redhat.com> | 2009-04-13 19:12:47 -0400 |
commit | 22f04c7462ae7faa989f107710330e7f49a1ddd0 (patch) | |
tree | db264daa922db4ad40c4df39131cb7cc578c4d4f | |
parent | 93813f8c8c3f394b4515db62e824ebe1ed1d1bbf (diff) |
Simplify use-existing-window logic
-rw-r--r-- | siv.c | 15 | ||||
-rw-r--r-- | siv.h | 5 | ||||
-rw-r--r-- | window.c | 20 |
3 files changed, 25 insertions, 15 deletions
@@ -376,22 +376,17 @@ open_file (App *app, const char *filename, GPtrArray *err_files) for (i = 0; i < app->windows->len; ++i) { - const char *f; - SivWindow *w; + SivWindow *w = app->windows->pdata[i]; - w = app->windows->pdata[i]; - f = window_get_filename (w); - - if (!f) + if (window_is_blank (w)) { - /* empty window */ window = w; break; } - - if (strcmp (f, filename) == 0) + + if (window_matches_file (w, filename)) { - window_show (window, GDK_CURRENT_TIME); + window_show (w, GDK_CURRENT_TIME); return TRUE; } } @@ -72,8 +72,9 @@ gboolean window_load_file (SivWindow *window, void window_show (SivWindow *window, guint32 time); void window_present (SivWindow *window); -const char *window_get_filename (SivWindow *window); +gboolean window_matches_file (SivWindow *window, + const char *filename); +gboolean window_is_blank (SivWindow *window); void window_free (SivWindow *window); - #endif @@ -1225,8 +1225,22 @@ window_show (SivWindow *window, guint32 time) gtk_window_present_with_time (get_widget (window, "main_window"), time); } -const char * -window_get_filename (SivWindow *window) +gboolean +window_matches_file (SivWindow *window, + const char *filename) +{ + char *canon = canonicalize_filename (filename); + gboolean match; + + match = window->filename && strcmp (canon, window->filename) == 0; + + g_free (canon); + + return match; +} + +gboolean +window_is_blank (SivWindow *window) { - return window->filename; + return !window->filename; } |