[balsa/popover: 6/6] More GMenu porting
- From: Peter Bloomfield <peterb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [balsa/popover: 6/6] More GMenu porting
- Date: Fri, 1 May 2020 15:06:39 +0000 (UTC)
commit 9b4a8431620b0dce36e69637d0a6cd2655d63a9f
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date: Fri May 1 11:05:36 2020 -0400
More GMenu porting
src/sendmsg-window.c | 98 +++++++++++++++++++++++++---------------------------
1 file changed, 47 insertions(+), 51 deletions(-)
---
diff --git a/src/sendmsg-window.c b/src/sendmsg-window.c
index c2485b7c2..ec3f9eaeb 100644
--- a/src/sendmsg-window.c
+++ b/src/sendmsg-window.c
@@ -1318,16 +1318,6 @@ remove_attachment(GSimpleAction *action,
gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
}
-static void
-set_attach_menu_sensitivity(GtkWidget * widget, gpointer data)
-{
- gint mode =
- GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), "new-mode"));
-
- if (mode)
- gtk_widget_set_sensitive(widget, mode != GPOINTER_TO_INT(data));
-}
-
/* change attachment mode - right mouse button callback */
static void
change_attach_mode(GSimpleAction *action,
@@ -1392,11 +1382,6 @@ change_attach_mode(GSimpleAction *action,
info->mode = new_mode;
gtk_list_store_set(GTK_LIST_STORE(model), &iter, ATTACH_MODE_COLUMN,
info->mode, -1);
-
- /* set the menu's sensitivities */
- gtk_container_forall(GTK_CONTAINER(gtk_widget_get_parent(menu_item)),
- set_attach_menu_sensitivity,
- GINT_TO_POINTER(info->mode));
}
@@ -1406,7 +1391,7 @@ attachment_menu_vfs_cb(GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
- const gchar *app = g_variant_get_string(parameter);
+ const gchar *app = g_variant_get_string(parameter, NULL);
BalsaAttachInfo *info = user_data;
GError *err = NULL;
gboolean result;
@@ -1422,8 +1407,11 @@ attachment_menu_vfs_cb(GSimpleAction *action,
/* URL external body - right mouse button callback */
static void
-on_open_url_cb(GtkWidget * menu_item, BalsaAttachInfo * info)
+on_open_url_cb(GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
{
+ BalsaAttachInfo *info = user_data;
#if GTK_CHECK_VERSION(3, 22, 0)
GtkWidget *toplevel;
#else /* GTK_CHECK_VERSION(3, 22, 0) */
@@ -1432,19 +1420,17 @@ on_open_url_cb(GtkWidget * menu_item, BalsaAttachInfo * info)
GError *err = NULL;
const gchar * uri;
- g_return_if_fail(info != NULL);
uri = libbalsa_vfs_get_uri(info->file_uri);
- g_return_if_fail(uri != NULL);
g_message("open URL %s", uri);
#if GTK_CHECK_VERSION(3, 22, 0)
- toplevel = gtk_widget_get_toplevel(GTK_WIDGET(menu_item));
+ toplevel = gtk_widget_get_toplevel(info->bm->window);
if (gtk_widget_is_toplevel(toplevel)) {
gtk_show_uri_on_window(GTK_WINDOW(toplevel), uri,
gtk_get_current_event_time(), &err);
}
#else /* GTK_CHECK_VERSION(3, 22, 0) */
- screen = gtk_widget_get_screen(menu_item);
+ screen = gtk_widget_get_screen(info->bm->window);
gtk_show_uri(screen, uri, gtk_get_current_event_time(), &err);
#endif /* GTK_CHECK_VERSION(3, 22, 0) */
if (err) {
@@ -1676,16 +1662,15 @@ add_attachment(BalsaSendmsg * bsmsg, const gchar *filename,
gchar *utf8name;
GError *err = NULL;
GdkPixbuf *pixbuf;
- GtkWidget *menu_item;
gchar *content_desc;
- GMenu *menu;
- GMenuItem *menu_item;
- static GActionEntry[] attachment_entries = {
+ GSimpleActionGroup *simple;
+ static GActionEntry attachment_entries[] = {
{"new-mode", change_attach_mode},
- {"remove-attachment", remove_attachment},
+ {"remove", remove_attachment},
{"launch-app", attachment_menu_vfs_cb},
};
- GSimpleActionGroup *simple;
+ GMenu *menu;
+ GMenuItem *menu_item;
if (balsa_app.debug)
fprintf(stderr, "Trying to attach '%s'\n", filename);
@@ -1781,7 +1766,7 @@ add_attachment(BalsaSendmsg * bsmsg, const gchar *filename,
attachment_entries,
G_N_ELEMENTS(attachment_entries),
attach_data);
- gtk_widget_insert_action_group(GTK_WIDGET(bsmsg->window),
+ gtk_widget_insert_action_group(bsmsg->window,
"attachment",
G_ACTION_GROUP(simple));
g_object_unref(simple);
@@ -1792,7 +1777,7 @@ add_attachment(BalsaSendmsg * bsmsg, const gchar *filename,
if (can_inline) {
menu_item = g_menu_item_new(_(attach_modes[LIBBALSA_ATTACH_AS_INLINE]),
NULL);
- g_menu_item_set_action_and_target(menu_item, "new-mode", "i",
+ g_menu_item_set_action_and_target(menu_item, "attachment.new-mode", "i",
LIBBALSA_ATTACH_AS_INLINE);
g_menu_append_item(menu, menu_item);
}
@@ -1801,7 +1786,7 @@ add_attachment(BalsaSendmsg * bsmsg, const gchar *filename,
if (can_inline || !is_a_temp_file) {
menu_item = g_menu_item_new(_(attach_modes[LIBBALSA_ATTACH_AS_ATTACHMENT]),
NULL);
- g_menu_item_set_action_and_target(menu_item, "new-mode", "i",
+ g_menu_item_set_action_and_target(menu_item, "attachment.new-mode", "i",
LIBBALSA_ATTACH_AS_ATTACHMENT);
g_menu_append_item(menu, menu_item);
}
@@ -1810,13 +1795,13 @@ add_attachment(BalsaSendmsg * bsmsg, const gchar *filename,
if (!is_a_temp_file) {
menu_item = g_menu_item_new(_(attach_modes[LIBBALSA_ATTACH_AS_EXTBODY]),
NULL);
- g_menu_item_set_action_and_target(menu_item, "new-mode", "i",
+ g_menu_item_set_action_and_target(menu_item, "attachment.new-mode", "i",
LIBBALSA_ATTACH_AS_EXTBODY);
g_menu_append_item(menu, menu_item);
}
/* an attachment can be removed */
- g_menu_append(menu, _("Remove"), "remove-attachment");
+ g_menu_append(menu, _("Remove"), "attachment.remove");
/* add the usual vfs menu so the user can inspect what (s)he actually
attached... (only for non-message attachments) */
@@ -1825,7 +1810,8 @@ add_attachment(BalsaSendmsg * bsmsg, const gchar *filename,
"attachment.launch-app");
}
- attach_data->popup_menu = gtk_popover_new_from_model(G_MENU_MODEL(menu));
+ attach_data->popup_menu =
+ gtk_popover_new_from_model(bsmsg->window, G_MENU_MODEL(menu));
g_object_unref(menu);
gtk_widget_show_all(attach_data->popup_menu);
@@ -1860,7 +1846,13 @@ add_urlref_attachment(BalsaSendmsg * bsmsg, gchar *url)
GtkTreeIter iter;
BalsaAttachInfo *attach_data;
GdkPixbuf * pixbuf;
- GtkWidget *menu_item;
+ GSimpleActionGroup *simple;
+ static GActionEntry attachment_entries[] = {
+ {"remove", remove_attachment},
+ {"open", on_open_url_cb},
+ };
+ GMenu *menu;
+ GMenu *open_menu;
if (balsa_app.debug)
fprintf(stderr, "Trying to attach '%s'\n", url);
@@ -1885,26 +1877,30 @@ add_urlref_attachment(BalsaSendmsg * bsmsg, gchar *url)
attach_data->mode = LIBBALSA_ATTACH_AS_EXTBODY;
/* build the attachment's popup menu - may only be removed */
- attach_data->popup_menu = gtk_menu_new();
- menu_item =
- gtk_menu_item_new_with_label(_("Remove"));
- g_signal_connect(menu_item, "activate",
- G_CALLBACK(remove_attachment),
- (gpointer)attach_data);
- gtk_menu_shell_append(GTK_MENU_SHELL(attach_data->popup_menu),
- menu_item);
+ simple = g_simple_action_group_new();
+ g_action_map_add_action_entries(G_ACTION_MAP(simple),
+ attachment_entries,
+ G_N_ELEMENTS(attachment_entries),
+ attach_data);
+ gtk_widget_insert_action_group(bsmsg->window,
+ "urlref-attachment",
+ G_ACTION_GROUP(simple));
+ g_object_unref(simple);
+
+ menu = g_menu_new();
+ g_menu_append(menu, _("Remove"), "urlref-attachment.remove");
/* add a separator and the usual vfs menu so the user can inspect what
(s)he actually attached... (only for non-message attachments) */
- gtk_menu_shell_append(GTK_MENU_SHELL(attach_data->popup_menu),
- gtk_separator_menu_item_new());
- menu_item =
- gtk_menu_item_new_with_label(_("Open…"));
- g_signal_connect(menu_item, "activate",
- G_CALLBACK(on_open_url_cb),
- (gpointer)attach_data);
- gtk_menu_shell_append(GTK_MENU_SHELL(attach_data->popup_menu),
- menu_item);
+ open_menu = g_menu_new();
+ g_menu_append(open_menu, _("Open…"), "urlref-attachment.open");
+
+ g_menu_append_section(menu, NULL, G_MENU_MODEL(open_menu));
+ g_object_unref(open_menu);
+
+ attach_data->popup_menu =
+ gtk_popover_new_from_model(bsmsg->window, G_MENU_MODEL(menu));
+ g_object_unref(menu);
gtk_widget_show_all(attach_data->popup_menu);
/* append to the list store */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]