app_list_linux.h revision f2477e01787aa58f445919b809d89e252beef54f
1// Copyright 2013 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#ifndef CHROME_BROWSER_UI_VIEWS_APP_LIST_LINUX_APP_LIST_LINUX_H_
6#define CHROME_BROWSER_UI_VIEWS_APP_LIST_LINUX_APP_LIST_LINUX_H_
7
8#include "chrome/browser/ui/app_list/app_list.h"
9#include "ui/app_list/views/app_list_view.h"
10
11// Responsible for positioning, hiding and showing an AppListView on Linux.
12// This includes watching window activation/deactivation messages to determine
13// if the user has clicked away from it.
14class AppListLinux : public AppList,
15                     public app_list::AppListView::Observer {
16 public:
17  AppListLinux(app_list::AppListView* view,
18               const base::Closure& on_should_dismiss);
19  virtual ~AppListLinux();
20
21  // AppList overrides.
22  virtual void Show() OVERRIDE;
23  virtual void Hide() OVERRIDE;
24  virtual void MoveNearCursor() OVERRIDE;
25  virtual bool IsVisible() OVERRIDE;
26  virtual void Prerender() OVERRIDE;
27  virtual void ReactivateOnNextFocusLoss() OVERRIDE;
28  virtual gfx::NativeWindow GetWindow() OVERRIDE;
29  virtual void SetProfile(Profile* profile) OVERRIDE;
30
31  // app_list::AppListView::Observer overrides.
32  virtual void OnActivationChanged(views::Widget* widget, bool active) OVERRIDE;
33
34 private:
35  // Weak pointer. The view manages its own lifetime.
36  app_list::AppListView* view_;
37  bool window_icon_updated_;
38
39  // Called to request |view_| be closed.
40  base::Closure on_should_dismiss_;
41
42  DISALLOW_COPY_AND_ASSIGN(AppListLinux);
43};
44
45#endif  // CHROME_BROWSER_UI_VIEWS_APP_LIST_LINUX_APP_LIST_LINUX_H_
46