fix: send NSView* as the response to getNativeWindowHandle() instead of a null handle (#15521)
This commit is contained in:
parent
746beb0d8b
commit
9aed2a465f
6 changed files with 22 additions and 2 deletions
|
@ -691,8 +691,11 @@ void TopLevelWindow::SetBrowserView(v8::Local<v8::Value> value) {
|
||||||
}
|
}
|
||||||
|
|
||||||
v8::Local<v8::Value> TopLevelWindow::GetNativeWindowHandle() {
|
v8::Local<v8::Value> TopLevelWindow::GetNativeWindowHandle() {
|
||||||
gfx::AcceleratedWidget handle = window_->GetAcceleratedWidget();
|
// TODO(MarshallOfSound): Replace once
|
||||||
return ToBuffer(isolate(), static_cast<void*>(&handle), sizeof(handle));
|
// https://chromium-review.googlesource.com/c/chromium/src/+/1253094/ has
|
||||||
|
// landed
|
||||||
|
auto handle = window_->GetNativeWindowHandlePointer();
|
||||||
|
return ToBuffer(isolate(), std::get<0>(handle), std::get<1>(handle));
|
||||||
}
|
}
|
||||||
|
|
||||||
void TopLevelWindow::SetProgressBar(double progress, mate::Arguments* args) {
|
void TopLevelWindow::SetProgressBar(double progress, mate::Arguments* args) {
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <tuple>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "atom/browser/native_window_observer.h"
|
#include "atom/browser/native_window_observer.h"
|
||||||
|
@ -152,6 +153,7 @@ class NativeWindow : public base::SupportsUserData,
|
||||||
virtual gfx::NativeView GetNativeView() const = 0;
|
virtual gfx::NativeView GetNativeView() const = 0;
|
||||||
virtual gfx::NativeWindow GetNativeWindow() const = 0;
|
virtual gfx::NativeWindow GetNativeWindow() const = 0;
|
||||||
virtual gfx::AcceleratedWidget GetAcceleratedWidget() const = 0;
|
virtual gfx::AcceleratedWidget GetAcceleratedWidget() const = 0;
|
||||||
|
virtual std::tuple<void*, int> GetNativeWindowHandlePointer() const = 0;
|
||||||
|
|
||||||
// Taskbar/Dock APIs.
|
// Taskbar/Dock APIs.
|
||||||
enum ProgressState {
|
enum ProgressState {
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <tuple>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "atom/browser/native_window.h"
|
#include "atom/browser/native_window.h"
|
||||||
|
@ -106,6 +107,7 @@ class NativeWindowMac : public NativeWindow {
|
||||||
gfx::NativeView GetNativeView() const override;
|
gfx::NativeView GetNativeView() const override;
|
||||||
gfx::NativeWindow GetNativeWindow() const override;
|
gfx::NativeWindow GetNativeWindow() const override;
|
||||||
gfx::AcceleratedWidget GetAcceleratedWidget() const override;
|
gfx::AcceleratedWidget GetAcceleratedWidget() const override;
|
||||||
|
std::tuple<void*, int> GetNativeWindowHandlePointer() const override;
|
||||||
void SetProgressBar(double progress, const ProgressState state) override;
|
void SetProgressBar(double progress, const ProgressState state) override;
|
||||||
void SetOverlayIcon(const gfx::Image& overlay,
|
void SetOverlayIcon(const gfx::Image& overlay,
|
||||||
const std::string& description) override;
|
const std::string& description) override;
|
||||||
|
|
|
@ -1104,6 +1104,11 @@ gfx::AcceleratedWidget NativeWindowMac::GetAcceleratedWidget() const {
|
||||||
return gfx::kNullAcceleratedWidget;
|
return gfx::kNullAcceleratedWidget;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::tuple<void*, int> NativeWindowMac::GetNativeWindowHandlePointer() const {
|
||||||
|
NSView* view = [window_ contentView];
|
||||||
|
return std::make_tuple(static_cast<void*>(view), sizeof(view));
|
||||||
|
}
|
||||||
|
|
||||||
void NativeWindowMac::SetProgressBar(double progress,
|
void NativeWindowMac::SetProgressBar(double progress,
|
||||||
const NativeWindow::ProgressState state) {
|
const NativeWindow::ProgressState state) {
|
||||||
NSDockTile* dock_tile = [NSApp dockTile];
|
NSDockTile* dock_tile = [NSApp dockTile];
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
#include <tuple>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
@ -1052,6 +1053,11 @@ gfx::AcceleratedWidget NativeWindowViews::GetAcceleratedWidget() const {
|
||||||
return GetNativeWindow()->GetHost()->GetAcceleratedWidget();
|
return GetNativeWindow()->GetHost()->GetAcceleratedWidget();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::tuple<void*, int> NativeWindowViews::GetNativeWindowHandlePointer() const {
|
||||||
|
gfx::AcceleratedWidget handle = GetAcceleratedWidget();
|
||||||
|
return std::make_tuple(static_cast<void*>(&handle), sizeof(handle));
|
||||||
|
}
|
||||||
|
|
||||||
gfx::Rect NativeWindowViews::ContentBoundsToWindowBounds(
|
gfx::Rect NativeWindowViews::ContentBoundsToWindowBounds(
|
||||||
const gfx::Rect& bounds) const {
|
const gfx::Rect& bounds) const {
|
||||||
if (!has_frame())
|
if (!has_frame())
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <set>
|
#include <set>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <tuple>
|
||||||
|
|
||||||
#include "ui/views/widget/widget_observer.h"
|
#include "ui/views/widget/widget_observer.h"
|
||||||
|
|
||||||
|
@ -128,6 +129,7 @@ class NativeWindowViews : public NativeWindow,
|
||||||
bool IsVisibleOnAllWorkspaces() override;
|
bool IsVisibleOnAllWorkspaces() override;
|
||||||
|
|
||||||
gfx::AcceleratedWidget GetAcceleratedWidget() const override;
|
gfx::AcceleratedWidget GetAcceleratedWidget() const override;
|
||||||
|
std::tuple<void*, int> GetNativeWindowHandlePointer() const override;
|
||||||
|
|
||||||
gfx::Rect ContentBoundsToWindowBounds(const gfx::Rect& bounds) const override;
|
gfx::Rect ContentBoundsToWindowBounds(const gfx::Rect& bounds) const override;
|
||||||
gfx::Rect WindowBoundsToContentBounds(const gfx::Rect& bounds) const override;
|
gfx::Rect WindowBoundsToContentBounds(const gfx::Rect& bounds) const override;
|
||||||
|
|
Loading…
Reference in a new issue