[balsa/gtk3] Test for GDK_MULTIHEAD_SAFE, GDK_MULTIDEVICE_SAFE



commit f7eeb1bd2c2efbb97b6ddf0b2dad96e65c029650
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date:   Mon Jan 24 22:07:32 2011 -0500

    Test for GDK_MULTIHEAD_SAFE, GDK_MULTIDEVICE_SAFE
    
    	* configure.in: new deprecation tests GDK_MULTIHEAD_SAFE,
    	GDK_MULTIDEVICE_SAFE.

 ChangeLog                        |   34 +++++++++++++++++++++++++++++++
 configure.in                     |    1 +
 libbalsa/files.c                 |   19 ++++++++++++-----
 libbalsa/files.h                 |    7 ++++-
 libbalsa/filter.c                |    9 +++++--
 libbalsa/identity.c              |   10 +++++---
 libbalsa/smtp-server.c           |    5 ++-
 libbalsa/source-viewer.c         |    6 ++++-
 src/address-book-config.c        |    5 ++-
 src/balsa-app.c                  |    4 +-
 src/balsa-icons.c                |   16 +++++++++-----
 src/balsa-index.c                |    7 +++++-
 src/balsa-message.c              |    6 +++-
 src/balsa-mime-widget-message.c  |    5 ++-
 src/balsa-mime-widget-text.c     |   41 ++++++++++++++++++++++++++-----------
 src/balsa-print-object-default.c |    3 +-
 src/balsa-print-object-text.c    |   10 +++++---
 src/filter-edit-callbacks.c      |   16 ++++++++------
 src/filter-run-callbacks.c       |    9 ++++---
 src/folder-conf.c                |    5 ++-
 src/main-window.c                |   15 ++++++++-----
 src/pref-manager.c               |    5 ++-
 src/sendmsg-window.c             |    9 ++++---
 src/toolbar-prefs.c              |    5 ++-
 24 files changed, 175 insertions(+), 77 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index f818298..e305339 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,37 @@
+2011-01-24  Peter Bloomfield
+
+	* configure.in: new deprecation tests GDK_MULTIHEAD_SAFE,
+	GDK_MULTIDEVICE_SAFE.
+	* libbalsa/files.c (libbalsa_icon_finder): add widget argument
+	so we can find settings.
+	* libbalsa/files.h: ditto.
+	* libbalsa/filter.c (libbalsa_filter_mailbox_messages):
+	deprecation cleanup.
+	* libbalsa/identity.c (help_ident_cb), (md_response_cb): ditto.
+	* libbalsa/smtp-server.c (smtp_server_response): ditto.
+	* libbalsa/source-viewer.c (copy_cb): ditto.
+	* src/address-book-config.c (help_button_cb): ditto.
+	* src/balsa-app.c (balsa_app_init): ditto.
+	* src/balsa-icons.c (load_balsa_pixmap): ditto.
+	* src/balsa-index.c (balsa_index_set_column_widths): ditto.
+	* src/balsa-message.c (display_part): ditto.
+	* src/balsa-mime-widget-message.c (extbody_call_url): ditto.
+	* src/balsa-mime-widget-text.c (fix_text_widget), (url_copy_cb),
+	(check_over_url), (handle_url), (fill_text_buf_cited): ditto.
+	* src/balsa-print-object-default.c (balsa_print_object_default):
+	ditto.
+	* src/balsa-print-object-text.c (balsa_print_object_text_vcard),
+	(balsa_print_object_text_calendar): ditto.
+	* src/filter-edit-callbacks.c (condition_dialog_response),
+	(fe_dialog_response): ditto.
+	* src/filter-run-callbacks.c (fr_dialog_response): ditto.
+	* src/folder-conf.c (folder_conf_response): ditto.
+	* src/main-window.c: ditto.
+	* src/pref-manager.c (balsa_help_pbox_display): ditto.
+	* src/sendmsg-window.c (on_open_url_cb), (add_attachment):
+	ditto.
+	* src/toolbar-prefs.c (tp_dialog_response_cb): ditto.
+
 2011-01-23  Peter Bloomfield
 
 	* src/balsa-mime-widget-text.c (text_view_url_popup):
diff --git a/configure.in b/configure.in
index 51c3445..7ce9bae 100644
--- a/configure.in
+++ b/configure.in
@@ -887,6 +887,7 @@ if test -d "${srcdir}/.git" ; then
 -DGDK_DISABLE_DEPRECATED \
 -DGDK_PIXBUF_DISABLE_DEPRECATED \
 -DGDK_MULTIDEVICE_SAFE \
+-DGDK_MULTIHEAD_SAFE \
 -DGMIME_DISABLE_DEPRECATED \
 -DGNOME_DISABLE_DEPRECATED \
 -DGNOME_DISABLE_DEPRECATED_SOURCE \
