Chromium Code Reviews| Index: ui/base/x/x11_menu_list.cc |
| diff --git a/ui/base/x/x11_menu_list.cc b/ui/base/x/x11_menu_list.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..21cd73cf1b1ccd0a3099ed64d0bfb6015f314535 |
| --- /dev/null |
| +++ b/ui/base/x/x11_menu_list.cc |
| @@ -0,0 +1,48 @@ |
| +// Copyright (c) 2014 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "ui/base/x/x11_menu_list.h" |
| + |
| +#include "base/memory/singleton.h" |
| +#include "ui/base/x/x11_util.h" |
| + |
| +namespace ui { |
| + |
| +// static |
| +XMenuList* XMenuList::GetInstance() { |
| + return Singleton<XMenuList>::get(); |
| +} |
| + |
| +XMenuList::XMenuList() |
| +: menu_type_atom_(GetAtom("_NET_WM_WINDOW_TYPE_MENU")) { |
|
sadrul
2014/03/27 19:13:46
4 space indent
varkha
2014/03/27 20:05:29
Done.
|
| +} |
| + |
| +XMenuList::~XMenuList() { |
| + menus_.clear(); |
| +} |
| + |
| +void XMenuList::MaybeRegisterMenu(XID menu) { |
| + int value = 0; |
| + if (!GetIntProperty(menu, "_NET_WM_WINDOW_TYPE", &value) || |
| + static_cast<Atom>(value) != menu_type_atom_) { |
| + return; |
| + } |
| + menus_.push_back(menu); |
| +} |
| + |
| +void XMenuList::MaybeUnregisterMenu(XID menu) { |
| + std::vector<XID>::iterator iter = std::find(menus_.begin(), menus_.end(), |
| + menu); |
| + if (iter == menus_.end()) |
| + return; |
| + menus_.erase(iter); |
| +} |
| + |
| +void XMenuList::InsertMenuWindowXIDs(std::vector<XID>* stack) { |
|
sadrul
2014/03/27 19:13:46
I think you can just do:
stack->insert(stack->be
varkha
2014/03/27 20:05:29
Done.
|
| + std::vector<XID>::iterator iter; |
| + for (iter = menus_.begin(); iter != menus_.end(); ++iter) |
| + stack->insert(stack->begin(), *iter); |
| +} |
| + |
| +} // namespace ui |