aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGrégoire Jadi2013-06-28 21:18:47 +0200
committerGrégoire Jadi2013-06-28 21:18:47 +0200
commit7a76a0ab447afdba5851d1fb9e0c07db90389782 (patch)
treefdbd52267057ac0ba8dc41b8cce5a422baf219e5 /src
parent4b10003d09a7b2de49b133fb5992a59d9e915645 (diff)
downloademacs-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.c20
-rw-r--r--src/xwidget.h5
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{
46struct xwidget_view { 46struct 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;