summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1996-09-27 07:46:54 +0000
committerRichard M. Stallman <rms@gnu.org>1996-09-27 07:46:54 +0000
commite84e14c381f679a145491b8aa4a91863c656b13d (patch)
tree90a58ab8464f6b37cf62e9c41cad444903924eb7 /src
parent2a8a07d41bb22655151824743b737079eafc7059 (diff)
downloademacs-e84e14c381f679a145491b8aa4a91863c656b13d.tar.gz
(XTflash): Don't flash in the internal borders.
or between a scroll bar and the edge. (XTflash): Flash just top and bottom screen line. (XTread_socket): Finish previous change.
Diffstat (limited to 'src')
-rw-r--r--src/xterm.c67
1 files changed, 60 insertions, 7 deletions
diff --git a/src/xterm.c b/src/xterm.c
index b87f0fdabe8..d06335b10f4 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -1117,11 +1117,49 @@ XTflash (f)
}
{
- int width = PIXEL_WIDTH (f);
- int height = PIXEL_HEIGHT (f);
+ /* Get the height not including a menu bar widget. */
+ int height = CHAR_TO_PIXEL_HEIGHT (f, FRAME_HEIGHT (f));
+ /* Height of each line to flash. */
+ int flash_height = FRAME_LINE_HEIGHT (f);
+ /* These will be the left and right margins of the rectangles. */
+ int flash_left = FRAME_INTERNAL_BORDER_WIDTH (f);
+ int flash_right = PIXEL_WIDTH (f) - FRAME_INTERNAL_BORDER_WIDTH (f);
+
+ int width;
+
+ /* Don't flash the area between a scroll bar and the frame
+ edge it is next to. */
+ switch (FRAME_VERTICAL_SCROLL_BAR_TYPE (f))
+ {
+ case vertical_scroll_bar_left:
+ flash_left += VERTICAL_SCROLL_BAR_WIDTH_TRIM;
+ break;
+
+ case vertical_scroll_bar_right:
+ flash_right -= VERTICAL_SCROLL_BAR_WIDTH_TRIM;
+ break;
+ }
+
+ width = flash_right - flash_left;
+
+ /* If window is tall, flash top and bottom line. */
+ if (height > 3 * FRAME_LINE_HEIGHT (f))
+ {
+ XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), gc,
+ flash_left, FRAME_INTERNAL_BORDER_WIDTH (f),
+ width, flash_height);
+ XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), gc,
+ flash_left,
+ (height - flash_height
+ - FRAME_INTERNAL_BORDER_WIDTH (f)),
+ width, flash_height);
+ }
+ else
+ /* If it is short, flash it all. */
+ XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), gc,
+ flash_left, FRAME_INTERNAL_BORDER_WIDTH (f),
+ width, height - 2 * FRAME_INTERNAL_BORDER_WIDTH (f));
- XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), gc,
- width/4, height/4, width/2, height/2);
XFlush (FRAME_X_DISPLAY (f));
{
@@ -1151,8 +1189,24 @@ XTflash (f)
}
}
- XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), gc,
- width/4, height/4, width/2, height/2);
+ /* If window is tall, flash top and bottom line. */
+ if (height > 3 * FRAME_LINE_HEIGHT (f))
+ {
+ XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), gc,
+ flash_left, FRAME_INTERNAL_BORDER_WIDTH (f),
+ width, flash_height);
+ XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), gc,
+ flash_left,
+ (height - flash_height
+ - FRAME_INTERNAL_BORDER_WIDTH (f)),
+ width, flash_height);
+ }
+ else
+ /* If it is short, flash it all. */
+ XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), gc,
+ flash_left, FRAME_INTERNAL_BORDER_WIDTH (f),
+ width, height - 2 * FRAME_INTERNAL_BORDER_WIDTH (f));
+
XFreeGC (FRAME_X_DISPLAY (f), gc);
XFlush (FRAME_X_DISPLAY (f));
}
@@ -3241,7 +3295,6 @@ XTread_socket (sd, bufp, numchars, expected)
register int sd;
/* register */ struct input_event *bufp;
/* register */ int numchars;
- int waitp;
int expected;
{
int count = 0;