2011-10-25 [colin] 3.7.10cvs49
[claws.git] / src / gtk / colorlabel.c
index 6b32c52984b345beca1b42efafb25fd18b9c7103..2500a992966c520b69759dd743b249fea897343e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 2001-2009 Hiroyuki Yamamoto & The Claws Mail Team
+ * Copyright (C) 2001-2011 Hiroyuki Yamamoto & 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
@@ -189,28 +189,41 @@ gchar *colorlabel_get_color_default_text(gint color_index)
 }
 
 static gboolean colorlabel_drawing_area_expose_event_cb
+#if !GTK_CHECK_VERSION(3, 0, 0)
        (GtkWidget *widget, GdkEventExpose *expose, gpointer data)
+#else
+       (GtkWidget *widget, cairo_t *cr, gpointer data)
+#endif
 {
-       GdkDrawable *drawable = widget->window;
+#if !GTK_CHECK_VERSION(3, 0, 0)
+       cairo_t *cr;
+       GdkWindow *drawable = gtk_widget_get_window(widget);
+#endif
+       GtkAllocation allocation;
        gulong c = (gulong) GPOINTER_TO_INT(data);
        GdkColor color;
-       GdkGC *gc;
 
        INTCOLOR_TO_GDKCOLOR(c, color)
 
+#if !GTK_CHECK_VERSION(3, 0, 0)
        gdk_colormap_alloc_color(gtk_widget_get_colormap(widget), &color, FALSE, TRUE);
-
-       gc = gdk_gc_new(drawable);
-
-       gdk_gc_set_foreground(gc, &color);
-       gdk_draw_rectangle(drawable, widget->style->black_gc,
-                          FALSE, 0, 0, widget->allocation.width - 1,
-                          widget->allocation.height - 1);
-       gdk_draw_rectangle(drawable, gc,
-                          TRUE, 1, 1, widget->allocation.width - 2,
-                          widget->allocation.height - 2);
-
-       g_object_unref(gc);                        
+       cr = gdk_cairo_create(drawable);
+#endif
+       gtk_widget_get_allocation(widget, &allocation);
+
+       cairo_set_source_rgb(cr, 0., 0., 0.);
+       cairo_rectangle(cr, 0, 0,
+           allocation.width - 1,
+           allocation.height - 1);
+       cairo_stroke(cr);
+       gdk_cairo_set_source_color(cr, &color);
+       cairo_rectangle(cr, 1, 1,
+           allocation.width - 2,
+           allocation.height - 2);
+       cairo_fill(cr);
+#if !GTK_CHECK_VERSION(3, 0, 0)
+       cairo_destroy(cr);
+#endif
        
        return FALSE;
 }
@@ -228,11 +241,19 @@ static GtkWidget *colorlabel_create_color_widget(GdkColor color)
                         (CL(g) << (gulong)  8) | \
                         (CL(b)))
 
+#if !GTK_CHECK_VERSION(3, 0, 0)
        g_signal_connect(G_OBJECT(widget), "expose_event", 
                         G_CALLBACK
                                (colorlabel_drawing_area_expose_event_cb),
                         GINT_TO_POINTER
                                ((gint)CR(color.red, color.green, color.blue)));
+#else
+       g_signal_connect(G_OBJECT(widget), "draw", 
+                        G_CALLBACK
+                               (colorlabel_drawing_area_expose_event_cb),
+                        GINT_TO_POINTER
+                               ((gint)CR(color.red, color.green, color.blue)));
+#endif
 
        return widget;
 }
@@ -265,7 +286,7 @@ static void colorlabel_recreate_label(gint color)
        int i;
        
        for (i = 0; i < NUM_MENUS; i++) {
-               if (!label_colors[i][color].changed & LCCF_LABEL)
+               if (!(label_colors[i][color].changed & LCCF_LABEL))
                        continue;
 
                if (label_colors[i][color].label == NULL) 
@@ -331,7 +352,7 @@ GtkWidget *colorlabel_create_check_color_menu_item(gint color_index, gboolean fo
        gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);
        gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 4);
        if (color_index < 9) {
-               accel = gtk_accelerator_get_label(GDK_1+color_index, GDK_CONTROL_MASK);
+               accel = gtk_accelerator_get_label(GDK_KEY_1+color_index, GDK_CONTROL_MASK);
                label = gtk_label_new(accel);
                gtk_widget_show(label);
                gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);