diff options
author | Karl Heuer <[email protected]> | 1999-06-12 03:44:31 +0000 |
---|---|---|
committer | Karl Heuer <[email protected]> | 1999-06-12 03:44:31 +0000 |
commit | 31d4844a6a48c8122021faeb1a69a939d7f3cb76 (patch) | |
tree | 1929a14cc6edd641dabb847baf8413cdaae48cf8 /src/w32term.c | |
parent | 318f417cd31e7d2b0dcedcb4d63297bfb582b71f (diff) |
(cancel_mouse_face): new function. See equiv
changes to xterm.c on 1996-10-31.
(x_set_window_size): use cancel_mouse_face.
(w32_read_socket): use cancel_mouse_face.
Update frame position when size is restored.
Diffstat (limited to 'src/w32term.c')
-rw-r--r-- | src/w32term.c | 43 |
1 files changed, 33 insertions, 10 deletions
diff --git a/src/w32term.c b/src/w32term.c index 67d57927bc..1d094708e3 100644 --- a/src/w32term.c +++ b/src/w32term.c @@ -2436,6 +2436,25 @@ clear_mouse_face (dpyinfo) dpyinfo->mouse_face_end_row = dpyinfo->mouse_face_end_col = -1; dpyinfo->mouse_face_window = Qnil; } + +/* Just discard the mouse face information for frame F, if any. + This is used when the size of F is changed. */ + +void +cancel_mouse_face (f) + FRAME_PTR f; +{ + Lisp_Object window; + struct w32_display_info *dpyinfo = FRAME_W32_DISPLAY_INFO (f); + + window = dpyinfo->mouse_face_window; + if (! NILP (window) && XFRAME (XWINDOW (window)->frame) == f) + { + dpyinfo->mouse_face_beg_row = dpyinfo->mouse_face_beg_col = -1; + dpyinfo->mouse_face_end_row = dpyinfo->mouse_face_end_col = -1; + dpyinfo->mouse_face_window = Qnil; + } +} struct scroll_bar *x_window_to_scroll_bar (); static void x_scroll_bar_report_motion (); @@ -3698,6 +3717,17 @@ w32_read_socket (sd, bufp, numchars, expected) if (f->iconified) { + int x, y; + + /* Reset top and left positions of the Window + here since Windows sends a WM_MOVE message + BEFORE telling us the Window is minimized + when the Window is iconified, with 3000,3000 + as the co-ords. */ + x_real_positions (f, &x, &y); + f->output_data.w32->left_pos = x; + f->output_data.w32->top_pos = y; + bufp->kind = deiconify_event; XSETFRAME (bufp->frame_or_window, f); bufp++; @@ -3744,7 +3774,7 @@ w32_read_socket (sd, bufp, numchars, expected) change_frame_size (f, rows, columns, 0, 1); SET_FRAME_GARBAGED (f); - + cancel_mouse_face (f); f->output_data.w32->pixel_width = width; f->output_data.w32->pixel_height = height; f->output_data.w32->win_gravity = NorthWestGravity; @@ -4387,7 +4417,6 @@ x_set_window_size (f, change_gravity, cols, rows) int cols, rows; { int pixelwidth, pixelheight; - Lisp_Object window; struct w32_display_info *dpyinfo = &one_w32_display_info; BLOCK_INPUT; @@ -4456,14 +4485,8 @@ x_set_window_size (f, change_gravity, cols, rows) since it might be in a place that's outside the new frame size. Actually checking whether it is outside is a pain in the neck, so don't try--just let the highlighting be done afresh with new size. */ - window = dpyinfo->mouse_face_window; - if (! NILP (window) && XFRAME (window) == f) - { - dpyinfo->mouse_face_beg_row = dpyinfo->mouse_face_beg_col = -1; - dpyinfo->mouse_face_end_row = dpyinfo->mouse_face_end_col = -1; - dpyinfo->mouse_face_window = Qnil; - } - + cancel_mouse_face (f); + UNBLOCK_INPUT; } |