aboutsummaryrefslogtreecommitdiffstats
path: root/src/xwidget.c
diff options
context:
space:
mode:
authorGrégoire Jadi2013-07-25 15:33:11 +0200
committerGrégoire Jadi2013-07-25 15:33:11 +0200
commitc778c80daf46bb976c83aa1f7aa026b1c0334d61 (patch)
treefc05fcf2e08ab38c42c8a68beb2eb7187de29245 /src/xwidget.c
parentbd0b9e4aa56f47f079d1d3e9b0b475d1368f02a7 (diff)
downloademacs-c778c80daf46bb976c83aa1f7aa026b1c0334d61.tar.gz
emacs-c778c80daf46bb976c83aa1f7aa026b1c0334d61.zip
* src/xwidget.c: Redraw only the views on damage-event.
Diffstat (limited to 'src/xwidget.c')
-rw-r--r--src/xwidget.c25
1 files changed, 6 insertions, 19 deletions
diff --git a/src/xwidget.c b/src/xwidget.c
index 3d7acee9605..878070dda01 100644
--- a/src/xwidget.c
+++ b/src/xwidget.c
@@ -132,7 +132,7 @@ extern Lisp_Object QCwidth, QCheight;
132 132
133struct xwidget_view* xwidget_view_lookup(struct xwidget* xw, struct window *w); 133struct xwidget_view* xwidget_view_lookup(struct xwidget* xw, struct window *w);
134Lisp_Object xwidget_spec_value ( Lisp_Object spec, Lisp_Object key, int *found); 134Lisp_Object xwidget_spec_value ( Lisp_Object spec, Lisp_Object key, int *found);
135gboolean xwidget_osr_damage_event_callback (GtkWidget *widget, GdkEventExpose *event, gpointer data) ; 135gboolean offscreen_damage_event (GtkWidget *widget, GdkEvent *event, gpointer data);
136gboolean webkit_osr_key_event_callback (GtkWidget *widget, GdkEventKey *event, gpointer data) ; 136gboolean webkit_osr_key_event_callback (GtkWidget *widget, GdkEventKey *event, gpointer data) ;
137void webkit_osr_document_load_finished_callback (WebKitWebView *webkitwebview, 137void webkit_osr_document_load_finished_callback (WebKitWebView *webkitwebview,
138 WebKitWebFrame *arg1, 138 WebKitWebFrame *arg1,
@@ -247,9 +247,6 @@ TYPE is a symbol which can take one of the following values:
247 g_object_set_data (G_OBJECT (xw->widgetwindow_osr), XG_XWIDGET, (gpointer) (xw)); 247 g_object_set_data (G_OBJECT (xw->widgetwindow_osr), XG_XWIDGET, (gpointer) (xw));
248 248
249 /* signals */ 249 /* signals */
250 g_signal_connect (G_OBJECT (xw->widgetwindow_osr), "damage-event",
251 G_CALLBACK (xwidget_osr_damage_event_callback), NULL);
252
253 if (EQ(xw->type, Qwebkit_osr)) { 250 if (EQ(xw->type, Qwebkit_osr)) {
254 g_signal_connect (G_OBJECT (xw->widget_osr), 251 g_signal_connect (G_OBJECT (xw->widget_osr),
255 "document-load-finished", 252 "document-load-finished",
@@ -452,23 +449,10 @@ xwidget_slider_changed (GtkRange *range,
452/* when the off-screen webkit master view changes this signal is called. 449/* when the off-screen webkit master view changes this signal is called.
453 it copies the bitmap from the off-screen webkit instance */ 450 it copies the bitmap from the off-screen webkit instance */
454gboolean 451gboolean
455xwidget_osr_damage_event_callback (GtkWidget *widget, GdkEventExpose *event, gpointer data) 452offscreen_damage_event (GtkWidget *widget, GdkEvent *event, gpointer data)
456{ 453{
457 //TODO this is wrong! should just queu a redraw of onscreen widget 454 //TODO this is wrong! should just queu a redraw of onscreen widget
458 struct xwidget* xw = (struct xwidget*) g_object_get_data (G_OBJECT (widget), XG_XWIDGET); 455 gtk_widget_queue_draw (GTK_WIDGET (data));
459 struct xwidget_view* xv;
460 //webkit_osr_redraw_child(xw, widget);
461 printf ("damage\n");
462
463 for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail); tail = XCDR (tail))
464 {
465 if (XWIDGET_VIEW_P (XCAR (tail))) {
466 xv = XXWIDGET_VIEW (XCAR (tail));
467 if (XXWIDGET (xv->model) == xw)
468 gtk_widget_queue_draw (xv->widget); //redraw all views, the master has changed
469 }
470 }
471
472 return FALSE; 456 return FALSE;
473} 457}
474 458
@@ -1013,6 +997,9 @@ xwidget_init_view (struct xwidget *xww,
1013 | GDK_BUTTON_RELEASE_MASK 997 | GDK_BUTTON_RELEASE_MASK
1014 | GDK_POINTER_MOTION_MASK); 998 | GDK_POINTER_MOTION_MASK);
1015 999
1000 /* Draw the view on damage-event */
1001 g_signal_connect (G_OBJECT (xww->widgetwindow_osr), "damage-event",
1002 G_CALLBACK (offscreen_damage_event), xv->widget);
1016 1003
1017 if (EQ(xww->type, Qwebkit_osr)){ 1004 if (EQ(xww->type, Qwebkit_osr)){
1018 /* ///xwgir debug */ 1005 /* ///xwgir debug */