aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEli Zaretskii2010-01-09 06:00:21 -0500
committerEli Zaretskii2010-01-09 06:00:21 -0500
commit6eca625b774a4bdc782e8b878c8cf05663742101 (patch)
tree23651e860aa105896ce862462830ec5e00f1e510 /src
parentf14e303adcecf25fa1f116c4040de08a9ed6231b (diff)
parent4b00d3b1594378e77b3b485d1ed272be5bdab644 (diff)
downloademacs-6eca625b774a4bdc782e8b878c8cf05663742101.tar.gz
emacs-6eca625b774a4bdc782e8b878c8cf05663742101.zip
Merge from mainline.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog23
-rw-r--r--src/frame.h15
-rw-r--r--src/w32term.c5
-rw-r--r--src/window.h18
-rw-r--r--src/xdisp.c12
-rw-r--r--src/xfns.c2
-rw-r--r--src/xterm.c9
7 files changed, 55 insertions, 29 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index fd32d739bc0..309c663d1ef 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,25 @@
12010-01-09 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
2
3 * frame.h (FRAME_TOP_MARGIN_HEIGHT): New macro.
4 (FRAME_LINE_TO_PIXEL_Y, FRAME_PIXEL_Y_TO_LINE): Take account of pseudo
5 windows above internal border.
6
7 * window.h (WINDOW_MENU_BAR_P, WINDOW_TOOL_BAR_P): New macros.
8 (WINDOW_TOP_EDGE_Y, WINDOW_BOTTOM_EDGE_Y): Take account of pseudo
9 windows above internal border.
10
11 * xdisp.c (get_glyph_string_clip_rects, init_glyph_string): Don't treat
12 tool bar windows specially.
13
14 * xfns.c (x_set_tool_bar_lines): Take account of menu bar height.
15
16 * xterm.c (x_after_update_window_line): Don't treat tool bar windows
17 specially.
18 (XTflash): Take account of menu bar height.
19
20 * w32term.c (x_after_update_window_line): Don't treat tool bar windows
21 specially.
22
12010-01-08 Jan Djärv <jan.h.d@swipnet.se> 232010-01-08 Jan Djärv <jan.h.d@swipnet.se>
2 24
3 * dispnew.c (change_frame_size_1): newwidth == FRAME_COLS (f) must 25 * dispnew.c (change_frame_size_1): newwidth == FRAME_COLS (f) must
@@ -38,6 +60,7 @@
38 (xg_frame_resized, xg_frame_set_char_size): Call 60 (xg_frame_resized, xg_frame_set_char_size): Call
39 xg_clear_under_internal_border. 61 xg_clear_under_internal_border.
40 (xg_update_scrollbar_pos): Clear under old scroll bar position. 62 (xg_update_scrollbar_pos): Clear under old scroll bar position.
63
412010-01-05 Chong Yidong <cyd@stupidchicken.com> 642010-01-05 Chong Yidong <cyd@stupidchicken.com>
42 65
43 * keyboard.c (read_key_sequence): Catch keyboard switch after 66 * keyboard.c (read_key_sequence): Catch keyboard switch after
diff --git a/src/frame.h b/src/frame.h
index 8ed73c6c7d6..0386d7b4c84 100644
--- a/src/frame.h
+++ b/src/frame.h
@@ -590,6 +590,11 @@ typedef struct frame *FRAME_PTR;
590#define FRAME_TOP_MARGIN(F) \ 590#define FRAME_TOP_MARGIN(F) \
591 (FRAME_MENU_BAR_LINES (F) + FRAME_TOOL_BAR_LINES (F)) 591 (FRAME_MENU_BAR_LINES (F) + FRAME_TOOL_BAR_LINES (F))
592 592
593/* Pixel height of the top margin above. */
594
595#define FRAME_TOP_MARGIN_HEIGHT(f) \
596 (FRAME_TOP_MARGIN (f) * FRAME_LINE_HEIGHT (f))
597
593/* Nonzero if this frame should display a menu bar 598/* Nonzero if this frame should display a menu bar
594 in a way that does not use any text lines. */ 599 in a way that does not use any text lines. */
595#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) \ 600#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) \
@@ -975,7 +980,7 @@ extern Lisp_Object selected_frame;
975 at ROW/COL. */ 980 at ROW/COL. */
976 981
977#define FRAME_LINE_TO_PIXEL_Y(f, row) \ 982#define FRAME_LINE_TO_PIXEL_Y(f, row) \
978 (FRAME_INTERNAL_BORDER_WIDTH (f) \ 983 ((row < FRAME_TOP_MARGIN (f) ? 0 : FRAME_INTERNAL_BORDER_WIDTH (f)) \
979 + (row) * FRAME_LINE_HEIGHT (f)) 984 + (row) * FRAME_LINE_HEIGHT (f))
980 985
981#define FRAME_COL_TO_PIXEL_X(f, col) \ 986#define FRAME_COL_TO_PIXEL_X(f, col) \
@@ -1000,7 +1005,13 @@ extern Lisp_Object selected_frame;
1000 the pixel on FRAME at Y/X. */ 1005 the pixel on FRAME at Y/X. */
1001 1006
1002#define FRAME_PIXEL_Y_TO_LINE(f, y) \ 1007#define FRAME_PIXEL_Y_TO_LINE(f, y) \
1003 (((y) - FRAME_INTERNAL_BORDER_WIDTH (f)) \ 1008 (((y) < FRAME_TOP_MARGIN_HEIGHT (f) \
1009 ? (y) \
1010 : ((y) < FRAME_TOP_MARGIN_HEIGHT (f) + FRAME_INTERNAL_BORDER_WIDTH (f) \
1011 ? (y) - (FRAME_TOP_MARGIN_HEIGHT (f) + FRAME_INTERNAL_BORDER_WIDTH (f) \
1012 /* Arrange for the division to round down. */ \
1013 + FRAME_LINE_HEIGHT (f) - 1) \
1014 : (y) - FRAME_INTERNAL_BORDER_WIDTH (f))) \
1004 / FRAME_LINE_HEIGHT (f)) 1015 / FRAME_LINE_HEIGHT (f))
1005 1016
1006#define FRAME_PIXEL_X_TO_COL(f, x) \ 1017#define FRAME_PIXEL_X_TO_COL(f, x) \
diff --git a/src/w32term.c b/src/w32term.c
index 008042c810a..029e41e4bd9 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -734,11 +734,6 @@ x_after_update_window_line (desired_row)
734 { 734 {
735 int y = WINDOW_TO_FRAME_PIXEL_Y (w, max (0, desired_row->y)); 735 int y = WINDOW_TO_FRAME_PIXEL_Y (w, max (0, desired_row->y));
736 736
737 /* Internal border is drawn below the tool bar. */
738 if (WINDOWP (f->tool_bar_window)
739 && w == XWINDOW (f->tool_bar_window))
740 y -= width;
741
742 BLOCK_INPUT; 737 BLOCK_INPUT;
743 { 738 {
744 HDC hdc = get_frame_dc (f); 739 HDC hdc = get_frame_dc (f);
diff --git a/src/window.h b/src/window.h
index 80e7bfb73b2..7637ce6c047 100644
--- a/src/window.h
+++ b/src/window.h
@@ -403,18 +403,32 @@ struct window
403 (FRAME_INTERNAL_BORDER_WIDTH (WINDOW_XFRAME (W)) \ 403 (FRAME_INTERNAL_BORDER_WIDTH (WINDOW_XFRAME (W)) \
404 + WINDOW_RIGHT_EDGE_COL (W) * WINDOW_FRAME_COLUMN_WIDTH (W)) 404 + WINDOW_RIGHT_EDGE_COL (W) * WINDOW_FRAME_COLUMN_WIDTH (W))
405 405
406/* 1 if W is a menu bar window. */
407
408#define WINDOW_MENU_BAR_P(W) \
409 (WINDOWP (WINDOW_XFRAME (W)->menu_bar_window) \
410 && (W) == XWINDOW (WINDOW_XFRAME (W)->menu_bar_window))
411
412/* 1 if W is a tool bar window. */
413
414#define WINDOW_TOOL_BAR_P(W) \
415 (WINDOWP (WINDOW_XFRAME (W)->tool_bar_window) \
416 && (W) == XWINDOW (WINDOW_XFRAME (W)->tool_bar_window))
417
406/* Return the frame y-position at which window W starts. 418/* Return the frame y-position at which window W starts.
407 This includes a header line, if any. */ 419 This includes a header line, if any. */
408 420
409#define WINDOW_TOP_EDGE_Y(W) \ 421#define WINDOW_TOP_EDGE_Y(W) \
410 (FRAME_INTERNAL_BORDER_WIDTH (WINDOW_XFRAME (W)) \ 422 (((WINDOW_MENU_BAR_P (W) || WINDOW_TOOL_BAR_P (W)) \
423 ? 0 : FRAME_INTERNAL_BORDER_WIDTH (WINDOW_XFRAME (W))) \
411 + WINDOW_TOP_EDGE_LINE (W) * WINDOW_FRAME_LINE_HEIGHT (W)) 424 + WINDOW_TOP_EDGE_LINE (W) * WINDOW_FRAME_LINE_HEIGHT (W))
412 425
413/* Return the frame y-position before which window W ends. 426/* Return the frame y-position before which window W ends.
414 This includes a mode line, if any. */ 427 This includes a mode line, if any. */
415 428
416#define WINDOW_BOTTOM_EDGE_Y(W) \ 429#define WINDOW_BOTTOM_EDGE_Y(W) \
417 (FRAME_INTERNAL_BORDER_WIDTH (WINDOW_XFRAME (W)) \ 430 (((WINDOW_MENU_BAR_P (W) || WINDOW_TOOL_BAR_P (W)) \
431 ? 0 : FRAME_INTERNAL_BORDER_WIDTH (WINDOW_XFRAME (W))) \
418 + WINDOW_BOTTOM_EDGE_LINE (W) * WINDOW_FRAME_LINE_HEIGHT (W)) 432 + WINDOW_BOTTOM_EDGE_LINE (W) * WINDOW_FRAME_LINE_HEIGHT (W))
419 433
420 434
diff --git a/src/xdisp.c b/src/xdisp.c
index 87e5e9cc37d..7a6d634aa39 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -1983,12 +1983,6 @@ get_glyph_string_clip_rects (s, rects, n)
1983 r.y = WINDOW_HEADER_LINE_HEIGHT (s->w); 1983 r.y = WINDOW_HEADER_LINE_HEIGHT (s->w);
1984 else 1984 else
1985 r.y = max (0, s->row->y); 1985 r.y = max (0, s->row->y);
1986
1987 /* If drawing a tool-bar window, draw it over the internal border
1988 at the top of the window. */
1989 if (WINDOWP (s->f->tool_bar_window)
1990 && s->w == XWINDOW (s->f->tool_bar_window))
1991 r.y -= FRAME_INTERNAL_BORDER_WIDTH (s->f);
1992 } 1986 }
1993 1987
1994 r.y = WINDOW_TO_FRAME_PIXEL_Y (s->w, r.y); 1988 r.y = WINDOW_TO_FRAME_PIXEL_Y (s->w, r.y);
@@ -19916,12 +19910,6 @@ init_glyph_string (s, OPTIONAL_HDC (hdc) char2b, w, row, area, start, hl)
19916 s->first_glyph = row->glyphs[area] + start; 19910 s->first_glyph = row->glyphs[area] + start;
19917 s->height = row->height; 19911 s->height = row->height;
19918 s->y = WINDOW_TO_FRAME_PIXEL_Y (w, row->y); 19912 s->y = WINDOW_TO_FRAME_PIXEL_Y (w, row->y);
19919
19920 /* Display the internal border below the tool-bar window. */
19921 if (WINDOWP (s->f->tool_bar_window)
19922 && s->w == XWINDOW (s->f->tool_bar_window))
19923 s->y -= FRAME_INTERNAL_BORDER_WIDTH (s->f);
19924
19925 s->ybase = s->y + row->ascent; 19913 s->ybase = s->y + row->ascent;
19926} 19914}
19927 19915
diff --git a/src/xfns.c b/src/xfns.c
index b886a3ff674..572cf38e0c7 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -1403,7 +1403,7 @@ x_set_tool_bar_lines (f, value, oldval)
1403 { 1403 {
1404 int height = FRAME_INTERNAL_BORDER_WIDTH (f); 1404 int height = FRAME_INTERNAL_BORDER_WIDTH (f);
1405 int width = FRAME_PIXEL_WIDTH (f); 1405 int width = FRAME_PIXEL_WIDTH (f);
1406 int y = nlines * FRAME_LINE_HEIGHT (f); 1406 int y = (FRAME_MENU_BAR_LINES (f) + nlines) * FRAME_LINE_HEIGHT (f);
1407 1407
1408 /* height can be zero here. */ 1408 /* height can be zero here. */
1409 if (height > 0 && width > 0) 1409 if (height > 0 && width > 0)
diff --git a/src/xterm.c b/src/xterm.c
index efd30f4a601..2093b68c110 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -753,11 +753,6 @@ x_after_update_window_line (desired_row)
753 { 753 {
754 int y = WINDOW_TO_FRAME_PIXEL_Y (w, max (0, desired_row->y)); 754 int y = WINDOW_TO_FRAME_PIXEL_Y (w, max (0, desired_row->y));
755 755
756 /* Internal border is drawn below the tool bar. */
757 if (WINDOWP (f->tool_bar_window)
758 && w == XWINDOW (f->tool_bar_window))
759 y -= width;
760
761 BLOCK_INPUT; 756 BLOCK_INPUT;
762 x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), 757 x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
763 0, y, width, height, False); 758 0, y, width, height, False);
@@ -3062,7 +3057,7 @@ XTflash (f)
3062 XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), gc, 3057 XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), gc,
3063 flash_left, 3058 flash_left,
3064 (FRAME_INTERNAL_BORDER_WIDTH (f) 3059 (FRAME_INTERNAL_BORDER_WIDTH (f)
3065 + FRAME_TOOL_BAR_LINES (f) * FRAME_LINE_HEIGHT (f)), 3060 + FRAME_TOP_MARGIN_HEIGHT (f)),
3066 width, flash_height); 3061 width, flash_height);
3067 XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), gc, 3062 XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), gc,
3068 flash_left, 3063 flash_left,
@@ -3116,7 +3111,7 @@ XTflash (f)
3116 XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), gc, 3111 XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), gc,
3117 flash_left, 3112 flash_left,
3118 (FRAME_INTERNAL_BORDER_WIDTH (f) 3113 (FRAME_INTERNAL_BORDER_WIDTH (f)
3119 + FRAME_TOOL_BAR_LINES (f) * FRAME_LINE_HEIGHT (f)), 3114 + FRAME_TOP_MARGIN_HEIGHT (f)),
3120 width, flash_height); 3115 width, flash_height);
3121 XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), gc, 3116 XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), gc,
3122 flash_left, 3117 flash_left,