diff options
| author | Grégoire Jadi | 2013-06-28 21:18:47 +0200 |
|---|---|---|
| committer | Grégoire Jadi | 2013-06-28 21:18:47 +0200 |
| commit | 7a76a0ab447afdba5851d1fb9e0c07db90389782 (patch) | |
| tree | fdbd52267057ac0ba8dc41b8cce5a422baf219e5 /src | |
| parent | 4b10003d09a7b2de49b133fb5992a59d9e915645 (diff) | |
| download | emacs-7a76a0ab447afdba5851d1fb9e0c07db90389782.tar.gz emacs-7a76a0ab447afdba5851d1fb9e0c07db90389782.zip | |
* src/xwidget.c: Fix access to w in xwidget_view (now a Lisp_Object)
* src/xwidget.h (xwidget_view): Convert member `w' to Lisp_Object.
Diffstat (limited to 'src')
| -rw-r--r-- | src/xwidget.c | 20 | ||||
| -rw-r--r-- | src/xwidget.h | 5 |
2 files changed, 9 insertions, 16 deletions
diff --git a/src/xwidget.c b/src/xwidget.c index f0f1b987005..a2ea996c56d 100644 --- a/src/xwidget.c +++ b/src/xwidget.c | |||
| @@ -985,7 +985,7 @@ xwidget_init_view (struct xwidget *xww, | |||
| 985 | }while( xv->initialized == 1); //TODO yeah this can infloop if there are MAX_WIDGETS on-screen | 985 | }while( xv->initialized == 1); //TODO yeah this can infloop if there are MAX_WIDGETS on-screen |
| 986 | 986 | ||
| 987 | xv->initialized = 1; | 987 | xv->initialized = 1; |
| 988 | xv->w = s->w; | 988 | XSETWINDOW(xv->w, s->w); |
| 989 | XSETXWIDGET(xv->model, xww); | 989 | XSETXWIDGET(xv->model, xww); |
| 990 | 990 | ||
| 991 | //widget creation | 991 | //widget creation |
| @@ -1136,7 +1136,7 @@ x_draw_xwidget_glyph_string (struct glyph_string *s) | |||
| 1136 | int box_line_vwidth = max (s->face->box_line_width, 0); | 1136 | int box_line_vwidth = max (s->face->box_line_width, 0); |
| 1137 | int height = s->height; | 1137 | int height = s->height; |
| 1138 | struct xwidget *xww = s->xwidget; | 1138 | struct xwidget *xww = s->xwidget; |
| 1139 | struct xwidget_view *xv = xwidget_view_lookup(xww, (s->w)); | 1139 | struct xwidget_view *xv = xwidget_view_lookup(xww, s->w); |
| 1140 | int clip_right; int clip_bottom; int clip_top; int clip_left; | 1140 | int clip_right; int clip_bottom; int clip_top; int clip_left; |
| 1141 | 1141 | ||
| 1142 | int x = s->x; | 1142 | int x = s->x; |
| @@ -1525,15 +1525,11 @@ DEFUN("xwidget-delete-zombies", Fxwidget_delete_zombies , Sxwidget_delete_zombie | |||
| 1525 | 1525 | ||
| 1526 | */ | 1526 | */ |
| 1527 | struct xwidget_view* xv = NULL; | 1527 | struct xwidget_view* xv = NULL; |
| 1528 | Lisp_Object w; | ||
| 1529 | for (int i = 0; i < MAX_XWIDGETS; i++){ | 1528 | for (int i = 0; i < MAX_XWIDGETS; i++){ |
| 1530 | xv = &xwidget_views[i]; | 1529 | xv = &xwidget_views[i]; |
| 1531 | if (xv->w != NULL) | 1530 | if(xv->initialized && !WINDOW_LIVE_P (xv->w)) { |
| 1532 | XSETWINDOW(w, xv->w); | 1531 | gtk_widget_destroy(GTK_WIDGET(xv->widgetwindow)); |
| 1533 | if(xv->initialized && (! (WINDOW_LIVE_P(w)))){ | 1532 | xv->initialized = 0; |
| 1534 | |||
| 1535 | gtk_widget_destroy(GTK_WIDGET(xv->widgetwindow)); | ||
| 1536 | xv->initialized = 0; | ||
| 1537 | } | 1533 | } |
| 1538 | } | 1534 | } |
| 1539 | } | 1535 | } |
| @@ -1703,7 +1699,7 @@ xwidget_view_delete_all_in_window (struct window *w) | |||
| 1703 | struct xwidget_view* xv = NULL; | 1699 | struct xwidget_view* xv = NULL; |
| 1704 | for (int i = 0; i < MAX_XWIDGETS; i++){ | 1700 | for (int i = 0; i < MAX_XWIDGETS; i++){ |
| 1705 | xv = &xwidget_views[i]; | 1701 | xv = &xwidget_views[i]; |
| 1706 | if(xv->initialized && xv->w == w){ | 1702 | if(xv->initialized && XWINDOW (xv->w) == w){ |
| 1707 | gtk_widget_destroy(GTK_WIDGET(xv->widgetwindow)); | 1703 | gtk_widget_destroy(GTK_WIDGET(xv->widgetwindow)); |
| 1708 | xv->initialized = 0; | 1704 | xv->initialized = 0; |
| 1709 | } | 1705 | } |
| @@ -1718,7 +1714,7 @@ xwidget_view_lookup (struct xwidget* xw, struct window *w) | |||
| 1718 | struct xwidget_view* xv = NULL; | 1714 | struct xwidget_view* xv = NULL; |
| 1719 | for (int i = 0; i < MAX_XWIDGETS; i++){ | 1715 | for (int i = 0; i < MAX_XWIDGETS; i++){ |
| 1720 | xv = &xwidget_views[i]; | 1716 | xv = &xwidget_views[i]; |
| 1721 | if (xv->initialized && (XXWIDGET (xv->model) == xw) && (xv->w == w)) | 1717 | if (xv->initialized && (XXWIDGET (xv->model) == xw) && (XWINDOW (xv->w) == w)) |
| 1722 | return xv; | 1718 | return xv; |
| 1723 | } | 1719 | } |
| 1724 | return NULL; /* we didnt find a matching view */ | 1720 | return NULL; /* we didnt find a matching view */ |
| @@ -1835,7 +1831,7 @@ xwidget_end_redisplay (struct window *w, struct glyph_matrix *matrix) | |||
| 1835 | struct xwidget_view* xv = &xwidget_views[i]; | 1831 | struct xwidget_view* xv = &xwidget_views[i]; |
| 1836 | 1832 | ||
| 1837 | //"touched" is only meaningful for the current window, so disregard other views | 1833 | //"touched" is only meaningful for the current window, so disregard other views |
| 1838 | if (xv->initialized && ( xv->w == w)) | 1834 | if (xv->initialized && (XWINDOW (xv->w) == w)) |
| 1839 | { | 1835 | { |
| 1840 | if (xwidget_touched(xv)) | 1836 | if (xwidget_touched(xv)) |
| 1841 | xwidget_show_view (xv); | 1837 | xwidget_show_view (xv); |
diff --git a/src/xwidget.h b/src/xwidget.h index 81a5deacca3..c1ff13ee396 100644 --- a/src/xwidget.h +++ b/src/xwidget.h | |||
| @@ -46,15 +46,12 @@ struct xwidget{ | |||
| 46 | struct xwidget_view { | 46 | struct xwidget_view { |
| 47 | struct vectorlike_header header; | 47 | struct vectorlike_header header; |
| 48 | Lisp_Object model; | 48 | Lisp_Object model; |
| 49 | 49 | Lisp_Object w; | |
| 50 | 50 | ||
| 51 | //here ends the lisp part. | 51 | //here ends the lisp part. |
| 52 | //"redisplayed" is the marker field | 52 | //"redisplayed" is the marker field |
| 53 | int redisplayed; //if touched by redisplay | 53 | int redisplayed; //if touched by redisplay |
| 54 | 54 | ||
| 55 | |||
| 56 | struct window *w; //TODO should be lisp | ||
| 57 | |||
| 58 | int hidden;//if the "live" instance isnt drawn | 55 | int hidden;//if the "live" instance isnt drawn |
| 59 | 56 | ||
| 60 | int initialized; | 57 | int initialized; |