X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Ftoolbar-x.c;h=61e7a18b277c610b8f43eeb93e7b26a34171777c;hb=c84990d1037000e9487a437491a853975b356e5a;hp=a8a8f0e2f6ba0a0e6d6fd64c04811ee692083be8;hpb=716cfba952c1dc0d2cf5c968971f3780ba728a89;p=chise%2Fxemacs-chise.git.1 diff --git a/src/toolbar-x.c b/src/toolbar-x.c index a8a8f0e..61e7a18 100644 --- a/src/toolbar-x.c +++ b/src/toolbar-x.c @@ -23,6 +23,8 @@ Boston, MA 02111-1307, USA. */ /* Synched up with: Not in FSF. */ +/* This file Mule-ized (more like Mule-verified) by Ben Wing, 7-8-00. */ + #include #include "lisp.h" @@ -223,8 +225,8 @@ x_output_toolbar_button (struct frame *f, Lisp_Object button) WINDOW_FACE_CACHEL (w, DEFAULT_INDEX); struct display_line dl; Lisp_Object string = IMAGE_INSTANCE_TEXT_STRING (p); - unsigned char charsets[NUM_LEADING_BYTES]; - Emchar_dynarr *buf; + Charset_ID charsets[NUM_LEADING_BYTES]; + Charc_dynarr *buf; struct font_metric_info fm; /* This could be true if we were called via the Expose event @@ -236,11 +238,11 @@ x_output_toolbar_button (struct frame *f, Lisp_Object button) MARK_TOOLBAR_CHANGED; return; } - buf = Dynarr_new (Emchar); - convert_bufbyte_string_into_emchar_dynarr + buf = Dynarr_new (Charc); + convert_bufbyte_string_into_charc_dynarr (XSTRING_DATA (string), XSTRING_LENGTH (string), buf); - find_charsets_in_emchar_string (charsets, Dynarr_atp (buf, 0), - Dynarr_length (buf)); + find_charsets_in_charc_string (charsets, Dynarr_atp (buf, 0), + Dynarr_length (buf)); ensure_face_cachel_complete (cachel, window, charsets); face_cachel_charset_font_metric_info (cachel, charsets, &fm); @@ -346,7 +348,8 @@ x_get_button_size (struct frame *f, Lisp_Object window, || tb->y != y \ || tb->width != width \ || tb->height != height \ - || tb->dirty) \ + || tb->dirty \ + || f->clear) /* This is clearly necessary. */ \ { \ if (width && height) \ { \ @@ -398,7 +401,7 @@ x_get_button_size (struct frame *f, Lisp_Object window, (frame)->right_toolbar_was_visible = flag; \ break; \ default: \ - abort (); \ + ABORT (); \ } \ } while (0) @@ -555,22 +558,30 @@ x_output_frame_toolbars (struct frame *f) if (FRAME_REAL_TOP_TOOLBAR_VISIBLE (f)) x_output_toolbar (f, TOP_TOOLBAR); - else if (f->top_toolbar_was_visible) - x_clear_toolbar (f, TOP_TOOLBAR, 0); - if (FRAME_REAL_BOTTOM_TOOLBAR_VISIBLE (f)) x_output_toolbar (f, BOTTOM_TOOLBAR); - else if (f->bottom_toolbar_was_visible) - x_clear_toolbar (f, BOTTOM_TOOLBAR, 0); - if (FRAME_REAL_LEFT_TOOLBAR_VISIBLE (f)) x_output_toolbar (f, LEFT_TOOLBAR); - else if (f->left_toolbar_was_visible) - x_clear_toolbar (f, LEFT_TOOLBAR, 0); - if (FRAME_REAL_RIGHT_TOOLBAR_VISIBLE (f)) x_output_toolbar (f, RIGHT_TOOLBAR); - else if (f->right_toolbar_was_visible) +} + +static void +x_clear_frame_toolbars (struct frame *f) +{ + assert (FRAME_X_P (f)); + + if (f->top_toolbar_was_visible + && !FRAME_REAL_TOP_TOOLBAR_VISIBLE (f)) + x_clear_toolbar (f, TOP_TOOLBAR, 0); + if (f->bottom_toolbar_was_visible + && !FRAME_REAL_BOTTOM_TOOLBAR_VISIBLE (f)) + x_clear_toolbar (f, BOTTOM_TOOLBAR, 0); + if (f->left_toolbar_was_visible + && !FRAME_REAL_LEFT_TOOLBAR_VISIBLE (f)) + x_clear_toolbar (f, LEFT_TOOLBAR, 0); + if (f->right_toolbar_was_visible + && !FRAME_REAL_RIGHT_TOOLBAR_VISIBLE (f)) x_clear_toolbar (f, RIGHT_TOOLBAR, 0); } @@ -791,6 +802,7 @@ void console_type_create_toolbar_x (void) { CONSOLE_HAS_METHOD (x, output_frame_toolbars); + CONSOLE_HAS_METHOD (x, clear_frame_toolbars); CONSOLE_HAS_METHOD (x, initialize_frame_toolbars); CONSOLE_HAS_METHOD (x, free_frame_toolbars); CONSOLE_HAS_METHOD (x, output_toolbar_button);