diff options
| author | Grégoire Jadi | 2013-07-16 19:39:18 +0200 |
|---|---|---|
| committer | Grégoire Jadi | 2013-07-16 19:39:18 +0200 |
| commit | 54eb6c107157fe4b5fb75f01db3223b172477425 (patch) | |
| tree | 5683545a95fea13a5a8bb7a80fdfb8120fc90d7a /src | |
| parent | a9ec66210d28b7121f8a7846f4653305269c2253 (diff) | |
| download | emacs-54eb6c107157fe4b5fb75f01db3223b172477425.tar.gz emacs-54eb6c107157fe4b5fb75f01db3223b172477425.zip | |
* src/xwidget.h src/xwidget.c (valid_xwidget_spec_p): Renamed
`valid_xwidget_p' to `valid_xwidget_p'.
(XWIDGETP): Rename `XXWIDGETP' to `XWIDGETP' and `XXWIDGET_VIEW_P' to
`XWIDGET_VIEW_P'. The old `XWIDGETP' is now implemented solely in
`valid_xwidget_spec_p'.
(CHECK_XWIDGET): New macro to check whether the argument is a xwidget.
(CHECK_XWIDGET_VIEW): New macro to check whether the argument is a
xwidget_view.
* src/print.c src/xdisp.c: Take into account the new names.
Diffstat (limited to 'src')
| -rw-r--r-- | src/print.c | 4 | ||||
| -rw-r--r-- | src/xdisp.c | 6 | ||||
| -rw-r--r-- | src/xwidget.c | 72 | ||||
| -rw-r--r-- | src/xwidget.h | 20 |
4 files changed, 57 insertions, 45 deletions
diff --git a/src/print.c b/src/print.c index 798a132fc61..f4062f6f48f 100644 --- a/src/print.c +++ b/src/print.c | |||
| @@ -1766,12 +1766,12 @@ print_object (Lisp_Object obj, Lisp_Object printcharfun, bool escapeflag) | |||
| 1766 | PRINTCHAR ('>'); | 1766 | PRINTCHAR ('>'); |
| 1767 | } | 1767 | } |
| 1768 | #ifdef HAVE_XWIDGETS | 1768 | #ifdef HAVE_XWIDGETS |
| 1769 | else if (XXWIDGETP (obj)) | 1769 | else if (XWIDGETP (obj)) |
| 1770 | { | 1770 | { |
| 1771 | strout ("#<xwidget ", -1, -1, printcharfun); | 1771 | strout ("#<xwidget ", -1, -1, printcharfun); |
| 1772 | PRINTCHAR ('>'); | 1772 | PRINTCHAR ('>'); |
| 1773 | } | 1773 | } |
| 1774 | else if (XXWIDGET_VIEW_P (obj)) | 1774 | else if (XWIDGET_VIEW_P (obj)) |
| 1775 | { | 1775 | { |
| 1776 | strout ("#<xwidget-view ", -1, -1, printcharfun); | 1776 | strout ("#<xwidget-view ", -1, -1, printcharfun); |
| 1777 | PRINTCHAR ('>'); | 1777 | PRINTCHAR ('>'); |
diff --git a/src/xdisp.c b/src/xdisp.c index 9aae37d48c1..ab2e065d049 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -5051,7 +5051,7 @@ handle_single_display_spec (struct it *it, Lisp_Object spec, Lisp_Object object, | |||
| 5051 | #endif /* not HAVE_WINDOW_SYSTEM */ | 5051 | #endif /* not HAVE_WINDOW_SYSTEM */ |
| 5052 | || (CONSP (value) && EQ (XCAR (value), Qspace)) | 5052 | || (CONSP (value) && EQ (XCAR (value), Qspace)) |
| 5053 | #ifdef HAVE_XWIDGETS | 5053 | #ifdef HAVE_XWIDGETS |
| 5054 | || XWIDGETP(value) | 5054 | || valid_xwidget_spec_p(value) |
| 5055 | #endif | 5055 | #endif |
| 5056 | ); | 5056 | ); |
| 5057 | 5057 | ||
| @@ -5129,7 +5129,7 @@ handle_single_display_spec (struct it *it, Lisp_Object spec, Lisp_Object object, | |||
| 5129 | retval = 1 + (it->area == TEXT_AREA); | 5129 | retval = 1 + (it->area == TEXT_AREA); |
| 5130 | } | 5130 | } |
| 5131 | #ifdef HAVE_XWIDGETS | 5131 | #ifdef HAVE_XWIDGETS |
| 5132 | else if (XWIDGETP(value)) | 5132 | else if (valid_xwidget_spec_p(value)) |
| 5133 | { | 5133 | { |
| 5134 | //printf("handle_single_display_spec: im an xwidget!!\n"); | 5134 | //printf("handle_single_display_spec: im an xwidget!!\n"); |
| 5135 | it->what = IT_XWIDGET; | 5135 | it->what = IT_XWIDGET; |
| @@ -22879,7 +22879,7 @@ calc_pixel_width_or_height (double *res, struct it *it, Lisp_Object prop, | |||
| 22879 | return OK_PIXELS (width_p ? img->width : img->height); | 22879 | return OK_PIXELS (width_p ? img->width : img->height); |
| 22880 | } | 22880 | } |
| 22881 | #ifdef HAVE_XWIDGETS | 22881 | #ifdef HAVE_XWIDGETS |
| 22882 | if (FRAME_WINDOW_P (it->f) && valid_xwidget_p (prop)) | 22882 | if (FRAME_WINDOW_P (it->f) && valid_xwidget_spec_p (prop)) |
| 22883 | { | 22883 | { |
| 22884 | printf("calc_pixel_width_or_height: return dummy size FIXME\n"); | 22884 | printf("calc_pixel_width_or_height: return dummy size FIXME\n"); |
| 22885 | return OK_PIXELS (width_p ? 100 : 100); | 22885 | return OK_PIXELS (width_p ? 100 : 100); |
diff --git a/src/xwidget.c b/src/xwidget.c index 21cf47b8a7a..22c8e69ca33 100644 --- a/src/xwidget.c +++ b/src/xwidget.c | |||
| @@ -124,6 +124,7 @@ Lisp_Object Qxwidget_send_keyboard_event; | |||
| 124 | Lisp_Object QCxwgir_class; | 124 | Lisp_Object QCxwgir_class; |
| 125 | Lisp_Object Qbutton, Qtoggle, Qslider, Qsocket, Qsocket_osr, Qcairo, Qxwgir, | 125 | Lisp_Object Qbutton, Qtoggle, Qslider, Qsocket, Qsocket_osr, Qcairo, Qxwgir, |
| 126 | Qwebkit_osr, QCplist; | 126 | Qwebkit_osr, QCplist; |
| 127 | Lisp_Object Qxwidgetp, Qxwidget_view_p; | ||
| 127 | 128 | ||
| 128 | 129 | ||
| 129 | extern Lisp_Object QCtype; | 130 | extern Lisp_Object QCtype; |
| @@ -313,7 +314,7 @@ BUFFER may be a buffer or the name of one. | |||
| 313 | for (tail = Vxwidget_list; CONSP (tail); tail = XCDR (tail)) | 314 | for (tail = Vxwidget_list; CONSP (tail); tail = XCDR (tail)) |
| 314 | { | 315 | { |
| 315 | xw = XCAR (tail); | 316 | xw = XCAR (tail); |
| 316 | if (XXWIDGETP (xw) && EQ (Fxwidget_buffer (xw), buffer)) | 317 | if (XWIDGETP (xw) && EQ (Fxwidget_buffer (xw), buffer)) |
| 317 | xw_list = Fcons (xw, xw_list); | 318 | xw_list = Fcons (xw, xw_list); |
| 318 | } | 319 | } |
| 319 | return xw_list; | 320 | return xw_list; |
| @@ -434,7 +435,7 @@ xwidget_slider_changed (GtkRange *range, | |||
| 434 | 435 | ||
| 435 | for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail); tail = XCDR (tail)) | 436 | for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail); tail = XCDR (tail)) |
| 436 | { | 437 | { |
| 437 | if (XXWIDGET_VIEW_P (XCAR (tail))) { | 438 | if (XWIDGET_VIEW_P (XCAR (tail))) { |
| 438 | xv = XXWIDGET_VIEW (XCAR (tail)); | 439 | xv = XXWIDGET_VIEW (XCAR (tail)); |
| 439 | if (EQ (xvp->model, xv->model)) { | 440 | if (EQ (xvp->model, xv->model)) { |
| 440 | //block sibling views signal handlers | 441 | //block sibling views signal handlers |
| @@ -462,7 +463,7 @@ xwidget_osr_damage_event_callback (GtkWidget *widget, GdkEventExpose *event, gpo | |||
| 462 | 463 | ||
| 463 | for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail); tail = XCDR (tail)) | 464 | for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail); tail = XCDR (tail)) |
| 464 | { | 465 | { |
| 465 | if (XXWIDGET_VIEW_P (XCAR (tail))) { | 466 | if (XWIDGET_VIEW_P (XCAR (tail))) { |
| 466 | xv = XXWIDGET_VIEW (XCAR (tail)); | 467 | xv = XXWIDGET_VIEW (XCAR (tail)); |
| 467 | if (XXWIDGET (xv->model) == xw) | 468 | if (XXWIDGET (xv->model) == xw) |
| 468 | gtk_widget_queue_draw (xv->widget); //redraw all views, the master has changed | 469 | gtk_widget_queue_draw (xv->widget); //redraw all views, the master has changed |
| @@ -819,13 +820,13 @@ DEFUN ("xwgir-xwidget-call-method", Fxwgir_xwidget_call_method, Sxwgir_xwidget_ | |||
| 819 | doc: /* call xwidget object method.*/) | 820 | doc: /* call xwidget object method.*/) |
| 820 | (Lisp_Object xwidget, Lisp_Object method, Lisp_Object arguments) | 821 | (Lisp_Object xwidget, Lisp_Object method, Lisp_Object arguments) |
| 821 | { | 822 | { |
| 823 | CHECK_XWIDGET (xwidget); | ||
| 822 | GError *error = NULL; | 824 | GError *error = NULL; |
| 823 | GIArgument return_value; | 825 | GIArgument return_value; |
| 824 | GIArgument in_args[20]; | 826 | GIArgument in_args[20]; |
| 825 | 827 | ||
| 826 | 828 | ||
| 827 | struct xwidget* xw; | 829 | struct xwidget* xw; |
| 828 | if(!XXWIDGETP(xwidget)) {printf("ERROR not an xwidget\n"); return Qnil;}; | ||
| 829 | if (NILP (xwidget)) { printf("ERROR xwidget nil\n"); return Qnil; }; | 830 | if (NILP (xwidget)) { printf("ERROR xwidget nil\n"); return Qnil; }; |
| 830 | xw = XXWIDGET(xwidget); | 831 | xw = XXWIDGET(xwidget); |
| 831 | if(NULL == xw) printf("ERROR xw is 0\n"); | 832 | if(NULL == xw) printf("ERROR xw is 0\n"); |
| @@ -1190,7 +1191,7 @@ x_draw_xwidget_glyph_string (struct glyph_string *s) | |||
| 1190 | //FUGLY macro that checks WEBKIT_IS_WEB_VIEW(xw->widget_osr) first | 1191 | //FUGLY macro that checks WEBKIT_IS_WEB_VIEW(xw->widget_osr) first |
| 1191 | #define WEBKIT_FN_INIT() \ | 1192 | #define WEBKIT_FN_INIT() \ |
| 1192 | struct xwidget* xw; \ | 1193 | struct xwidget* xw; \ |
| 1193 | if(!XXWIDGETP(xwidget)) {printf("ERROR not an xwidget\n"); return Qnil;}; \ | 1194 | CHECK_XWIDGET (xwidget); \ |
| 1194 | if(NILP (xwidget)) {printf("ERROR xwidget nil\n"); return Qnil;}; \ | 1195 | if(NILP (xwidget)) {printf("ERROR xwidget nil\n"); return Qnil;}; \ |
| 1195 | xw = XXWIDGET(xwidget); \ | 1196 | xw = XXWIDGET(xwidget); \ |
| 1196 | if(NULL == xw) printf("ERROR xw is 0\n"); \ | 1197 | if(NULL == xw) printf("ERROR xw is 0\n"); \ |
| @@ -1327,6 +1328,7 @@ DEFUN ("xwidget-resize", Fxwidget_resize, Sxwidget_resize, 3, 3, 0, doc: | |||
| 1327 | /* resize xwidgets*/) | 1328 | /* resize xwidgets*/) |
| 1328 | (Lisp_Object xwidget, Lisp_Object new_width, Lisp_Object new_height) | 1329 | (Lisp_Object xwidget, Lisp_Object new_width, Lisp_Object new_height) |
| 1329 | { | 1330 | { |
| 1331 | CHECK_XWIDGET (xwidget); | ||
| 1330 | struct xwidget* xw = XXWIDGET(xwidget); | 1332 | struct xwidget* xw = XXWIDGET(xwidget); |
| 1331 | struct xwidget_view *xv; | 1333 | struct xwidget_view *xv; |
| 1332 | int w, h; | 1334 | int w, h; |
| @@ -1358,7 +1360,7 @@ DEFUN ("xwidget-resize", Fxwidget_resize, Sxwidget_resize, 3, 3, 0, doc: | |||
| 1358 | 1360 | ||
| 1359 | for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail); tail = XCDR (tail)) //TODO MVC refactor lazy linear search | 1361 | for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail); tail = XCDR (tail)) //TODO MVC refactor lazy linear search |
| 1360 | { | 1362 | { |
| 1361 | if (XXWIDGET_VIEW_P (XCAR (tail))) { | 1363 | if (XWIDGET_VIEW_P (XCAR (tail))) { |
| 1362 | xv = XXWIDGET_VIEW (XCAR (tail)); | 1364 | xv = XXWIDGET_VIEW (XCAR (tail)); |
| 1363 | if(XXWIDGET (xv->model) == xw) { | 1365 | if(XXWIDGET (xv->model) == xw) { |
| 1364 | gtk_layout_set_size (GTK_LAYOUT (xv->widgetwindow), xw->width, xw->height); | 1366 | gtk_layout_set_size (GTK_LAYOUT (xv->widgetwindow), xw->width, xw->height); |
| @@ -1374,6 +1376,7 @@ DEFUN ("xwidget-size-request", Fxwidget_size_request, Sxwidget_size_request, 1, | |||
| 1374 | /* desired size (TODO crashes if arg not osr widget)*/) | 1376 | /* desired size (TODO crashes if arg not osr widget)*/) |
| 1375 | (Lisp_Object xwidget) | 1377 | (Lisp_Object xwidget) |
| 1376 | { | 1378 | { |
| 1379 | CHECK_XWIDGET (xwidget); | ||
| 1377 | GtkRequisition requisition; | 1380 | GtkRequisition requisition; |
| 1378 | Lisp_Object rv; | 1381 | Lisp_Object rv; |
| 1379 | gtk_widget_size_request(XXWIDGET(xwidget)->widget_osr, &requisition); | 1382 | gtk_widget_size_request(XXWIDGET(xwidget)->widget_osr, &requisition); |
| @@ -1391,9 +1394,17 @@ DEFUN ("xwidgetp", Fxwidgetp, Sxwidgetp, 1, 1, 0, | |||
| 1391 | return XWIDGETP (object) ? Qt : Qnil; | 1394 | return XWIDGETP (object) ? Qt : Qnil; |
| 1392 | } | 1395 | } |
| 1393 | 1396 | ||
| 1397 | DEFUN ("xwidget-view-p", Fxwidget_view_p, Sxwidget_view_p, 1, 1, 0, | ||
| 1398 | doc: /* Return t if OBJECT is a xwidget-view. */) | ||
| 1399 | (Lisp_Object object) | ||
| 1400 | { | ||
| 1401 | return XWIDGET_VIEW_P (object) ? Qt : Qnil; | ||
| 1402 | } | ||
| 1403 | |||
| 1394 | DEFUN("xwidget-info", Fxwidget_info , Sxwidget_info, 1,1,0, doc: /* get xwidget props */) | 1404 | DEFUN("xwidget-info", Fxwidget_info , Sxwidget_info, 1,1,0, doc: /* get xwidget props */) |
| 1395 | (Lisp_Object xwidget) | 1405 | (Lisp_Object xwidget) |
| 1396 | { | 1406 | { |
| 1407 | CHECK_XWIDGET (xwidget); | ||
| 1397 | Lisp_Object info, n; | 1408 | Lisp_Object info, n; |
| 1398 | struct xwidget* xw = XXWIDGET(xwidget); | 1409 | struct xwidget* xw = XXWIDGET(xwidget); |
| 1399 | 1410 | ||
| @@ -1408,22 +1419,20 @@ DEFUN("xwidget-info", Fxwidget_info , Sxwidget_info, 1,1,0, doc: /* get xwidget | |||
| 1408 | return info; | 1419 | return info; |
| 1409 | } | 1420 | } |
| 1410 | 1421 | ||
| 1411 | 1422 | DEFUN("xwidget-view-info", Fxwidget_view_info , Sxwidget_view_info, 1, 1, 0, doc: /* get xwidget view props */) | |
| 1412 | DEFUN("xwidget-view-info", Fxwidget_view_info , Sxwidget_view_info, 2,2,0, doc: /* get xwidget view props */) | 1423 | (Lisp_Object xwidget_view) |
| 1413 | (Lisp_Object xwidget, Lisp_Object window) | ||
| 1414 | { | 1424 | { |
| 1415 | struct xwidget* xw = XXWIDGET(xwidget); | 1425 | CHECK_XWIDGET_VIEW (xwidget_view); |
| 1416 | struct xwidget_view* xv = xwidget_view_lookup(xw, XWINDOW(window)); | 1426 | struct xwidget_view *xv = XXWIDGET_VIEW (xwidget_view); |
| 1417 | |||
| 1418 | Lisp_Object info; | 1427 | Lisp_Object info; |
| 1419 | 1428 | ||
| 1420 | info = Fmake_vector (make_number (6), Qnil); | 1429 | info = Fmake_vector (make_number (6), Qnil); |
| 1421 | XVECTOR (info)->contents[0] = make_number(xv->x); | 1430 | ASET (info, 0, make_number(xv->x)); |
| 1422 | XVECTOR (info)->contents[1] = make_number(xv->y); | 1431 | ASET (info, 1, make_number(xv->y)); |
| 1423 | XVECTOR (info)->contents[2] = make_number(xv->clip_right); | 1432 | ASET (info, 2, make_number(xv->clip_right)); |
| 1424 | XVECTOR (info)->contents[3] = make_number(xv->clip_bottom); | 1433 | ASET (info, 3, make_number(xv->clip_bottom)); |
| 1425 | XVECTOR (info)->contents[4] = make_number(xv->clip_top); | 1434 | ASET (info, 4, make_number(xv->clip_top)); |
| 1426 | XVECTOR (info)->contents[5] = make_number(xv->clip_left); | 1435 | ASET (info, 5, make_number(xv->clip_left)); |
| 1427 | 1436 | ||
| 1428 | return info; | 1437 | return info; |
| 1429 | } | 1438 | } |
| @@ -1508,7 +1517,7 @@ DEFUN("xwidget-delete-zombies", Fxwidget_delete_zombies , Sxwidget_delete_zombie | |||
| 1508 | struct xwidget_view* xv = NULL; | 1517 | struct xwidget_view* xv = NULL; |
| 1509 | for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail); tail = XCDR (tail)) | 1518 | for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail); tail = XCDR (tail)) |
| 1510 | { | 1519 | { |
| 1511 | if (XXWIDGET_VIEW_P (XCAR (tail))) { | 1520 | if (XWIDGET_VIEW_P (XCAR (tail))) { |
| 1512 | xv = XXWIDGET_VIEW (XCAR (tail)); | 1521 | xv = XXWIDGET_VIEW (XCAR (tail)); |
| 1513 | if(!WINDOW_LIVE_P (xv->w)) { | 1522 | if(!WINDOW_LIVE_P (xv->w)) { |
| 1514 | gtk_widget_destroy(GTK_WIDGET(xv->widgetwindow)); | 1523 | gtk_widget_destroy(GTK_WIDGET(xv->widgetwindow)); |
| @@ -1524,7 +1533,7 @@ DEFUN ("xwidget-plist", Fxwidget_plist, Sxwidget_plist, | |||
| 1524 | doc: /* Return the plist of XWIDGET. */) | 1533 | doc: /* Return the plist of XWIDGET. */) |
| 1525 | (register Lisp_Object xwidget) | 1534 | (register Lisp_Object xwidget) |
| 1526 | { | 1535 | { |
| 1527 | //CHECK_XWIDGET (xwidget); //todo | 1536 | CHECK_XWIDGET (xwidget); |
| 1528 | return XXWIDGET (xwidget)->plist; | 1537 | return XXWIDGET (xwidget)->plist; |
| 1529 | } | 1538 | } |
| 1530 | 1539 | ||
| @@ -1533,7 +1542,7 @@ DEFUN ("xwidget-buffer", Fxwidget_buffer, Sxwidget_buffer, | |||
| 1533 | doc: /* Return the buffer of XWIDGET. */) | 1542 | doc: /* Return the buffer of XWIDGET. */) |
| 1534 | (register Lisp_Object xwidget) | 1543 | (register Lisp_Object xwidget) |
| 1535 | { | 1544 | { |
| 1536 | //CHECK_XWIDGET (xwidget); //todo | 1545 | CHECK_XWIDGET (xwidget); |
| 1537 | return XXWIDGET (xwidget)->buffer; | 1546 | return XXWIDGET (xwidget)->buffer; |
| 1538 | } | 1547 | } |
| 1539 | 1548 | ||
| @@ -1542,15 +1551,13 @@ DEFUN ("set-xwidget-plist", Fset_xwidget_plist, Sset_xwidget_plist, | |||
| 1542 | doc: /* Replace the plist of XWIDGET with PLIST. Returns PLIST. */) | 1551 | doc: /* Replace the plist of XWIDGET with PLIST. Returns PLIST. */) |
| 1543 | (register Lisp_Object xwidget, Lisp_Object plist) | 1552 | (register Lisp_Object xwidget, Lisp_Object plist) |
| 1544 | { | 1553 | { |
| 1545 | //CHECK_XWIDGET (xwidget); //todo | 1554 | CHECK_XWIDGET (xwidget); |
| 1546 | CHECK_LIST (plist); | 1555 | CHECK_LIST (plist); |
| 1547 | 1556 | ||
| 1548 | XXWIDGET (xwidget)->plist = plist; | 1557 | XXWIDGET (xwidget)->plist = plist; |
| 1549 | return plist; | 1558 | return plist; |
| 1550 | } | 1559 | } |
| 1551 | 1560 | ||
| 1552 | |||
| 1553 | |||
| 1554 | void | 1561 | void |
| 1555 | syms_of_xwidget (void) | 1562 | syms_of_xwidget (void) |
| 1556 | { | 1563 | { |
| @@ -1558,6 +1565,9 @@ syms_of_xwidget (void) | |||
| 1558 | 1565 | ||
| 1559 | defsubr (&Smake_xwidget); | 1566 | defsubr (&Smake_xwidget); |
| 1560 | defsubr (&Sxwidgetp); | 1567 | defsubr (&Sxwidgetp); |
| 1568 | DEFSYM (Qxwidgetp, "xwidgetp"); | ||
| 1569 | defsubr (&Sxwidget_view_p); | ||
| 1570 | DEFSYM (Qxwidget_view_p, "xwidget-view-p"); | ||
| 1561 | defsubr (&Sxwidget_info); | 1571 | defsubr (&Sxwidget_info); |
| 1562 | defsubr (&Sxwidget_view_info); | 1572 | defsubr (&Sxwidget_view_info); |
| 1563 | defsubr (&Sxwidget_resize); | 1573 | defsubr (&Sxwidget_resize); |
| @@ -1618,11 +1628,11 @@ syms_of_xwidget (void) | |||
| 1618 | xwidget type. */ | 1628 | xwidget type. */ |
| 1619 | 1629 | ||
| 1620 | int | 1630 | int |
| 1621 | valid_xwidget_p (Lisp_Object object) | 1631 | valid_xwidget_spec_p (Lisp_Object object) |
| 1622 | { | 1632 | { |
| 1623 | int valid_p = 0; | 1633 | int valid_p = 0; |
| 1624 | 1634 | ||
| 1625 | if (XWIDGETP (object)) | 1635 | if (CONSP (object) && EQ (XCAR (object), Qxwidget)) |
| 1626 | { | 1636 | { |
| 1627 | /* Lisp_Object tem; */ | 1637 | /* Lisp_Object tem; */ |
| 1628 | 1638 | ||
| @@ -1656,7 +1666,7 @@ xwidget_spec_value ( Lisp_Object spec, Lisp_Object key, | |||
| 1656 | { | 1666 | { |
| 1657 | Lisp_Object tail; | 1667 | Lisp_Object tail; |
| 1658 | 1668 | ||
| 1659 | eassert (valid_xwidget_p (spec)); | 1669 | eassert (valid_xwidget_spec_p (spec)); |
| 1660 | 1670 | ||
| 1661 | for (tail = XCDR (spec); | 1671 | for (tail = XCDR (spec); |
| 1662 | CONSP (tail) && CONSP (XCDR (tail)); tail = XCDR (XCDR (tail))) | 1672 | CONSP (tail) && CONSP (XCDR (tail)); tail = XCDR (XCDR (tail))) |
| @@ -1681,7 +1691,7 @@ xwidget_view_delete_all_in_window (struct window *w) | |||
| 1681 | struct xwidget_view* xv = NULL; | 1691 | struct xwidget_view* xv = NULL; |
| 1682 | for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail); tail = XCDR (tail)) | 1692 | for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail); tail = XCDR (tail)) |
| 1683 | { | 1693 | { |
| 1684 | if (XXWIDGET_VIEW_P (XCAR (tail))) { | 1694 | if (XWIDGET_VIEW_P (XCAR (tail))) { |
| 1685 | xv = XXWIDGET_VIEW (XCAR (tail)); | 1695 | xv = XXWIDGET_VIEW (XCAR (tail)); |
| 1686 | if(XWINDOW (xv->w) == w) { | 1696 | if(XWINDOW (xv->w) == w) { |
| 1687 | gtk_widget_destroy(GTK_WIDGET(xv->widgetwindow)); | 1697 | gtk_widget_destroy(GTK_WIDGET(xv->widgetwindow)); |
| @@ -1699,7 +1709,7 @@ xwidget_view_lookup (struct xwidget* xw, struct window *w) | |||
| 1699 | struct xwidget_view* xv = NULL; | 1709 | struct xwidget_view* xv = NULL; |
| 1700 | for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail); tail = XCDR (tail)) | 1710 | for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail); tail = XCDR (tail)) |
| 1701 | { | 1711 | { |
| 1702 | if (XXWIDGET_VIEW_P (XCAR (tail))) { | 1712 | if (XWIDGET_VIEW_P (XCAR (tail))) { |
| 1703 | xv = XXWIDGET_VIEW (XCAR (tail)); | 1713 | xv = XXWIDGET_VIEW (XCAR (tail)); |
| 1704 | if (XXWIDGET (xv->model) == xw && XWINDOW (xv->w) == w) | 1714 | if (XXWIDGET (xv->model) == xw && XWINDOW (xv->w) == w) |
| 1705 | return xv; | 1715 | return xv; |
| @@ -1751,7 +1761,7 @@ xwidget_start_redisplay (void) | |||
| 1751 | { | 1761 | { |
| 1752 | for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail); tail = XCDR (tail)) | 1762 | for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail); tail = XCDR (tail)) |
| 1753 | { | 1763 | { |
| 1754 | if (XXWIDGET_VIEW_P (XCAR (tail))) | 1764 | if (XWIDGET_VIEW_P (XCAR (tail))) |
| 1755 | XXWIDGET_VIEW (XCAR (tail))->redisplayed = 0; | 1765 | XXWIDGET_VIEW (XCAR (tail))->redisplayed = 0; |
| 1756 | } | 1766 | } |
| 1757 | } | 1767 | } |
| @@ -1817,7 +1827,7 @@ xwidget_end_redisplay (struct window *w, struct glyph_matrix *matrix) | |||
| 1817 | 1827 | ||
| 1818 | for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail); tail = XCDR (tail)) | 1828 | for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail); tail = XCDR (tail)) |
| 1819 | { | 1829 | { |
| 1820 | if (XXWIDGET_VIEW_P (XCAR (tail))) { | 1830 | if (XWIDGET_VIEW_P (XCAR (tail))) { |
| 1821 | struct xwidget_view* xv = XXWIDGET_VIEW (XCAR (tail)); | 1831 | struct xwidget_view* xv = XXWIDGET_VIEW (XCAR (tail)); |
| 1822 | 1832 | ||
| 1823 | //"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 |
diff --git a/src/xwidget.h b/src/xwidget.h index f8c804aac46..01be2b29281 100644 --- a/src/xwidget.h +++ b/src/xwidget.h | |||
| @@ -7,7 +7,7 @@ void syms_of_xwidget (); | |||
| 7 | extern Lisp_Object Qxwidget; | 7 | extern Lisp_Object Qxwidget; |
| 8 | 8 | ||
| 9 | 9 | ||
| 10 | int valid_xwidget_p (Lisp_Object object) ; | 10 | int valid_xwidget_spec_p (Lisp_Object object) ; |
| 11 | 11 | ||
| 12 | #include <gtk/gtk.h> | 12 | #include <gtk/gtk.h> |
| 13 | 13 | ||
| @@ -64,20 +64,22 @@ struct xwidget_view { | |||
| 64 | long handler_id; | 64 | long handler_id; |
| 65 | }; | 65 | }; |
| 66 | 66 | ||
| 67 | |||
| 68 | /* Test for xwidget (xwidget . spec) (car must be the symbol xwidget)*/ | ||
| 69 | #define XWIDGETP(x) (CONSP (x) && EQ (XCAR (x), Qxwidget)) | ||
| 70 | |||
| 71 | /* Test for xwidget pseudovector*/ | 67 | /* Test for xwidget pseudovector*/ |
| 72 | #define XXWIDGETP(x) PSEUDOVECTORP (x, PVEC_XWIDGET) | 68 | #define XWIDGETP(x) PSEUDOVECTORP (x, PVEC_XWIDGET) |
| 73 | #define XXWIDGET(a) (eassert (XXWIDGETP(a)), \ | 69 | #define XXWIDGET(a) (eassert (XWIDGETP(a)), \ |
| 74 | (struct xwidget *) XUNTAG(a, Lisp_Vectorlike)) | 70 | (struct xwidget *) XUNTAG(a, Lisp_Vectorlike)) |
| 75 | 71 | ||
| 72 | #define CHECK_XWIDGET(x) \ | ||
| 73 | CHECK_TYPE (XWIDGETP (x), Qxwidgetp, x) | ||
| 74 | |||
| 76 | /* Test for xwidget_view pseudovector */ | 75 | /* Test for xwidget_view pseudovector */ |
| 77 | #define XXWIDGET_VIEW_P(x) PSEUDOVECTORP (x, PVEC_XWIDGET_VIEW) | 76 | #define XWIDGET_VIEW_P(x) PSEUDOVECTORP (x, PVEC_XWIDGET_VIEW) |
| 78 | #define XXWIDGET_VIEW(a) (eassert (XXWIDGET_VIEW_P(a)), \ | 77 | #define XXWIDGET_VIEW(a) (eassert (XWIDGET_VIEW_P(a)), \ |
| 79 | (struct xwidget_view *) XUNTAG(a, Lisp_Vectorlike)) | 78 | (struct xwidget_view *) XUNTAG(a, Lisp_Vectorlike)) |
| 80 | 79 | ||
| 80 | #define CHECK_XWIDGET_VIEW(x) \ | ||
| 81 | CHECK_TYPE (XWIDGET_VIEW_P (x), Qxwidget_view_p, x) | ||
| 82 | |||
| 81 | struct xwidget_type | 83 | struct xwidget_type |
| 82 | { | 84 | { |
| 83 | /* A symbol uniquely identifying the xwidget type, */ | 85 | /* A symbol uniquely identifying the xwidget type, */ |