[glade3/signal-tree-model] gladeui: Initially port of signal-editor drag & drop to new drawing API
- From: Johannes Schmid <jhs src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glade3/signal-tree-model] gladeui: Initially port of signal-editor drag & drop to new drawing API
- Date: Thu, 30 Dec 2010 21:29:23 +0000 (UTC)
commit ba341982c2869486ed105a0e06c97ab0b469a283
Author: Johannes Schmid <jhs gnome org>
Date: Thu Dec 30 22:24:20 2010 +0100
gladeui: Initially port of signal-editor drag & drop to new drawing API
gladeui/glade-signal-editor.c | 52 ++++++++++++----------------------------
1 files changed, 16 insertions(+), 36 deletions(-)
---
diff --git a/gladeui/glade-signal-editor.c b/gladeui/glade-signal-editor.c
index ed3d3e4..a8f9393 100644
--- a/gladeui/glade-signal-editor.c
+++ b/gladeui/glade-signal-editor.c
@@ -395,12 +395,12 @@ name_cell_data_func (GtkTreeViewColumn* column,
g_free (name);
}
-static GdkPixmap*
-create_rich_drag_icon (GtkWidget* widget, const gchar* text)
+static cairo_surface_t*
+create_rich_drag_surface (GtkWidget* widget, const gchar* text)
{
PangoLayout* layout = pango_layout_new (gtk_widget_get_pango_context (widget));
- GdkPixmap* pixmap;
cairo_t* cr;
+ cairo_surface_t* s;
gint width, height;
pango_layout_set_text (layout, text, -1);
@@ -408,33 +408,17 @@ create_rich_drag_icon (GtkWidget* widget, const gchar* text)
width = PANGO_PIXELS(width) + 10;
height = PANGO_PIXELS(height) + 10;
- pixmap = gdk_pixmap_new (gtk_widget_get_window (widget),
- width,
- height,
- -1);
- cr = gdk_cairo_create (pixmap);
- gdk_cairo_set_source_pixmap (cr, pixmap, 0, 0);
+ s = cairo_image_surface_create (CAIRO_FORMAT_A1, width, height);
+ cr = cairo_create (s);
- gdk_draw_rectangle (GDK_DRAWABLE (pixmap),
- gtk_widget_get_style (widget)->base_gc [gtk_widget_get_state (widget)],
- TRUE,
- 0, 0,
- width, height);
-
- gdk_draw_layout (GDK_DRAWABLE (pixmap),
- gtk_widget_get_style (widget)->text_gc [gtk_widget_get_state (widget)],
- 5,
- 5,
- layout);
- gdk_draw_rectangle (GDK_DRAWABLE (pixmap),
- gtk_widget_get_style (widget)->black_gc,
- FALSE,
- 0, 0,
- width - 1, height - 1);
- g_object_unref (layout);
+ cairo_rectangle (cr, 0, 0, 1, 1);
+ cairo_show_text (cr, text);
+ cairo_stroke (cr);
+
+ g_object_unref (layout);
- return pixmap;
+ return s;;
}
static void
@@ -442,7 +426,7 @@ glade_signal_editor_drag_begin (GtkWidget* widget,
GdkDragContext* context,
gpointer user_data)
{
- GdkPixmap *pixmap = NULL;
+ cairo_surface_t *s = NULL;
GtkTreeModel *model;
GtkTreeIter iter;
GtkTreeSelection* selection;
@@ -454,17 +438,13 @@ glade_signal_editor_drag_begin (GtkWidget* widget,
gchar* handler;
gtk_tree_model_get (model, &iter,
GLADE_SIGNAL_COLUMN_HANDLER, &handler, -1);
- pixmap = create_rich_drag_icon (widget, handler);
+ s = create_rich_drag_surface (widget, handler);
}
- if (pixmap)
+ if (s)
{
- gtk_drag_set_icon_pixmap (context,
- gdk_drawable_get_colormap (GDK_DRAWABLE(gtk_widget_get_window (widget))),
- pixmap,
- NULL,
- -2, -2);
- g_object_unref (pixmap);
+ gtk_drag_set_icon_surface (context, s);
+ g_object_unref (s);
}
else
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]