Make Menu API accept TopLevelWindow

This commit is contained in:
Cheng Zhao 2018-04-17 17:14:49 +09:00
parent 1340b17424
commit 7473b612c5
10 changed files with 41 additions and 40 deletions

View file

@ -118,27 +118,4 @@ class BrowserWindow : public TopLevelWindow,
} // namespace atom
namespace mate {
template <>
struct Converter<atom::NativeWindow*> {
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
atom::NativeWindow** out) {
// null would be tranfered to NULL.
if (val->IsNull()) {
*out = NULL;
return true;
}
atom::api::BrowserWindow* window;
if (!Converter<atom::api::BrowserWindow*>::FromV8(isolate, val, &window))
return false;
*out = window->window();
return true;
}
};
} // namespace mate
#endif // ATOM_BROWSER_API_ATOM_API_BROWSER_WINDOW_H_

View file

@ -8,7 +8,7 @@
#include <memory>
#include <string>
#include "atom/browser/api/atom_api_browser_window.h"
#include "atom/browser/api/atom_api_top_level_window.h"
#include "atom/browser/api/trackable_object.h"
#include "atom/browser/ui/atom_menu_model.h"
#include "base/callback.h"
@ -54,7 +54,7 @@ class Menu : public mate::TrackableObject<Menu>,
void ExecuteCommand(int command_id, int event_flags) override;
void MenuWillShow(ui::SimpleMenuModel* source) override;
virtual void PopupAt(BrowserWindow* window,
virtual void PopupAt(TopLevelWindow* window,
int x,
int y,
int positioning_item,

View file

@ -22,7 +22,7 @@ class MenuMac : public Menu {
protected:
MenuMac(v8::Isolate* isolate, v8::Local<v8::Object> wrapper);
void PopupAt(BrowserWindow* window,
void PopupAt(TopLevelWindow* window,
int x,
int y,
int positioning_item,

View file

@ -9,8 +9,6 @@
#include "base/mac/scoped_sending_event.h"
#include "base/message_loop/message_loop.h"
#include "base/strings/sys_string_conversions.h"
#include "brightray/browser/inspectable_web_contents.h"
#include "brightray/browser/inspectable_web_contents_view.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/web_contents.h"
@ -27,7 +25,7 @@ MenuMac::MenuMac(v8::Isolate* isolate, v8::Local<v8::Object> wrapper)
weak_factory_(this) {
}
void MenuMac::PopupAt(BrowserWindow* window,
void MenuMac::PopupAt(TopLevelWindow* window,
int x, int y, int positioning_item,
const base::Closure& callback) {
NativeWindow* native_window = window->window();

View file

@ -6,8 +6,6 @@
#include "atom/browser/native_window_views.h"
#include "atom/browser/unresponsive_suppressor.h"
#include "brightray/browser/inspectable_web_contents.h"
#include "brightray/browser/inspectable_web_contents_view.h"
#include "ui/display/screen.h"
using views::MenuRunner;
@ -19,7 +17,7 @@ namespace api {
MenuViews::MenuViews(v8::Isolate* isolate, v8::Local<v8::Object> wrapper)
: Menu(isolate, wrapper), weak_factory_(this) {}
void MenuViews::PopupAt(BrowserWindow* window,
void MenuViews::PopupAt(TopLevelWindow* window,
int x,
int y,
int positioning_item,

View file

@ -21,7 +21,7 @@ class MenuViews : public Menu {
MenuViews(v8::Isolate* isolate, v8::Local<v8::Object> wrapper);
protected:
void PopupAt(BrowserWindow* window,
void PopupAt(TopLevelWindow* window,
int x,
int y,
int positioning_item,

View file

@ -9,6 +9,7 @@
#include "atom/browser/api/atom_api_browser_view.h"
#include "atom/browser/api/atom_api_menu.h"
#include "atom/browser/api/atom_api_web_contents.h"
#include "atom/common/color_util.h"
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/native_mate_converters/file_path_converter.h"

View file

@ -229,4 +229,27 @@ class TopLevelWindow : public mate::TrackableObject<TopLevelWindow>,
} // namespace atom
namespace mate {
template<>
struct Converter<atom::NativeWindow*> {
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
atom::NativeWindow** out) {
// null would be tranfered to NULL.
if (val->IsNull()) {
*out = NULL;
return true;
}
atom::api::TopLevelWindow* window;
if (!Converter<atom::api::TopLevelWindow*>::FromV8(isolate, val, &window))
return false;
*out = window->window();
return true;
}
};
} // namespace mate
#endif // ATOM_BROWSER_API_ATOM_API_TOP_LEVEL_WINDOW_H_