[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]
[MD:1179]resize error of ediff frame
- X-ml-count: 1179
- Subject: [MD:1179]resize error of ediff frame
- From: Miyashita Hisashi(宮下 尚:HIMI) <himi@xxxxxxxxxxxxxxxxxxxxxxxxx>
- Date: 12 May 1999 09:31:05 +0900
- User-agent: T-gnus/6.10.058 (based on Pterodactyl Gnus v0.76) SEMI/1.13.3 (Komaiko) FLIM/1.12.6 (Family-Kōenmae) Emacs/20.3.8 (i386-*-nt4.0) MULE/4.0 (HANANOEN) Meadow/1.04 Alpha1 (TSUTSUJI)
もりさん、ありがとうございます。
mouse faceの扱いは、確かに少し変わっていたみたいです。
xterm.cからsync upして、以下のように変更しました。
## mergin分のはみ出しが起きたときに発生するんですな。
from himi
Index: mw32term.c
===================================================================
RCS file: g:/repdev/Meadow/src/mw32term.c,v
retrieving revision 1.6
diff -c -r1.6 mw32term.c
*** mw32term.c 1999/04/30 19:01:31 1.6
--- mw32term.c 1999/05/12 00:28:01
***************
*** 2266,2277 ****
FRAME_PTR f = XFRAME (WINDOW_FRAME (w));
int i;
int row = 0;
! int left = w->left;
int top = XFASTINT (w->top);
int height = XFASTINT (w->height) - ! MINI_WINDOW_P (w);
int width = window_internal_width (w);
int *charstarts;
int lastcol;
/* Find the right row. */
for (i = 0;
--- 2266,2278 ----
FRAME_PTR f = XFRAME (WINDOW_FRAME (w));
int i;
int row = 0;
! int left = WINDOW_LEFT_MARGIN (w);
int top = XFASTINT (w->top);
int height = XFASTINT (w->height) - ! MINI_WINDOW_P (w);
int width = window_internal_width (w);
int *charstarts;
int lastcol;
+ int maybe_next_line = 0;
/* Find the right row. */
for (i = 0;
***************
*** 2281,2286 ****
--- 2282,2294 ----
int linestart = FRAME_CURRENT_GLYPHS (f)->charstarts[top + i][left];
if (linestart > pos)
break;
+ /* If the position sought is the end of the buffer,
+ don't include the blank lines at the bottom of the window. */
+ if (linestart == pos && pos == BUF_ZV (XBUFFER (w->buffer)))
+ {
+ maybe_next_line = 1;
+ break;
+ }
if (linestart > 0)
row = i;
}
***************
*** 2299,2305 ****
else if (charstarts[left + i] > pos)
break;
else if (charstarts[left + i] > 0)
! lastcol = left + i;
}
*rowp = row + top;
--- 2307,2322 ----
else if (charstarts[left + i] > pos)
break;
else if (charstarts[left + i] > 0)
! lastcol = left + i + 1;
! }
!
! /* If we're looking for the end of the buffer,
! and we didn't find it in the line we scanned,
! use the start of the following line. */
! if (maybe_next_line)
! {
! row++;
! lastcol = left;
}
*rowp = row + top;
***************
*** 2330,2343 ****
for (i = mouse_face_beg_row; i <= mouse_face_end_row; i++)
{
! int column = (i == mouse_face_beg_row ? mouse_face_beg_col : w->left);
! int endcolumn = (i == mouse_face_end_row ? mouse_face_end_col : w->left + width);
endcolumn = min (endcolumn, FRAME_CURRENT_GLYPHS (f)->used[i]);
/* If the cursor's in the text we are about to rewrite,
turn the cursor off. */
if (i == curs_y
! && curs_x >= mouse_face_beg_col - 1 && curs_x <= mouse_face_end_col)
{
w32_display_cursor (f, 0);
cursor_off = 1;
--- 2347,2363 ----
for (i = mouse_face_beg_row; i <= mouse_face_end_row; i++)
{
! int column = (i == mouse_face_beg_row ? mouse_face_beg_col
! : WINDOW_LEFT_MARGIN (w));
! int endcolumn = (i == mouse_face_end_row ? mouse_face_end_col
! : WINDOW_LEFT_MARGIN (w) + width);
endcolumn = min (endcolumn, FRAME_CURRENT_GLYPHS (f)->used[i]);
/* If the cursor's in the text we are about to rewrite,
turn the cursor off. */
if (i == curs_y
! && curs_x >= column - 1
! && curs_x <= endcolumn)
{
w32_display_cursor (f, 0);
cursor_off = 1;