From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 7868) id 665C538582B4; Tue, 13 Feb 2024 14:38:16 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 665C538582B4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1707835096; bh=8Sv9pBAd3AnZpOFpQX5seRPplYO+Zv+Y1dvDQ+moOEA=; h=From:To:Subject:Date:From; b=DvjByd0LWaPypIyrLzN89ZUlatU9bXgghWGjThwmQH5LBa0zVH02DN1e6ymCgCUNf YeS4u/j7dpYalLV8R8g5zv2raRILUJ/XXncZbueVkHrNOsKpPsJ7HRStphsXXM85iF 0fc9adc5+3zOc57fj0Z1oT67T6VD1CceAjd1adMQ= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Takashi Yano To: cygwin-cvs@sourceware.org Subject: [newlib-cygwin] Cygwin: console: Fix a problem that minor ID is incorrect in ConEmu. X-Act-Checkin: newlib-cygwin X-Git-Author: Takashi Yano X-Git-Refname: refs/heads/master X-Git-Oldrev: ac92c4c9f564eda3158c1c0742c0939e6152f769 X-Git-Newrev: 8aad3a7edeb27b163db551403eecc94c959c857a Message-Id: <20240213143816.665C538582B4@sourceware.org> Date: Tue, 13 Feb 2024 14:38:16 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dnewlib-cygwin.git;h=3D8aad3a7edeb= 27b163db551403eecc94c959c857a commit 8aad3a7edeb27b163db551403eecc94c959c857a Author: Takashi Yano Date: Tue Feb 13 11:45:36 2024 +0900 Cygwin: console: Fix a problem that minor ID is incorrect in ConEmu. =20 Previously, minor device number of console was not assigned correctly in ConEmu environment. This is because console window of ConEmu is not enumerated by EnumWindows(). This patch fixes the issue. =20 Signed-off-by: Takashi Yano Diff: --- winsup/cygwin/autoload.cc | 2 ++ winsup/cygwin/devices.cc | 7 +++++++ winsup/cygwin/devices.in | 7 +++++++ winsup/cygwin/fhandler/console.cc | 14 ++++++++++++++ 4 files changed, 30 insertions(+) diff --git a/winsup/cygwin/autoload.cc b/winsup/cygwin/autoload.cc index 7e610bdd0..65e906e8b 100644 --- a/winsup/cygwin/autoload.cc +++ b/winsup/cygwin/autoload.cc @@ -548,7 +548,9 @@ LoadDLLfunc (DefWindowProcW, user32) LoadDLLfunc (DestroyWindow, user32) LoadDLLfunc (DispatchMessageW, user32) LoadDLLfunc (EmptyClipboard, user32) +LoadDLLfunc (EnumChildWindows, user32) LoadDLLfunc (EnumWindows, user32) +LoadDLLfunc (GetClassNameA, user32) LoadDLLfunc (GetClipboardData, user32) LoadDLLfunc (GetDC, user32) LoadDLLfunc (GetForegroundWindow, user32) diff --git a/winsup/cygwin/devices.cc b/winsup/cygwin/devices.cc index 167b0e4b4..ca1fdf3be 100644 --- a/winsup/cygwin/devices.cc +++ b/winsup/cygwin/devices.cc @@ -81,6 +81,13 @@ enum_cons_dev (HWND hw, LPARAM lp) UnmapViewOfFile ((void *) cs); CloseHandle (h); } + else + { /* Only for ConEmu */ + char class_hw[32]; + if (19 =3D=3D GetClassName (hw, class_hw, sizeof (class_hw)) + && 0 =3D=3D strcmp (class_hw, "VirtualConsoleClass")) + EnumChildWindows (hw, enum_cons_dev, lp); + } return TRUE; } =20 diff --git a/winsup/cygwin/devices.in b/winsup/cygwin/devices.in index 48d3843fe..842f09c18 100644 --- a/winsup/cygwin/devices.in +++ b/winsup/cygwin/devices.in @@ -77,6 +77,13 @@ enum_cons_dev (HWND hw, LPARAM lp) UnmapViewOfFile ((void *) cs); CloseHandle (h); } + else + { /* Only for ConEmu */ + char class_hw[32]; + if (19 =3D=3D GetClassName (hw, class_hw, sizeof (class_hw)) + && 0 =3D=3D strcmp (class_hw, "VirtualConsoleClass")) + EnumChildWindows (hw, enum_cons_dev, lp); + } return TRUE; } =20 diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/con= sole.cc index b0907eb31..70824e694 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -250,6 +250,13 @@ enum_windows (HWND hw, LPARAM lp) UnmapViewOfFile ((void *) cs); CloseHandle (h); } + else + { /* Only for ConEmu */ + char class_hw[32]; + if (19 =3D=3D GetClassName (hw, class_hw, sizeof (class_hw)) + && 0 =3D=3D strcmp (class_hw, "VirtualConsoleClass")) + EnumChildWindows (hw, enum_windows, lp); + } return TRUE; } =20 @@ -656,6 +663,13 @@ scan_console (HWND hw, LPARAM lp) UnmapViewOfFile ((void *) cs); CloseHandle (h); } + else + { /* Only for ConEmu */ + char class_hw[32]; + if (19 =3D=3D GetClassName (hw, class_hw, sizeof (class_hw)) + && 0 =3D=3D strcmp (class_hw, "VirtualConsoleClass")) + EnumChildWindows (hw, scan_console, lp); + } return TRUE; }