diff options
| author | Grégoire Jadi | 2013-07-25 15:33:11 +0200 |
|---|---|---|
| committer | Grégoire Jadi | 2013-07-25 15:33:11 +0200 |
| commit | c778c80daf46bb976c83aa1f7aa026b1c0334d61 (patch) | |
| tree | fc05fcf2e08ab38c42c8a68beb2eb7187de29245 /src/xwidget.c | |
| parent | bd0b9e4aa56f47f079d1d3e9b0b475d1368f02a7 (diff) | |
| download | emacs-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.c | 25 |
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 | ||
| 133 | struct xwidget_view* xwidget_view_lookup(struct xwidget* xw, struct window *w); | 133 | struct xwidget_view* xwidget_view_lookup(struct xwidget* xw, struct window *w); |
| 134 | Lisp_Object xwidget_spec_value ( Lisp_Object spec, Lisp_Object key, int *found); | 134 | Lisp_Object xwidget_spec_value ( Lisp_Object spec, Lisp_Object key, int *found); |
| 135 | gboolean xwidget_osr_damage_event_callback (GtkWidget *widget, GdkEventExpose *event, gpointer data) ; | 135 | gboolean offscreen_damage_event (GtkWidget *widget, GdkEvent *event, gpointer data); |
| 136 | gboolean webkit_osr_key_event_callback (GtkWidget *widget, GdkEventKey *event, gpointer data) ; | 136 | gboolean webkit_osr_key_event_callback (GtkWidget *widget, GdkEventKey *event, gpointer data) ; |
| 137 | void webkit_osr_document_load_finished_callback (WebKitWebView *webkitwebview, | 137 | void 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 */ |
| 454 | gboolean | 451 | gboolean |
| 455 | xwidget_osr_damage_event_callback (GtkWidget *widget, GdkEventExpose *event, gpointer data) | 452 | offscreen_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 */ |