diff options
| author | Simon Tatham <anakin@pobox.com> | 2005-06-01 06:54:14 +0000 |
|---|---|---|
| committer | Simon Tatham <anakin@pobox.com> | 2005-06-01 06:54:14 +0000 |
| commit | 695b6be363115a0aefc5a25b93432d9362ad4cf7 (patch) | |
| tree | 79c2cd6bb57e1f46a56c8cd3998eee0ed6eaa157 | |
| parent | 7905d6dc07b5ba89fc3dfded3642fbcd599ae8e9 (diff) | |
| download | puzzles-695b6be363115a0aefc5a25b93432d9362ad4cf7.zip puzzles-695b6be363115a0aefc5a25b93432d9362ad4cf7.tar.gz puzzles-695b6be363115a0aefc5a25b93432d9362ad4cf7.tar.bz2 puzzles-695b6be363115a0aefc5a25b93432d9362ad4cf7.tar.xz | |
Chris Emerson observed the same status-bar flicker under GTK as I
did under Windows, so here's his patch (blatantly copied from my own
fix in windows.c :-).
[originally from svn r5891]
| -rw-r--r-- | gtk.c | 14 |
1 files changed, 11 insertions, 3 deletions
@@ -78,6 +78,7 @@ struct frontend { GtkWidget *cfgbox; char *paste_data; int paste_data_len; + char *laststatus; }; void get_random_seed(void **randseed, int *randseedsize) @@ -103,9 +104,14 @@ void status_bar(frontend *fe, char *text) assert(fe->statusbar); rewritten = midend_rewrite_statusbar(fe->me, text); - gtk_statusbar_pop(GTK_STATUSBAR(fe->statusbar), fe->statusctx); - gtk_statusbar_push(GTK_STATUSBAR(fe->statusbar), fe->statusctx, rewritten); - sfree(rewritten); + if (!fe->laststatus || strcmp(rewritten, fe->laststatus)) { + gtk_statusbar_pop(GTK_STATUSBAR(fe->statusbar), fe->statusctx); + gtk_statusbar_push(GTK_STATUSBAR(fe->statusbar), fe->statusctx, rewritten); + sfree(fe->laststatus); + fe->laststatus = rewritten; + } else { + sfree(rewritten); + } } void start_draw(frontend *fe) @@ -1204,6 +1210,8 @@ static frontend *new_window(char *game_id, char **error) fe->fonts = NULL; fe->nfonts = fe->fontsize = 0; + fe->laststatus = NULL; + fe->paste_data = NULL; fe->paste_data_len = 0; |