OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "ui/base/x/x11_menu_list.h" |
| 6 |
| 7 #include "base/memory/singleton.h" |
| 8 #include "ui/base/x/x11_util.h" |
| 9 |
| 10 namespace ui { |
| 11 |
| 12 // static |
| 13 XMenuList* XMenuList::GetInstance() { |
| 14 return Singleton<XMenuList>::get(); |
| 15 } |
| 16 |
| 17 XMenuList::XMenuList() |
| 18 : menu_type_atom_(GetAtom("_NET_WM_WINDOW_TYPE_MENU")) { |
| 19 } |
| 20 |
| 21 XMenuList::~XMenuList() { |
| 22 menus_.clear(); |
| 23 } |
| 24 |
| 25 void XMenuList::MaybeRegisterMenu(XID menu) { |
| 26 int value = 0; |
| 27 if (!GetIntProperty(menu, "_NET_WM_WINDOW_TYPE", &value) || |
| 28 static_cast<Atom>(value) != menu_type_atom_) { |
| 29 return; |
| 30 } |
| 31 menus_.push_back(menu); |
| 32 } |
| 33 |
| 34 void XMenuList::MaybeUnregisterMenu(XID menu) { |
| 35 std::vector<XID>::iterator iter = std::find(menus_.begin(), menus_.end(), |
| 36 menu); |
| 37 if (iter == menus_.end()) |
| 38 return; |
| 39 menus_.erase(iter); |
| 40 } |
| 41 |
| 42 void XMenuList::InsertMenuWindowXIDs(std::vector<XID>* stack) { |
| 43 stack->insert(stack->begin(), menus_.begin(), menus_.end()); |
| 44 } |
| 45 |
| 46 } // namespace ui |
OLD | NEW |