X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Ftoolbar.c;h=95a455f85e74b111f638196a832b36d9c0408486;hb=c1fa38c050ef3bd87e784dea66eba3cdac585536;hp=db2c69e5517b385b8cfb80c988ddb61e032b4ec4;hpb=a71e0987b7080176e0046b0b0ed72a9a70e2571d;p=chise%2Fxemacs-chise.git.1 diff --git a/src/toolbar.c b/src/toolbar.c index db2c69e..95a455f 100644 --- a/src/toolbar.c +++ b/src/toolbar.c @@ -57,40 +57,24 @@ Lisp_Object Qinit_toolbar_from_resources; static Lisp_Object -mark_toolbar_button (Lisp_Object obj, void (*markobj) (Lisp_Object)) +mark_toolbar_button (Lisp_Object obj) { struct toolbar_button *data = XTOOLBAR_BUTTON (obj); - markobj (data->next); - markobj (data->frame); - markobj (data->up_glyph); - markobj (data->down_glyph); - markobj (data->disabled_glyph); - markobj (data->cap_up_glyph); - markobj (data->cap_down_glyph); - markobj (data->cap_disabled_glyph); - markobj (data->callback); - markobj (data->enabled_p); + mark_object (data->next); + mark_object (data->frame); + mark_object (data->up_glyph); + mark_object (data->down_glyph); + mark_object (data->disabled_glyph); + mark_object (data->cap_up_glyph); + mark_object (data->cap_down_glyph); + mark_object (data->cap_disabled_glyph); + mark_object (data->callback); + mark_object (data->enabled_p); return data->help_string; } -static void -print_toolbar_button (Lisp_Object obj, Lisp_Object printcharfun, - int escapeflag) -{ - struct toolbar_button *tb = XTOOLBAR_BUTTON (obj); - char buf[100]; - - if (print_readably) - error ("printing unreadable object #", - tb->header.uid); - - sprintf (buf, "#", tb->header.uid); - write_c_string (buf, printcharfun); -} - DEFINE_LRECORD_IMPLEMENTATION ("toolbar-button", toolbar_button, - mark_toolbar_button, print_toolbar_button, - 0, 0, 0, 0, + mark_toolbar_button, 0, 0, 0, 0, 0, struct toolbar_button); DEFUN ("toolbar-button-p", Ftoolbar_button_p, 1, 1, 0, /* @@ -722,22 +706,35 @@ set_frame_toolbar (struct frame *f, enum toolbar_pos pos) static void compute_frame_toolbars_data (struct frame *f) { - set_frame_toolbar (f, TOP_TOOLBAR); - set_frame_toolbar (f, BOTTOM_TOOLBAR); - set_frame_toolbar (f, LEFT_TOOLBAR); - set_frame_toolbar (f, RIGHT_TOOLBAR); + set_frame_toolbar (f, TOP_TOOLBAR); + set_frame_toolbar (f, BOTTOM_TOOLBAR); + set_frame_toolbar (f, LEFT_TOOLBAR); + set_frame_toolbar (f, RIGHT_TOOLBAR); } +/* Update the toolbar geometry separately from actually displaying the + toolbar. This is necessary because both the gutter and the toolbar + are competing for redisplay cycles and, unfortunately, gutter + updates happen late in the game. Firstly they are done inside of + redisplay proper and secondly subcontrols may not get moved until + the next screen refresh. Only after subcontrols have been moved to + their final destinations can we be certain of updating the + toolbar. Under X this probably is exacerbated by the toolbar button + dirty flags which prevent updates happening when they possibly + should. */ void -update_frame_toolbars (struct frame *f) +update_frame_toolbars_geometry (struct frame *f) { struct device *d = XDEVICE (f->device); if (DEVICE_SUPPORTS_TOOLBARS_P (d) - && (f->toolbar_changed || f->frame_changed || f->clear)) + && (f->toolbar_changed + || f->frame_layout_changed + || f->frame_changed + || f->clear)) { int pos; - + /* We're not officially "in redisplay", so we still have a chance to re-layout toolbars and windows. This is done here, because toolbar is the only thing which currently might @@ -754,18 +751,39 @@ update_frame_toolbars (struct frame *f) pixel_to_char_size (f, FRAME_PIXWIDTH (f), FRAME_PIXHEIGHT (f), &width, &height); change_frame_size (f, height, width, 0); + MARK_FRAME_LAYOUT_CHANGED (f); break; } - for (pos = 0; pos < 4; pos++) + for (pos = 0; pos < 4; pos++) { f->current_toolbar_size[pos] = FRAME_REAL_TOOLBAR_SIZE (f, pos); + } /* Removed the check for the minibuffer here. We handle this more correctly now by consistently using FRAME_LAST_NONMINIBUF_WINDOW instead of FRAME_SELECTED_WINDOW throughout the toolbar code. */ compute_frame_toolbars_data (f); + + /* Clear the previous toolbar locations. If we do it later + (after redisplay) we end up clearing what we have just + displayed. */ + MAYBE_DEVMETH (d, clear_frame_toolbars, (f)); + } +} + +/* Actually redisplay the toolbar buttons. */ +void +update_frame_toolbars (struct frame *f) +{ + struct device *d = XDEVICE (f->device); + if (DEVICE_SUPPORTS_TOOLBARS_P (d) + && (f->toolbar_changed + || f->frame_layout_changed + || f->frame_changed + || f->clear)) + { DEVMETH (d, output_frame_toolbars, (f)); } @@ -890,7 +908,7 @@ get_toolbar_coords (struct frame *f, enum toolbar_pos pos, int *x, int *y, *vert = 1; break; default: - abort (); + ABORT (); } } @@ -1006,11 +1024,11 @@ Verify the syntax of entry BUTTON in a toolbar description list. If you want to verify the syntax of a toolbar description list as a whole, use `check-valid-instantiator' with a specifier type of 'toolbar. */ - (button, no_error)) + (button, noerror)) { Lisp_Object *elt, glyphs, value; int len; - Error_behavior errb = decode_error_behavior_flag (no_error); + Error_behavior errb = decode_error_behavior_flag (noerror); if (!VECTORP (button)) CTB_ERROR ("toolbar button descriptors must be vectors"); @@ -1037,9 +1055,9 @@ whole, use `check-valid-instantiator' with a specifier type of 'toolbar. if (!CONSP (elt[0])) { /* We can't check the buffer-local here because we don't know - which buffer to check in. #### I think this is a bad thing. - See if we can't get enough information to this function so - that it can check. + which buffer to check in. #### I think this is a bad thing. + See if we can't get enough information to this function so + that it can check. #### Wrong. We shouldn't be checking the value at all here. The user might set or change the value at any time. */ @@ -1160,14 +1178,9 @@ toolbar_after_change (Lisp_Object specifier, Lisp_Object locale) DEFUN ("toolbar-specifier-p", Ftoolbar_specifier_p, 1, 1, 0, /* Return non-nil if OBJECT is a toolbar specifier. -Toolbar specifiers are used to specify the format of a toolbar. -The values of the variables `default-toolbar', `top-toolbar', -`left-toolbar', `right-toolbar', and `bottom-toolbar' are always -toolbar specifiers. - -Valid toolbar instantiators are called "toolbar descriptors" -and are lists of vectors. See `default-toolbar' for a description -of the exact format. + +See `make-toolbar-specifier' for a description of possible toolbar +instantiators. */ (object)) { @@ -1272,6 +1285,8 @@ toolbar_buttons_captioned_p_changed (Lisp_Object specifier, struct window *w, void syms_of_toolbar (void) { + INIT_LRECORD_IMPLEMENTATION (toolbar_button); + defsymbol (&Qtoolbar_buttonp, "toolbar-button-p"); defsymbol (&Q2D, "2D"); defsymbol (&Q3D, "3D"); @@ -1312,6 +1327,12 @@ specifier_type_create_toolbar (void) } void +reinit_specifier_type_create_toolbar (void) +{ + REINITIALIZE_SPECIFIER_TYPE (toolbar); +} + +void specifier_vars_of_toolbar (void) { Lisp_Object fb; @@ -1428,10 +1449,9 @@ For the other vector formats (specifying blank areas of the toolbar): automatically knew about specifier fallbacks, so we didn't have to do it ourselves. */ set_specifier_caching (Vdefault_toolbar, - slot_offset (struct window, - default_toolbar), + offsetof (struct window, default_toolbar), default_toolbar_specs_changed, - 0, 0); + 0, 0, 0); DEFVAR_SPECIFIER ("top-toolbar", &Vtoolbar[TOP_TOOLBAR] /* @@ -1441,10 +1461,9 @@ See `default-toolbar' for a description of a valid toolbar instantiator. */ ); Vtoolbar[TOP_TOOLBAR] = Fmake_specifier (Qtoolbar); set_specifier_caching (Vtoolbar[TOP_TOOLBAR], - slot_offset (struct window, - toolbar[TOP_TOOLBAR]), + offsetof (struct window, toolbar[TOP_TOOLBAR]), toolbar_specs_changed, - 0, 0); + 0, 0, 0); DEFVAR_SPECIFIER ("bottom-toolbar", &Vtoolbar[BOTTOM_TOOLBAR] /* @@ -1459,10 +1478,9 @@ displayed even if you provide a value for `bottom-toolbar'. */ ); Vtoolbar[BOTTOM_TOOLBAR] = Fmake_specifier (Qtoolbar); set_specifier_caching (Vtoolbar[BOTTOM_TOOLBAR], - slot_offset (struct window, - toolbar[BOTTOM_TOOLBAR]), + offsetof (struct window, toolbar[BOTTOM_TOOLBAR]), toolbar_specs_changed, - 0, 0); + 0, 0, 0); DEFVAR_SPECIFIER ("left-toolbar", &Vtoolbar[LEFT_TOOLBAR] /* @@ -1477,10 +1495,9 @@ displayed even if you provide a value for `left-toolbar'. */ ); Vtoolbar[LEFT_TOOLBAR] = Fmake_specifier (Qtoolbar); set_specifier_caching (Vtoolbar[LEFT_TOOLBAR], - slot_offset (struct window, - toolbar[LEFT_TOOLBAR]), + offsetof (struct window, toolbar[LEFT_TOOLBAR]), toolbar_specs_changed, - 0, 0); + 0, 0, 0); DEFVAR_SPECIFIER ("right-toolbar", &Vtoolbar[RIGHT_TOOLBAR] /* @@ -1495,10 +1512,9 @@ displayed even if you provide a value for `right-toolbar'. */ ); Vtoolbar[RIGHT_TOOLBAR] = Fmake_specifier (Qtoolbar); set_specifier_caching (Vtoolbar[RIGHT_TOOLBAR], - slot_offset (struct window, - toolbar[RIGHT_TOOLBAR]), + offsetof (struct window, toolbar[RIGHT_TOOLBAR]), toolbar_specs_changed, - 0, 0); + 0, 0, 0); /* initially, top inherits from default; this can be changed with `set-default-toolbar-position'. */ @@ -1550,12 +1566,10 @@ is not visible, so it is expanded to take up the slack. */ ); Vdefault_toolbar_height = Fmake_specifier (Qnatnum); set_specifier_caching (Vdefault_toolbar_height, - slot_offset (struct window, - default_toolbar_height), + offsetof (struct window, default_toolbar_height), default_toolbar_size_changed_in_window, - slot_offset (struct frame, - default_toolbar_height), - default_toolbar_size_changed_in_frame); + offsetof (struct frame, default_toolbar_height), + default_toolbar_size_changed_in_frame, 0); DEFVAR_SPECIFIER ("default-toolbar-width", &Vdefault_toolbar_width /* *Width of the default toolbar, if it's oriented vertically. @@ -1565,12 +1579,10 @@ See `default-toolbar-height' for more information. */ ); Vdefault_toolbar_width = Fmake_specifier (Qnatnum); set_specifier_caching (Vdefault_toolbar_width, - slot_offset (struct window, - default_toolbar_width), + offsetof (struct window, default_toolbar_width), default_toolbar_size_changed_in_window, - slot_offset (struct frame, - default_toolbar_width), - default_toolbar_size_changed_in_frame); + offsetof (struct frame, default_toolbar_width), + default_toolbar_size_changed_in_frame, 0); DEFVAR_SPECIFIER ("top-toolbar-height", &Vtoolbar_size[TOP_TOOLBAR] /* @@ -1581,12 +1593,10 @@ See `default-toolbar-height' for more information. */ ); Vtoolbar_size[TOP_TOOLBAR] = Fmake_specifier (Qnatnum); set_specifier_caching (Vtoolbar_size[TOP_TOOLBAR], - slot_offset (struct window, - toolbar_size[TOP_TOOLBAR]), + offsetof (struct window, toolbar_size[TOP_TOOLBAR]), toolbar_geometry_changed_in_window, - slot_offset (struct frame, - toolbar_size[TOP_TOOLBAR]), - frame_size_slipped); + offsetof (struct frame, toolbar_size[TOP_TOOLBAR]), + frame_size_slipped, 0); DEFVAR_SPECIFIER ("bottom-toolbar-height", &Vtoolbar_size[BOTTOM_TOOLBAR] /* @@ -1597,12 +1607,10 @@ See `default-toolbar-height' for more information. */ ); Vtoolbar_size[BOTTOM_TOOLBAR] = Fmake_specifier (Qnatnum); set_specifier_caching (Vtoolbar_size[BOTTOM_TOOLBAR], - slot_offset (struct window, - toolbar_size[BOTTOM_TOOLBAR]), + offsetof (struct window, toolbar_size[BOTTOM_TOOLBAR]), toolbar_geometry_changed_in_window, - slot_offset (struct frame, - toolbar_size[BOTTOM_TOOLBAR]), - frame_size_slipped); + offsetof (struct frame, toolbar_size[BOTTOM_TOOLBAR]), + frame_size_slipped, 0); DEFVAR_SPECIFIER ("left-toolbar-width", &Vtoolbar_size[LEFT_TOOLBAR] /* @@ -1613,12 +1621,10 @@ See `default-toolbar-height' for more information. */ ); Vtoolbar_size[LEFT_TOOLBAR] = Fmake_specifier (Qnatnum); set_specifier_caching (Vtoolbar_size[LEFT_TOOLBAR], - slot_offset (struct window, - toolbar_size[LEFT_TOOLBAR]), + offsetof (struct window, toolbar_size[LEFT_TOOLBAR]), toolbar_geometry_changed_in_window, - slot_offset (struct frame, - toolbar_size[LEFT_TOOLBAR]), - frame_size_slipped); + offsetof (struct frame, toolbar_size[LEFT_TOOLBAR]), + frame_size_slipped, 0); DEFVAR_SPECIFIER ("right-toolbar-width", &Vtoolbar_size[RIGHT_TOOLBAR] /* @@ -1629,22 +1635,23 @@ See `default-toolbar-height' for more information. */ ); Vtoolbar_size[RIGHT_TOOLBAR] = Fmake_specifier (Qnatnum); set_specifier_caching (Vtoolbar_size[RIGHT_TOOLBAR], - slot_offset (struct window, - toolbar_size[RIGHT_TOOLBAR]), + offsetof (struct window, toolbar_size[RIGHT_TOOLBAR]), toolbar_geometry_changed_in_window, - slot_offset (struct frame, - toolbar_size[RIGHT_TOOLBAR]), - frame_size_slipped); + offsetof (struct frame, toolbar_size[RIGHT_TOOLBAR]), + frame_size_slipped, 0); fb = Qnil; #ifdef HAVE_TTY fb = Fcons (Fcons (list1 (Qtty), Qzero), fb); #endif +#ifdef HAVE_GTK + fb = Fcons (Fcons (list1 (Qgtk), make_int (DEFAULT_TOOLBAR_HEIGHT)), fb); +#endif #ifdef HAVE_X_WINDOWS fb = Fcons (Fcons (list1 (Qx), make_int (DEFAULT_TOOLBAR_HEIGHT)), fb); #endif #ifdef HAVE_MS_WINDOWS - fb = Fcons (Fcons (list1 (Qmswindows), + fb = Fcons (Fcons (list1 (Qmswindows), make_int (MSWINDOWS_DEFAULT_TOOLBAR_HEIGHT)), fb); #endif if (!NILP (fb)) @@ -1654,11 +1661,14 @@ See `default-toolbar-height' for more information. #ifdef HAVE_TTY fb = Fcons (Fcons (list1 (Qtty), Qzero), fb); #endif +#ifdef HAVE_GTK + fb = Fcons (Fcons (list1 (Qgtk), make_int (DEFAULT_TOOLBAR_WIDTH)), fb); +#endif #ifdef HAVE_X_WINDOWS fb = Fcons (Fcons (list1 (Qx), make_int (DEFAULT_TOOLBAR_WIDTH)), fb); #endif #ifdef HAVE_MS_WINDOWS - fb = Fcons (Fcons (list1 (Qmswindows), + fb = Fcons (Fcons (list1 (Qmswindows), make_int (MSWINDOWS_DEFAULT_TOOLBAR_WIDTH)), fb); #endif if (!NILP (fb)) @@ -1694,12 +1704,10 @@ the value in a window domain will not. */ ); Vdefault_toolbar_border_width = Fmake_specifier (Qnatnum); set_specifier_caching (Vdefault_toolbar_border_width, - slot_offset (struct window, - default_toolbar_border_width), + offsetof (struct window, default_toolbar_border_width), default_toolbar_border_width_changed_in_window, - slot_offset (struct frame, - default_toolbar_border_width), - default_toolbar_border_width_changed_in_frame); + offsetof (struct frame, default_toolbar_border_width), + default_toolbar_border_width_changed_in_frame, 0); DEFVAR_SPECIFIER ("top-toolbar-border-width", &Vtoolbar_border_width[TOP_TOOLBAR] /* @@ -1710,12 +1718,12 @@ See `default-toolbar-height' for more information. */ ); Vtoolbar_border_width[TOP_TOOLBAR] = Fmake_specifier (Qnatnum); set_specifier_caching (Vtoolbar_border_width[TOP_TOOLBAR], - slot_offset (struct window, - toolbar_border_width[TOP_TOOLBAR]), + offsetof (struct window, + toolbar_border_width[TOP_TOOLBAR]), toolbar_geometry_changed_in_window, - slot_offset (struct frame, - toolbar_border_width[TOP_TOOLBAR]), - frame_size_slipped); + offsetof (struct frame, + toolbar_border_width[TOP_TOOLBAR]), + frame_size_slipped, 0); DEFVAR_SPECIFIER ("bottom-toolbar-border-width", &Vtoolbar_border_width[BOTTOM_TOOLBAR] /* @@ -1726,12 +1734,12 @@ See `default-toolbar-height' for more information. */ ); Vtoolbar_border_width[BOTTOM_TOOLBAR] = Fmake_specifier (Qnatnum); set_specifier_caching (Vtoolbar_border_width[BOTTOM_TOOLBAR], - slot_offset (struct window, - toolbar_border_width[BOTTOM_TOOLBAR]), + offsetof (struct window, + toolbar_border_width[BOTTOM_TOOLBAR]), toolbar_geometry_changed_in_window, - slot_offset (struct frame, - toolbar_border_width[BOTTOM_TOOLBAR]), - frame_size_slipped); + offsetof (struct frame, + toolbar_border_width[BOTTOM_TOOLBAR]), + frame_size_slipped, 0); DEFVAR_SPECIFIER ("left-toolbar-border-width", &Vtoolbar_border_width[LEFT_TOOLBAR] /* @@ -1742,12 +1750,12 @@ See `default-toolbar-height' for more information. */ ); Vtoolbar_border_width[LEFT_TOOLBAR] = Fmake_specifier (Qnatnum); set_specifier_caching (Vtoolbar_border_width[LEFT_TOOLBAR], - slot_offset (struct window, - toolbar_border_width[LEFT_TOOLBAR]), + offsetof (struct window, + toolbar_border_width[LEFT_TOOLBAR]), toolbar_geometry_changed_in_window, - slot_offset (struct frame, - toolbar_border_width[LEFT_TOOLBAR]), - frame_size_slipped); + offsetof (struct frame, + toolbar_border_width[LEFT_TOOLBAR]), + frame_size_slipped, 0); DEFVAR_SPECIFIER ("right-toolbar-border-width", &Vtoolbar_border_width[RIGHT_TOOLBAR] /* @@ -1758,12 +1766,12 @@ See `default-toolbar-height' for more information. */ ); Vtoolbar_border_width[RIGHT_TOOLBAR] = Fmake_specifier (Qnatnum); set_specifier_caching (Vtoolbar_border_width[RIGHT_TOOLBAR], - slot_offset (struct window, - toolbar_border_width[RIGHT_TOOLBAR]), + offsetof (struct window, + toolbar_border_width[RIGHT_TOOLBAR]), toolbar_geometry_changed_in_window, - slot_offset (struct frame, - toolbar_border_width[RIGHT_TOOLBAR]), - frame_size_slipped); + offsetof (struct frame, + toolbar_border_width[RIGHT_TOOLBAR]), + frame_size_slipped, 0); fb = Qnil; #ifdef HAVE_TTY @@ -1772,6 +1780,9 @@ See `default-toolbar-height' for more information. #ifdef HAVE_X_WINDOWS fb = Fcons (Fcons (list1 (Qx), make_int (DEFAULT_TOOLBAR_BORDER_WIDTH)), fb); #endif +#ifdef HAVE_GTK + fb = Fcons (Fcons (list1 (Qgtk), make_int (DEFAULT_TOOLBAR_BORDER_WIDTH)), fb); +#endif #ifdef HAVE_MS_WINDOWS fb = Fcons (Fcons (list1 (Qmswindows), make_int (MSWINDOWS_DEFAULT_TOOLBAR_BORDER_WIDTH)), fb); #endif @@ -1806,12 +1817,10 @@ visibility specifiers have a fallback value of true. */ ); Vdefault_toolbar_visible_p = Fmake_specifier (Qboolean); set_specifier_caching (Vdefault_toolbar_visible_p, - slot_offset (struct window, - default_toolbar_visible_p), + offsetof (struct window, default_toolbar_visible_p), default_toolbar_visible_p_changed_in_window, - slot_offset (struct frame, - default_toolbar_visible_p), - default_toolbar_visible_p_changed_in_frame); + offsetof (struct frame, default_toolbar_visible_p), + default_toolbar_visible_p_changed_in_frame, 0); DEFVAR_SPECIFIER ("top-toolbar-visible-p", &Vtoolbar_visible_p[TOP_TOOLBAR] /* @@ -1822,12 +1831,12 @@ See `default-toolbar-visible-p' for more information. */ ); Vtoolbar_visible_p[TOP_TOOLBAR] = Fmake_specifier (Qboolean); set_specifier_caching (Vtoolbar_visible_p[TOP_TOOLBAR], - slot_offset (struct window, - toolbar_visible_p[TOP_TOOLBAR]), + offsetof (struct window, + toolbar_visible_p[TOP_TOOLBAR]), toolbar_geometry_changed_in_window, - slot_offset (struct frame, - toolbar_visible_p[TOP_TOOLBAR]), - frame_size_slipped); + offsetof (struct frame, + toolbar_visible_p[TOP_TOOLBAR]), + frame_size_slipped, 0); DEFVAR_SPECIFIER ("bottom-toolbar-visible-p", &Vtoolbar_visible_p[BOTTOM_TOOLBAR] /* @@ -1838,12 +1847,12 @@ See `default-toolbar-visible-p' for more information. */ ); Vtoolbar_visible_p[BOTTOM_TOOLBAR] = Fmake_specifier (Qboolean); set_specifier_caching (Vtoolbar_visible_p[BOTTOM_TOOLBAR], - slot_offset (struct window, - toolbar_visible_p[BOTTOM_TOOLBAR]), + offsetof (struct window, + toolbar_visible_p[BOTTOM_TOOLBAR]), toolbar_geometry_changed_in_window, - slot_offset (struct frame, - toolbar_visible_p[BOTTOM_TOOLBAR]), - frame_size_slipped); + offsetof (struct frame, + toolbar_visible_p[BOTTOM_TOOLBAR]), + frame_size_slipped, 0); DEFVAR_SPECIFIER ("left-toolbar-visible-p", &Vtoolbar_visible_p[LEFT_TOOLBAR] /* @@ -1854,12 +1863,12 @@ See `default-toolbar-visible-p' for more information. */ ); Vtoolbar_visible_p[LEFT_TOOLBAR] = Fmake_specifier (Qboolean); set_specifier_caching (Vtoolbar_visible_p[LEFT_TOOLBAR], - slot_offset (struct window, - toolbar_visible_p[LEFT_TOOLBAR]), + offsetof (struct window, + toolbar_visible_p[LEFT_TOOLBAR]), toolbar_geometry_changed_in_window, - slot_offset (struct frame, - toolbar_visible_p[LEFT_TOOLBAR]), - frame_size_slipped); + offsetof (struct frame, + toolbar_visible_p[LEFT_TOOLBAR]), + frame_size_slipped, 0); DEFVAR_SPECIFIER ("right-toolbar-visible-p", &Vtoolbar_visible_p[RIGHT_TOOLBAR] /* @@ -1870,12 +1879,12 @@ See `default-toolbar-visible-p' for more information. */ ); Vtoolbar_visible_p[RIGHT_TOOLBAR] = Fmake_specifier (Qboolean); set_specifier_caching (Vtoolbar_visible_p[RIGHT_TOOLBAR], - slot_offset (struct window, - toolbar_visible_p[RIGHT_TOOLBAR]), + offsetof (struct window, + toolbar_visible_p[RIGHT_TOOLBAR]), toolbar_geometry_changed_in_window, - slot_offset (struct frame, - toolbar_visible_p[RIGHT_TOOLBAR]), - frame_size_slipped); + offsetof (struct frame, + toolbar_visible_p[RIGHT_TOOLBAR]), + frame_size_slipped, 0); /* initially, top inherits from default; this can be changed with `set-default-toolbar-position'. */ @@ -1896,10 +1905,9 @@ This is a specifier; use `set-specifier' to change it. */ ); Vtoolbar_buttons_captioned_p = Fmake_specifier (Qboolean); set_specifier_caching (Vtoolbar_buttons_captioned_p, - slot_offset (struct window, - toolbar_buttons_captioned_p), + offsetof (struct window, toolbar_buttons_captioned_p), toolbar_buttons_captioned_p_changed, - 0, 0); + 0, 0, 0); set_specifier_fallback (Vtoolbar_buttons_captioned_p, list1 (Fcons (Qnil, Qt))); }