mirror of
https://github.com/electron/electron.git
synced 2026-04-10 03:01:51 -04:00
Merge pull request #8628 from Spacetech/master
Implement invalidate for non-offscreen mode
This commit is contained in:
@@ -1500,13 +1500,16 @@ int WebContents::GetFrameRate() const {
|
||||
}
|
||||
|
||||
void WebContents::Invalidate() {
|
||||
if (!IsOffScreen())
|
||||
return;
|
||||
|
||||
auto* osr_rwhv = static_cast<OffScreenRenderWidgetHostView*>(
|
||||
if (IsOffScreen()) {
|
||||
auto* osr_rwhv = static_cast<OffScreenRenderWidgetHostView*>(
|
||||
web_contents()->GetRenderWidgetHostView());
|
||||
if (osr_rwhv)
|
||||
osr_rwhv->Invalidate();
|
||||
if (osr_rwhv)
|
||||
osr_rwhv->Invalidate();
|
||||
} else {
|
||||
const auto owner_window = owner_window();
|
||||
if (owner_window)
|
||||
owner_window->Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
void WebContents::SetZoomLevel(double level) {
|
||||
|
||||
@@ -124,6 +124,7 @@ class NativeWindow : public base::SupportsUserData,
|
||||
std::string* error = nullptr) = 0;
|
||||
virtual bool IsAlwaysOnTop() = 0;
|
||||
virtual void Center() = 0;
|
||||
virtual void Invalidate() = 0;
|
||||
virtual void SetTitle(const std::string& title) = 0;
|
||||
virtual std::string GetTitle() = 0;
|
||||
virtual void FlashFrame(bool flash) = 0;
|
||||
|
||||
@@ -71,6 +71,7 @@ class NativeWindowMac : public NativeWindow,
|
||||
int relativeLevel, std::string* error) override;
|
||||
bool IsAlwaysOnTop() override;
|
||||
void Center() override;
|
||||
void Invalidate() override;
|
||||
void SetTitle(const std::string& title) override;
|
||||
std::string GetTitle() override;
|
||||
void FlashFrame(bool flash) override;
|
||||
|
||||
@@ -1101,6 +1101,11 @@ void NativeWindowMac::Center() {
|
||||
[window_ center];
|
||||
}
|
||||
|
||||
void NativeWindowMac::Invalidate() {
|
||||
[window_ flushWindow];
|
||||
[[window_ contentView] setNeedsDisplay:YES];
|
||||
}
|
||||
|
||||
void NativeWindowMac::SetTitle(const std::string& title) {
|
||||
// For macOS <= 10.9, the setTitleVisibility API is not available, we have
|
||||
// to avoid calling setTitle for frameless window.
|
||||
|
||||
@@ -695,6 +695,10 @@ void NativeWindowViews::Center() {
|
||||
window_->CenterWindow(GetSize());
|
||||
}
|
||||
|
||||
void NativeWindowViews::Invalidate() {
|
||||
window_->SchedulePaintInRect(gfx::Rect(GetBounds().size()));
|
||||
}
|
||||
|
||||
void NativeWindowViews::SetTitle(const std::string& title) {
|
||||
title_ = title;
|
||||
window_->UpdateWindowTitle();
|
||||
|
||||
@@ -90,6 +90,7 @@ class NativeWindowViews : public NativeWindow,
|
||||
int relativeLevel, std::string* error) override;
|
||||
bool IsAlwaysOnTop() override;
|
||||
void Center() override;
|
||||
void Invalidate() override;
|
||||
void SetTitle(const std::string& title) override;
|
||||
std::string GetTitle() override;
|
||||
void FlashFrame(bool flash) override;
|
||||
|
||||
Reference in New Issue
Block a user