#define MSWINDOWS_BLANK_SIZE 5
#define MSWINDOWS_MINIMUM_TOOLBAR_SIZE 8
+static void
+mswindows_move_toolbar (struct frame *f, enum toolbar_pos pos);
+
#define SET_TOOLBAR_WAS_VISIBLE_FLAG(frame, pos, flag) \
do { \
switch (pos) \
internal_hash (get_toolbar_button_glyph(w, tb), 0),
internal_hash (tb->callback, 0),
width,
- w->toolbar_buttons_captioned_p);
+ LISP_HASH (w->toolbar_buttons_captioned_p));
button = tb->next;
nbuttons++;
}
if (IMAGE_INSTANCEP (instance))
{
- struct Lisp_Image_Instance* p = XIMAGE_INSTANCE (instance);
+ Lisp_Image_Instance* p = XIMAGE_INSTANCE (instance);
if (IMAGE_INSTANCE_PIXMAP_TYPE_P (p))
{
/* now display the window */
ShowWindow (toolbarwnd, SW_SHOW);
+ /* no idea why this is necessary but initial display will not
+ happen otherwise. */
+ mswindows_move_toolbar (f, pos);
if (button_tbl) xfree (button_tbl);
}
static void
+mswindows_redraw_frame_toolbars (struct frame *f)
+{
+ mswindows_redraw_exposed_toolbars (f, 0, 0, FRAME_PIXWIDTH (f),
+ FRAME_PIXHEIGHT (f));
+}
+
+static void
mswindows_initialize_frame_toolbars (struct frame *f)
{
mswindows_free_frame_toolbars (struct frame *f)
{
HWND twnd=NULL;
-#define DELETE_TOOLBAR(pos) \
- mswindows_clear_toolbar(f, 0, pos); \
- if ((twnd=GetDlgItem(FRAME_MSWINDOWS_HANDLE(f), TOOLBAR_ID_BIAS + pos))) \
+#define DELETE_TOOLBAR(pos) \
+ mswindows_clear_toolbar(f, pos, 0); \
+ if ((twnd=GetDlgItem(FRAME_MSWINDOWS_HANDLE(f), \
+ TOOLBAR_ID_BIAS + pos))) \
DestroyWindow(twnd)
DELETE_TOOLBAR(TOP_TOOLBAR);
}
/* map toolbar hwnd to pos*/
-int mswindows_find_toolbar_pos(struct frame* f, HWND ctrl)
+static int mswindows_find_toolbar_pos(struct frame* f, HWND ctrl)
{
int id = GetDlgCtrlID(ctrl);
return id ? id - TOOLBAR_ID_BIAS : -1;
CONSOLE_HAS_METHOD (mswindows, initialize_frame_toolbars);
CONSOLE_HAS_METHOD (mswindows, free_frame_toolbars);
CONSOLE_HAS_METHOD (mswindows, redraw_exposed_toolbars);
+ CONSOLE_HAS_METHOD (mswindows, redraw_frame_toolbars);
}