/*
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2007 Hiroyuki Yamamoto and the Claws Mail team
+ * Copyright (C) 1999-2011 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
#include "defs.h"
#include <glib.h>
-#include <gtk/gtkwidget.h>
-#include <gtk/gtkimage.h>
+#include <gtk/gtk.h>
#include <string.h>
#include <dirent.h>
#include "pixmaps/interface.xpm"
#include "pixmaps/jpilot.xpm"
#include "pixmaps/key.xpm"
+#include "pixmaps/key_gpg_signed.xpm"
#include "pixmaps/ldap.xpm"
#include "pixmaps/linewrap.xpm"
#include "pixmaps/linewrapcurrent.xpm"
#include "pixmaps/mail_reply.xpm"
#include "pixmaps/mail_reply_to_all.xpm"
#include "pixmaps/mail_reply_to_author.xpm"
+#include "pixmaps/mail_reply_to_list.xpm"
#include "pixmaps/mail_send.xpm"
#include "pixmaps/mail_send_queue.xpm"
#include "pixmaps/mail_sign.xpm"
#include "pixmaps/outbox_close.xpm"
#include "pixmaps/outbox_close_hrm.xpm"
#include "pixmaps/trash.xpm"
+#include "pixmaps/delete_btn.xpm"
+#include "pixmaps/cancel.xpm"
#include "pixmaps/trash_btn.xpm"
#include "pixmaps/trash_hrm.xpm"
#include "pixmaps/drafts_close.xpm"
struct _StockPixmapData
{
gchar **data;
+#if !GTK_CHECK_VERSION(3, 0, 0)
GdkPixmap *pixmap;
GdkBitmap *mask;
+#else
+ cairo_surface_t *pixmap;
+ cairo_pattern_t *mask;
+#endif
gchar *file;
gchar *icon_path;
GdkPixbuf *pixbuf;
struct _OverlayData
{
gboolean is_pixmap;
+#if !GTK_CHECK_VERSION(3, 0, 0)
GdkPixmap *base_pixmap;
GdkBitmap *base_mask;
GdkPixmap *overlay_pixmap;
GdkBitmap *overlay_mask;
+#else
+ cairo_surface_t *base_pixmap;
+ cairo_surface_t *overlay_pixmap;
+#endif
GdkPixbuf *base_pixbuf;
GdkPixbuf *overlay_pixbuf;
{interface_xpm , NULL, NULL, "interface", NULL},
{jpilot_xpm , NULL, NULL, "jpilot", NULL},
{key_xpm , NULL, NULL, "key", NULL},
+ {key_gpg_signed_xpm , NULL, NULL, "key_gpg_signed_xpm", NULL},
{ldap_xpm , NULL, NULL, "ldap", NULL},
{linewrapcurrent_xpm , NULL, NULL, "linewrapcurrent", NULL},
{linewrap_xpm , NULL, NULL, "linewrap", NULL},
{mail_reply_xpm , NULL, NULL, "mail_reply", NULL},
{mail_reply_to_all_xpm , NULL, NULL, "mail_reply_to_all", NULL},
{mail_reply_to_author_xpm , NULL, NULL, "mail_reply_to_author", NULL},
+ {mail_reply_to_list_xpm , NULL, NULL, "mail_reply_to_list", NULL},
{mail_send_xpm , NULL, NULL, "mail_send", NULL},
{mail_send_queue_xpm , NULL, NULL, "mail_send_queue", NULL},
{mail_sign_xpm , NULL, NULL, "mail_sign", NULL},
{mime_message_xpm , NULL, NULL, "mime_message", NULL},
{claws_mail_icon_xpm , NULL, NULL, "claws_mail_icon", NULL},
{read_xpm , NULL, NULL, "read", NULL},
+ {delete_btn_xpm , NULL, NULL, "delete_btn", NULL},
+ {cancel_xpm , NULL, NULL, "cancel", NULL},
{trash_btn_xpm , NULL, NULL, "trash_btn", NULL},
#ifndef GENERIC_UMPC
{claws_mail_logo_xpm , NULL, NULL, "claws_mail_logo", NULL},
{copied_xpm , NULL, NULL, "copied", NULL},
{selection_xpm , NULL, NULL, "selection", NULL},
{watchthread_xpm , NULL, NULL, "watchthread", NULL},
- {tray_newmail_offline_xpm , NULL, NULL, "tray_newmail_offline", NULL},
+ {tray_newmail_offline_xpm , NULL, NULL, "tray_newmail.offline", NULL},
{tray_newmail_xpm , NULL, NULL, "tray_newmail", NULL},
- {tray_newmarkedmail_offline_xpm , NULL, NULL, "tray_newmarkedmail_offline", NULL},
+ {tray_newmarkedmail_offline_xpm , NULL, NULL, "tray_newmarkedmail.offline", NULL},
{tray_newmarkedmail_xpm , NULL, NULL, "tray_newmarkedmail", NULL},
- {tray_nomail_offline_xpm , NULL, NULL, "tray_nomail_offline", NULL},
+ {tray_nomail_offline_xpm , NULL, NULL, "tray_nomail.offline", NULL},
{tray_nomail_xpm , NULL, NULL, "tray_nomail", NULL},
- {tray_unreadmail_offline_xpm , NULL, NULL, "tray_unreadmail_offline", NULL},
+ {tray_unreadmail_offline_xpm , NULL, NULL, "tray_unreadmail.offline", NULL},
{tray_unreadmail_xpm , NULL, NULL, "tray_unreadmail", NULL},
- {tray_unreadmarkedmail_offline_xpm , NULL, NULL, "tray_unreadmarkedmail_offline", NULL},
+ {tray_unreadmarkedmail_offline_xpm , NULL, NULL, "tray_unreadmarkedmail.offline", NULL},
{tray_unreadmarkedmail_xpm , NULL, NULL, "tray_unreadmarkedmail", NULL},
{empty_xpm , NULL, NULL, "empty" , NULL}
};
{
GdkPixbuf *pixbuf;
- g_return_val_if_fail(window != NULL, NULL);
- g_return_val_if_fail(icon >= 0 && icon < N_STOCK_PIXMAPS, NULL);
+ cm_return_val_if_fail(window != NULL, NULL);
+ cm_return_val_if_fail(icon >= 0 && icon < N_STOCK_PIXMAPS, NULL);
if (stock_pixbuf_gdk(window, icon, &pixbuf) != -1)
return gtk_image_new_from_pixbuf(pixbuf);
if (pixbuf)
*pixbuf = NULL;
- g_return_val_if_fail(icon >= 0 && icon < N_STOCK_PIXMAPS, -1);
+ cm_return_val_if_fail(icon >= 0 && icon < N_STOCK_PIXMAPS, -1);
pix_d = &pixmaps[icon];
}
}
- g_return_val_if_fail(pix_d->pixbuf != NULL, -1);
+ cm_return_val_if_fail(pix_d->pixbuf != NULL, -1);
if (pixbuf)
*pixbuf = pix_d->pixbuf;
return 0;
}
-/* create GdkPixmap if it has not created yet */
-gint stock_pixmap_gdk(GtkWidget *window, StockPixmap icon,
- GdkPixmap **pixmap, GdkBitmap **mask)
-{
- StockPixmapData *pix_d;
- static const char *extension[]={".png", ".xpm", NULL};
- int i = 0;
- gboolean theme_changed = FALSE;
-
- if (pixmap) *pixmap = NULL;
- if (mask) *mask = NULL;
-
- g_return_val_if_fail(window != NULL, -1);
- g_return_val_if_fail(icon >= 0 && icon < N_STOCK_PIXMAPS, -1);
-
- pix_d = &pixmaps[icon];
-
- theme_changed = (strcmp2(pix_d->icon_path, prefs_common.pixmap_theme_path) != 0);
- if (!pix_d->pixmap || theme_changed) {
- GdkPixmap *pix = NULL;
-
- if (theme_changed && pix_d->pixbuf) {
- g_object_unref(pix_d->pixbuf);
- pix_d->pixbuf = NULL;
- }
-
- if (strcmp(prefs_common.pixmap_theme_path, DEFAULT_PIXMAP_THEME) != 0) {
- if ( is_dir_exist(prefs_common.pixmap_theme_path) ) {
- char *icon_file_name;
-try_next_extension:
- icon_file_name = g_strconcat(prefs_common.pixmap_theme_path,
- G_DIR_SEPARATOR_S,
- pix_d->file,
- extension[i],
- NULL);
- if (is_file_exist(icon_file_name))
- PIXMAP_CREATE_FROM_FILE(window, pix, pix_d->mask, icon_file_name);
- if (pix) {
- g_free(pix_d->icon_path);
- pix_d->icon_path = g_strdup(prefs_common.pixmap_theme_path);
- }
- g_free(icon_file_name);
- if (!pix) {
- i++;
- if (extension[i])
- goto try_next_extension;
- }
- } else {
- /* even the path does not exist (deleted between two sessions), so
- set the preferences to the internal theme */
- prefs_common.pixmap_theme_path = g_strdup(DEFAULT_PIXMAP_THEME);
- }
- }
- pix_d->pixmap = pix;
- }
-
- if (!pix_d->pixmap) {
- PIXMAP_CREATE(window, pix_d->pixmap, pix_d->mask, pix_d->data);
- if (pix_d->pixmap) {
- g_free(pix_d->icon_path);
- pix_d->icon_path = g_strdup(DEFAULT_PIXMAP_THEME);
- }
- }
-
- g_return_val_if_fail(pix_d->pixmap != NULL, -1);
-
- if (pixmap)
- *pixmap = pix_d->pixmap;
- if (mask)
- *mask = pix_d->mask;
-
- return 0;
-}
-
static void stock_pixmap_find_themes_in_dir(GList **list, const gchar *dirname)
{
struct dirent *d;
closedir(dp);
}
+gchar *stock_pixmap_get_system_theme_dir_for_theme(const gchar *theme)
+{
+ const gchar *sep = NULL;
+ if (theme && *theme)
+ sep = G_DIR_SEPARATOR_S;
+#ifndef G_OS_WIN32
+ return g_strconcat(PACKAGE_DATA_DIR, G_DIR_SEPARATOR_S,
+ PIXMAP_THEME_DIR, sep, theme, NULL);
+#else
+ return g_strconcat(get_themes_dir(), sep, theme, NULL);
+#endif
+}
+
GList *stock_pixmap_themes_list_new(void)
{
gchar *defaulttheme;
defaulttheme = g_strdup(DEFAULT_PIXMAP_THEME);
userthemes = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S,
PIXMAP_THEME_DIR, NULL);
- systemthemes = g_strconcat(PACKAGE_DATA_DIR, G_DIR_SEPARATOR_S,
- PIXMAP_THEME_DIR, NULL);
+ systemthemes = stock_pixmap_get_system_theme_dir_for_theme(NULL);
list = g_list_append(list, defaulttheme);
-
stock_pixmap_find_themes_in_dir(&list, userthemes);
stock_pixmap_find_themes_in_dir(&list, systemthemes);
gchar *stock_pixmap_get_name (StockPixmap icon)
{
- g_return_val_if_fail(icon >= 0 && icon < N_STOCK_PIXMAPS, NULL);
+ if (icon < 0 || icon >= N_STOCK_PIXMAPS)
+ return NULL;
return pixmaps[icon].file;
return -1;
}
+#if !GTK_CHECK_VERSION(3, 0, 0)
static gboolean pixmap_with_overlay_expose_event_cb(GtkWidget *widget, GdkEventExpose *expose,
OverlayData *data)
+#else
+static gboolean pixmap_with_overlay_expose_event_cb(GtkWidget *widget, cairo_t *cr,
+ OverlayData *data)
+#endif
{
- GdkDrawable *drawable = widget->window;
- GdkGC *gc_pix;
+#if !GTK_CHECK_VERSION(3, 0, 0)
+ cairo_t *cr;
+#endif
+ GdkWindow *drawable = gtk_widget_get_window(widget);
gint left = 0;
gint top = 0;
if (data->is_pixmap) {
- g_return_val_if_fail(data->base_pixmap != NULL, FALSE);
- g_return_val_if_fail(data->base_mask != NULL, FALSE);
+ cm_return_val_if_fail(data->base_pixmap != NULL, FALSE);
+#if !GTK_CHECK_VERSION(3, 0, 0)
+ cm_return_val_if_fail(data->base_mask != NULL, FALSE);
+#endif
} else {
- g_return_val_if_fail(data->base_pixbuf != NULL, FALSE);
+ cm_return_val_if_fail(data->base_pixbuf != NULL, FALSE);
}
- gc_pix = gdk_gc_new((GdkWindow *)drawable);
-
+#if !GTK_CHECK_VERSION(3, 0, 0)
+ cr = gdk_cairo_create(drawable);
+
gdk_window_clear_area (drawable, expose->area.x, expose->area.y,
expose->area.width, expose->area.height);
+#else
+ cairo_pattern_t *pattern = gdk_window_get_background_pattern(drawable);
+ if (pattern == NULL)
+ pattern = gdk_window_get_background_pattern(gdk_window_get_parent(drawable));
+
+ cairo_set_source(cr, pattern);
+ cairo_fill(cr);
+ cairo_pattern_destroy(pattern);
+#endif
if (data->highlight) {
MainWindow *mw = NULL;
mw = mainwindow_get_mainwindow();
if (mw != NULL && mw->menubar != NULL) {
- GdkGC *gc_frame = gdk_gc_new((GdkWindow *)drawable);
+ cairo_t *cr;
GdkColor color = gtk_widget_get_style(mw->menubar)->base[GTK_STATE_SELECTED];
- gdk_gc_set_foreground(gc_frame, &color);
- gdk_gc_set_line_attributes(gc_frame, 1, GDK_LINE_SOLID,
- GDK_CAP_BUTT, GDK_JOIN_BEVEL);
- gdk_draw_rectangle(drawable, gc_frame, FALSE, data->border_x-2, data->border_y-2,
- data->base_width+3, data->base_height+3);
- g_object_unref(gc_frame);
+ cr = gdk_cairo_create(drawable);
+ gdk_cairo_set_source_color(cr, &color);
+ cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE);
+ cairo_set_line_width(cr, 1.);
+ cairo_set_line_cap(cr, CAIRO_LINE_CAP_BUTT);
+ cairo_set_line_join(cr, CAIRO_LINE_JOIN_BEVEL);
+ cairo_rectangle(cr, data->border_x-2, data->border_y-2,
+ data->base_width+3, data->base_height+3);
+ cairo_stroke(cr);
+ cairo_destroy(cr);
}
}
if (data->is_pixmap) {
- gdk_gc_set_tile(gc_pix, data->base_pixmap);
- gdk_gc_set_ts_origin(gc_pix, data->border_x, data->border_y);
- gdk_gc_set_clip_mask(gc_pix, data->base_mask);
- gdk_gc_set_clip_origin(gc_pix, data->border_x, data->border_y);
- gdk_gc_set_fill(gc_pix, GDK_TILED);
- gdk_draw_rectangle(drawable, gc_pix, TRUE, data->border_x, data->border_y,
- data->base_width, data->base_height);
+#if !GTK_CHECK_VERSION(3, 0, 0)
+ gdk_cairo_set_source_pixmap(cr, data->base_pixmap, data->border_x, data->border_y);
+#else
+ cairo_set_source_surface(cr, data->base_pixmap, data->border_x, data->border_y);
+#endif
+ cairo_pattern_set_extend(cairo_get_source(cr), CAIRO_EXTEND_REPEAT);
+#if !GTK_CHECK_VERSION(3, 0, 0)
+ cairo_rectangle(cr, data->border_x, data->border_y,
+ data->base_width, data->base_height);
+#else
+ cairo_rectangle(cr, 0, 0, data->base_width, data->base_height);
+#endif
+ cairo_fill(cr);
} else {
- gdk_draw_pixbuf(drawable, gc_pix, data->base_pixbuf,
- 0, 0, data->border_x, data->border_y,
- -1, -1, GDK_RGB_DITHER_NONE, 0, 0);
+#if !GTK_CHECK_VERSION(3, 0, 0)
+ gdk_cairo_set_source_pixbuf(cr, data->base_pixbuf, data->border_x, data->border_y);
+#else
+ gdk_cairo_set_source_pixbuf(cr, data->base_pixbuf, 0, 0);
+#endif
+ cairo_paint(cr);
}
-
if (data->position != OVERLAY_NONE) {
switch (data->position) {
case OVERLAY_TOP_CENTER:
case OVERLAY_MID_CENTER:
case OVERLAY_BOTTOM_CENTER:
+#if !GTK_CHECK_VERSION(3, 0, 0)
left = (data->base_width + data->border_x * 2 - data->overlay_width)/2;
+#else
+ left = (data->base_width - data->overlay_width)/2;
+#endif
break;
case OVERLAY_TOP_RIGHT:
case OVERLAY_MID_RIGHT:
case OVERLAY_BOTTOM_RIGHT:
+#if !GTK_CHECK_VERSION(3, 0, 0)
left = data->base_width + data->border_x * 2 - data->overlay_width;
+#else
+ left = data->base_width - data->overlay_width;
+#endif
break;
default:
case OVERLAY_MID_LEFT:
case OVERLAY_MID_CENTER:
case OVERLAY_MID_RIGHT:
+#if !GTK_CHECK_VERSION(3, 0, 0)
top = (data->base_height + data->border_y * 2 - data->overlay_height)/2;
+#else
+ top = (data->base_height - data->overlay_height)/2;
+#endif
break;
case OVERLAY_BOTTOM_LEFT:
case OVERLAY_BOTTOM_CENTER:
case OVERLAY_BOTTOM_RIGHT:
+#if !GTK_CHECK_VERSION(3, 0, 0)
top = data->base_height + data->border_y * 2 - data->overlay_height;
+#else
+ top = data->base_height - data->overlay_height;
+#endif
break;
default:
break;
}
}
+
if (data->position != OVERLAY_NONE) {
if (data->is_pixmap) {
- g_return_val_if_fail(data->overlay_pixmap != NULL, FALSE);
- g_return_val_if_fail(data->overlay_mask != NULL, FALSE);
- gdk_gc_set_tile(gc_pix, data->overlay_pixmap);
- gdk_gc_set_clip_mask(gc_pix, data->overlay_mask);
-
- gdk_gc_set_ts_origin(gc_pix, left, top);
- gdk_gc_set_clip_origin(gc_pix, left, top);
- gdk_gc_set_fill(gc_pix, GDK_TILED);
- gdk_draw_rectangle(drawable, gc_pix, TRUE, left, top,
- data->overlay_width, data->overlay_height);
+ cm_return_val_if_fail(data->overlay_pixmap != NULL, FALSE);
+#if !GTK_CHECK_VERSION(3, 0, 0)
+ cm_return_val_if_fail(data->overlay_mask != NULL, FALSE);
+ gdk_cairo_set_source_pixmap(cr, data->overlay_pixmap, left, top);
+#else
+ cairo_set_source_surface(cr, data->overlay_pixmap, left, top);
+#endif
+ cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REPEAT);
+ cairo_rectangle (cr, left, top, data->overlay_width, data->overlay_height);
+ cairo_fill(cr);
} else {
- g_return_val_if_fail(data->overlay_pixbuf != NULL, FALSE);
- gdk_draw_pixbuf(drawable, gc_pix, data->overlay_pixbuf,
- 0, 0, left, top,
- -1, -1, GDK_RGB_DITHER_NONE, 0, 0);
-
+ cm_return_val_if_fail(data->overlay_pixbuf != NULL, FALSE);
+ gdk_cairo_set_source_pixbuf(cr, data->overlay_pixbuf, left, top);
+ cairo_paint(cr);
}
}
- g_object_unref(gc_pix);
+
+#if !GTK_CHECK_VERSION(3, 0, 0)
+ cairo_destroy(cr);
+#endif
return TRUE;
}
+#if !GTK_CHECK_VERSION(3, 0, 0)
static void pixmap_with_overlay_destroy_cb(GtkObject *object, OverlayData *data)
+#else
+static void pixmap_with_overlay_destroy_cb(GtkWidget *object, OverlayData *data)
+#endif
{
if (data->is_pixmap) {
+#if !GTK_CHECK_VERSION(3, 0, 0)
g_object_unref(data->base_pixmap);
g_object_unref(data->base_mask);
if (data->position != OVERLAY_NONE) {
g_object_unref(data->overlay_pixmap);
g_object_unref(data->overlay_mask);
}
+#else
+ cairo_surface_destroy(data->base_pixmap);
+ if (data->position != OVERLAY_NONE) {
+ cairo_surface_destroy(data->overlay_pixmap);
+ }
+#endif
} else {
g_object_unref(data->base_pixbuf);
if (data->position != OVERLAY_NONE) {
StockPixmap overlay, OverlayPosition pos,
gint border_x, gint border_y)
{
+#if !GTK_CHECK_VERSION(3, 0, 0)
GdkPixmap *stock_pixmap = NULL;
GdkBitmap *stock_mask = NULL;
+#else
+ cairo_surface_t *stock_pixmap = NULL;
+#endif
GdkPixbuf *stock_pixbuf = NULL;
GtkWidget *widget = NULL;
GtkWidget *stock_wid = NULL;
+ GtkRequisition requisition;
OverlayData *data = NULL;
data = g_new0(OverlayData, 1);
stock_wid = stock_pixmap_widget(window, icon);
+ gtk_widget_get_requisition(stock_wid, &requisition);
if (gtk_image_get_storage_type(GTK_IMAGE(stock_wid)) == GTK_IMAGE_PIXMAP)
data->is_pixmap = TRUE;
data->is_pixmap = FALSE;
if (data->is_pixmap) {
+#if !GTK_CHECK_VERSION(3, 0, 0)
gtk_image_get_pixmap(GTK_IMAGE(stock_wid), &stock_pixmap, &stock_mask);
g_object_ref(stock_pixmap);
g_object_ref(stock_mask);
+#else
+ cr = gdk_cairo_create(gtk_widget_get_window(stock_wid));
+ stock_pixmap = cairo_get_target(cr);
+ cairo_surface_reference(stock_pixmap);
+ cairo_destroy(cr);
+#endif
data->base_pixmap = stock_pixmap;
+#if !GTK_CHECK_VERSION(3, 0, 0)
data->base_mask = stock_mask;
- data->base_height = stock_wid->requisition.height;
- data->base_width = stock_wid->requisition.width;
+#endif
+ data->base_height = requisition.height;
+ data->base_width = requisition.width;
gtk_widget_destroy(stock_wid);
if (pos == OVERLAY_NONE) {
data->overlay_pixmap = NULL;
+#if !GTK_CHECK_VERSION(3, 0, 0)
data->overlay_mask = NULL;
+#endif
} else {
stock_wid = stock_pixmap_widget(window, overlay);
+#if !GTK_CHECK_VERSION(3, 0, 0)
gtk_image_get_pixmap(GTK_IMAGE(stock_wid), &stock_pixmap, &stock_mask);
g_object_ref(stock_pixmap);
g_object_ref(stock_mask);
+#else
+ cr = gdk_cairo_create(gtk_widget_get_window(stock_wid));
+ stock_pixmap = cairo_get_target(cr);
+ cairo_surface_reference(stock_pixmap);
+ cairo_destroy(cr);
+#endif
data->overlay_pixmap = stock_pixmap;
+#if !GTK_CHECK_VERSION(3, 0, 0)
data->overlay_mask = stock_mask;
- data->overlay_height = stock_wid->requisition.height;
- data->overlay_width = stock_wid->requisition.width;
+#endif
+ data->overlay_height = requisition.height;
+ data->overlay_width = requisition.width;
gtk_widget_destroy(stock_wid);
}
stock_pixbuf = gtk_image_get_pixbuf(GTK_IMAGE(stock_wid));
g_object_ref(stock_pixbuf);
data->base_pixbuf = stock_pixbuf;
- data->base_height = stock_wid->requisition.height;
- data->base_width = stock_wid->requisition.width;
+ data->base_height = requisition.height;
+ data->base_width = requisition.width;
gtk_widget_destroy(stock_wid);
if (pos == OVERLAY_NONE) {
data->overlay_pixmap = NULL;
+#if !GTK_CHECK_VERSION(3, 0, 0)
data->overlay_mask = NULL;
+#endif
} else {
stock_wid = stock_pixmap_widget(window, overlay);
stock_pixbuf = gtk_image_get_pixbuf(GTK_IMAGE(stock_wid));
g_object_ref(stock_pixbuf);
data->overlay_pixbuf = stock_pixbuf;
- data->overlay_height = stock_wid->requisition.height;
- data->overlay_width = stock_wid->requisition.width;
+ data->overlay_height = requisition.height;
+ data->overlay_width = requisition.width;
gtk_widget_destroy(stock_wid);
}
data->highlight = FALSE;
widget = gtk_drawing_area_new();
- gtk_drawing_area_size(GTK_DRAWING_AREA(widget), data->base_width + border_x * 2,
+ gtk_widget_set_size_request(widget, data->base_width + border_x * 2,
data->base_height + border_y * 2);
+#if !GTK_CHECK_VERSION(3, 0, 0)
g_signal_connect(G_OBJECT(widget), "expose_event",
G_CALLBACK(pixmap_with_overlay_expose_event_cb), data);
+#else
+ g_signal_connect(G_OBJECT(widget), "draw",
+ G_CALLBACK(pixmap_with_overlay_expose_event_cb), data);
+#endif
g_signal_connect(G_OBJECT(widget), "destroy",
G_CALLBACK(pixmap_with_overlay_destroy_cb), data);
g_object_set_data(G_OBJECT(widget), "highlight", &(data->highlight));