+2005-10-12 [colin] 1.9.15cvs31
+
+ * src/crash.c
+ Replace deprecated GtkText with GtkTextView
+ * src/imap.c
+ Fix a logic bug about counts in imap_select
+ (previously un-triggered)
+ * src/mainwindow.c
+ * src/summaryview.c
+ * src/news.c
+ Allow local deletion of news posts
+ * src/mimeview.c
+ Show GPG noticeview on the message/rfc822 part
+ in addition to the text/plain one
+ * src/prefs_image_viewer.c
+ src/plugins/pgpcore/prefs_gpg.c
+ Polish (set the label as part of the checkbox)
+ * src/wizard.c
+ Don't sit there doing nothing after destroying
+ the window - return err
+
2005-10-11 [colin] 1.9.15cvs30
* src/folderview.c
( cvs diff -u -r 1.115.2.57 -r 1.115.2.58 src/main.c; cvs diff -u -r 1.274.2.71 -r 1.274.2.72 src/mainwindow.c; cvs diff -u -r 1.16.2.27 -r 1.16.2.28 src/msgcache.c; cvs diff -u -r 1.204.2.60 -r 1.204.2.61 src/prefs_common.c; cvs diff -u -r 1.43.2.25 -r 1.43.2.26 src/prefs_matcher.c; cvs diff -u -r 1.1.4.22 -r 1.1.4.23 src/etpan/imap-thread.c; cvs diff -u -r 1.2.2.8 -r 1.2.2.9 src/gtk/colorlabel.c; ) > 1.9.15cvs28.patchset
( cvs diff -u -r 1.382.2.181 -r 1.382.2.182 src/compose.c; ) > 1.9.15cvs29.patchset
( cvs diff -u -r 1.207.2.70 -r 1.207.2.71 src/folderview.c; cvs diff -u -r 1.179.2.76 -r 1.179.2.77 src/imap.c; cvs diff -u -r 1.1.2.22 -r 1.1.2.23 src/imap_gtk.c; ) > 1.9.15cvs30.patchset
+( cvs diff -u -r 1.23.2.13 -r 1.23.2.14 src/crash.c; cvs diff -u -r 1.179.2.77 -r 1.179.2.78 src/imap.c; cvs diff -u -r 1.274.2.72 -r 1.274.2.73 src/mainwindow.c; cvs diff -u -r 1.83.2.40 -r 1.83.2.41 src/mimeview.c; cvs diff -u -r 1.101.2.17 -r 1.101.2.18 src/news.c; cvs diff -u -r 1.1.2.3 -r 1.1.2.4 src/prefs_image_viewer.c; cvs diff -u -r 1.395.2.134 -r 1.395.2.135 src/summaryview.c; cvs diff -u -r 1.1.2.14 -r 1.1.2.15 src/wizard.c; cvs diff -u -r 1.1.2.3 -r 1.1.2.4 src/plugins/pgpcore/prefs_gpg.c; ) > 1.9.15cvs31.patchset
MICRO_VERSION=15
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=30
+EXTRA_VERSION=31
EXTRA_RELEASE=
EXTRA_GTK2_VERSION=
GtkWidget *button4;
GtkWidget *button5;
gchar *crash_report;
+ GtkTextBuffer *buffer;
+ GtkTextIter iter;
window1 = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_container_set_border_width(GTK_CONTAINER(window1), 5);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow1),
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
- text1 = gtk_text_new(NULL, NULL);
- gtk_text_set_editable((text1), FALSE);
+ text1 = gtk_text_view_new();
+ gtk_text_view_set_editable(GTK_TEXT_VIEW(text1), FALSE);
gtk_widget_show(text1);
gtk_container_add(GTK_CONTAINER(scrolledwindow1), text1);
get_lib_version(),
debug_output);
- gtk_text_insert((text1), NULL, NULL, NULL, crash_report, -1);
+ buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text1));
+ gtk_text_buffer_get_start_iter(buffer, &iter);
+ gtk_text_buffer_insert(buffer, &iter, crash_report, -1);
hbuttonbox3 = gtk_hbutton_box_new();
gtk_widget_show(hbuttonbox3);
gint exists_, recent_, unseen_;
guint32 uid_validity_;
- if (!exists || !recent || !unseen || !uid_validity) {
+ if (!exists && !recent && !unseen && !uid_validity) {
if (session->mbox && strcmp(session->mbox, path) == 0)
return IMAP_SUCCESS;
+ }
+ if (!exists)
exists = &exists_;
+ if (!recent)
recent = &recent_;
+ if (!unseen)
unseen = &unseen_;
+ if (!uid_validity)
uid_validity = &uid_validity_;
- }
g_free(session->mbox);
session->mbox = NULL;
{"/Message/Move..." , M_TARGET_EXIST|M_ALLOW_DELETE|M_UNLOCKED},
{"/Message/Copy..." , M_TARGET_EXIST|M_EXEC|M_UNLOCKED},
{"/Message/Move to trash" , M_TARGET_EXIST|M_ALLOW_DELETE|M_UNLOCKED|M_NOT_NEWS},
- {"/Message/Delete..." , M_TARGET_EXIST|M_ALLOW_DELETE|M_UNLOCKED|M_NOT_NEWS},
+ {"/Message/Delete..." , M_TARGET_EXIST|M_ALLOW_DELETE|M_UNLOCKED},
{"/Message/Cancel a news message" , M_TARGET_EXIST|M_ALLOW_DELETE|M_UNLOCKED|M_NEWS},
{"/Message/Mark" , M_TARGET_EXIST},
{"/Message/Re-edit" , M_HAVE_ACCOUNT|M_ALLOW_REEDIT},
static void update_signature_info(MimeView *mimeview, MimeInfo *selected)
{
MimeInfo *siginfo;
-
+ MimeInfo *first_text;
+
g_return_if_fail(mimeview != NULL);
g_return_if_fail(selected != NULL);
+ if (selected->type == MIMETYPE_MESSAGE
+ && !g_ascii_strcasecmp(selected->subtype, "rfc822")) {
+ /* if the first text part is signed, check that */
+ first_text = selected;
+ while (first_text && first_text->type != MIMETYPE_TEXT) {
+ first_text = procmime_mimeinfo_next(first_text);
+ }
+ if (first_text) {
+ update_signature_info(mimeview, first_text);
+ return;
+ }
+ }
+
siginfo = selected;
while (siginfo != NULL) {
if (privacy_mimeinfo_is_signed(siginfo))
gchar *news_item_get_path (Folder *folder,
FolderItem *item);
static void news_synchronise (FolderItem *item);
-
+static int news_dummy_remove (Folder *folder,
+ FolderItem *item,
+ gint msgnum);
static FolderClass news_class;
FolderClass *news_get_class(void)
news_class.get_msginfos = news_get_msginfos;
news_class.fetch_msg = news_fetch_msg;
news_class.synchronise = news_synchronise;
+ news_class.remove_msg = news_dummy_remove;
};
return &news_class;
}
+static int news_dummy_remove (Folder *folder,
+ FolderItem *item,
+ gint msgnum)
+{
+ debug_print("doing nothing on purpose\n");
+ return 0;
+}
+
static Folder *news_folder_new(const gchar *name, const gchar *path)
{
Folder *folder;
GtkWidget *checkbtn_gpg_warning;
};
+static void store_passphrase_toggled(GtkWidget *widget, gpointer data)
+{
+ struct GPGPage *page = (struct GPGPage *)data;
+ gtk_widget_set_sensitive(page->spinbtn_store_passphrase,
+ gtk_toggle_button_get_active(
+ GTK_TOGGLE_BUTTON(page->checkbtn_store_passphrase)));
+}
+
static void prefs_gpg_create_widget_func(PrefsPage *_page,
GtkWindow *window,
gpointer data)
GtkWidget *checkbtn_store_passphrase;
GtkWidget *checkbtn_auto_check_signatures;
GtkWidget *checkbtn_gpg_warning;
- GtkWidget *label7;
- GtkWidget *label6;
- GtkWidget *label9;
- GtkWidget *label10;
GtkWidget *hbox1;
GtkWidget *label11;
GtkObject *spinbtn_store_passphrase_adj;
GtkWidget *spinbtn_store_passphrase;
GtkWidget *label12;
GtkTooltips *tooltips;
+ gchar *tmp;
tooltips = gtk_tooltips_new();
gtk_table_set_row_spacings(GTK_TABLE(table), 4);
gtk_table_set_col_spacings(GTK_TABLE(table), 8);
- checkbtn_passphrase_grab = gtk_check_button_new_with_label("");
+ checkbtn_passphrase_grab = gtk_check_button_new_with_label(_("Grab input while entering a passphrase"));
gtk_widget_show(checkbtn_passphrase_grab);
gtk_table_attach(GTK_TABLE(table), checkbtn_passphrase_grab, 0, 1,
3, 4, (GtkAttachOptions) (GTK_SHRINK | GTK_FILL),
(GtkAttachOptions) (GTK_SHRINK), 0, 0);
- checkbtn_store_passphrase = gtk_check_button_new_with_label("");
+ checkbtn_store_passphrase = gtk_check_button_new_with_label(_("Store passphrase in memory"));
gtk_widget_show(checkbtn_store_passphrase);
gtk_table_attach(GTK_TABLE(table), checkbtn_store_passphrase, 0, 1,
1, 2, (GtkAttachOptions) (GTK_SHRINK | GTK_FILL),
(GtkAttachOptions) (GTK_SHRINK), 0, 0);
checkbtn_auto_check_signatures =
- gtk_check_button_new_with_label("");
+ gtk_check_button_new_with_label(_("Automatically check signatures"));
gtk_widget_show(checkbtn_auto_check_signatures);
gtk_table_attach(GTK_TABLE(table), checkbtn_auto_check_signatures,
0, 1, 0, 1,
(GtkAttachOptions) (GTK_SHRINK | GTK_FILL),
(GtkAttachOptions) (GTK_SHRINK), 0, 0);
- checkbtn_gpg_warning = gtk_check_button_new_with_label("");
+ checkbtn_gpg_warning = gtk_check_button_new_with_label(_
+ ("Display warning on startup if GnuPG doesn't work"));
gtk_widget_show(checkbtn_gpg_warning);
gtk_table_attach(GTK_TABLE(table), checkbtn_gpg_warning, 0, 1, 4,
5, (GtkAttachOptions) (GTK_SHRINK | GTK_FILL),
(GtkAttachOptions) (GTK_SHRINK), 0, 0);
- label7 = gtk_label_new(_("Store passphrase in memory"));
- gtk_widget_show(label7);
- gtk_table_attach(GTK_TABLE(table), label7, 1, 2, 1, 2,
- (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
- (GtkAttachOptions) (GTK_SHRINK), 0, 0);
- gtk_misc_set_alignment(GTK_MISC(label7), 0, 0.5);
-
- label6 = gtk_label_new(_("Automatically check signatures"));
- gtk_widget_show(label6);
- gtk_table_attach(GTK_TABLE(table), label6, 1, 2, 0, 1,
- (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
- (GtkAttachOptions) (GTK_SHRINK), 0, 0);
- gtk_misc_set_alignment(GTK_MISC(label6), 0, 0.5);
-
- label9 =
- gtk_label_new(_("Grab input while entering a passphrase"));
- gtk_widget_show(label9);
- gtk_table_attach(GTK_TABLE(table), label9, 1, 2, 3, 4,
- (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
- (GtkAttachOptions) (GTK_SHRINK), 0, 0);
- gtk_misc_set_alignment(GTK_MISC(label9), 0, 0.5);
-
- label10 =
- gtk_label_new(_
- ("Display warning on startup if GnuPG doesn't work"));
- gtk_widget_show(label10);
- gtk_table_attach(GTK_TABLE(table), label10, 1, 2, 4, 5,
- (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
- (GtkAttachOptions) (GTK_SHRINK), 0, 0);
- gtk_misc_set_alignment(GTK_MISC(label10), 0, 0.5);
-
hbox1 = gtk_hbox_new(FALSE, 8);
gtk_widget_show(hbox1);
- gtk_table_attach(GTK_TABLE(table), hbox1, 1, 2, 2, 3,
+ gtk_table_attach(GTK_TABLE(table), hbox1, 0, 1, 2, 3,
(GtkAttachOptions) (GTK_SHRINK | GTK_FILL),
(GtkAttachOptions) (GTK_SHRINK), 0, 0);
- label11 = gtk_label_new(_("Expire after"));
+ tmp = g_strdup_printf(" %s", _("Expire after"));
+ label11 = gtk_label_new(tmp);
+ g_free(tmp);
gtk_widget_show(label11);
gtk_box_pack_start(GTK_BOX(hbox1), label11, FALSE, FALSE, 0);
gtk_widget_show(spinbtn_store_passphrase);
gtk_box_pack_start(GTK_BOX(hbox1), spinbtn_store_passphrase, FALSE,
FALSE, 0);
- gtk_widget_set_size_request(spinbtn_store_passphrase, 64, -2);
+ gtk_widget_set_size_request(spinbtn_store_passphrase, 64, -1);
gtk_tooltips_set_tip(tooltips, spinbtn_store_passphrase,
_
("Setting to '0' will store the passphrase for the whole session"),
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_passphrase_grab), config->passphrase_grab);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_gpg_warning), config->gpg_warning);
+ gtk_widget_set_sensitive(spinbtn_store_passphrase,
+ gtk_toggle_button_get_active(
+ GTK_TOGGLE_BUTTON(checkbtn_store_passphrase)));
+ g_signal_connect(G_OBJECT(checkbtn_store_passphrase), "toggled",
+ G_CALLBACK(store_passphrase_toggled), page);
+
page->checkbtn_auto_check_signatures = checkbtn_auto_check_signatures;
page->checkbtn_store_passphrase = checkbtn_store_passphrase;
page->spinbtn_store_passphrase = spinbtn_store_passphrase;
ImageViewerPage *prefs_imageviewer = (ImageViewerPage *) _page;
GtkWidget *table;
- GtkWidget *label;
GtkWidget *autoload_img;
GtkWidget *resize_img;
GtkWidget *inline_img;
- table = gtk_table_new(2, 2, FALSE);
+ table = gtk_table_new(3, 1, FALSE);
gtk_widget_show(table);
gtk_container_set_border_width(GTK_CONTAINER(table), 8);
gtk_table_set_row_spacings(GTK_TABLE(table), 4);
gtk_table_set_col_spacings(GTK_TABLE(table), 8);
- label =
- gtk_label_new(_("Automatically display attached images"));
- gtk_widget_show(label);
- gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1,
- (GtkAttachOptions) (GTK_FILL),
- (GtkAttachOptions) (0), 0, 0);
- gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-
- label = gtk_label_new(_("Resize attached images by default\n(Clicking image toggles scaling)"));
- gtk_widget_show(label);
- gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2,
- (GtkAttachOptions) (GTK_FILL),
- (GtkAttachOptions) (0), 0, 0);
- gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-
- label = gtk_label_new(_("Display images inline"));
- gtk_widget_show(label);
- gtk_table_attach(GTK_TABLE(table), label, 0, 1, 2, 3,
- (GtkAttachOptions) (GTK_FILL),
- (GtkAttachOptions) (0), 0, 0);
- gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-
- autoload_img = gtk_check_button_new_with_label("");
+ autoload_img = gtk_check_button_new_with_label(_("Automatically display attached images"));
gtk_widget_show(autoload_img);
- gtk_table_attach(GTK_TABLE(table), autoload_img, 1, 2, 0, 1,
+ gtk_table_attach(GTK_TABLE(table), autoload_img, 0, 1, 0, 1,
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
- resize_img = gtk_check_button_new_with_label("");
+ resize_img = gtk_check_button_new_with_label(_("Resize attached images by default\n(Clicking image toggles scaling)"));
gtk_widget_show(resize_img);
- gtk_table_attach(GTK_TABLE(table), resize_img, 1, 2, 1, 2,
+ gtk_table_attach(GTK_TABLE(table), resize_img, 0, 1, 1, 2,
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
- inline_img = gtk_check_button_new_with_label("");
+ inline_img = gtk_check_button_new_with_label(_("Display images inline"));
gtk_widget_show(inline_img);
- gtk_table_attach(GTK_TABLE(table), inline_img, 1, 2, 2, 3,
+ gtk_table_attach(GTK_TABLE(table), inline_img, 0, 1, 2, 3,
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
{"/Move..." , M_TARGET_EXIST|M_ALLOW_DELETE|M_UNLOCKED|M_NOT_NEWS},
{"/Copy..." , M_TARGET_EXIST|M_EXEC|M_UNLOCKED},
{"/Move to trash" , M_TARGET_EXIST|M_ALLOW_DELETE|M_UNLOCKED|M_NOT_NEWS},
- {"/Delete..." , M_TARGET_EXIST|M_ALLOW_DELETE|M_UNLOCKED|M_NOT_NEWS},
+ {"/Delete..." , M_TARGET_EXIST|M_ALLOW_DELETE|M_UNLOCKED},
{"/Cancel a news message" , M_TARGET_EXIST|M_ALLOW_DELETE|M_UNLOCKED|M_NEWS},
{"/Mark" , M_TARGET_EXIST},
}
if (!found) {
- alertpanel_error(_("You're not the author of the article\n"));
+ alertpanel_error(_("You're not the author of the article.\n"));
}
return found;
msginfo = gtk_ctree_node_get_row_data(ctree, row);
- if (!check_permission(summaryview, msginfo))
- return;
-
if (MSG_IS_LOCKED(msginfo->flags)) return;
if (MSG_IS_DELETED(msginfo->flags)) return;
if (summary_is_locked(summaryview)) return;
- if (!summaryview->folder_item ||
- FOLDER_TYPE(summaryview->folder_item->folder) == F_NEWS) return;
+ if (!summaryview->folder_item) return;
aval = alertpanel(_("Delete message(s)"),
_("Do you really want to delete selected message(s)?"),
GTK_NOTEBOOK(wizard->notebook));
if (response == CANCEL)
{
- wizard->finished = TRUE;
wizard->result = FALSE;
+ wizard->finished = TRUE;
gtk_widget_destroy (GTK_WIDGET(dialog));
}
else if (response == FINISHED)
GTK_NOTEBOOK(wizard->notebook));
goto set_sens;
}
- wizard->finished = TRUE;
wizard->result = TRUE;
+ wizard->finished = TRUE;
gtk_widget_destroy (GTK_WIDGET(dialog));
}
else
}
}
+static gint wizard_close_cb(GtkWidget *widget, GdkEventAny *event,
+ gpointer data)
+{
+ WizardWindow *wizard = (WizardWindow *)data;
+ wizard->result = FALSE;
+ wizard->finished = TRUE;
+}
gboolean run_wizard(MainWindow *mainwin, gboolean create_mailbox) {
WizardWindow *wizard = g_new0(WizardWindow, 1);
GTK_WIDGET(cur->data), NULL);
}
+ g_signal_connect(G_OBJECT(wizard->window), "delete_event",
+ G_CALLBACK(wizard_close_cb), wizard);
gtk_widget_show_all (wizard->window);
+
gtk_widget_hide(wizard->recv_imap_label);
gtk_widget_hide(wizard->recv_imap_subdir);