forked from electron/electron
-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
34 changed files
with
2,751 additions
and
76 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: Heilig Benedek <[email protected]> | ||
Date: Thu, 20 Sep 2018 17:47:54 -0700 | ||
Subject: disable-redraw-lock.patch | ||
|
||
Chromium uses a custom window titlebar implementation on Windows when DWM | ||
is disabled (Windows 7 and earlier, non Aero theme). The native titlebar | ||
sometimes painted over this custom titlebar, so a workaround was put in | ||
place to lock redraws in reaction to certain events if DWM is disabled, | ||
since the code assumes that in that case, the custom titlebar is painted. | ||
Electron forces the use of the native titlebar, which the workaround doesn't | ||
take into account, and still locks redraws, causing weird repainting issues | ||
in electron (and other applications). This patch provides a way to disable | ||
the redraw locking mechanism, which fixes these issues. The electron issue | ||
can be found at https://github.com/electron/electron/issues/1821 | ||
|
||
diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc | ||
index ec39cb0d15c80f051e89bf4d0f05368dff897fa7..472090adb19411366c50ed8e5a2f1276bc0a47eb 100644 | ||
--- a/ui/views/win/hwnd_message_handler.cc | ||
+++ b/ui/views/win/hwnd_message_handler.cc | ||
@@ -311,6 +311,10 @@ constexpr int kSynthesizedMouseMessagesTimeDifference = 500; | ||
|
||
} // namespace | ||
|
||
+bool HWNDMessageHandlerDelegate::HasNativeFrame() const { | ||
+ return false; | ||
+} | ||
+ | ||
// A scoping class that prevents a window from being able to redraw in response | ||
// to invalidations that may occur within it for the lifetime of the object. | ||
// | ||
@@ -361,7 +365,8 @@ class HWNDMessageHandler::ScopedRedrawLock { | ||
hwnd_(owner_->hwnd()), | ||
cancel_unlock_(false), | ||
should_lock_(owner_->IsVisible() && !owner->HasChildRenderingWindow() && | ||
- ::IsWindow(hwnd_) && !owner_->IsHeadless() && | ||
+ ::IsWindow(hwnd_) && !owner_->HasNativeFrame() && | ||
+ !owner_->IsHeadless() && | ||
(!(GetWindowLong(hwnd_, GWL_STYLE) & WS_CAPTION) || | ||
!ui::win::IsAeroGlassEnabled())) { | ||
if (should_lock_) | ||
@@ -1057,6 +1062,10 @@ HWNDMessageHandler::RegisterUnadjustedMouseEvent() { | ||
return scoped_enable; | ||
} | ||
|
||
+bool HWNDMessageHandler::HasNativeFrame() { | ||
+ return delegate_->HasNativeFrame(); | ||
+} | ||
+ | ||
//////////////////////////////////////////////////////////////////////////////// | ||
// HWNDMessageHandler, gfx::WindowImpl overrides: | ||
|
||
diff --git a/ui/views/win/hwnd_message_handler.h b/ui/views/win/hwnd_message_handler.h | ||
index e93d1727cbd8263d3b68e539856a577585a6092c..6d0adb7b5febc5625073312e7f1d557f89927ac8 100644 | ||
--- a/ui/views/win/hwnd_message_handler.h | ||
+++ b/ui/views/win/hwnd_message_handler.h | ||
@@ -210,6 +210,8 @@ class VIEWS_EXPORT HWNDMessageHandler : public gfx::WindowImpl, | ||
using TouchIDs = std::set<DWORD>; | ||
enum class DwmFrameState { kOff, kOn }; | ||
|
||
+ bool HasNativeFrame(); | ||
+ | ||
// Overridden from WindowImpl: | ||
HICON GetDefaultWindowIcon() const override; | ||
HICON GetSmallWindowIcon() const override; | ||
diff --git a/ui/views/win/hwnd_message_handler_delegate.h b/ui/views/win/hwnd_message_handler_delegate.h | ||
index 08e46c7b92f6cbe95c9cb524d09a6ed9e89ecf00..233dd12f86c20a7f5169caab998993f614e8bc7e 100644 | ||
--- a/ui/views/win/hwnd_message_handler_delegate.h | ||
+++ b/ui/views/win/hwnd_message_handler_delegate.h | ||
@@ -46,6 +46,8 @@ class VIEWS_EXPORT HWNDMessageHandlerDelegate { | ||
// True if the widget associated with this window has a non-client view. | ||
virtual bool HasNonClientView() const = 0; | ||
|
||
+ virtual bool HasNativeFrame() const; | ||
+ | ||
// Returns who we want to be drawing the frame. Either the system (Windows) | ||
// will handle it or Chrome will custom draw it. | ||
virtual FrameMode GetFrameMode() const = 0; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.