+ GdkPixmap *Pixmap = gdk_pixmap_new(widget->window,
+ widget->allocation.width,
+ widget->allocation.height,
+ -1);
+
+ if(Drawing->Pixmap == NULL)
+ {
+ Drawing->Pixmap = gdk_pixmap_new(widget->window,
+ widget->allocation.width,
+ widget->allocation.height,
+ -1);
+ Drawing->width = widget->allocation.width;
+ Drawing->height = widget->allocation.height;
+
+ /* Initial data request */
+ Drawing_Data_Request(Drawing, Drawing->Pixmap, 0, 0,
+ widget->allocation.width,
+ widget->allocation.height);
+
+ }
+// /* Draw empty background */
+// gdk_draw_rectangle (Pixmap,
+// widget->style->black_gc,
+// TRUE,
+// 0, 0,
+// widget->allocation.width,
+// widget->allocation.height);
+
+ /* Copy old data to new pixmap */
+ gdk_draw_drawable (Pixmap,
+ widget->style->white_gc,
+ Drawing->Pixmap,
+ 0, 0,
+ 0, 0,
+ -1, -1);
+
+ /* Request data for missing space */
+ Drawing_Data_Request(Drawing, Pixmap, Drawing->width, 0,
+ widget->allocation.width - Drawing->width,
+ widget->allocation.height);
+ Drawing_Data_Request(Drawing, Pixmap, 0, Drawing->height,
+ Drawing->width,
+ widget->allocation.height - Drawing->height);
+
+// gdk_draw_rectangle (Pixmap,
+// widget->style->white_gc,
+// TRUE,
+// Drawing->width, 0,
+// widget->allocation.width -
+// Drawing->width,
+// widget->allocation.height);
+
+// gdk_draw_rectangle (Pixmap,
+// widget->style->white_gc,
+// TRUE,
+// 0, Drawing->height,
+// Drawing->width, // do not overlap
+// widget->allocation.height -
+// Drawing->height);
+
+
+
+ g_critical("drawing configure event");
+
+
+ if (Drawing->Pixmap)
+ gdk_pixmap_unref(Drawing->Pixmap);
+
+ Drawing->Pixmap = Pixmap;
+ Drawing->width = widget->allocation.width;
+ Drawing->height = widget->allocation.height;
+
+ return TRUE;
+}
+
+
+/* Redraw the screen from the backing pixmap */
+static gboolean
+expose_event( GtkWidget *widget, GdkEventExpose *event, gpointer user_data )
+{
+ Drawing_t *Drawing = (Drawing_t*)user_data;
+ g_critical("drawing expose event");
+
+ gdk_draw_pixmap(widget->window,
+ widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
+ Drawing->Pixmap,
+ event->area.x, event->area.y,
+ event->area.x, event->area.y,
+ event->area.width, event->area.height);
+
+ return FALSE;
+}
+
+Drawing_t *Drawing_construct(void)
+{