https://git.reactos.org/?p=reactos.git;a=commitdiff;h=97277b4deb998fb2e6ddb…
commit 97277b4deb998fb2e6ddb6a632c455f1dcccbd53
Author: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
AuthorDate: Thu Jul 13 23:00:05 2023 +0200
Commit: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
CommitDate: Sun Jul 16 19:13:14 2023 +0200
[CONSRV] Work-around buggy WM_MOUSEMOVE events received when VBox Mouse Integration is enabled. (#5441)
CORE-8394
These caused the "Ignore-next-mouse-event" mechanism of the console
(used e.g. in QuickEdit mode for not triggering the appearance of the
context menu, etc.) to not work.
Please note that these buggy events, that arise when testing ReactOS
in VirtualBox with Mouse Integration is enabled, do not show up when
running instead Windows (2003, ...) in the same configured VM.
Addendum to commits ac51557 (r63792) and 33d8a4b (r67218).
Improved fix for the one reported in PR #5406 by contributor 'whindsaks',
as it keeps the separation between the flag that manages the working-around
of the bug, and the other flag that is used for ignoring the genuine next
mouse event that follows mouse-button-down events.
---
win32ss/user/winsrv/consrv/frontends/gui/conwnd.c | 36 ++++++++++++++++++-----
1 file changed, 29 insertions(+), 7 deletions(-)
diff --git a/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c b/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c
index 12e14f9cec8..42a8288073e 100644
--- a/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c
+++ b/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c
@@ -1778,6 +1778,29 @@ OnMouse(PGUI_CONSOLE_DATA GuiData, UINT msg, WPARAM wParam, LPARAM lParam)
DoDefault = TRUE; // FALSE;
break;
}
+
+ /*
+ * HACK FOR CORE-8394 (Part 1):
+ *
+ * It appears that when running ReactOS on VBox with Mouse Integration
+ * enabled, the next mouse event coming after a button-down action is
+ * a mouse-move. However it is NOT always a rule, so that we cannot use
+ * the IgnoreNextMouseEvent flag to just "ignore" the next mouse event,
+ * thinking it would always be a mouse-move event.
+ *
+ * To work around this problem (that should really be fixed in Win32k),
+ * we use a second flag to ignore this possible next mouse move event.
+ */
+ switch (msg)
+ {
+ case WM_LBUTTONDOWN:
+ case WM_MBUTTONDOWN:
+ case WM_RBUTTONDOWN:
+ case WM_XBUTTONDOWN:
+ GuiData->HackCORE8394IgnoreNextMove = TRUE;
+ default:
+ break;
+ }
}
else if (GetConsoleInputBufferMode(Console) & ENABLE_MOUSE_INPUT)
{
@@ -1920,15 +1943,14 @@ OnMouse(PGUI_CONSOLE_DATA GuiData, UINT msg, WPARAM wParam, LPARAM lParam)
/*
* HACK FOR CORE-8394 (Part 1):
*
- * It appears that depending on which VM ReactOS runs, the next mouse
- * signal coming after a button-down action can be a mouse-move (e.g.
- * on VBox, whereas on QEMU it is not the case). However it is NOT a
- * rule, so that we cannot use the IgnoreNextMouseSignal flag to just
- * "ignore" the next mouse event, thinking it would always be a mouse-
- * move signal.
+ * It appears that when running ReactOS on VBox with Mouse Integration
+ * enabled, the next mouse event coming after a button-down action is
+ * a mouse-move. However it is NOT always a rule, so that we cannot use
+ * the IgnoreNextMouseEvent flag to just "ignore" the next mouse event,
+ * thinking it would always be a mouse-move event.
*
* To work around this problem (that should really be fixed in Win32k),
- * we use a second flag to ignore this possible next mouse move signal.
+ * we use a second flag to ignore this possible next mouse move event.
*/
switch (msg)
{
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=8dd3af6d317c0d73c2ef4…
commit 8dd3af6d317c0d73c2ef462fffedf4f36d110103
Author: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
AuthorDate: Sun Jul 16 17:50:14 2023 +0200
Commit: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
CommitDate: Sun Jul 16 19:12:00 2023 +0200
[CONSRV] Mouse 'signal' --> mouse 'event'
---
win32ss/user/winsrv/consrv/frontends/gui/conwnd.c | 20 ++++++++++----------
win32ss/user/winsrv/consrv/frontends/gui/conwnd.h | 2 +-
win32ss/user/winsrv/consrv/frontends/gui/guiterm.c | 4 ++--
3 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c b/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c
index d265711f261..12e14f9cec8 100644
--- a/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c
+++ b/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c
@@ -747,12 +747,12 @@ OnActivate(PGUI_CONSOLE_DATA GuiData, WPARAM wParam)
}
/*
- * Ignore the next mouse signal when we are going to be enabled again via
+ * Ignore the next mouse event when we are going to be enabled again via
* the mouse, in order to prevent, e.g. when we are in Edit mode, erroneous
* mouse actions from the user that could spoil text selection or copy/pastes.
*/
if (ActivationState == WA_CLICKACTIVE)
- GuiData->IgnoreNextMouseSignal = TRUE;
+ GuiData->IgnoreNextMouseEvent = TRUE;
}
static VOID
@@ -1621,7 +1621,7 @@ OnMouse(PGUI_CONSOLE_DATA GuiData, UINT msg, WPARAM wParam, LPARAM lParam)
// and whether we are or not in edit mode, in order to know if we need
// to deal with the mouse.
- if (GuiData->IgnoreNextMouseSignal)
+ if (GuiData->IgnoreNextMouseEvent)
{
if (msg != WM_LBUTTONDOWN &&
msg != WM_MBUTTONDOWN &&
@@ -1629,15 +1629,15 @@ OnMouse(PGUI_CONSOLE_DATA GuiData, UINT msg, WPARAM wParam, LPARAM lParam)
msg != WM_XBUTTONDOWN)
{
/*
- * If this mouse signal is not a button-down action
+ * If this mouse event is not a button-down action
* then this is the last one being ignored.
*/
- GuiData->IgnoreNextMouseSignal = FALSE;
+ GuiData->IgnoreNextMouseEvent = FALSE;
}
else
{
/*
- * This mouse signal is a button-down action.
+ * This mouse event is a button-down action.
* Ignore it and perform default action.
*/
DoDefault = TRUE;
@@ -1739,8 +1739,8 @@ OnMouse(PGUI_CONSOLE_DATA GuiData, UINT msg, WPARAM wParam, LPARAM lParam)
GuiData->Selection.dwFlags |= CONSOLE_MOUSE_SELECTION | CONSOLE_MOUSE_DOWN;
UpdateSelection(GuiData, &cL, &cR);
- /* Ignore the next mouse move signal */
- GuiData->IgnoreNextMouseSignal = TRUE;
+ /* Ignore the next mouse move event */
+ GuiData->IgnoreNextMouseEvent = TRUE;
#undef IS_WORD_SEP
}
@@ -1759,8 +1759,8 @@ OnMouse(PGUI_CONSOLE_DATA GuiData, UINT msg, WPARAM wParam, LPARAM lParam)
Copy(GuiData);
}
- /* Ignore the next mouse move signal */
- GuiData->IgnoreNextMouseSignal = TRUE;
+ /* Ignore the next mouse move event */
+ GuiData->IgnoreNextMouseEvent = TRUE;
break;
}
diff --git a/win32ss/user/winsrv/consrv/frontends/gui/conwnd.h b/win32ss/user/winsrv/consrv/frontends/gui/conwnd.h
index 6a5215fb693..826f3fa875d 100644
--- a/win32ss/user/winsrv/consrv/frontends/gui/conwnd.h
+++ b/win32ss/user/winsrv/consrv/frontends/gui/conwnd.h
@@ -69,7 +69,7 @@ typedef struct _GUI_CONSOLE_DATA
/*** The following may be put per-screen-buffer !! ***/
HCURSOR hCursor; /* Handle to the mouse cursor */
INT MouseCursorRefCount; /* The reference counter associated with the mouse cursor. >= 0 and the cursor is shown; < 0 and the cursor is hidden. */
- BOOL IgnoreNextMouseSignal; /* Used when we need to not process a mouse signal */
+ BOOL IgnoreNextMouseEvent; /* Used when we need to not process a mouse event */
BOOL HackCORE8394IgnoreNextMove; /* HACK FOR CORE-8394. See conwnd.c!OnMouse for more details. */
diff --git a/win32ss/user/winsrv/consrv/frontends/gui/guiterm.c b/win32ss/user/winsrv/consrv/frontends/gui/guiterm.c
index f272b57acf0..5b9cf9d8cdc 100644
--- a/win32ss/user/winsrv/consrv/frontends/gui/guiterm.c
+++ b/win32ss/user/winsrv/consrv/frontends/gui/guiterm.c
@@ -530,8 +530,8 @@ GuiInitFrontEnd(IN OUT PFRONTEND This,
GuiData->hCursor = ghDefaultCursor;
GuiData->MouseCursorRefCount = 0;
- /* A priori don't ignore mouse signals */
- GuiData->IgnoreNextMouseSignal = FALSE;
+ /* A priori don't ignore mouse events */
+ GuiData->IgnoreNextMouseEvent = FALSE;
/* Initialize HACK FOR CORE-8394. See conwnd.c!OnMouse for more details. */
GuiData->HackCORE8394IgnoreNextMove = FALSE;
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=4f542ebd8d6318a1ca2f0…
commit 4f542ebd8d6318a1ca2f0f4755b88c5a6eecb198
Author: Carl J. Bialorucki <cbialo2(a)outlook.com>
AuthorDate: Sat Jul 15 11:06:30 2023 -0600
Commit: GitHub <noreply(a)github.com>
CommitDate: Sat Jul 15 20:06:30 2023 +0300
[BOOTDATA] Show Explorer status bar by default (#5443)
Enable the explorer status bar by default, which
the vast majority of our community voted for.
Set `HKCU\Software\Microsoft\Internet Explorer\Main\StatusBarOther`
to 1 in hivedef.inf. This will show the status bar by default.
CORE-19028 CORE-19010
---
boot/bootdata/hivedef.inf | 1 +
1 file changed, 1 insertion(+)
diff --git a/boot/bootdata/hivedef.inf b/boot/bootdata/hivedef.inf
index 6774bbc2a0b..484c4cbbb7b 100644
--- a/boot/bootdata/hivedef.inf
+++ b/boot/bootdata/hivedef.inf
@@ -1899,6 +1899,7 @@ HKCU,"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced","StartMenuLog
; "Hidden" to be changed to 2 if we later want to have "Hide hidden files by default"
HKCU,"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced","Hidden",0x00010003,1
HKCU,"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced","ShowSuperHidden",0x00010003,0
+HKCU,"SOFTWARE\Microsoft\Internet Explorer\Main","StatusBarOther",0x00010003,1
; ComDlg32
HKCU,"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32",,0x00000012