electron/browser/api/atom_api_menu_mac.h
Cheng Zhao faf7280d1f Add API to SendActionToFirstResponder.
It's important to bind application menu items to curtain actions of
first responder, like 'quit', 'minimize', 'copy' etc. This API gives
developers ability to do most of them in javascript.
2013-05-16 17:25:02 +08:00

44 lines
1.1 KiB
Objective-C

// Copyright (c) 2013 GitHub, Inc. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_API_ATOM_API_MENU_MAC_H_
#define ATOM_BROWSER_API_ATOM_API_MENU_MAC_H_
#include "browser/api/atom_api_menu.h"
#import "chrome/browser/ui/cocoa/menu_controller.h"
namespace atom {
namespace api {
class MenuMac : public Menu {
public:
explicit MenuMac(v8::Handle<v8::Object> wrapper);
virtual ~MenuMac();
protected:
virtual void Popup(NativeWindow* window) OVERRIDE;
scoped_nsobject<MenuController> menu_controller_;
private:
friend class Menu;
// The MenuController doesn't set title for menus, however it's required by
// application menu to show submenus correctly, fix it by iterating all
// submenus and set their titles.
static void FixMenuTitles(NSMenu* menu);
// Fake sending an action from the application menu.
static void SendActionToFirstResponder(const std::string& action);
DISALLOW_COPY_AND_ASSIGN(MenuMac);
};
} // namespace api
} // namespace atom
#endif // ATOM_BROWSER_API_ATOM_API_MENU_MAC_H_