refactor: use views::Widget on macOS
This commit is contained in:
parent
7c4964fae6
commit
75a624434c
8 changed files with 72 additions and 26 deletions
|
@ -11,7 +11,8 @@ namespace atom {
|
|||
|
||||
class AtomNativeWidgetMac : public views::NativeWidgetMac {
|
||||
public:
|
||||
explicit AtomNativeWidgetMac(views::internal::NativeWidgetDelegate* delegate);
|
||||
AtomNativeWidgetMac(NSUInteger style_mask,
|
||||
views::internal::NativeWidgetDelegate* delegate);
|
||||
~AtomNativeWidgetMac() override;
|
||||
|
||||
protected:
|
||||
|
@ -20,6 +21,8 @@ class AtomNativeWidgetMac : public views::NativeWidgetMac {
|
|||
const views::Widget::InitParams& params) override;
|
||||
|
||||
private:
|
||||
NSUInteger style_mask_;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(AtomNativeWidgetMac);
|
||||
};
|
||||
|
||||
|
|
|
@ -4,17 +4,26 @@
|
|||
|
||||
#include "atom/browser/ui/cocoa/atom_native_widget_mac.h"
|
||||
|
||||
#include "atom/browser/ui/cocoa/atom_ns_window.h"
|
||||
#include "ui/base/cocoa/window_size_constants.h"
|
||||
|
||||
namespace atom {
|
||||
|
||||
AtomNativeWidgetMac::AtomNativeWidgetMac(
|
||||
NSUInteger style_mask,
|
||||
views::internal::NativeWidgetDelegate* delegate)
|
||||
: views::NativeWidgetMac(delegate) {}
|
||||
: views::NativeWidgetMac(delegate),
|
||||
style_mask_(style_mask) {}
|
||||
|
||||
AtomNativeWidgetMac::~AtomNativeWidgetMac() {}
|
||||
|
||||
NativeWidgetMacNSWindow* AtomNativeWidgetMac::CreateNSWindow(
|
||||
const views::Widget::InitParams& params) {
|
||||
return views::NativeWidgetMac::CreateNSWindow(params);
|
||||
return [[[AtomNSWindow alloc]
|
||||
initWithContentRect:ui::kWindowSizeDeterminedLater
|
||||
styleMask:style_mask_
|
||||
backing:NSBackingStoreBuffered
|
||||
defer:YES] autorelease];
|
||||
}
|
||||
|
||||
} // namespace atom
|
||||
|
|
|
@ -26,7 +26,7 @@ class ScopedDisableResize {
|
|||
|
||||
} // namespace atom
|
||||
|
||||
@interface AtomNSWindow : EventDispatchingWindow {
|
||||
@interface AtomNSWindow : NativeWidgetMacNSWindow {
|
||||
@private
|
||||
atom::NativeWindowMac* shell_;
|
||||
CGFloat windowButtonsInterButtonSpacing_;
|
||||
|
|
|
@ -13,9 +13,9 @@ namespace atom {
|
|||
class NativeWindowMac;
|
||||
}
|
||||
|
||||
@interface AtomNSWindowDelegate : NSObject<NSWindowDelegate,
|
||||
NSTouchBarDelegate,
|
||||
QLPreviewPanelDataSource> {
|
||||
@interface AtomNSWindowDelegate :
|
||||
ViewsNSWindowDelegate<NSTouchBarDelegate,
|
||||
QLPreviewPanelDataSource> {
|
||||
@private
|
||||
atom::NativeWindowMac* shell_;
|
||||
bool is_zooming_;
|
||||
|
|
|
@ -9,11 +9,21 @@
|
|||
#include "atom/browser/ui/cocoa/atom_preview_item.h"
|
||||
#include "atom/browser/ui/cocoa/atom_touch_bar.h"
|
||||
#include "base/mac/mac_util.h"
|
||||
#include "ui/views/widget/native_widget_mac.h"
|
||||
|
||||
@implementation AtomNSWindowDelegate
|
||||
|
||||
- (id)initWithShell:(atom::NativeWindowMac*)shell {
|
||||
if ((self = [super init])) {
|
||||
// The views library assumes the window delegate must be an instance of
|
||||
// ViewsNSWindowDelegate, since we don't have a way to override the creation
|
||||
// of NSWindowDelegate, we have to dynamically replace the window delegate
|
||||
// on the fly.
|
||||
// TODO(zcbenz): Add interface in NativeWidgetMac to allow overriding creating
|
||||
// window delegate.
|
||||
views::BridgedNativeWidget* bridget_view =
|
||||
views::NativeWidgetMac::GetBridgeForNativeWindow(
|
||||
shell->GetNativeWindow());
|
||||
if ((self = [super initWithBridgedNativeWidget:bridget_view])) {
|
||||
shell_ = shell;
|
||||
is_zooming_ = false;
|
||||
level_ = [shell_->GetNativeWindow() level];
|
||||
|
|
|
@ -16,8 +16,7 @@ ViewsDelegateMac::~ViewsDelegateMac() {}
|
|||
void ViewsDelegateMac::OnBeforeWidgetInit(
|
||||
views::Widget::InitParams* params,
|
||||
views::internal::NativeWidgetDelegate* delegate) {
|
||||
if (!params->native_widget)
|
||||
params->native_widget = new views::NativeWidgetMac(delegate);
|
||||
DCHECK(params->native_widget);
|
||||
}
|
||||
|
||||
ui::ContextFactory* ViewsDelegateMac::GetContextFactory() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue