Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(15)

Side by Side Diff: ui/views/window/window_button_order_provider.cc

Issue 240163006: Linux Aura Task Manager Frame Buttons Misaligned (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Refactor button observer out of CustomFrameView Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 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/views/window/window_button_order_provider.h"
6
7 #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
8 #include "ui/views/linux_ui/linux_ui.h"
9 #include "ui/views/linux_ui/window_button_order_observer.h"
10 #endif
11
12 namespace views {
13
14 #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
15 namespace {
16
17 class WindowButtonOrderObserverDelegate : public WindowButtonOrderProvider,
flackr 2014/05/01 15:43:36 I think this implementation of WindowButtonOrderPr
jonross 2014/05/02 17:53:54 Done.
18 public WindowButtonOrderObserver {
19 public:
20 WindowButtonOrderObserverDelegate();
21 virtual ~WindowButtonOrderObserverDelegate();
22
23 // WindowButtonOrderObserver:
24 virtual void OnWindowButtonOrderingChange(
25 const std::vector<views::FrameButton>& leading_buttons,
26 const std::vector<views::FrameButton>& trailing_buttons) OVERRIDE;
27
28 private:
29 DISALLOW_COPY_AND_ASSIGN(WindowButtonOrderObserverDelegate);
30 };
31
32 ///////////////////////////////////////////////////////////////////////////////
33 // WindowButtonOrderObserverDelegate, public:
34
35 WindowButtonOrderObserverDelegate::WindowButtonOrderObserverDelegate() {
36 views::LinuxUI* ui = views::LinuxUI::instance();
37 if (ui)
38 ui->AddWindowButtonOrderObserver(this);
39 }
40
41 WindowButtonOrderObserverDelegate::~WindowButtonOrderObserverDelegate() {
42 views::LinuxUI* ui = views::LinuxUI::instance();
43 if (ui)
44 ui->RemoveWindowButtonOrderObserver(this);
45 }
46
47 void WindowButtonOrderObserverDelegate::OnWindowButtonOrderingChange(
48 const std::vector<views::FrameButton>& leading_buttons,
49 const std::vector<views::FrameButton>& trailing_buttons) {
50 SetWindowButtonOrder(leading_buttons, trailing_buttons);
51 }
52
53 } // namespace
54 #endif
55
56 // static
57 WindowButtonOrderProvider* WindowButtonOrderProvider::instance_ = NULL;
58
59 ///////////////////////////////////////////////////////////////////////////////
60 // WindowButtonOrderProvider, public:
61
62 // static
63 WindowButtonOrderProvider* WindowButtonOrderProvider::GetInstance() {
64 if (!instance_) {
65 #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
66 instance_ = new WindowButtonOrderObserverDelegate;
67 #else
68 instance_ = new WindowButtonOrderProvider;
69 #endif
70 }
71 return instance_;
72 }
73
74 std::vector<views::FrameButton> const
75 WindowButtonOrderProvider::GetLeadingButtons() const {
76 return leading_buttons_;
77 }
78
79 std::vector<views::FrameButton> const
80 WindowButtonOrderProvider::GetTrailingButtons() const {
81 return trailing_buttons_;
82 }
83
84 ///////////////////////////////////////////////////////////////////////////////
85 // WindowButtonOrderProvider, protected:
86
87 WindowButtonOrderProvider::WindowButtonOrderProvider() {
88 trailing_buttons_.push_back(views::FRAME_BUTTON_MINIMIZE);
89 trailing_buttons_.push_back(views::FRAME_BUTTON_MAXIMIZE);
90 trailing_buttons_.push_back(views::FRAME_BUTTON_CLOSE);
91 }
92
93 WindowButtonOrderProvider::~WindowButtonOrderProvider() {
94 }
95
96 void WindowButtonOrderProvider::SetWindowButtonOrder(
97 const std::vector<views::FrameButton>& leading_buttons,
98 const std::vector<views::FrameButton>& trailing_buttons) {
99 leading_buttons_ = leading_buttons;
100 trailing_buttons_ = trailing_buttons;
101 }
102
103 } // namespace views
104
flackr 2014/05/01 15:43:36 nit: no extra newline at end of file.
OLDNEW
« ui/views/window/custom_frame_view.cc ('K') | « ui/views/window/window_button_order_provider.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698