diff options
| author | Grégoire Jadi | 2013-06-28 17:16:27 +0200 |
|---|---|---|
| committer | Grégoire Jadi | 2013-06-28 17:16:27 +0200 |
| commit | 098e59dc13e2c57c766732bbdef6dfb817b932b7 (patch) | |
| tree | 3cd01399cb605d29b2bc9df09e217bae3f364e49 | |
| parent | da95bc007d161d6d901b7600120a97fd2f54ce4b (diff) | |
| download | emacs-098e59dc13e2c57c766732bbdef6dfb817b932b7.tar.gz emacs-098e59dc13e2c57c766732bbdef6dfb817b932b7.zip | |
* src/xwidget.h (xwidget_view): Convert member `model' to Lisp_Object.
(XXWIDGET_VIEW_P, XXWIDGET_VIEW): Add standard macros to manipulate xwidget_view.
* src/xwidget.c: Fix access to model in xwidget_view (now a Lisp_Object).
| -rw-r--r-- | src/xwidget.c | 14 | ||||
| -rw-r--r-- | src/xwidget.h | 8 |
2 files changed, 13 insertions, 9 deletions
diff --git a/src/xwidget.c b/src/xwidget.c index 57d27a2b3c7..2f5e423ce42 100644 --- a/src/xwidget.c +++ b/src/xwidget.c | |||
| @@ -444,7 +444,7 @@ xwidget_slider_changed (GtkRange *range, | |||
| 444 | for (int i = 0; i < MAX_XWIDGETS; i++) | 444 | for (int i = 0; i < MAX_XWIDGETS; i++) |
| 445 | { | 445 | { |
| 446 | xv = &xwidget_views[i]; | 446 | xv = &xwidget_views[i]; |
| 447 | if(xv->initialized && xvp->model == xv->model){ | 447 | if(xv->initialized && EQ (xvp->model, xv->model)){ |
| 448 | g_signal_handler_block( xv->widget,xv->handler_id); | 448 | g_signal_handler_block( xv->widget,xv->handler_id); |
| 449 | } | 449 | } |
| 450 | } | 450 | } |
| @@ -452,7 +452,7 @@ xwidget_slider_changed (GtkRange *range, | |||
| 452 | for (int i = 0; i < MAX_XWIDGETS; i++) | 452 | for (int i = 0; i < MAX_XWIDGETS; i++) |
| 453 | { | 453 | { |
| 454 | xv = &xwidget_views[i]; | 454 | xv = &xwidget_views[i]; |
| 455 | if(xv->initialized && xvp->model == xv->model){ | 455 | if(xv->initialized && EQ (xvp->model, xv->model)){ |
| 456 | gtk_range_set_value(GTK_RANGE(xv->widget), v); | 456 | gtk_range_set_value(GTK_RANGE(xv->widget), v); |
| 457 | g_signal_handler_unblock( xv->widget,xv->handler_id); | 457 | g_signal_handler_unblock( xv->widget,xv->handler_id); |
| 458 | } | 458 | } |
| @@ -474,7 +474,7 @@ xwidget_osr_damage_event_callback (GtkWidget *widget, GdkEventExpose *event, gpo | |||
| 474 | for (int i = 0; i < MAX_XWIDGETS; i++)//todo mvc refactor | 474 | for (int i = 0; i < MAX_XWIDGETS; i++)//todo mvc refactor |
| 475 | { | 475 | { |
| 476 | xv = &xwidget_views[i]; | 476 | xv = &xwidget_views[i]; |
| 477 | if(xv->initialized && xv->model == xw){ | 477 | if(xv->initialized && XXWIDGET (xv->model) == xw){ |
| 478 | gtk_widget_queue_draw (xv->widget); //redraw all views, the master has changed | 478 | gtk_widget_queue_draw (xv->widget); //redraw all views, the master has changed |
| 479 | } | 479 | } |
| 480 | } | 480 | } |
| @@ -958,7 +958,7 @@ xwidget_osr_event_set_embedder (GtkWidget *widget, | |||
| 958 | GdkEvent *event, | 958 | GdkEvent *event, |
| 959 | gpointer xv) | 959 | gpointer xv) |
| 960 | { | 960 | { |
| 961 | xwidget_set_embedder_view(((struct xwidget_view*) xv)->model, | 961 | xwidget_set_embedder_view(XXWIDGET (((struct xwidget_view*) xv)->model), |
| 962 | (struct xwidget_view*) xv); | 962 | (struct xwidget_view*) xv); |
| 963 | } | 963 | } |
| 964 | 964 | ||
| @@ -986,7 +986,7 @@ xwidget_init_view (struct xwidget *xww, | |||
| 986 | 986 | ||
| 987 | xv->initialized = 1; | 987 | xv->initialized = 1; |
| 988 | xv->w = s->w; | 988 | xv->w = s->w; |
| 989 | xv->model = xww; | 989 | XSETXWIDGET(xv->model, xww); |
| 990 | 990 | ||
| 991 | //widget creation | 991 | //widget creation |
| 992 | if(EQ(xww->type, Qbutton)) | 992 | if(EQ(xww->type, Qbutton)) |
| @@ -1380,7 +1380,7 @@ DEFUN ("xwidget-resize", Fxwidget_resize, Sxwidget_resize, 3, 3, 0, doc: | |||
| 1380 | for (int i = 0; i < MAX_XWIDGETS; i++) //TODO MVC refactor lazy linear search | 1380 | for (int i = 0; i < MAX_XWIDGETS; i++) //TODO MVC refactor lazy linear search |
| 1381 | { | 1381 | { |
| 1382 | xv = &xwidget_views[i]; | 1382 | xv = &xwidget_views[i]; |
| 1383 | if(xv->initialized && xv->model == xw){ | 1383 | if(xv->initialized && XXWIDGET (xv->model) == xw){ |
| 1384 | gtk_layout_set_size (GTK_LAYOUT (xv->widgetwindow), xw->width, xw->height); | 1384 | gtk_layout_set_size (GTK_LAYOUT (xv->widgetwindow), xw->width, xw->height); |
| 1385 | gtk_widget_set_size_request (GTK_WIDGET (xv->widget), xw->width, xw->height); | 1385 | gtk_widget_set_size_request (GTK_WIDGET (xv->widget), xw->width, xw->height); |
| 1386 | } | 1386 | } |
| @@ -1718,7 +1718,7 @@ xwidget_view_lookup (struct xwidget* xw, struct window *w) | |||
| 1718 | struct xwidget_view* xv = NULL; | 1718 | struct xwidget_view* xv = NULL; |
| 1719 | for (int i = 0; i < MAX_XWIDGETS; i++){ | 1719 | for (int i = 0; i < MAX_XWIDGETS; i++){ |
| 1720 | xv = &xwidget_views[i]; | 1720 | xv = &xwidget_views[i]; |
| 1721 | if (xv->initialized && (xv->model == xw) && (xv->w == w)) | 1721 | if (xv->initialized && (XXWIDGET (xv->model) == xw) && (xv->w == w)) |
| 1722 | return xv; | 1722 | return xv; |
| 1723 | } | 1723 | } |
| 1724 | return NULL; /* we didnt find a matching view */ | 1724 | return NULL; /* we didnt find a matching view */ |
diff --git a/src/xwidget.h b/src/xwidget.h index 530b087796c..eb5bc60c788 100644 --- a/src/xwidget.h +++ b/src/xwidget.h | |||
| @@ -43,9 +43,9 @@ struct xwidget{ | |||
| 43 | 43 | ||
| 44 | 44 | ||
| 45 | //struct for each xwidget view | 45 | //struct for each xwidget view |
| 46 | struct xwidget_view{ | 46 | struct xwidget_view { |
| 47 | struct vectorlike_header header; | 47 | struct vectorlike_header header; |
| 48 | struct xwidget* model; //TODO should be lisp | 48 | Lisp_Object model; |
| 49 | 49 | ||
| 50 | 50 | ||
| 51 | //here ends the lisp part. | 51 | //here ends the lisp part. |
| @@ -72,10 +72,14 @@ struct xwidget_view{ | |||
| 72 | 72 | ||
| 73 | /* Test for xwidget (xwidget . spec) (car must be the symbol xwidget)*/ | 73 | /* Test for xwidget (xwidget . spec) (car must be the symbol xwidget)*/ |
| 74 | #define XWIDGETP(x) (CONSP (x) && EQ (XCAR (x), Qxwidget)) | 74 | #define XWIDGETP(x) (CONSP (x) && EQ (XCAR (x), Qxwidget)) |
| 75 | |||
| 75 | /* Test for xwidget pseudovector*/ | 76 | /* Test for xwidget pseudovector*/ |
| 76 | #define XXWIDGETP(x) PSEUDOVECTORP (x, PVEC_XWIDGET) | 77 | #define XXWIDGETP(x) PSEUDOVECTORP (x, PVEC_XWIDGET) |
| 77 | #define XXWIDGET(a) (eassert (XXWIDGETP(a)),(struct xwidget *) XPNTR(a)) | 78 | #define XXWIDGET(a) (eassert (XXWIDGETP(a)),(struct xwidget *) XPNTR(a)) |
| 78 | 79 | ||
| 80 | /* Test for xwidget_view pseudovector */ | ||
| 81 | #define XXWIDGET_VIEW_P(x) PSEUDOVECTORP (x, PVEC_XWIDGET_VIEW) | ||
| 82 | #define XXWIDGET_VIEW(a) (eassert (XXWIDGET_VIEW_P(a)),(struct xwidget_view *) XPNTR(a)) | ||
| 79 | 83 | ||
| 80 | struct xwidget_type | 84 | struct xwidget_type |
| 81 | { | 85 | { |