From 11ffabc08242bb3d9187eeb5d103997aa3b536e7 Mon Sep 17 00:00:00 2001 From: Paul Mangan Date: Fri, 13 Feb 2004 12:43:52 +0000 Subject: [PATCH] sync with 0.9.9cvs9 --- ChangeLog | 27 ++++++++++++++++ ChangeLog.claws | 5 +++ ChangeLog.jp | 28 ++++++++++++++++ configure.ac | 2 +- src/common/defs.h | 1 + src/foldersel.c | 9 ++++-- src/folderview.c | 12 +++++++ src/folderview.h | 4 +++ src/inc.c | 82 +++++++++++++++++++++++++++++++++++++++++------ src/inc.h | 9 ++++-- src/mainwindow.c | 32 +++++++++--------- src/messageview.c | 31 ++++++++++++------ src/messageview.h | 6 +++- src/pop.c | 5 ++- src/pop.h | 6 +++- src/textview.c | 36 ++++++++++----------- 16 files changed, 232 insertions(+), 63 deletions(-) diff --git a/ChangeLog b/ChangeLog index 500e0c0b8..f8b38ea55 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,30 @@ +2004-02-12 + + * src/inc.[ch] + src/pop.[ch]: made inc_drop_message() the virtual function of + Pop3Session and removed the dependency of pop.c on inc.h. + +2004-02-12 + + * src/mainwindow.c + src/messageview.[ch] + src/textview.c: added statusbar to the message view with new window. + +2004-02-10 + + * src/inc.[ch]: use hash table for progressive update. + changed update interval to 2 sec. + * src/folder.[ch] + src/mh.c + src/procmsg.c + src/summaryview.c: added FolderItem::unmarked_num to correct the + folder message counting. + +2004-02-09 + + * src/inc.[ch]: update folderview progressively. + * src/foldersel.c: display full id for selected item. + 2004-02-06 * src/folderview.[ch]: code cleanup. diff --git a/ChangeLog.claws b/ChangeLog.claws index c27eb3a5e..8b3539c93 100644 --- a/ChangeLog.claws +++ b/ChangeLog.claws @@ -1,3 +1,8 @@ +2003-02-13 [paul] 0.9.9claws8 + + * sync with 0.9.9cvs9 + see ChangeLog 2003-02-09, 2004-02-10, 2004-02-12 + 2003-02-13 [alfons] 0.9.9claws7 * src/common/utils.c diff --git a/ChangeLog.jp b/ChangeLog.jp index cf4ba3518..4a53e0c9b 100644 --- a/ChangeLog.jp +++ b/ChangeLog.jp @@ -1,3 +1,31 @@ +2004-02-12 + + * src/inc.[ch] + src/pop.[ch]: inc_drop_message() ¤ò Pop3Session ¤Î²¾ÁÛ´Ø¿ô¤Ë¤·¡¢ + pop3.c ¤Î inc.h ¤Ø¤Î°Í¸¤ò½üµî¡£ + +2004-02-12 + + * src/mainwindow.c + src/messageview.[ch] + src/textview.c: ¿·µ¬¥¦¥£¥ó¥É¥¦¤Î¥á¥Ã¥»¡¼¥¸¥Ó¥å¡¼¤Ë¥¹¥Æ¡¼¥¿¥¹¥Ð¡¼¤ò + Äɲᣠ+ +2004-02-10 + + * src/inc.[ch]: Ã༡¹¹¿·¤Ë¥Ï¥Ã¥·¥å¥Æ¡¼¥Ö¥ë¤ò»ÈÍÑ¡£ + ¹¹¿·´Ö³Ö¤ò2ÉäËÊѹ¹¡£ + * src/folder.[ch] + src/mh.c + src/procmsg.c + src/summaryview.c: ¥Õ¥©¥ë¥À¤Î¥á¥Ã¥»¡¼¥¸¿ô¤Î½¸·×¤òÊäÀµ¤¹¤ë¤¿¤á¤Ë + FolderItem::unmarked_num ¤òÄɲᣠ+ +2004-02-09 + + * src/inc.[ch]: ¥Õ¥©¥ë¥À¥Ó¥å¡¼¤òÃ༡¹¹¿·¤¹¤ë¤è¤¦¤Ë¤·¤¿¡£ + * src/foldersel.c: ÁªÂò¹àÌܤδ°Á´¤Ê ID ¤òɽ¼¨¡£ + 2004-02-06 * src/folderview.[ch]: ¥³¡¼¥É¤ÎÀ°Íý¡£ diff --git a/configure.ac b/configure.ac index 559fa709b..a558b9505 100644 --- a/configure.ac +++ b/configure.ac @@ -11,7 +11,7 @@ MINOR_VERSION=9 MICRO_VERSION=9 INTERFACE_AGE=0 BINARY_AGE=0 -EXTRA_VERSION=7 +EXTRA_VERSION=8 if test $EXTRA_VERSION -eq 0; then VERSION=${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}claws else diff --git a/src/common/defs.h b/src/common/defs.h index ef25b24ef..1a4dc60d6 100644 --- a/src/common/defs.h +++ b/src/common/defs.h @@ -111,6 +111,7 @@ #define MAX_ENTRY_LENGTH 8191 #define COLOR_DIM 35000 #define UI_REFRESH_INTERVAL 50000 /* usec */ +#define FOLDER_UPDATE_INTERVAL 1500 /* msec */ #define SESSION_TIMEOUT 60 /* sec */ #define MAX_HISTORY_SIZE 16 diff --git a/src/foldersel.c b/src/foldersel.c index e5fed1b2a..82b4030e5 100644 --- a/src/foldersel.c +++ b/src/foldersel.c @@ -323,9 +323,12 @@ static void foldersel_selected(GtkCList *clist, gint row, gint column, GdkEventButton *ev = (GdkEventButton *)event; selected_item = gtk_clist_get_row_data(clist, row); - if (selected_item && selected_item->path) - gtk_entry_set_text(GTK_ENTRY(entry), selected_item->path); - else + if (selected_item && selected_item->path) { + gchar *id; + id = folder_item_get_identifier(selected_item); + gtk_entry_set_text(GTK_ENTRY(entry), id); + g_free(id); + } else gtk_entry_set_text(GTK_ENTRY(entry), ""); if (ev && GDK_2BUTTON_PRESS == ev->type) diff --git a/src/folderview.c b/src/folderview.c index 82561cbcc..6d6d59256 100644 --- a/src/folderview.c +++ b/src/folderview.c @@ -1284,6 +1284,18 @@ gboolean folderview_update_item(gpointer source, gpointer data) return FALSE; } +static void folderview_update_item_foreach_func(gpointer key, gpointer val, + gpointer data) +{ + folderview_update_item((FolderItem *)key, (gboolean)data); +} + +void folderview_update_item_foreach(GHashTable *table, gboolean update_summary) +{ + g_hash_table_foreach(table, folderview_update_item_foreach_func, + (gpointer)update_summary); +} + static gboolean folderview_gnode_func(GtkCTree *ctree, guint depth, GNode *gnode, GtkCTreeNode *cnode, gpointer data) diff --git a/src/folderview.h b/src/folderview.h index e28b50f48..caada339a 100644 --- a/src/folderview.h +++ b/src/folderview.h @@ -89,6 +89,10 @@ void folderview_rescan_all (void); gint folderview_check_new (Folder *folder); void folderview_check_new_all (void); +void folderview_update_item_foreach (GHashTable *table, + gboolean update_summary); +void folderview_update_all_updated (gboolean update_summary); + void folderview_new_folder (FolderView *folderview); void folderview_rename_folder (FolderView *folderview); void folderview_delete_folder (FolderView *folderview); diff --git a/src/inc.c b/src/inc.c index a62beccec..425fc3d40 100644 --- a/src/inc.c +++ b/src/inc.c @@ -1,6 +1,6 @@ /* * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client - * Copyright (C) 1999-2003 Hiroyuki Yamamoto + * Copyright (C) 1999-2004 Hiroyuki Yamamoto * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -108,6 +108,8 @@ static gint inc_recv_data_finished (Session *session, static gint inc_recv_message (Session *session, const gchar *msg, gpointer data); +static gint inc_drop_message (Pop3Session *session, + const gchar *file); static void inc_put_error (IncState istate, const gchar *msg); @@ -379,6 +381,7 @@ static IncProgressDialog *inc_progress_dialog_create(gboolean autocheck) } dialog->dialog = progress; + dialog->timer_id = 0; dialog->queue_list = NULL; dialog->cur_row = 0; @@ -438,8 +441,20 @@ static IncSession *inc_session_new(PrefsAccount *account) return NULL; session = g_new0(IncSession, 1); + session->session = pop3_session_new(account); session->session->data = session; + POP3_SESSION(session->session)->drop_message = inc_drop_message; + session_set_recv_message_notify(session->session, + inc_recv_message, session); + session_set_recv_data_progressive_notify(session->session, + inc_recv_data_progressive, + session); + session_set_recv_data_notify(session->session, + inc_recv_data_finished, session); + + session->folder_table = g_hash_table_new(NULL, NULL); + session->tmp_folder_table = g_hash_table_new(NULL, NULL); return session; } @@ -449,6 +464,8 @@ static void inc_session_destroy(IncSession *session) g_return_if_fail(session != NULL); session_destroy(session->session); + g_hash_table_destroy(session->folder_table); + g_hash_table_destroy(session->tmp_folder_table); g_free(session); } @@ -531,13 +548,6 @@ static gint inc_start(IncProgressDialog *inc_dialog) SET_PIXMAP_AND_TEXT(currentxpm, currentxpmmask, _("Retrieving")); - session_set_recv_message_notify(session->session, - inc_recv_message, session); - session_set_recv_data_progressive_notify - (session->session, inc_recv_data_progressive, session); - session_set_recv_data_notify(session->session, - inc_recv_data_finished, session); - /* begin POP3 session */ inc_state = inc_pop3_session_do(session); @@ -755,6 +765,11 @@ static IncState inc_pop3_session_do(IncSession *session) session->inc_state != INC_CANCEL) gtk_main_iteration(); + if (inc_dialog->timer_id) { + gtk_timeout_remove(inc_dialog->timer_id); + inc_dialog->timer_id = 0; + } + statusbar_pop_all(); if (session->inc_state == INC_SUCCESS) { @@ -856,6 +871,30 @@ static void inc_progress_dialog_set_label(IncProgressDialog *inc_dialog, } } +static gboolean hash_remove_func(gpointer key, gpointer value, gpointer data) +{ + return TRUE; +} + +static gint inc_timer_func(gpointer data) +{ + IncSession *inc_session = (IncSession *)data; + IncProgressDialog *inc_dialog; + + g_return_val_if_fail(inc_session != NULL, -1); + + inc_dialog = (IncProgressDialog *)inc_session->data; + + if (g_hash_table_size(inc_session->tmp_folder_table) > 0) { + folderview_update_item_foreach(inc_session->tmp_folder_table, + FALSE); + g_hash_table_foreach_remove(inc_session->tmp_folder_table, + hash_remove_func, NULL); + } + + return TRUE; +} + static gint inc_recv_data_progressive(Session *session, guint cur_len, guint total_len, gpointer data) { @@ -913,6 +952,13 @@ static gint inc_recv_data_finished(Session *session, guint len, gpointer data) inc_recv_data_progressive(session, 0, len, inc_session); inc_progress_dialog_set_label(inc_dialog, inc_session); + if (POP3_SESSION(session)->state == POP3_LOGOUT && + inc_dialog->timer_id) { + inc_timer_func(data); + gtk_timeout_remove(inc_dialog->timer_id); + inc_dialog->timer_id = 0; + } + if (pop3_session->cur_total_num == 0) return 0; msg = g_strdup_printf(_("Retrieving (%d message(s) (%s) received)"), @@ -936,14 +982,26 @@ static gint inc_recv_message(Session *session, const gchar *msg, gpointer data) inc_dialog = (IncProgressDialog *)inc_session->data; inc_progress_dialog_set_label(inc_dialog, inc_session); + if (POP3_SESSION(session)->state == POP3_LOGOUT && + inc_dialog->timer_id) { + inc_timer_func(data); + gtk_timeout_remove(inc_dialog->timer_id); + inc_dialog->timer_id = 0; + } + return 0; } -gint inc_drop_message(const gchar *file, Pop3Session *session) +static gint inc_drop_message(Pop3Session *session, const gchar *file) { FolderItem *inbox; FolderItem *dropfolder; + IncSession *inc_session = (IncSession *)(SESSION(session)->data); + IncProgressDialog *inc_dialog; gint msgnum; + gint val; + + g_return_val_if_fail(inc_session != NULL, -1); if (session->ac_prefs->inbox) { inbox = folder_find_item_from_identifier @@ -966,6 +1024,12 @@ gint inc_drop_message(const gchar *file, Pop3Session *session) return -1; } + inc_dialog = (IncProgressDialog *)inc_session->data; + if (inc_dialog->timer_id == 0) + inc_dialog->timer_id = gtk_timeout_add(FOLDER_UPDATE_INTERVAL, + inc_timer_func, + inc_session); + return 0; } diff --git a/src/inc.h b/src/inc.h index 09c352ba4..1366bd6af 100644 --- a/src/inc.h +++ b/src/inc.h @@ -1,6 +1,6 @@ /* * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client - * Copyright (C) 1999-2003 Hiroyuki Yamamoto + * Copyright (C) 1999-2004 Hiroyuki Yamamoto * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -58,6 +58,8 @@ struct _IncProgressDialog gboolean show_dialog; + guint timer_id; + GList *queue_list; /* list of IncSession */ gint cur_row; }; @@ -67,6 +69,9 @@ struct _IncSession Session *session; IncState inc_state; + GHashTable *folder_table; /* table of destination folders */ + GHashTable *tmp_folder_table; /* for progressive update */ + gpointer data; }; @@ -80,8 +85,6 @@ void inc_all_account_mail (MainWindow *mainwin, gboolean autocheck, gboolean notify); void inc_progress_update (Pop3Session *session); -gint inc_drop_message (const gchar *file, - Pop3Session *session); void inc_pop_before_smtp (PrefsAccount *acc); diff --git a/src/mainwindow.c b/src/mainwindow.c index 5d9cb9fb9..3fc24f0c5 100644 --- a/src/mainwindow.c +++ b/src/mainwindow.c @@ -914,22 +914,22 @@ MainWindow *main_window_create(SeparateType type) summaryview->messageview = messageview; summaryview->window = window; - mainwin->vbox = vbox; - mainwin->menubar = menubar; - mainwin->menu_factory = ifactory; - mainwin->handlebox = handlebox; - mainwin->vbox_body = vbox_body; - mainwin->hbox_stat = hbox_stat; - mainwin->statusbar = statusbar; - mainwin->progressbar = progressbar; - mainwin->statuslabel = statuslabel; - mainwin->ac_button = ac_button; - mainwin->ac_label = ac_label; - - mainwin->online_switch = online_switch; + messageview->statusbar = statusbar; + mainwin->vbox = vbox; + mainwin->menubar = menubar; + mainwin->menu_factory = ifactory; + mainwin->handlebox = handlebox; + mainwin->vbox_body = vbox_body; + mainwin->hbox_stat = hbox_stat; + mainwin->statusbar = statusbar; + mainwin->progressbar = progressbar; + mainwin->statuslabel = statuslabel; + mainwin->online_switch = online_switch; + mainwin->online_pixmap = online_pixmap; + mainwin->offline_pixmap = offline_pixmap; + mainwin->ac_button = ac_button; + mainwin->ac_label = ac_label; mainwin->offline_switch = offline_switch; - mainwin->online_pixmap = online_pixmap; - mainwin->offline_pixmap = offline_pixmap; /* set context IDs for status bar */ mainwin->mainwin_cid = gtk_statusbar_get_context_id @@ -941,6 +941,8 @@ MainWindow *main_window_create(SeparateType type) mainwin->messageview_cid = gtk_statusbar_get_context_id (GTK_STATUSBAR(statusbar), "Message View"); + messageview->statusbar_cid = mainwin->messageview_cid; + /* allocate colors for summary view and folder view */ summaryview->color_marked.red = summaryview->color_marked.green = 0; summaryview->color_marked.blue = (guint16)65535; diff --git a/src/messageview.c b/src/messageview.c index 4222ceb8e..12c4af816 100644 --- a/src/messageview.c +++ b/src/messageview.c @@ -1,6 +1,6 @@ /* * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client - * Copyright (C) 1999-2003 Hiroyuki Yamamoto + * Copyright (C) 1999-2004 Hiroyuki Yamamoto * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -319,20 +319,23 @@ MessageView *messageview_create(MainWindow *mainwin) GTK_WIDGET_PTR(mimeview), TRUE, TRUE, 0); gtk_widget_show(vbox); - messageview->vbox = vbox; - messageview->new_window = FALSE; - messageview->window = NULL; - messageview->headerview = headerview; - messageview->mimeview = mimeview; + messageview->vbox = vbox; + messageview->new_window = FALSE; + messageview->window = NULL; + messageview->headerview = headerview; + messageview->mimeview = mimeview; messageview->noticeview = noticeview; messageview->mainwin = mainwin; + + messageview->statusbar = NULL; + messageview->statusbar_cid = 0; + messageview->msginfo_update_callback_id = hooks_register_hook(MSGINFO_UPDATE_HOOKLIST, messageview_update_msg, (gpointer) messageview); return messageview; } - GList *messageview_get_msgview_list(void) { return msgview_list; @@ -354,22 +357,32 @@ void messageview_add_toolbar(MessageView *msgview, GtkWidget *window) GtkWidget *handlebox; GtkWidget *vbox; GtkWidget *menubar; + GtkWidget *statusbar; GtkItemFactory *ifactory; guint n_menu_entries; vbox = gtk_vbox_new(FALSE, 0); gtk_widget_show(vbox); gtk_container_add(GTK_CONTAINER(window), vbox); - + n_menu_entries = sizeof(msgview_entries) / sizeof(msgview_entries[0]); menubar = menubar_create(window, msgview_entries, n_menu_entries, "", msgview); + gtk_widget_show(menubar); gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, TRUE, 0); handlebox = gtk_handle_box_new(); gtk_box_pack_start(GTK_BOX(vbox), handlebox, FALSE, FALSE, 0); msgview->toolbar = toolbar_create(TOOLBAR_MSGVIEW, handlebox, (gpointer)msgview); + + statusbar = gtk_statusbar_new(); + gtk_widget_show(statusbar); + gtk_box_pack_end(GTK_BOX(vbox), statusbar, FALSE, FALSE, 0); + msgview->statusbar = statusbar; + msgview->statusbar_cid = gtk_statusbar_get_context_id + (GTK_STATUSBAR(statusbar), "Message View"); + msgview->handlebox = handlebox; msgview->menubar = menubar; @@ -383,8 +396,8 @@ void messageview_add_toolbar(MessageView *msgview, GtkWidget *window) MessageView *messageview_create_with_new_window(MainWindow *mainwin) { - GtkWidget *window; MessageView *msgview; + GtkWidget *window; window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), _("Sylpheed - Message View")); diff --git a/src/messageview.h b/src/messageview.h index 4d0533ccd..5820bcac7 100644 --- a/src/messageview.h +++ b/src/messageview.h @@ -1,6 +1,6 @@ /* * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client - * Copyright (C) 1999-2003 Hiroyuki Yamamoto + * Copyright (C) 1999-2004 Hiroyuki Yamamoto * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -40,6 +40,8 @@ struct _MessageView gboolean new_window; GtkWidget *window; + GtkWidget *window_vbox; + GtkWidget *body_vbox; /* Toolbar handlebox */ GtkWidget *handlebox; @@ -49,6 +51,8 @@ struct _MessageView HeaderView *headerview; MimeView *mimeview; NoticeView *noticeview; + GtkWidget *statusbar; + gint statusbar_cid; MainWindow *mainwin; diff --git a/src/pop.c b/src/pop.c index 2fd15a9b6..90fa283d4 100644 --- a/src/pop.c +++ b/src/pop.c @@ -1,6 +1,6 @@ /* * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client - * Copyright (C) 1999-2003 Hiroyuki Yamamoto + * Copyright (C) 1999-2004 Hiroyuki Yamamoto * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -35,7 +35,6 @@ #include "md5.h" #include "prefs_account.h" #include "utils.h" -#include "inc.h" #include "recv.h" #include "log.h" @@ -345,7 +344,7 @@ static gint pop3_retr_recv(Pop3Session *session, const gchar *data, guint len) g_free(mail_receive_data.data); /* drop_ok: 0: success 1: don't receive -1: error */ - drop_ok = inc_drop_message(file, session); + drop_ok = session->drop_message(session, file); g_free(file); if (drop_ok < 0) { session->error_val = PS_IOERR; diff --git a/src/pop.h b/src/pop.h index cfdea46e8..bf62212bd 100644 --- a/src/pop.h +++ b/src/pop.h @@ -1,6 +1,6 @@ /* * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client - * Copyright (C) 1999-2003 Hiroyuki Yamamoto + * Copyright (C) 1999-2004 Hiroyuki Yamamoto * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -143,6 +143,10 @@ struct _Pop3Session gchar *error_msg; gpointer data; + + /* virtual method to drop message */ + gint (*drop_message) (Pop3Session *session, + const gchar *file); }; #define POPBUFSIZE 512 diff --git a/src/textview.c b/src/textview.c index 5c9486bb1..3e9ef44da 100644 --- a/src/textview.c +++ b/src/textview.c @@ -128,6 +128,18 @@ static gint text_mb_font_orig_ascent; static gint text_mb_font_orig_descent; static GdkFont *spacingfont; +#define TEXTVIEW_STATUSBAR_PUSH(textview, str) \ +{ \ + gtk_statusbar_push(GTK_STATUSBAR(textview->messageview->statusbar), \ + textview->messageview->statusbar_cid, str); \ +} + +#define TEXTVIEW_STATUSBAR_POP(textview) \ +{ \ + gtk_statusbar_pop(GTK_STATUSBAR(textview->messageview->statusbar), \ + textview->messageview->statusbar_cid); \ +} + static void textview_show_ertf (TextView *textview, FILE *fp, CodeConverter *conv); @@ -1216,6 +1228,7 @@ void textview_clear(TextView *textview) gtk_stext_forward_delete(text, gtk_stext_get_length(text)); gtk_stext_thaw(text); + TEXTVIEW_STATUSBAR_POP(textview); textview_uri_list_remove_all(textview->uri_list); textview->uri_list = NULL; @@ -1812,13 +1825,8 @@ static gint show_url_timeout_cb(gpointer data) { TextView *textview = (TextView *)data; - if (textview->messageview->mainwin) - if (textview->show_url_msgid) - gtk_statusbar_remove(GTK_STATUSBAR( - textview->messageview->mainwin->statusbar), - textview->messageview->mainwin->folderview_cid, - textview->show_url_msgid); - return FALSE; + TEXTVIEW_STATUSBAR_POP(textview); + return FALSE; } static gint textview_button_pressed(GtkWidget *widget, GdkEventButton *event, @@ -1859,19 +1867,11 @@ static gint textview_button_released(GtkWidget *widget, GdkEventButton *event, if (event->button == 1 && textview->last_buttonpress != GDK_2BUTTON_PRESS) { if (textview->messageview->mainwin) { if (textview->show_url_msgid) { - gtk_timeout_remove(textview->show_url_timeout_tag); - gtk_statusbar_remove(GTK_STATUSBAR( - textview->messageview->mainwin->statusbar), - textview->messageview->mainwin->folderview_cid, - textview->show_url_msgid); + TEXTVIEW_STATUSBAR_POP(textview); textview->show_url_msgid = 0; } - textview->show_url_msgid = gtk_statusbar_push( - GTK_STATUSBAR(textview->messageview->mainwin->statusbar), - textview->messageview->mainwin->folderview_cid, - trimmed_uri); - textview->show_url_timeout_tag = gtk_timeout_add( 4000, show_url_timeout_cb, textview ); - gtkut_widget_wait_for_draw(textview->messageview->mainwin->hbox_stat); + TEXTVIEW_STATUSBAR_PUSH(textview, trimmed_uri); + textview->show_url_timeout_tag = gtk_timeout_add( 4000, show_url_timeout_cb, textview ); } } else if (!g_strncasecmp(uri->uri, "mailto:", 7)) { -- 2.25.1