[glade3/offscreen-gtk3] gladeui: First try to fix offscreen drawing
- From: Johannes Schmid <jhs src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glade3/offscreen-gtk3] gladeui: First try to fix offscreen drawing
- Date: Mon, 15 Nov 2010 16:20:00 +0000 (UTC)
commit 47b610f3345f9643ed25ef4795aa5f78a2660b3e
Author: Johannes Schmid <jhs gnome org>
Date: Mon Nov 15 16:48:48 2010 +0100
gladeui: First try to fix offscreen drawing
gladeui/glade-design-layout.c | 31 +++++++++++++++----------------
gladeui/glade-placeholder.c | 3 ++-
2 files changed, 17 insertions(+), 17 deletions(-)
---
diff --git a/gladeui/glade-design-layout.c b/gladeui/glade-design-layout.c
index e2bf57a..c59e361 100644
--- a/gladeui/glade-design-layout.c
+++ b/gladeui/glade-design-layout.c
@@ -170,7 +170,6 @@ glade_design_layout_update_child (GladeDesignLayout *layout,
gtk_widget_size_allocate (child, allocation);
gtk_widget_queue_resize (GTK_WIDGET (layout));
-// gtk_window_resize (GTK_WINDOW (child), allocation->width, allocation->height);
}
@@ -452,7 +451,7 @@ glade_design_layout_get_preferred_height (GtkWidget *widget,
priv = GLADE_DESIGN_LAYOUT_GET_PRIVATE (widget);
*minimum = 0;
- *natural = 0;
+ *natural = 0;
child = GLADE_DESIGN_LAYOUT (widget)->child;
@@ -476,8 +475,8 @@ glade_design_layout_get_preferred_height (GtkWidget *widget,
}
- minimum += border_width * 2;
- natural += border_width * 2;
+ *minimum += border_width * 2;
+ *natural += border_width * 2;
}
@@ -519,8 +518,8 @@ glade_design_layout_get_preferred_width (GtkWidget *widget,
}
border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
- minimum += border_width * 2;
- natural += border_width * 2;
+ *minimum += border_width * 2;
+ *natural += border_width * 2;
}
static void
@@ -567,6 +566,7 @@ glade_design_layout_size_allocate (GtkWidget *widget, GtkAllocation *allocation)
gdk_window_resize (gtk_widget_get_window (child), child_allocation.width, child_allocation.height);
gtk_widget_size_allocate (child, &child_allocation);
+ g_message ("size: %d %d", child_allocation.width, child_allocation.height);
}
}
@@ -752,7 +752,7 @@ glade_design_layout_draw (GtkWidget *widget, cairo_t *cr)
window = gtk_widget_get_window (widget);
style = gtk_widget_get_style (widget);
gtk_widget_get_allocation (widget, &allocation);
-
+
child = layout->child;
/* draw a white widget background */
@@ -766,28 +766,27 @@ glade_design_layout_draw (GtkWidget *widget, cairo_t *cr)
if (child && gtk_widget_get_visible (child))
{
- GdkWindow* child_window = gtk_widget_get_window (child);
-
- w = gdk_window_get_width (child_window);
- h = gdk_window_get_height (child_window);
+ cairo_surface_t *surface =
+ gdk_offscreen_window_get_surface (gtk_widget_get_window (child));
+
+ w = gdk_window_get_width (gtk_widget_get_window (child));
+ h = gdk_window_get_height (gtk_widget_get_window (child));
x = allocation.x + border_width;
y = allocation.y + border_width;
g_message ("aaaa %d %d %d %d ", x, y, w, h);
-
- gdk_cairo_set_source_window (cr, child_window, 0, 0);
+ cairo_set_source_surface (cr, surface, 0, 0);
cairo_rectangle (cr, x + OUTLINE_WIDTH/2, y + OUTLINE_WIDTH/2, w, h);
- cairo_paint (cr);
+ cairo_fill (cr);
w += border_width + OUTLINE_WIDTH;
h += border_width + OUTLINE_WIDTH;
-
+
/* draw frame */
draw_frame (widget, cr, x, y, w, h);
}
-
return TRUE;
}
diff --git a/gladeui/glade-placeholder.c b/gladeui/glade-placeholder.c
index ac821f7..f9dc0ee 100644
--- a/gladeui/glade-placeholder.c
+++ b/gladeui/glade-placeholder.c
@@ -248,7 +248,7 @@ glade_placeholder_draw_background (GtkWidget* widget, cairo_t *cr)
cairo_t *cr2;
const gint width = 10;
const gint height = 10;
-
+
surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, width, height);
cr2 = cairo_create (surface);
cairo_surface_destroy (surface);
@@ -270,6 +270,7 @@ glade_placeholder_draw_background (GtkWidget* widget, cairo_t *cr)
cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST);
cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REPEAT);
cairo_paint (cr);
+ cairo_restore (cr);
}
static gboolean
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]