static void messageview_set_menu_state(MessageView *messageview) { GtkItemFactory *ifactory; GtkWidget *menuitem; messageview->menu_locked = TRUE; ifactory = gtk_item_factory_from_widget(messageview->menubar); menuitem = gtk_item_factory_get_widget (ifactory, "/View/All headers"); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), messageview->textview->show_all_headers); if (messageview->msginfo && FOLDER_ITEM_IS_SENT_FOLDER(messageview->msginfo->folder)) menu_set_sensitive(ifactory, "/Message/Re-edit", TRUE); else menu_set_sensitive(ifactory, "/Message/Re-edit", FALSE); messageview->menu_locked = FALSE; }
static void part_button_pressed(MimeView *mimeview, GdkEventButton *event, MimeInfo *partinfo) { static MimeInfo *lastinfo; static guint32 lasttime; if (event->button == 2 || (event->button == 1 && (event->time - lasttime) < DOUBLE_CLICK_TIME && lastinfo == partinfo)) { /* call external program for image, audio or html */ mimeview_launch(mimeview); } else if (event->button == 3) { if (partinfo && (partinfo->type == MIMETYPE_TEXT || partinfo->type == MIMETYPE_MESSAGE || partinfo->type == MIMETYPE_IMAGE || partinfo->type == MIMETYPE_MULTIPART)) menu_set_sensitive(mimeview->popupfactory, "/Display as text", FALSE); else menu_set_sensitive(mimeview->popupfactory, "/Display as text", TRUE); if (partinfo && partinfo->type == MIMETYPE_APPLICATION && !g_strcasecmp(partinfo->subtype, "octet-stream")) menu_set_sensitive(mimeview->popupfactory, "/Open", FALSE); else menu_set_sensitive(mimeview->popupfactory, "/Open", TRUE); gtk_object_set_data(GTK_OBJECT(mimeview->popupmenu), "pop_partinfo", partinfo); gtk_menu_popup(GTK_MENU(mimeview->popupmenu), NULL, NULL, NULL, NULL, event->button, event->time); } lastinfo = partinfo; lasttime = event->time; }
static gint mimeview_button_pressed(GtkWidget *widget, GdkEventButton *event, MimeView *mimeview) { GtkTreeView *treeview = GTK_TREE_VIEW(widget); MimeInfo *partinfo; if (!event) return FALSE; if (event->button == 2 || event->button == 3) { GtkTreePath *path; if (!gtk_tree_view_get_path_at_pos(treeview, event->x, event->y, &path, NULL, NULL, NULL)) return FALSE; gtk_tree_view_set_cursor(treeview, path, NULL, FALSE); gtk_tree_path_free(path); } if (event->button == 2 || (event->button == 1 && event->type == GDK_2BUTTON_PRESS)) { /* call external program for image, audio or html */ mimeview_launch(mimeview); } else if (event->button == 3) { partinfo = mimeview_get_selected_part(mimeview); if (partinfo && (partinfo->mime_type == MIME_TEXT || partinfo->mime_type == MIME_TEXT_HTML || partinfo->mime_type == MIME_MESSAGE_RFC822 || partinfo->mime_type == MIME_IMAGE || partinfo->mime_type == MIME_MULTIPART)) menu_set_sensitive(mimeview->popupfactory, "/Display as text", FALSE); else menu_set_sensitive(mimeview->popupfactory, "/Display as text", TRUE); if (partinfo && partinfo->mime_type == MIME_APPLICATION_OCTET_STREAM) menu_set_sensitive(mimeview->popupfactory, "/Open", FALSE); else menu_set_sensitive(mimeview->popupfactory, "/Open", TRUE); menu_set_sensitive(mimeview->popupfactory, "/Save all...", mimeview->has_attach_file); if (partinfo && (partinfo->mime_type == MIME_TEXT || partinfo->mime_type == MIME_TEXT_HTML || partinfo->mime_type == MIME_MESSAGE_RFC822)) menu_set_sensitive(mimeview->popupfactory, "/Print...", TRUE); else menu_set_sensitive(mimeview->popupfactory, "/Print...", FALSE); if (partinfo && partinfo->mime_type == MIME_MESSAGE_RFC822) { gtk_widget_show(mimeview->reply_separator); gtk_widget_show(mimeview->reply_menuitem); } else { gtk_widget_hide(mimeview->reply_separator); gtk_widget_hide(mimeview->reply_menuitem); } #if USE_GPGME menu_set_sensitive(mimeview->popupfactory, "/Check signature", mimeview_is_signed(mimeview)); #endif gtk_menu_popup(GTK_MENU(mimeview->popupmenu), NULL, NULL, NULL, NULL, event->button, event->time); return TRUE; } return FALSE; }