New big icon for compose windows, by Simon Steinbeiss
[claws.git] / src / gtk / gtkutils.c
index 764d0855381756798731b681a7a5b6b41ce4ab14..72dbf4b77704a10f8b711f9ae535e1f31566ca91 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2011 Hiroyuki Yamamoto and the Claws Mail team
+ * Copyright (C) 1999-2012 Hiroyuki Yamamoto and the Claws Mail team
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -19,6 +19,7 @@
 
 #ifdef HAVE_CONFIG_H
 #  include "config.h"
+#include "claws-features.h"
 #endif
 
 #include <glib.h>
@@ -26,9 +27,7 @@
 #include <gdk/gdkkeysyms.h>
 #include <gdk/gdk.h>
 #include <gtk/gtk.h>
-#if !GTK_CHECK_VERSION(3, 0, 0)
 #include "gtk/gtksctree.h"
-#endif
 #include <stdlib.h>
 #include <stdarg.h>
 #include <sys/stat.h>
@@ -51,9 +50,7 @@
 #include "defs.h"
 #include "gtkutils.h"
 #include "utils.h"
-#if !GTK_CHECK_VERSION(3, 0, 0)
 #include "gtksctree.h"
-#endif
 #include "codeconv.h"
 #include "stock_pixmap.h"
 #include "menu.h"
@@ -673,7 +670,7 @@ static void gtkut_clist_bindings_add(GtkWidget *clist)
                                     "scroll_vertical", 2,
                                     G_TYPE_ENUM, GTK_SCROLL_STEP_FORWARD,
                                     G_TYPE_FLOAT, 0.0);
-       gtk_binding_entry_add_signal(binding_set, GDK_p, GDK_CONTROL_MASK,
+       gtk_binding_entry_add_signal(binding_set, GDK_KEY_p, GDK_CONTROL_MASK,
                                     "scroll_vertical", 2,
                                     G_TYPE_ENUM, GTK_SCROLL_STEP_BACKWARD,
                                     G_TYPE_FLOAT, 0.0);
@@ -719,28 +716,40 @@ void gtkut_widget_init(void)
 
 void gtkut_widget_set_app_icon(GtkWidget *widget)
 {
-       static GdkPixbuf *icon = NULL;
-       
+       static GList *icon_list = NULL;
+
        cm_return_if_fail(widget != NULL);
        cm_return_if_fail(gtk_widget_get_window(widget) != NULL);
-       if (!icon) {
+       if (!icon_list) {
+               GdkPixbuf *icon = NULL, *big_icon = NULL;
                stock_pixbuf_gdk(widget, STOCK_PIXMAP_CLAWS_MAIL_ICON, &icon);
-       }               
-       if (icon)
-               gtk_window_set_icon(GTK_WINDOW(widget), icon);
+               stock_pixbuf_gdk(widget, STOCK_PIXMAP_CLAWS_MAIL_LOGO, &big_icon);
+               if (icon)
+                       icon_list = g_list_append(icon_list, icon);
+               if (big_icon)
+                       icon_list = g_list_append(icon_list, big_icon);
+       }
+       if (icon_list)
+               gtk_window_set_icon_list(GTK_WINDOW(widget), icon_list);
 }
 
 void gtkut_widget_set_composer_icon(GtkWidget *widget)
 {
-       static GdkPixbuf *icon = NULL;
-       
+       static GList *icon_list = NULL;
+
        cm_return_if_fail(widget != NULL);
        cm_return_if_fail(gtk_widget_get_window(widget) != NULL);
-       if (!icon) {
+       if (!icon_list) {
+               GdkPixbuf *icon = NULL, *big_icon = NULL;
                stock_pixbuf_gdk(widget, STOCK_PIXMAP_MAIL_COMPOSE, &icon);
-       }               
-       if (icon)
-               gtk_window_set_icon(GTK_WINDOW(widget), icon);
+               stock_pixbuf_gdk(widget, STOCK_PIXMAP_MAIL_COMPOSE_LOGO, &big_icon);
+               if (icon)
+                       icon_list = g_list_append(icon_list, icon);
+               if (big_icon)
+                       icon_list = g_list_append(icon_list, big_icon);
+       }
+       if (icon_list)
+               gtk_window_set_icon_list(GTK_WINDOW(widget), icon_list);
 }
 
 static gboolean move_bar = FALSE;
@@ -1645,10 +1654,14 @@ claws_io_invoke (GIOChannel   *source,
                 gpointer      data)
 {
   ClawsIOClosure *closure = data;
-
+  int fd;
+#ifndef G_OS_WIN32
+  fd = g_io_channel_unix_get_fd (source);
+#else
+  fd = g_io_channel_win32_get_fd (source);
+#endif
   if (closure->condition & condition)
-    closure->function (closure->data, g_io_channel_unix_get_fd (source),
-                      condition);
+    closure->function (closure->data, fd, condition);
 
   return TRUE;
 }