[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#55208: 29.0.50; MS-Windows GUI selection dialogs and double-bufferin
From: |
Po Lu |
Subject: |
bug#55208: 29.0.50; MS-Windows GUI selection dialogs and double-buffering |
Date: |
Sun, 08 May 2022 13:33:40 +0800 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.0.91 (gnu/linux) |
Eli Zaretskii <eliz@gnu.org> writes:
> diff --git a/src/w32fns.c b/src/w32fns.c
> index 0f25c1a..e5becb5 100644
> --- a/src/w32fns.c
> +++ b/src/w32fns.c
> @@ -247,6 +247,8 @@ #define MENU_FREE_DELAY 1000
>
> static int w32_unicode_gui;
>
> +static bool w32_selection_dialog_open;
> +
> /* From w32menu.c */
> int menubar_in_use = 0;
>
> @@ -4184,6 +4186,16 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam,
> LPARAM lParam)
> update_rect.left, update_rect.top,
> update_rect.right, update_rect.bottom));
> #endif
> + /* Under double-buffering, update the frame from the back
> + buffer, to prevent a "ghost" of the selection dialog to
> + be left on display while the user selects in the dialog. */
> + if (w32_selection_dialog_open
> + && !w32_disable_double_buffering
> + && FRAME_OUTPUT_DATA (f)->paint_dc)
> + BitBlt (FRAME_OUTPUT_DATA (f)->paint_buffer_handle,
> + 0, 0, FRAME_PIXEL_WIDTH (f), FRAME_PIXEL_HEIGHT (f),
> + FRAME_OUTPUT_DATA (f)->paint_dc, 0, 0, SRCCOPY);
> +
> EndPaint (hwnd, &paintStruct);
> leave_crit ();
>
> @@ -7755,6 +7767,15 @@ w32_dialog_in_progress (Lisp_Object in_progress)
> {
> Lisp_Object frames, frame;
>
> + /* Indicate to w32_wnd_proc that the selection dialog is about to be
> + open (or was closed, if IN_PROGRESS is nil). */
> + if (!w32_disable_double_buffering)
> + {
> + enter_crit ();
> + w32_selection_dialog_open = !NILP (in_progress);
> + leave_crit ();
> + }
> +
> /* Don't let frames in `above' z-group obscure dialog windows. */
> FOR_EACH_FRAME (frames, frame)
> {
This seems to work fine, please go ahead and install it. Thanks.
- bug#55208: 29.0.50; MS-Windows GUI selection dialogs and double-buffering, (continued)
- bug#55208: 29.0.50; MS-Windows GUI selection dialogs and double-buffering, Po Lu, 2022/05/01
- bug#55208: 29.0.50; MS-Windows GUI selection dialogs and double-buffering, Eli Zaretskii, 2022/05/01
- bug#55208: 29.0.50; MS-Windows GUI selection dialogs and double-buffering, Eli Zaretskii, 2022/05/07
- bug#55208: 29.0.50; MS-Windows GUI selection dialogs and double-buffering, Po Lu, 2022/05/07
- bug#55208: 29.0.50; MS-Windows GUI selection dialogs and double-buffering, Eli Zaretskii, 2022/05/07
- bug#55208: 29.0.50; MS-Windows GUI selection dialogs and double-buffering, Po Lu, 2022/05/07
- bug#55208: 29.0.50; MS-Windows GUI selection dialogs and double-buffering, Eli Zaretskii, 2022/05/07
- bug#55208: 29.0.50; MS-Windows GUI selection dialogs and double-buffering, Po Lu, 2022/05/07
- bug#55208: 29.0.50; MS-Windows GUI selection dialogs and double-buffering, Eli Zaretskii, 2022/05/07
- bug#55208: 29.0.50; MS-Windows GUI selection dialogs and double-buffering,
Po Lu <=
- bug#55208: 29.0.50; MS-Windows GUI selection dialogs and double-buffering, Eli Zaretskii, 2022/05/08