[balsa/wip/gtk4: 76/351] Yet more drag-and-drop changes
- From: Peter Bloomfield <peterb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [balsa/wip/gtk4: 76/351] Yet more drag-and-drop changes
- Date: Wed, 23 May 2018 21:23:20 +0000 (UTC)
commit fc8f7acc458746b990833e85c93f2628f17ffb93
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date: Fri Dec 1 22:30:46 2017 -0500
Yet more drag-and-drop changes
libbalsa/address.c | 34 ++++++++++++++++++------------
libbalsa/address.h | 2 +-
src/ab-main.c | 10 ++++----
src/balsa-index.c | 12 +++++-----
src/balsa-mblist.c | 12 +++++-----
src/main-window.c | 12 +++++-----
src/sendmsg-window.c | 55 ++++++++++++++++++++-----------------------------
7 files changed, 67 insertions(+), 70 deletions(-)
---
diff --git a/libbalsa/address.c b/libbalsa/address.c
index 5ef0810..582464a 100644
--- a/libbalsa/address.c
+++ b/libbalsa/address.c
@@ -861,9 +861,9 @@ add_row(GtkWidget*button, gpointer data)
gtk_tree_path_free(path);
}
-GtkTargetEntry libbalsa_address_target_list[] = {
- {"text/plain", 0 },
- {"x-application/x-addr", GTK_TARGET_SAME_APP}
+const gchar *libbalsa_address_target_list[] = {
+ "text/plain",
+ "x-application/x-addr"
};
static void
@@ -920,18 +920,24 @@ addrlist_drag_drop_cb(GtkWidget *widget, GdkDragContext *context,
gint x, gint y, guint time, gpointer user_data)
{
gboolean is_valid_drop_site;
- GdkAtom target_type;
- GList *targets;
+ GdkContentFormats *formats;
/* Check to see if (x,y) is a valid drop site within widget */
is_valid_drop_site = TRUE;
/* If the source offers a target */
- targets = gdk_drag_context_list_targets(context);
- if (targets) {
+ formats = gdk_drag_context_get_formats(context);
+ if (formats != NULL) {
+ const gchar * const *mime_types;
+ gsize n_mime_types;
+ GdkAtom target_type;
+
+ mime_types = gdk_content_formats_get_mime_types(formats, &n_mime_types);
+ g_assert(n_mime_types > LIBBALSA_ADDRESS_TRG_ADDRESS);
+
/* Choose the best target type */
- target_type = GDK_POINTER_TO_ATOM
- (g_list_nth_data (targets, LIBBALSA_ADDRESS_TRG_ADDRESS));
+ target_type =
+ gdk_atom_intern_static_string(mime_types[LIBBALSA_ADDRESS_TRG_ADDRESS]);
/* Request the data from the source. */
printf("drag_drop requests target=%p\n", target_type);
@@ -981,7 +987,7 @@ libbalsa_address_get_edit_widget(const LibBalsaAddress *address,
if (cnt == EMAIL_ADDRESS) {
GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 1);
GtkWidget *but = gtk_button_new_with_mnemonic(_("A_dd"));
- GtkTargetList *list;
+ GdkContentFormats *formats;
entries[cnt] = lba_address_list_widget(changed_cb,
changed_data);
@@ -991,13 +997,13 @@ libbalsa_address_get_edit_widget(const LibBalsaAddress *address,
g_signal_connect(but, "clicked", G_CALLBACK(add_row),
entries[cnt]);
- list = gtk_target_list_new(libbalsa_address_target_list,
- G_N_ELEMENTS(libbalsa_address_target_list));
+ formats = gdk_content_formats_new(libbalsa_address_target_list,
+ G_N_ELEMENTS(libbalsa_address_target_list));
gtk_drag_dest_set(entries[cnt],
GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_HIGHLIGHT,
- list,
+ formats,
GDK_ACTION_COPY);
- gtk_target_list_unref(list);
+ gdk_content_formats_unref(formats);
g_signal_connect(G_OBJECT(entries[cnt]), "drag-data-received",
G_CALLBACK(addrlist_drag_received_cb), NULL);
diff --git a/libbalsa/address.h b/libbalsa/address.h
index 1a9597e..e88a462 100644
--- a/libbalsa/address.h
+++ b/libbalsa/address.h
@@ -122,7 +122,7 @@ enum {
LIBBALSA_ADDRESS_TRG_NONE
};
-extern GtkTargetEntry libbalsa_address_target_list[2];
+extern const gchar *libbalsa_address_target_list[2];
GtkWidget *libbalsa_address_get_edit_widget(const LibBalsaAddress *addr,
GtkWidget **entries,
diff --git a/src/ab-main.c b/src/ab-main.c
index 688c7bd..7f6a543 100644
--- a/src/ab-main.c
+++ b/src/ab-main.c
@@ -718,7 +718,7 @@ bab_window_list_new(void)
GtkCellRenderer *renderer;
GtkTreeViewColumn *column;
GtkTreeSelection *selection;
- GtkTargetList *list;
+ GdkContentFormats *formats;
store =
gtk_list_store_new(N_COLUMNS,
@@ -751,13 +751,13 @@ bab_window_list_new(void)
gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column);
- list = gtk_target_list_new(libbalsa_address_target_list,
- G_N_ELEMENTS(libbalsa_address_target_list));
+ formats = gdk_content_formats_new(libbalsa_address_target_list,
+ G_N_ELEMENTS(libbalsa_address_target_list));
gtk_drag_source_set(GTK_WIDGET(tree),
GDK_BUTTON1_MASK,
- list,
+ formats,
GDK_ACTION_COPY);
- gtk_target_list_unref(list);
+ gdk_content_formats_unref(formats);
g_signal_connect(G_OBJECT(tree), "drag-data-get",
G_CALLBACK(addrlist_drag_get_cb), NULL);
diff --git a/src/balsa-index.c b/src/balsa-index.c
index 7fce10d..05a5601 100644
--- a/src/balsa-index.c
+++ b/src/balsa-index.c
@@ -105,8 +105,8 @@ enum {
TARGET_MESSAGES
};
-static GtkTargetEntry index_drag_types[] = {
- {"x-application/x-message-list", GTK_TARGET_SAME_APP}
+static const gchar * index_drag_types[] = {
+ "x-application/x-message-list"
};
static void bndx_drag_cb(GtkWidget* widget,
@@ -297,7 +297,7 @@ bndx_instance_init(BalsaIndex * index)
GtkTreeSelection *selection = gtk_tree_view_get_selection(tree_view);
GtkCellRenderer *renderer;
GtkTreeViewColumn *column;
- GtkTargetList *list;
+ GdkContentFormats *formats;
#if defined(TREE_VIEW_FIXED_HEIGHT)
gtk_tree_view_set_fixed_height_mode(tree_view, TRUE);
@@ -447,13 +447,13 @@ bndx_instance_init(BalsaIndex * index)
NULL);
gtk_tree_view_set_enable_search(tree_view, FALSE);
- list = gtk_target_list_new(index_drag_types, G_N_ELEMENTS(index_drag_types));
+ formats = gdk_content_formats_new(index_drag_types, G_N_ELEMENTS(index_drag_types));
gtk_drag_source_set(GTK_WIDGET (index),
GDK_BUTTON1_MASK | GDK_SHIFT_MASK | GDK_CONTROL_MASK,
- list,
+ formats,
GDK_ACTION_DEFAULT | GDK_ACTION_COPY |
GDK_ACTION_MOVE);
- gtk_target_list_unref(list);
+ gdk_content_formats_unref(formats);
g_signal_connect(index, "drag-data-get",
G_CALLBACK(bndx_drag_cb), NULL);
diff --git a/src/balsa-mblist.c b/src/balsa-mblist.c
index 7219d99..97a6994 100644
--- a/src/balsa-mblist.c
+++ b/src/balsa-mblist.c
@@ -75,8 +75,8 @@ enum {
};
static gint balsa_mblist_signals[LAST_SIGNAL] = { 0 };
-static GtkTargetEntry bmbl_drop_types[] = {
- {"x-application/x-message-list", GTK_TARGET_SAME_APP}
+static const gchar * bmbl_drop_types[] = {
+ "x-application/x-message-list"
};
static GtkTreeViewClass *parent_class = NULL;
@@ -1169,20 +1169,20 @@ balsa_mblist_close_lru_peer_mbx(BalsaMBList * mblist,
void
balsa_mblist_default_signal_bindings(BalsaMBList * mblist)
{
- GtkTargetList *list;
+ GdkContentFormats *formats;
g_signal_connect(G_OBJECT(mblist), "button_press_event",
G_CALLBACK(bmbl_button_press_cb), NULL);
g_signal_connect_after(G_OBJECT(mblist), "size-allocate",
G_CALLBACK(bmbl_column_resize), NULL);
- list = gtk_target_list_new(bmbl_drop_types, G_N_ELEMENTS(bmbl_drop_types));
+ formats = gdk_content_formats_new(bmbl_drop_types, G_N_ELEMENTS(bmbl_drop_types));
gtk_tree_view_enable_model_drag_dest(GTK_TREE_VIEW(mblist),
- list,
+ formats,
GDK_ACTION_DEFAULT |
GDK_ACTION_COPY |
GDK_ACTION_MOVE);
- gtk_target_list_unref(list);
+ gdk_content_formats_unref(formats);
g_signal_connect(G_OBJECT(mblist), "drag-data-received",
G_CALLBACK(bmbl_drag_cb), NULL);
diff --git a/src/main-window.c b/src/main-window.c
index 22ae1b4..291d8cb 100644
--- a/src/main-window.c
+++ b/src/main-window.c
@@ -82,8 +82,8 @@ enum {
};
#define NUM_DROP_TYPES 1
-static GtkTargetEntry notebook_drop_types[NUM_DROP_TYPES] = {
- {"x-application/x-message-list", GTK_TARGET_SAME_APP}
+static const gchar * notebook_drop_types[NUM_DROP_TYPES] = {
+ "x-application/x-message-list"
};
/* Define thread-related globals, including dialogs */
@@ -2213,7 +2213,7 @@ balsa_window_new()
#endif
GtkAdjustment *hadj, *vadj;
GAction *action;
- GtkTargetList *list;
+ GdkContentFormats *formats;
/* Call to register custom balsa pixmaps with GNOME_STOCK_PIXMAPS
* - allows for grey out */
@@ -2273,11 +2273,11 @@ balsa_window_new()
g_signal_connect(G_OBJECT(window->notebook), "switch_page",
G_CALLBACK(bw_notebook_switch_page_cb), window);
- list = gtk_target_list_new(notebook_drop_types, NUM_DROP_TYPES);
+ formats = gdk_content_formats_new(notebook_drop_types, NUM_DROP_TYPES);
gtk_drag_dest_set (GTK_WIDGET (window->notebook), GTK_DEST_DEFAULT_ALL,
- list,
+ formats,
GDK_ACTION_DEFAULT | GDK_ACTION_COPY | GDK_ACTION_MOVE);
- gtk_target_list_unref(list);
+ gdk_content_formats_unref(formats);
g_signal_connect(G_OBJECT (window->notebook), "drag-data-received",
G_CALLBACK (bw_notebook_drag_received_cb), NULL);
diff --git a/src/sendmsg-window.c b/src/sendmsg-window.c
index 897a3ca..dec2ad3 100644
--- a/src/sendmsg-window.c
+++ b/src/sendmsg-window.c
@@ -151,16 +151,16 @@ enum {
TARGET_STRING
};
-static GtkTargetEntry drop_types[] = {
- { "x-application/x-message-list", GTK_TARGET_SAME_APP},
- { "text/uri-list", 0},
- { "STRING", 0},
- { "text/plain", 0}
+static const gchar * drop_types[] = {
+ "x-application/x-message-list",
+ "text/uri-list",
+ "STRING",
+ "text/plain"
};
-static GtkTargetEntry email_field_drop_types[] = {
- { "STRING", 0},
- { "text/plain", 0}
+static const gchar * email_field_drop_types[] = {
+ "STRING",
+ "text/plain"
};
static void lang_set_cb(GtkWidget *widget, BalsaSendmsg *bsmsg);
@@ -2378,7 +2378,7 @@ create_email_entry(BalsaSendmsg * bsmsg,
guint n_types)
{
GtkWidget *scroll;
- GtkTargetList *list;
+ GdkContentFormats *formats;
*view = libbalsa_address_view_new(types, n_types,
balsa_app.address_book_list,
@@ -2405,11 +2405,11 @@ create_email_entry(BalsaSendmsg * bsmsg,
g_signal_connect(*view, "open-address-book",
G_CALLBACK(address_book_cb), bsmsg);
- list = gtk_target_list_new(email_field_drop_types, G_N_ELEMENTS(email_field_drop_types));
+ formats = gdk_content_formats_new(email_field_drop_types, G_N_ELEMENTS(email_field_drop_types));
gtk_drag_dest_set(GTK_WIDGET(*view), GTK_DEST_DEFAULT_ALL,
- list,
+ formats,
GDK_ACTION_COPY | GDK_ACTION_MOVE);
- gtk_target_list_unref(list);
+ gdk_content_formats_unref(formats);
libbalsa_address_view_set_domain(*view, bsmsg->ident->domain);
g_signal_connect_swapped(gtk_tree_view_get_model(GTK_TREE_VIEW(*view)),
@@ -2628,7 +2628,7 @@ sw_attachment_list(BalsaSendmsg *bsmsg)
GtkTreeView *view;
GtkTreeViewColumn *column;
GtkWidget *frame;
- GtkTargetList *list;
+ GdkContentFormats *formats;
grid = gtk_grid_new();
gtk_grid_set_row_spacing(GTK_GRID(grid), 6);
@@ -2717,11 +2717,11 @@ sw_attachment_list(BalsaSendmsg *bsmsg)
g_signal_connect(G_OBJECT(bsmsg->window), "drag_data_received",
G_CALLBACK(attachments_add), bsmsg);
- list = gtk_target_list_new(drop_types, G_N_ELEMENTS(drop_types));
+ formats = gdk_content_formats_new(drop_types, G_N_ELEMENTS(drop_types));
gtk_drag_dest_set(GTK_WIDGET(bsmsg->window), GTK_DEST_DEFAULT_ALL,
- list,
+ formats,
GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK);
- gtk_target_list_unref(list);
+ gdk_content_formats_unref(formats);
frame = gtk_frame_new(NULL);
gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN);
@@ -2777,7 +2777,7 @@ drag_data_quote(GtkWidget * widget,
target = gtk_selection_data_get_target(selection_data);
- if (target == gdk_atom_intern_static_string(drop_types[TARGET_MESSAGES].target)) {
+ if (target == gdk_atom_intern_static_string(drop_types[TARGET_MESSAGES])) {
index =
*(BalsaIndex **) gtk_selection_data_get_data(selection_data);
mailbox = index->mailbox_node->mailbox;
@@ -2799,7 +2799,7 @@ drag_data_quote(GtkWidget * widget,
g_string_free(body, TRUE);
}
balsa_index_selected_msgnos_free(index, selected);
- } else if (target == gdk_atom_intern_static_string(drop_types[TARGET_URI_LIST].target)) {
+ } else if (target == gdk_atom_intern_static_string(drop_types[TARGET_URI_LIST])) {
GSList *uri_list =
uri2gslist((gchar *)
gtk_selection_data_get_data(selection_data));
@@ -2864,7 +2864,7 @@ create_text_area(BalsaSendmsg * bsmsg)
#endif /* HAVE_GSPELL_1_2 */
#endif /* HAVE_GSPELL */
GtkWidget *scroll;
- GtkTargetList *list;
+ GdkContentFormats *formats;
#if HAVE_GTKSOURCEVIEW
bsmsg->text = libbalsa_source_view_new(TRUE);
@@ -2929,12 +2929,12 @@ create_text_area(BalsaSendmsg * bsmsg)
g_signal_connect(G_OBJECT(bsmsg->text), "drag_data_received",
G_CALLBACK(drag_data_quote), bsmsg);
- list = gtk_target_list_new(drop_types, G_N_ELEMENTS(drop_types));
+ formats = gdk_content_formats_new(drop_types, G_N_ELEMENTS(drop_types));
/* GTK_DEST_DEFAULT_ALL in drag_set would trigger bug 150141 */
gtk_drag_dest_set(GTK_WIDGET(bsmsg->text), 0,
- list,
+ formats,
GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK);
- gtk_target_list_unref(list);
+ gdk_content_formats_unref(formats);
gtk_widget_show(scroll);
@@ -4077,16 +4077,7 @@ create_lang_menu(GtkWidget * parent, BalsaSendmsg * bsmsg)
preferred_lang = balsa_app.spell_check_lang ?
balsa_app.spell_check_lang : setlocale(LC_CTYPE, NULL);
-#if HAVE_GTKSPELL_3_0_3
- lang_list = gtk_spell_checker_get_language_list();
-#elif HAVE_GSPELL
- lang_list = gspell_language_get_available();
-#else /* HAVE_GTKSPELL_3_0_3 */
- broker = enchant_broker_init();
- lang_list = NULL;
- enchant_broker_list_dicts(broker, sw_broker_cb, &lang_list);
-#endif /* HAVE_GTKSPELL_3_0_3 */
-
+ langs = gtk_menu_new();
for (i = 0; i < G_N_ELEMENTS(locales); i++) {
gconstpointer found;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]