fix: moveAbove not working on Windows (#23161)
* fix moveAbove on Windows systems The documentation for [setWindowPos](https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setwindowpos) second argument `hWndInsertAfter` is a bit confusing... > A handle to the window to precede the positioned window in the Z order. This parameter must be a window handle or one of the following values. Since Windows refers to the Z order from low to high it means that the window provided as reference will always _precede_ the electron window, which is the opposite of what we want in this function, since the electron window is displayed behind the referenced window. The change is simply to ask `SetWindowPos` to position our window *behind* the window that's *above* the reference window, effectively making our window sit just above the reference one. * lint
This commit is contained in:
parent
a041882192
commit
b3909f5600
1 changed files with 2 additions and 4 deletions
|
@ -654,10 +654,8 @@ bool NativeWindowViews::MoveAbove(const std::string& sourceId) {
|
||||||
if (!::IsWindow(otherWindow))
|
if (!::IsWindow(otherWindow))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
gfx::Point pos = GetPosition();
|
::SetWindowPos(GetAcceleratedWidget(), GetWindow(otherWindow, GW_HWNDPREV), 0,
|
||||||
gfx::Size size = GetSize();
|
0, 0, 0,
|
||||||
::SetWindowPos(GetAcceleratedWidget(), otherWindow, pos.x(), pos.y(),
|
|
||||||
size.width(), size.height(),
|
|
||||||
SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
|
SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
|
||||||
#elif defined(USE_X11)
|
#elif defined(USE_X11)
|
||||||
if (!IsWindowValid(id.id))
|
if (!IsWindowValid(id.id))
|
||||||
|
|
Loading…
Reference in a new issue