diff --git a/libbalsa/files.c b/libbalsa/files.c
index 19d8f4f..8869449 100644
--- a/libbalsa/files.c
+++ b/libbalsa/files.c
@@ -120,7 +120,7 @@ libbalsa_default_attachment_pixbuf(gint size)
 }
 
 
-/* balsa_icon_finder:
+/* libbalsa_icon_finder:
  *   locate a suitable icon (pixmap graphic) based on 'mime-type' and/or
  *   'filename', either of which can be NULL.  If both arguments are
  *   non-NULL, 'mime-type' has priority.  If both are NULL, the default
@@ -128,8 +128,11 @@ libbalsa_default_attachment_pixbuf(gint size)
  *   return the complete path to the icon file.
  */
 GdkPixbuf *
-libbalsa_icon_finder(const char *mime_type, const LibbalsaVfs * for_file, 
-                     gchar** used_type, GtkIconSize size)
+libbalsa_icon_finder(GtkWidget         * widget,
+                     const char        * mime_type,
+                     const LibbalsaVfs * for_file,
+                     gchar            ** used_type,
+                     GtkIconSize         size)
 {
     const gchar *content_type;
     gchar *icon = NULL;
@@ -137,10 +140,14 @@ libbalsa_icon_finder(const char *mime_type, const LibbalsaVfs * for_file,
     gint width, height;
     const gchar * filename = NULL;
     GtkIconTheme *icon_theme;
+    GtkSettings *settings;
+
+    settings = widget ? gtk_widget_get_settings(widget) : NULL;
+    if (!settings
+        || !gtk_icon_size_lookup_for_settings(settings, size,
+                                              &width, &height))
+        width = height = 16;
 
-    if (!gtk_icon_size_lookup(size, &width, &height))
-	width = height = 16;
-    
     if (mime_type)
         content_type = mime_type;
     else if (for_file) {
diff --git a/libbalsa/files.h b/libbalsa/files.h
index 89c1a98..c8fce72 100644
--- a/libbalsa/files.h
+++ b/libbalsa/files.h
@@ -44,7 +44,10 @@ gchar *balsa_file_finder(const gchar * filename, const gchar * splice,
 #define balsa_pixmap_finder_no_warn(filename) \
     (balsa_file_finder((filename), "pixmaps", NULL, FALSE))
 
-GdkPixbuf *libbalsa_icon_finder(const char *mime_type, const LibbalsaVfs * for_file,
-				gchar** used_type, GtkIconSize size);
+GdkPixbuf *libbalsa_icon_finder(GtkWidget         * widget,
+                                const char        * mime_type,
+                                const LibbalsaVfs * for_file,
+                                gchar            ** used_type,
+                                GtkIconSize         size);
 
 #endif
diff --git a/libbalsa/filter.c b/libbalsa/filter.c
index 9d751d7..387e901 100644
--- a/libbalsa/filter.c
+++ b/libbalsa/filter.c
@@ -258,9 +258,12 @@ libbalsa_filter_mailbox_messages(LibBalsaFilter * filt,
 
 #if HAVE_CANBERRA
     if (filt->sound) {
-        gint rc = ca_context_play(ca_gtk_context_get(), 0,
-                                  CA_PROP_MEDIA_FILENAME, filt->sound,
-                                  NULL);
+        GdkScreen *screen;
+        gint rc;
+
+        screen = gdk_screen_get_default();
+        rc = ca_context_play(ca_gtk_context_get_for_screen(screen), 0,
+                             CA_PROP_MEDIA_FILENAME, filt->sound, NULL);
         g_message("(%s) play %s, %s", __func__, filt->sound, ca_strerror(rc));
     }
 #endif                          /* HAVE_CANBERRA */
diff --git a/libbalsa/identity.c b/libbalsa/identity.c
index 7b83cde..d550d08 100644
--- a/libbalsa/identity.c
+++ b/libbalsa/identity.c
@@ -585,7 +585,7 @@ static void new_ident_cb(GtkTreeView * tree, GObject * dialog);
 static void delete_ident_cb(GtkTreeView * tree, GtkWidget * dialog);
 static void delete_ident_response(GtkWidget * confirm, gint response,
                                   IdentityDeleteInfo * di);
-static void help_ident_cb(void);
+static void help_ident_cb(GtkWidget * widget);
 
 static void set_default_ident_cb(GtkTreeView * tree, GtkTreePath * path,
                                  GtkTreeViewColumn * column,
@@ -1658,11 +1658,13 @@ delete_ident_response(GtkWidget * confirm, gint response,
  * Show the help file.
  */
 static void
-help_ident_cb(void)
+help_ident_cb(GtkWidget * widget)
 {
+    GdkScreen *screen;
     GError *err = NULL;
 
-    gtk_show_uri(gdk_screen_get_default(), "ghelp:balsa?identities",
+    screen = gtk_widget_get_screen(widget);
+    gtk_show_uri(screen, "ghelp:balsa?identities",
                  gtk_get_current_event_time(), &err);
 
     if (err) {
@@ -1782,7 +1784,7 @@ md_response_cb(GtkWidget * dialog, gint response, GtkTreeView * tree)
         delete_ident_cb(tree, dialog);
         return;
     case IDENTITY_RESPONSE_HELP:
-        help_ident_cb();
+        help_ident_cb(dialog);
         return;
     default:
         break;
diff --git a/libbalsa/smtp-server.c b/libbalsa/smtp-server.c
index 06740f5..7951857 100644
--- a/libbalsa/smtp-server.c
+++ b/libbalsa/smtp-server.c
@@ -414,13 +414,14 @@ static void
 smtp_server_response(GtkDialog * dialog, gint response,
                      struct smtp_server_dialog_info *sdi)
 {
+    GdkScreen *screen;
     LibBalsaServer *server = LIBBALSA_SERVER(sdi->smtp_server);
     GError *error = NULL;
 
     switch (response) {
     case GTK_RESPONSE_HELP:
-        gtk_show_uri(gdk_screen_get_default(),
-                     "ghelp:balsa?smtp-server-config",
+        screen = gtk_widget_get_screen(GTK_WIDGET(dialog));
+        gtk_show_uri(screen, "ghelp:balsa?smtp-server-config",
                      gtk_get_current_event_time(), &error);
         if (error) {
             libbalsa_information(LIBBALSA_INFORMATION_WARNING,
diff --git a/libbalsa/source-viewer.c b/libbalsa/source-viewer.c
index ac9fd24..228cac4 100644
--- a/libbalsa/source-viewer.c
+++ b/libbalsa/source-viewer.c
@@ -96,7 +96,11 @@ copy_cb(GtkAction * action, gpointer data)
 {
     GtkTextView *text = g_object_get_data(G_OBJECT(data), "text");
     GtkTextBuffer *buffer = gtk_text_view_get_buffer(text);
-    GtkClipboard *clipboard = gtk_clipboard_get(GDK_NONE);
+    GdkDisplay *display;
+    GtkClipboard *clipboard;
+
+    display = gtk_widget_get_display(GTK_WIDGET(text));
+    clipboard = gtk_clipboard_get_for_display(display, GDK_NONE);
 
     gtk_text_buffer_copy_clipboard(buffer, clipboard);
 }
diff --git a/src/address-book-config.c b/src/address-book-config.c
index 29166c3..c55be05 100644
--- a/src/address-book-config.c
+++ b/src/address-book-config.c
@@ -530,10 +530,11 @@ create_rubrica_dialog(AddressBookConfig * abc)
 static void
 help_button_cb(AddressBookConfig * abc)
 {
+    GdkScreen *screen;
     GError *err = NULL;
 
-    gtk_show_uri(gdk_screen_get_default(),
-                 "ghelp:balsa?preferences-address-books",
+    screen = gtk_widget_get_screen(abc->window);
+    gtk_show_uri(screen, "ghelp:balsa?preferences-address-books",
                  gtk_get_current_event_time(), &err);
 
     if (err) {
diff --git a/src/balsa-app.c b/src/balsa-app.c
index 0ae9396..2ae9944 100644
--- a/src/balsa-app.c
+++ b/src/balsa-app.c
@@ -439,8 +439,8 @@ balsa_app_init(void)
     balsa_app.folder_mru=NULL;
     balsa_app.fcc_mru=NULL;
 
-    g_object_set (gtk_settings_get_default (),
-		  "gtk-fallback-icon-theme", "gnome", NULL);
+    g_object_set(gtk_settings_get_for_screen(gdk_screen_get_default()),
+                 "gtk-fallback-icon-theme", "gnome", NULL);
 }
 
 void
diff --git a/src/balsa-icons.c b/src/balsa-icons.c
index 3249d07..659aae4 100644
--- a/src/balsa-icons.c
+++ b/src/balsa-icons.c
@@ -77,6 +77,7 @@ load_balsa_pixmap(GtkIconTheme *icon_theme, GtkIconFactory *factory,
         { "folder-drag-accept", GTK_STOCK_OPEN},
         { "folder", GTK_STOCK_DIRECTORY},
 	{ NULL, NULL } };
+    GtkSettings *settings;
 
     BICONS_LOG("loading icon %s (stock id %s)", bpixmap->name,
 	       bpixmap->stock_id);
@@ -98,16 +99,18 @@ load_balsa_pixmap(GtkIconTheme *icon_theme, GtkIconFactory *factory,
     } else
 	use_id = bpixmap->stock_id;
 
-    g_hash_table_insert(balsa_icon_table, g_strdup(bpixmap->name), 
+    g_hash_table_insert(balsa_icon_table, g_strdup(bpixmap->name),
                         g_strdup(use_id));
 
-    if (!gtk_icon_size_lookup(bpixmap->sizes[0], &width, &height)) {
+    settings = gtk_settings_get_for_screen(gdk_screen_get_default());
+    if (!gtk_icon_size_lookup_for_settings(settings, bpixmap->sizes[0],
+                                           &width, &height)) {
 	BICONS_ERR("failed: could not look up default icon size %d",
 		   bpixmap->sizes[0]);
 	return;
     }
 
-    pixbuf = 
+    pixbuf =
 	gtk_icon_theme_load_icon(icon_theme, use_id, width,
 				 GTK_ICON_LOOKUP_USE_BUILTIN, &error);
     if (!pixbuf) {
@@ -119,11 +122,12 @@ load_balsa_pixmap(GtkIconTheme *icon_theme, GtkIconFactory *factory,
     icon_set = gtk_icon_set_new_from_pixbuf(pixbuf);
     g_object_unref(pixbuf);
 
-    for (n = 1; 
+    for (n = 1;
 	 n < BALSA_PIXMAP_SIZES && bpixmap->sizes[n] > GTK_ICON_SIZE_INVALID;
 	 n++) {
-	if (gtk_icon_size_lookup(bpixmap->sizes[n], &width, &height)) {
-	    pixbuf = 
+	if (gtk_icon_size_lookup_for_settings(settings, bpixmap->sizes[n],
+                                              &width, &height)) {
+	    pixbuf =
 		gtk_icon_theme_load_icon(icon_theme, use_id, width,
 					 GTK_ICON_LOOKUP_USE_BUILTIN, &error);
 	    if (!pixbuf) {
diff --git a/src/balsa-index.c b/src/balsa-index.c
index 196d368..8a713e5 100644
--- a/src/balsa-index.c
+++ b/src/balsa-index.c
@@ -1383,6 +1383,8 @@ balsa_index_set_column_widths(BalsaIndex * index)
 {
     GtkTreeView *tree_view = GTK_TREE_VIEW(index);
     gint icon_w;
+    GdkScreen *screen;
+    GtkSettings *settings;
 
 #if defined(TREE_VIEW_FIXED_HEIGHT)
     /* so that fixed width works properly */
@@ -1392,7 +1394,10 @@ balsa_index_set_column_widths(BalsaIndex * index)
 #endif
     /* I have no idea why we must add 5 pixels to the icon width - otherwise,
        the icon will be clipped... */
-    gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, &icon_w, NULL);
+    screen = gtk_widget_get_screen(GTK_WIDGET(index));
+    settings = gtk_settings_get_for_screen(screen);
+    gtk_icon_size_lookup_for_settings(settings, GTK_ICON_SIZE_MENU,
+                                      &icon_w, NULL);
     gtk_tree_view_column_set_fixed_width(gtk_tree_view_get_column
                                          (tree_view, LB_MBOX_MARKED_COL),
                                          icon_w + 5);
diff --git a/src/balsa-message.c b/src/balsa-message.c
index de792f9..e63e1d9 100644
--- a/src/balsa-message.c
+++ b/src/balsa-message.c
@@ -1448,7 +1448,8 @@ display_part(BalsaMessage * bm, LibBalsaMessageBody * body,
 #endif
         if (!content_icon)
 	    content_icon =
-		libbalsa_icon_finder(content_type, NULL, NULL,
+		libbalsa_icon_finder(GTK_WIDGET(bm),
+                                     content_type, NULL, NULL,
 				     GTK_ICON_SIZE_LARGE_TOOLBAR);
         gtk_tree_store_set (GTK_TREE_STORE(model), iter,
                             PART_INFO_COLUMN, info,
@@ -1460,7 +1461,8 @@ display_part(BalsaMessage * bm, LibBalsaMessageBody * body,
         g_free(icon_title);
     } else {
 	content_icon =
-	    libbalsa_icon_finder(content_type, NULL, NULL,
+	    libbalsa_icon_finder(GTK_WIDGET(bm),
+                                 content_type, NULL, NULL,
 				 GTK_ICON_SIZE_LARGE_TOOLBAR);
         gtk_tree_store_set (GTK_TREE_STORE(model), iter,
                             PART_INFO_COLUMN, NULL,
diff --git a/src/balsa-mime-widget-message.c b/src/balsa-mime-widget-message.c
index 8086515..dde0d6b 100644
--- a/src/balsa-mime-widget-message.c
+++ b/src/balsa-mime-widget-message.c
@@ -287,11 +287,12 @@ static void
 extbody_call_url(GtkWidget * button, gpointer data)
 {
     gchar *url = g_object_get_data(G_OBJECT(button), "call_url");
+    GdkScreen *screen;
     GError *err = NULL;
 
     g_return_if_fail(url);
-    gtk_show_uri(gdk_screen_get_default(), url,
-                 gtk_get_current_event_time(), &err);
+    screen = gtk_widget_get_screen(button);
+    gtk_show_uri(screen, url, gtk_get_current_event_time(), &err);
     if (err) {
 	balsa_information(LIBBALSA_INFORMATION_WARNING,
 			  _("Error showing %s: %s\n"), url, err->message);
diff --git a/src/balsa-mime-widget-text.c b/src/balsa-mime-widget-text.c
index cba6acf..ea2e3ba 100644
--- a/src/balsa-mime-widget-text.c
+++ b/src/balsa-mime-widget-text.c
@@ -408,15 +408,20 @@ fix_text_widget(GtkWidget *widget, gpointer data)
     GdkWindow *w =
         gtk_text_view_get_window(GTK_TEXT_VIEW(widget),
                                  GTK_TEXT_WINDOW_TEXT);
-    
+
     if (data)
         gdk_window_set_events(w,
                               gdk_window_get_events(w) |
                               GDK_POINTER_MOTION_MASK |
                               GDK_LEAVE_NOTIFY_MASK);
     if (!url_cursor_normal || !url_cursor_over_url) {
-        url_cursor_normal = gdk_cursor_new(GDK_XTERM);
-        url_cursor_over_url = gdk_cursor_new(GDK_HAND2);
+        GdkDisplay *display;
+
+        display = gdk_window_get_display(w);
+        url_cursor_normal =
+            gdk_cursor_new_for_display(display, GDK_XTERM);
+        url_cursor_over_url =
+            gdk_cursor_new_for_display(display, GDK_HAND2);
     }
     gdk_window_set_cursor(w, url_cursor_normal);
 
@@ -432,7 +437,7 @@ gtk_widget_destroy_insensitive(GtkWidget * widget)
 }
 
 static void
-structured_phrases_toggle(GtkCheckMenuItem *checkmenuitem, 
+structured_phrases_toggle(GtkCheckMenuItem *checkmenuitem,
 			  GtkTextView *textview)
 {
     GtkTextTagTable * table;
@@ -469,8 +474,13 @@ structured_phrases_toggle(GtkCheckMenuItem *checkmenuitem,
 static void
 url_copy_cb(GtkWidget * menu_item, message_url_t * uri)
 {
-    gtk_clipboard_set_text(gtk_clipboard_get(GDK_SELECTION_PRIMARY),
-			   uri->url, -1);
+    GdkDisplay *display;
+    GtkClipboard *clipboard;
+
+    display = gtk_widget_get_display(menu_item);
+    clipboard =
+        gtk_clipboard_get_for_display(display, GDK_SELECTION_PRIMARY);
+    gtk_clipboard_set_text(clipboard, uri->url, -1);
 }
 
 static void
@@ -620,8 +630,13 @@ check_over_url(GtkWidget * widget, GdkEventMotion * event,
 
     if (url) {
         if (!url_cursor_normal || !url_cursor_over_url) {
-            url_cursor_normal = gdk_cursor_new(GDK_LEFT_PTR);
-            url_cursor_over_url = gdk_cursor_new(GDK_HAND2);
+            GdkDisplay *display;
+
+            display = gdk_window_get_display(window);
+            url_cursor_normal =
+                gdk_cursor_new_for_display(display, GDK_LEFT_PTR);
+            url_cursor_over_url =
+                gdk_cursor_new_for_display(display, GDK_HAND2);
         }
         if (!was_over_url) {
             gdk_window_set_cursor(window, url_cursor_over_url);
@@ -788,6 +803,7 @@ handle_url(const gchar * url)
         GtkStatusbar *statusbar;
         guint context_id;
         gchar *notice = g_strdup_printf(_("Calling URL %s..."), url);
+        GdkScreen *screen;
         GError *err = NULL;
 
         statusbar = GTK_STATUSBAR(balsa_app.main_window->statusbar);
@@ -797,8 +813,8 @@ handle_url(const gchar * url)
         gtk_statusbar_push(statusbar, context_id, notice);
         SCHEDULE_BAR_REFRESH();
         g_free(notice);
-        gtk_show_uri(gdk_screen_get_default(), url,
-                     gtk_get_current_event_time(), &err);
+        screen = gtk_widget_get_screen(GTK_WIDGET(balsa_app.main_window));
+        gtk_show_uri(screen, url, gtk_get_current_event_time(), &err);
         if (err) {
             balsa_information(LIBBALSA_INFORMATION_WARNING,
                               _("Error showing %s: %s\n"),
@@ -1231,6 +1247,7 @@ fill_text_buf_cited(GtkWidget *widget, const gchar *text_body,
     LibBalsaUrlInsertInfo url_info;
     GList * cite_bars_list;
     guint cite_level;
+    GdkScreen *screen;
     guint cite_start;
     gint margin;
     gdouble char_width;
@@ -1268,8 +1285,8 @@ fill_text_buf_cited(GtkWidget *widget, const gchar *text_body,
         char_width = char_width / PANGO_SCALE;
 
     /* convert char_width from points to pixels */
-    margin = (char_width / 72.0) *
-        gdk_screen_get_resolution(gdk_screen_get_default());
+    screen = gtk_widget_get_screen(widget);
+    margin = (char_width / 72.0) * gdk_screen_get_resolution(screen);
 
     color.red   = G_MAXUINT16 * balsa_app.url_color.red;
     color.green = G_MAXUINT16 * balsa_app.url_color.green;
diff --git a/src/balsa-print-object-default.c b/src/balsa-print-object-default.c
index 77483bd..231c61e 100644
--- a/src/balsa-print-object-default.c
+++ b/src/balsa-print-object-default.c
@@ -135,7 +135,8 @@ balsa_print_object_default(GList * list,
     /* get a pixbuf according to the mime type */
     conttype = libbalsa_message_body_get_mime_type(body);
     pod->pixbuf =
-	libbalsa_icon_finder(conttype, NULL, NULL, GTK_ICON_SIZE_DND);
+	libbalsa_icon_finder(NULL, conttype, NULL, NULL,
+                             GTK_ICON_SIZE_DND);
     pod->c_image_width = gdk_pixbuf_get_width(pod->pixbuf);
     pod->c_image_height = gdk_pixbuf_get_height(pod->pixbuf);
 
diff --git a/src/balsa-print-object-text.c b/src/balsa-print-object-text.c
index 4f6f942..7e1bc90 100644
--- a/src/balsa-print-object-text.c
+++ b/src/balsa-print-object-text.c
@@ -487,8 +487,9 @@ balsa_print_object_text_vcard(GList * list,
 				 GTK_ICON_LOOKUP_USE_BUILTIN, NULL);
     if (!pod->pixbuf) {
 	gchar *conttype = libbalsa_message_body_get_mime_type(body);
-	
-	pod->pixbuf = libbalsa_icon_finder(conttype, NULL, NULL, GTK_ICON_SIZE_DND);
+
+	pod->pixbuf = libbalsa_icon_finder(NULL, conttype, NULL, NULL,
+                                           GTK_ICON_SIZE_DND);
     }
     pod->c_image_width = gdk_pixbuf_get_width(pod->pixbuf);
     pod->c_image_height = gdk_pixbuf_get_height(pod->pixbuf);
@@ -633,8 +634,9 @@ balsa_print_object_text_calendar(GList * list,
 				 GTK_ICON_LOOKUP_USE_BUILTIN, NULL);
     if (!pod->pixbuf) {
 	gchar *conttype = libbalsa_message_body_get_mime_type(body);
-	
-	pod->pixbuf = libbalsa_icon_finder(conttype, NULL, NULL, GTK_ICON_SIZE_DND);
+
+	pod->pixbuf = libbalsa_icon_finder(NULL, conttype, NULL, NULL,
+                                           GTK_ICON_SIZE_DND);
     }
     pod->c_image_width = gdk_pixbuf_get_width(pod->pixbuf);
     pod->c_image_height = gdk_pixbuf_get_height(pod->pixbuf);
diff --git a/src/filter-edit-callbacks.c b/src/filter-edit-callbacks.c
index f2f86a3..3c834ed 100644
--- a/src/filter-edit-callbacks.c
+++ b/src/filter-edit-callbacks.c
@@ -834,6 +834,7 @@ condition_dialog_response(GtkWidget * dialog, gint response,
 {
     LibBalsaCondition *new_cnd;
     GError *err = NULL;
+    GdkScreen *screen;
 
     switch (response) {
     case GTK_RESPONSE_OK:       /* OK button */
@@ -889,8 +890,8 @@ condition_dialog_response(GtkWidget * dialog, gint response,
         gtk_widget_hide(dialog);
         break;
     case GTK_RESPONSE_HELP:     /* Help button */
-        gtk_show_uri(gdk_screen_get_default(),
-                     "ghelp:balsa?win-condition",
+        screen = gtk_widget_get_screen(dialog);
+        gtk_show_uri(screen, "ghelp:balsa?win-condition",
                      gtk_get_current_event_time(), &err);
 	if (err) {
 	    balsa_information_parented(GTK_WINDOW(dialog),
@@ -1448,7 +1449,7 @@ void fe_destroy_window_cb(GtkWidget * widget,gpointer throwaway)
 /*
  * fe_dialog_response()
  *
- * Handles the clicking of the main buttons at the 
+ * Handles the clicking of the main buttons at the
  * bottom of the dialog.  wooo.
  */
 void
@@ -1459,13 +1460,14 @@ fe_dialog_response(GtkWidget * dialog, gint response, gpointer data)
     GtkTreeIter iter;
     gboolean valid;
     GError *err = NULL;
-    
+    GdkScreen *screen;
+
     switch (response) {
     case GTK_RESPONSE_OK:       /* OK button */
         /* We clear the old filters */
         libbalsa_filter_clear_filters(balsa_app.filters,TRUE);
         balsa_app.filters=NULL;
-        
+
         /* We put the modified filters */
     for (valid = gtk_tree_model_get_iter_first(model, &iter); valid;
          valid = gtk_tree_model_iter_next(model, &iter)) {
@@ -1497,8 +1499,8 @@ fe_dialog_response(GtkWidget * dialog, gint response, gpointer data)
         break;
 
     case GTK_RESPONSE_HELP:     /* Help button */
-        gtk_show_uri(gdk_screen_get_default(),
-                     "ghelp:balsa?win-filters",
+        screen = gtk_widget_get_screen(dialog);
+        gtk_show_uri(screen, "ghelp:balsa?win-filters",
                      gtk_get_current_event_time(), &err);
 	if (err) {
 	    balsa_information_parented(GTK_WINDOW(dialog),
diff --git a/src/filter-run-callbacks.c b/src/filter-run-callbacks.c
index 78b8f49..a69cd58 100644
--- a/src/filter-run-callbacks.c
+++ b/src/filter-run-callbacks.c
@@ -161,6 +161,7 @@ void fr_dialog_response(GtkWidget * widget, gint response,
 			gpointer throwaway)
 {
     BalsaFilterRunDialog * p;
+    GdkScreen *screen;
     GError *err = NULL;
 
     p=BALSA_FILTER_RUN_DIALOG(widget);
@@ -173,11 +174,11 @@ void fr_dialog_response(GtkWidget * widget, gint response,
     case GTK_RESPONSE_NONE:     /* Close window */
 	/* We free the mailbox_filter datas, they are useless now */
 	fr_clean_associated_mailbox_filters(p->selected_filters);
-	
+
 	break;
     case GTK_RESPONSE_HELP:     /* Help button */
-        gtk_show_uri(gdk_screen_get_default(),
-                     "ghelp:balsa?win-run-filters",
+        screen = gtk_widget_get_screen(widget);
+        gtk_show_uri(screen, "ghelp:balsa?win-run-filters",
                      gtk_get_current_event_time(), &err);
 	if (err) {
 	    balsa_information_parented(GTK_WINDOW(widget),
@@ -196,7 +197,7 @@ void fr_dialog_response(GtkWidget * widget, gint response,
 }
 
 
-/* 
+/*
  *Callbacks for apply/left/right buttons
  */
 
diff --git a/src/folder-conf.c b/src/folder-conf.c
index e372bd2..ac89548 100644
--- a/src/folder-conf.c
+++ b/src/folder-conf.c
@@ -93,6 +93,7 @@ static void
 folder_conf_response(GtkDialog * dialog, int response,
                      CommonDialogData * cdd)
 {
+    GdkScreen *screen;
     GError *err = NULL;
 
     /* If mbnode's parent gets rescanned, mbnode will be finalized,
@@ -103,8 +104,8 @@ folder_conf_response(GtkDialog * dialog, int response,
 	g_object_ref(cdd->mbnode);
     switch (response) {
     case GTK_RESPONSE_HELP:
-        gtk_show_uri(gdk_screen_get_default(),
-                     "ghelp:balsa?folder-config",
+        screen = gtk_widget_get_screen(GTK_WIDGET(dialog));
+        gtk_show_uri(screen, "ghelp:balsa?folder-config",
                      gtk_get_current_event_time(), &err);
         if (err) {
             balsa_information(LIBBALSA_INFORMATION_WARNING,
diff --git a/src/main-window.c b/src/main-window.c
index ca0cc79..91cbae8 100644
--- a/src/main-window.c
+++ b/src/main-window.c
@@ -306,7 +306,7 @@ static gboolean bw_notebook_drag_motion_cb(GtkWidget* widget,
 static GtkWidget *bw_notebook_label_new (BalsaMailboxNode* mbnode);
 static void bw_ident_manage_dialog_cb(GtkAction * action, gpointer user_data);
 
-static void bw_contents_cb(void);
+static void bw_contents_cb(GtkAction * action, gpointer user_data);
 
 static void
 bw_quit_nicely(GtkAction * action, gpointer data)
@@ -2669,12 +2669,14 @@ bw_is_open_mailbox(LibBalsaMailbox *m)
 }
 
 static void
-bw_contents_cb(void)
+bw_contents_cb(GtkAction * action, gpointer user_data)
 {
+    GdkScreen *screen;
     GError *err = NULL;
 
-    gtk_show_uri(gdk_screen_get_default(), "ghelp:balsa",
-                 gtk_get_current_event_time(), &err);
+    screen = gtk_window_get_screen(user_data);
+    gtk_show_uri(screen, "ghelp:balsa", gtk_get_current_event_time(),
+                 &err);
     if (err) {
         balsa_information(LIBBALSA_INFORMATION_WARNING,
                           _("Error displaying help: %s\n"), err->message);
@@ -4264,6 +4266,7 @@ bw_find_real(BalsaWindow * window, BalsaIndex * bindex, gboolean again)
 	GtkToggleButton *matching_body, *matching_from;
         GtkToggleButton *matching_to, *matching_cc, *matching_subject;
 	gint ok;
+        GdkScreen *screen;
 
 #if HAVE_MACOSX_DESKTOP
 	libbalsa_macosx_menu_for_parent(dia, GTK_WINDOW(window));
@@ -4413,8 +4416,8 @@ bw_find_real(BalsaWindow * window, BalsaIndex * bindex, gboolean again)
                     ok = GTK_RESPONSE_CANCEL;
                 break;
 	    case GTK_RESPONSE_HELP:
-                gtk_show_uri(gdk_screen_get_default(),
-                             "ghelp:balsa?win-search",
+                screen = gtk_widget_get_screen(GTK_WIDGET(window));
+                gtk_show_uri(screen, "ghelp:balsa?win-search",
                              gtk_get_current_event_time(), &err);
 		if (err) {
 		    balsa_information(LIBBALSA_INFORMATION_WARNING,
diff --git a/src/pref-manager.c b/src/pref-manager.c
index 837832c..d020818 100644
--- a/src/pref-manager.c
+++ b/src/pref-manager.c
@@ -3559,6 +3559,7 @@ balsa_help_pbox_display(void)
     gchar *link_id;
     GError *err = NULL;
     gchar *uri;
+    GdkScreen *screen;
 
     selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(pui->view));
     if (!gtk_tree_selection_get_selected(selection, &model, &iter))
@@ -3571,8 +3572,8 @@ balsa_help_pbox_display(void)
     g_free(text);
 
     uri = g_strconcat("ghelp:balsa?", link_id, NULL);
-    gtk_show_uri(gdk_screen_get_default(), uri,
-                 gtk_get_current_event_time(), &err);
+    screen = gtk_widget_get_screen(pui->view);
+    gtk_show_uri(screen, uri, gtk_get_current_event_time(), &err);
     g_free(uri);
     if (err) {
         balsa_information(LIBBALSA_INFORMATION_WARNING,
diff --git a/src/sendmsg-window.c b/src/sendmsg-window.c
index ec89333..c7fcac9 100644
--- a/src/sendmsg-window.c
+++ b/src/sendmsg-window.c
@@ -1806,6 +1806,7 @@ attachment_menu_vfs_cb(GtkWidget * menu_item, BalsaAttachInfo * info)
 static void
 on_open_url_cb(GtkWidget * menu_item, BalsaAttachInfo * info)
 {
+    GdkScreen *screen;
     GError *err = NULL;
     const gchar * uri;
 
@@ -1814,8 +1815,8 @@ on_open_url_cb(GtkWidget * menu_item, BalsaAttachInfo * info)
     g_return_if_fail(uri != NULL);
 
     g_message("open URL %s", uri);
-    gtk_show_uri(gdk_screen_get_default(), uri,
-                 gtk_get_current_event_time(), &err);
+    screen = gtk_widget_get_screen(menu_item);
+    gtk_show_uri(screen, uri, gtk_get_current_event_time(), &err);
     if (err) {
         balsa_information(LIBBALSA_INFORMATION_WARNING,
 			  _("Error showing %s: %s\n"),
@@ -2050,8 +2051,8 @@ add_attachment(BalsaSendmsg * bsmsg, const gchar *filename,
     if (is_fwd_message)
 	content_type = g_strdup(forced_mime_type);
     pixbuf =
-	libbalsa_icon_finder(forced_mime_type, file_uri, &content_type,
-			     GTK_ICON_SIZE_LARGE_TOOLBAR);
+	libbalsa_icon_finder(GTK_WIDGET(bsmsg), forced_mime_type, file_uri,
+                             &content_type, GTK_ICON_SIZE_LARGE_TOOLBAR);
     if (!content_type)
 	/* Last ditch. */
 	content_type = g_strdup("application/octet-stream");
diff --git a/src/toolbar-prefs.c b/src/toolbar-prefs.c
index 1a43850..141432e 100644
--- a/src/toolbar-prefs.c
+++ b/src/toolbar-prefs.c
@@ -340,6 +340,7 @@ current_selection_changed_cb(GtkTreeSelection * selection, ToolbarPage * page)
 static void
 tp_dialog_response_cb(GtkDialog * dialog, gint response, gpointer data)
 {
+    GdkScreen *screen;
     GError *err = NULL;
 
     switch (response) {
@@ -348,8 +349,8 @@ tp_dialog_response_cb(GtkDialog * dialog, gint response, gpointer data)
         gtk_widget_destroy(GTK_WIDGET(dialog));
         break;
     case GTK_RESPONSE_HELP:
-        gtk_show_uri(gdk_screen_get_default(),
-                     "ghelp:balsa?toolbar-prefs",
+        screen = gtk_widget_get_screen(GTK_WIDGET(dialog));
+        gtk_show_uri(screen, "ghelp:balsa?toolbar-prefs",
                      gtk_get_current_event_time(), &err);
         if (err) {
             balsa_information(LIBBALSA_INFORMATION_WARNING,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]