2008-10-30 [colin] 3.6.1cvs13
authorColin Leroy <colin@colino.net>
Thu, 30 Oct 2008 17:46:46 +0000 (17:46 +0000)
committerColin Leroy <colin@colino.net>
Thu, 30 Oct 2008 17:46:46 +0000 (17:46 +0000)
* src/mimeview.c
* src/mimeview.h
* src/textview.c
* src/textview.h
Use one UI Manager per mimeview, instead of
the global one -- else user_data pointer gets
broken if opening and closing another message-
view, then using right-click on a mimeview's
mimepart. Probably fixes bug 1711, 'Save-as
attachment crashes'

ChangeLog
PATCHSETS
configure.ac
src/mimeview.c
src/mimeview.h
src/textview.c
src/textview.h

index 014e1039d7b28f95aef9d7af7689f9ae3ebed1db..be143514cf17549dc525b9f316d902cbf5451964 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2008-10-30 [colin]     3.6.1cvs13
+
+       * src/mimeview.c
+       * src/mimeview.h
+       * src/textview.c
+       * src/textview.h
+               Use one UI Manager per mimeview, instead of
+               the global one -- else user_data pointer gets
+               broken if opening and closing another message-
+               view, then using right-click on a mimeview's 
+               mimepart. Probably fixes bug 1711, 'Save-as
+               attachment crashes'
+
 2008-10-24 [paul]      3.6.1cvs12
 
        * tools/Makefile.am
index cb79c9f41a49de8eb38bf87114b9492b9881c4bf..49f79243d8e434293ea355d5fc218ee244cd9004 100644 (file)
--- a/PATCHSETS
+++ b/PATCHSETS
 ( cvs diff -u -r 1.2.2.12 -r 1.2.2.13 tools/kdeservicemenu/README;  cvs diff -u -r 1.2.2.6 -r 1.2.2.7 tools/kdeservicemenu/install.sh;  ) > 3.6.1cvs10.patchset
 ( cvs diff -u -r 1.2.2.7 -r 1.2.2.8 tools/kdeservicemenu/install.sh;  ) > 3.6.1cvs11.patchset
 ( cvs diff -u -r 1.25.2.27 -r 1.25.2.28 tools/Makefile.am;  diff -u /dev/null tools/kdeservicemenu/claws-mail-attach-files.desktop.kde4template;  cvs diff -u -r 1.2.2.8 -r 1.2.2.9 tools/kdeservicemenu/install.sh;  ) > 3.6.1cvs12.patchset
+( cvs diff -u -r 1.83.2.145 -r 1.83.2.146 src/mimeview.c;  cvs diff -u -r 1.20.2.26 -r 1.20.2.27 src/mimeview.h;  cvs diff -u -r 1.96.2.208 -r 1.96.2.209 src/textview.c;  cvs diff -u -r 1.12.2.24 -r 1.12.2.25 src/textview.h;  ) > 3.6.1cvs13.patchset
index d5a7da1c8155ecfd199cef0bdbaa675609b2f8be..5841a092e0d0b15b94c1d78edb353fbfbabd8344 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=6
 MICRO_VERSION=1
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=12
+EXTRA_VERSION=13
 EXTRA_RELEASE=
 EXTRA_GTK2_VERSION=
 
index ed0d4e33dc4d2b1802d22b16dfa2e0146ee2fbaa..8d54ed9fcba9468adcb4551c8acb9314c4a3cc09 100644 (file)
@@ -250,8 +250,6 @@ MimeView *mimeview_create(MainWindow *mainwin)
        GtkWidget *arrow;
        GtkWidget *scrollbutton;
        GtkWidget *hbox;
-       GtkUIManager *gui_manager = gtkut_ui_manager();
-       GtkActionGroup *actions;
        NoticeView *siginfoview;
        GtkRequisition r;
 
@@ -350,27 +348,37 @@ MimeView *mimeview_create(MainWindow *mainwin)
        ctree_mainbox = gtk_hbox_new(FALSE, 0); 
        gtk_box_pack_start(GTK_BOX(ctree_mainbox), scrolledwin, TRUE, TRUE, 0);
 
