// 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::get(); } XMenuList::XMenuList() : menu_type_atom_(GetAtom("_NET_WM_WINDOW_TYPE_MENU")) { } XMenuList::~XMenuList() { menus_.clear(); } void XMenuList::MaybeRegisterMenu(XID menu) { int value = 0; if (!GetIntProperty(menu, "_NET_WM_WINDOW_TYPE", &value) || static_cast(value) != menu_type_atom_) { return; } menus_.push_back(menu); } void XMenuList::MaybeUnregisterMenu(XID menu) { std::vector::iterator iter = std::find(menus_.begin(), menus_.end(), menu); if (iter == menus_.end()) return; menus_.erase(iter); } void XMenuList::InsertMenuWindowXIDs(std::vector* stack) { stack->insert(stack->begin(), menus_.begin(), menus_.end()); } } // namespace ui