#ifdef HAVE_X_WINDOWS
#include "xterm.h"
#endif /* HAVE_X_WINDOWS */
+#ifdef WINDOWSNT
+#include "w32term.h"
+#endif
#ifndef max
#define max(a, b) ((a) < (b) ? (b) : (a))
}
else
{
- left_x = WINDOW_DISPLAY_LEFT_EDGE_PIXEL_X (w);
+ left_x = (WINDOW_DISPLAY_LEFT_EDGE_PIXEL_X (w)
+ - FRAME_INTERNAL_BORDER_WIDTH (f));
right_x = WINDOW_DISPLAY_RIGHT_EDGE_PIXEL_X (w);
- top_y = WINDOW_DISPLAY_TOP_EDGE_PIXEL_Y (w);
+ top_y = (WINDOW_DISPLAY_TOP_EDGE_PIXEL_Y (w)
+ - FRAME_INTERNAL_BORDER_WIDTH (f));
bottom_y = WINDOW_DISPLAY_BOTTOM_EDGE_PIXEL_Y (w);
}
unchain_marker (p->start);
}
- /* Free window glyph matrices.
- It is sure that they are allocated again when ADJUST_GLYPHS
- is called. */
+ /* Free window glyph matrices. It is sure that they are allocated
+ again when ADJUST_GLYPHS is called. Block input so that expose
+ events and other events that access glyph matrices are not
+ processed while we are changing them. */
+ BLOCK_INPUT;
free_window_matrices (XWINDOW (FRAME_ROOT_WINDOW (frame)));
tem = p->next;
/* Adjust glyph matrices. */
adjust_glyphs (frame);
+ UNBLOCK_INPUT;
}
\f
register Lisp_Object tem;
register struct window *w = decode_window (window);
+ XSETWINDOW (window, w);
buffer = Fget_buffer (buffer);
CHECK_BUFFER (buffer, 1);
if (NILP (arg))
{
extern int frame_garbaged;
+ int i;
+
+ /* Invalidate pixel data calculated for all compositions. */
+ for (i = 0; i < n_compositions; i++)
+ composition_table[i]->font = NULL;
Fredraw_frame (w->frame);
SET_FRAME_GARBAGED (XFRAME (WINDOW_FRAME (w)));
Restore which buffer appears in which window, where display starts,\n\
and the value of point and mark for each window.\n\
Also restore which buffer is current.\n\
-But do not preserve point in the current buffer.\n\
Does not restore the value of point in current buffer.")
(args)
Lisp_Object args;
***********************************************************************/
DEFUN ("set-window-margins", Fset_window_margins, Sset_window_margins,
- 2, 3, "",
+ 2, 3, 0,
"Set width of marginal areas of window WINDOW.\n\
-If window is nil or omitted, set margins of the currently selected window.\n\
+If window is nil, set margins of the currently selected window.\n\
First parameter LEFT-WIDTH specifies the number of character\n\
cells to reserve for the left marginal area. Second parameter\n\
RIGHT-WIDTH does the same for the right marginal area.\n\