# HG changeset patch # User Karl Heuer # Date 929159071 0 # Node ID 487fdbc8de0fc105443c59e1447e19d7a8119368 # Parent a134726a4a156741664e19438964a680c43c7a38 (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. diff -r a134726a4a15 -r 487fdbc8de0f src/w32term.c --- a/src/w32term.c Sat Jun 12 03:36:46 1999 +0000 +++ b/src/w32term.c Sat Jun 12 03:44:31 1999 +0000 @@ -2436,6 +2436,25 @@ 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 @@ 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 @@ 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 @@ int cols, rows; { int pixelwidth, pixelheight; - Lisp_Object window; struct w32_display_info *dpyinfo = &one_w32_display_info; BLOCK_INPUT; @@ -4456,14 +4485,8 @@ 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; }