-       actions = cm_menu_create_action_group("MimeView", mimeview_menu_actions,
+       mimeview->ui_manager = gtk_ui_manager_new();
+       mimeview->action_group = cm_menu_create_action_group_full(mimeview->ui_manager,
+                       "MimeView", mimeview_menu_actions,
                        G_N_ELEMENTS(mimeview_menu_actions), (gpointer)mimeview);
 
-       MENUITEM_ADDUI("/Menus/", "MimeView", "MimeView", GTK_UI_MANAGER_MENU);
-       MENUITEM_ADDUI("/Menus/MimeView/", "Open", "MimeView/Open",
+       MENUITEM_ADDUI_MANAGER(mimeview->ui_manager, "/", "Menus", "Menus", GTK_UI_MANAGER_MENUBAR)
+       MENUITEM_ADDUI_MANAGER(mimeview->ui_manager, 
+                       "/Menus/", "MimeView", "MimeView", GTK_UI_MANAGER_MENU);
+       MENUITEM_ADDUI_MANAGER(mimeview->ui_manager, 
+                       "/Menus/MimeView/", "Open", "MimeView/Open",
                        GTK_UI_MANAGER_MENUITEM);
 #ifndef MAEMO
-       MENUITEM_ADDUI("/Menus/MimeView/", "OpenWith", "MimeView/OpenWith",
+       MENUITEM_ADDUI_MANAGER(mimeview->ui_manager, 
+                       "/Menus/MimeView/", "OpenWith", "MimeView/OpenWith",
                        GTK_UI_MANAGER_MENUITEM);
 #endif
-       MENUITEM_ADDUI("/Menus/MimeView/", "DisplayAsText", "MimeView/DisplayAsText",
+       MENUITEM_ADDUI_MANAGER(mimeview->ui_manager, 
+                       "/Menus/MimeView/", "DisplayAsText", "MimeView/DisplayAsText",
                        GTK_UI_MANAGER_MENUITEM);
-       MENUITEM_ADDUI("/Menus/MimeView/", "SaveAs", "MimeView/SaveAs",
+       MENUITEM_ADDUI_MANAGER(mimeview->ui_manager, 
+                       "/Menus/MimeView/", "SaveAs", "MimeView/SaveAs",
                        GTK_UI_MANAGER_MENUITEM);
-       MENUITEM_ADDUI("/Menus/MimeView/", "SaveAll", "MimeView/SaveAll",
+       MENUITEM_ADDUI_MANAGER(mimeview->ui_manager, 
+                       "/Menus/MimeView/", "SaveAll", "MimeView/SaveAll",
                        GTK_UI_MANAGER_MENUITEM);
-       MENUITEM_ADDUI("/Menus/MimeView/", "NextPart", "MimeView/NextPart",
+       MENUITEM_ADDUI_MANAGER(mimeview->ui_manager, 
+                       "/Menus/MimeView/", "NextPart", "MimeView/NextPart",
                        GTK_UI_MANAGER_MENUITEM);
 
        popupmenu = gtk_menu_item_get_submenu(GTK_MENU_ITEM(
-                               gtk_ui_manager_get_widget(gui_manager, "/Menus/MimeView")) );
+                               gtk_ui_manager_get_widget(mimeview->ui_manager, "/Menus/MimeView")) );
 
 
        vbox = gtk_vbox_new(FALSE, 0);
@@ -1301,15 +1309,15 @@ static gboolean part_button_pressed(MimeView *mimeview, GdkEventButton *event,
                if (partinfo && (partinfo->type == MIMETYPE_MESSAGE ||
                                 partinfo->type == MIMETYPE_IMAGE ||
                                 partinfo->type == MIMETYPE_MULTIPART))
-                       cm_menu_set_sensitive("MimeView/DisplayAsText", FALSE);
+                       cm_menu_set_sensitive_full(mimeview->ui_manager, "Menus/MimeView/DisplayAsText", FALSE);
                else
-                       cm_menu_set_sensitive("MimeView/DisplayAsText", TRUE);
+                       cm_menu_set_sensitive_full(mimeview->ui_manager, "Menus/MimeView/DisplayAsText", TRUE);
                if (partinfo &&
                    partinfo->type == MIMETYPE_APPLICATION &&
                    !g_ascii_strcasecmp(partinfo->subtype, "octet-stream"))
-                       cm_menu_set_sensitive("MimeView/Open", FALSE);
+                       cm_menu_set_sensitive_full(mimeview->ui_manager, "Menus/MimeView/Open", FALSE);
                else
-                       cm_menu_set_sensitive("MimeView/Open", TRUE);
+                       cm_menu_set_sensitive_full(mimeview->ui_manager, "Menus/MimeView/Open", TRUE);
 
                g_object_set_data(G_OBJECT(mimeview->popupmenu),
                                  "pop_partinfo", partinfo);
index 9b9d91f593f9f619ec651d9d95b961ad40ffe4df..b4da128a66f15a97a1a326be110dcd15dee17683 100644 (file)
@@ -101,6 +101,8 @@ struct _MimeView
        SigCheckData *check_data;
 #endif
        MimeInfo *spec_part;
+       GtkUIManager *ui_manager;
+       GtkActionGroup *action_group;
 };
 
 struct _MimeViewerFactory
index c6e6b4a645e4546ca21552d2f2e14cd9a926b338..463a83fb116159f1da1c56bb33b1ed850f930d33 100644 (file)
@@ -314,34 +314,49 @@ TextView *textview_create(void)
        gtk_widget_show(vbox);
 
        
-       textview->link_action_group = cm_menu_create_action_group("TextviewPopupLink",
+       textview->ui_manager = gtk_ui_manager_new();
+       textview->link_action_group = cm_menu_create_action_group_full(textview->ui_manager,
+                       "TextviewPopupLink",
                        textview_link_popup_entries,
                        G_N_ELEMENTS(textview_link_popup_entries), (gpointer)textview);
-       textview->mail_action_group = cm_menu_create_action_group("TextviewPopupMail",
+       textview->mail_action_group = cm_menu_create_action_group_full(textview->ui_manager,
+                       "TextviewPopupMail",
                        textview_mail_popup_entries,
                        G_N_ELEMENTS(textview_mail_popup_entries), (gpointer)textview);
-       textview->file_action_group = cm_menu_create_action_group("TextviewPopupFile",
+       textview->file_action_group = cm_menu_create_action_group_full(textview->ui_manager,
+                       "TextviewPopupFile",
                        textview_file_popup_entries,
                        G_N_ELEMENTS(textview_file_popup_entries), (gpointer)textview);
 
-       MENUITEM_ADDUI("/Menus", "TextviewPopupLink", "TextviewPopupLink", GTK_UI_MANAGER_MENU)
-       MENUITEM_ADDUI("/Menus", "TextviewPopupMail", "TextviewPopupMail", GTK_UI_MANAGER_MENU)
-       MENUITEM_ADDUI("/Menus", "TextviewPopupFile", "TextviewPopupFile", GTK_UI_MANAGER_MENU)
-
-       MENUITEM_ADDUI("/Menus/TextviewPopupLink", "Open", "TextviewPopupLink/Open", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/TextviewPopupLink", "Copy", "TextviewPopupLink/Copy", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/TextviewPopupMail", "Compose", "TextviewPopupMail/Compose", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/TextviewPopupMail", "AddAB", "TextviewPopupMail/AddAB", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/TextviewPopupMail", "Copy", "TextviewPopupMail/Copy", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/TextviewPopupFile", "Open", "TextviewPopupFile/Open", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/TextviewPopupFile", "Save", "TextviewPopupFile/Save", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(textview->ui_manager, "/", "Menus", "Menus", GTK_UI_MANAGER_MENUBAR)
+       MENUITEM_ADDUI_MANAGER(textview->ui_manager, 
+                       "/Menus", "TextviewPopupLink", "TextviewPopupLink", GTK_UI_MANAGER_MENU)
+       MENUITEM_ADDUI_MANAGER(textview->ui_manager, 
+                       "/Menus", "TextviewPopupMail", "TextviewPopupMail", GTK_UI_MANAGER_MENU)
+       MENUITEM_ADDUI_MANAGER(textview->ui_manager, 
+                       "/Menus", "TextviewPopupFile", "TextviewPopupFile", GTK_UI_MANAGER_MENU)
+
+       MENUITEM_ADDUI_MANAGER(textview->ui_manager, 
+                       "/Menus/TextviewPopupLink", "Open", "TextviewPopupLink/Open", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(textview->ui_manager, 
+                       "/Menus/TextviewPopupLink", "Copy", "TextviewPopupLink/Copy", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(textview->ui_manager, 
+                       "/Menus/TextviewPopupMail", "Compose", "TextviewPopupMail/Compose", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(textview->ui_manager, 
+                       "/Menus/TextviewPopupMail", "AddAB", "TextviewPopupMail/AddAB", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(textview->ui_manager, 
+                       "/Menus/TextviewPopupMail", "Copy", "TextviewPopupMail/Copy", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(textview->ui_manager, 
+                       "/Menus/TextviewPopupFile", "Open", "TextviewPopupFile/Open", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(textview->ui_manager, 
+                       "/Menus/TextviewPopupFile", "Save", "TextviewPopupFile/Save", GTK_UI_MANAGER_MENUITEM)
 
        textview->link_popup_menu = gtk_menu_item_get_submenu(GTK_MENU_ITEM(
-                               gtk_ui_manager_get_widget(gtkut_ui_manager(), "/Menus/TextviewPopupLink")) );
+                               gtk_ui_manager_get_widget(textview->ui_manager, "/Menus/TextviewPopupLink")) );
        textview->mail_popup_menu = gtk_menu_item_get_submenu(GTK_MENU_ITEM(
-                               gtk_ui_manager_get_widget(gtkut_ui_manager(), "/Menus/TextviewPopupMail")) );
+                               gtk_ui_manager_get_widget(textview->ui_manager, "/Menus/TextviewPopupMail")) );
        textview->file_popup_menu = gtk_menu_item_get_submenu(GTK_MENU_ITEM(
-                               gtk_ui_manager_get_widget(gtkut_ui_manager(), "/Menus/TextviewPopupFile")) );
+                               gtk_ui_manager_get_widget(textview->ui_manager, "/Menus/TextviewPopupFile")) );
 
        textview->vbox               = vbox;
        textview->scrolledwin        = scrolledwin;
index fb06b20881dde8047976a8fe57c61bb1650f1d8e..9778dca6c0fd1562b471680995bd428cc91cb17b 100644 (file)
@@ -56,6 +56,7 @@ struct _TextView
        GtkWidget *scrolledwin;
        GtkWidget *text;
 
+       GtkUIManager *ui_manager;
        GtkActionGroup *link_action_group;
        GtkWidget *link_popup_menu;
        GtkActionGroup *mail_action_group;