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

Side by Side Diff: chrome/browser/ui/views/ime/ime_window_frame_view.cc

Issue 1807133002: UX updates for IME window. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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
« no previous file with comments | « chrome/browser/ui/views/ime/ime_window_frame_view.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/views/ime/ime_window_frame_view.h" 5 #include "chrome/browser/ui/views/ime/ime_window_frame_view.h"
6 6
7 #include "chrome/browser/ui/views/ime/ime_window_view.h" 7 #include "chrome/browser/ui/views/ime/ime_window_view.h"
8 #include "chrome/grit/browser_resources.h" 8 #include "chrome/grit/browser_resources.h"
9 #include "content/public/browser/web_contents.h" 9 #include "content/public/browser/web_contents.h"
10 #include "grit/theme_resources.h" 10 #include "grit/theme_resources.h"
(...skipping 10 matching lines...) Expand all
21 #include "ui/views/resources/grit/views_resources.h" 21 #include "ui/views/resources/grit/views_resources.h"
22 #include "ui/views/widget/widget.h" 22 #include "ui/views/widget/widget.h"
23 #include "ui/views/widget/widget_delegate.h" 23 #include "ui/views/widget/widget_delegate.h"
24 24
25 namespace { 25 namespace {
26 26
27 // The distance values for layout in DIPs. 27 // The distance values for layout in DIPs.
28 const int kButtonSize = 24; 28 const int kButtonSize = 24;
29 const int kBorderThickness = 1; 29 const int kBorderThickness = 1;
30 const int kIconSize = 16; 30 const int kIconSize = 16;
31 const int kTitleAndButtonPadding = 11;
32 const int kTitlebarHeight = 32; 31 const int kTitlebarHeight = 32;
33 const int kTitlebarLeftPadding = 8; 32 const int kTitlebarLeftPadding = 8;
34 const int kTitlebarRightPadding = 6; 33 const int kTitlebarRightPadding = 6;
35 34
36 // Colors used to draw border, titlebar background and title text. 35 // Colors used to draw border, titlebar background and title text.
37 const SkColor kBackgroundColor = SkColorSetRGB(0xec, 0xef, 0xf1); 36 const SkColor kBackgroundColor = SkColorSetRGB(0xec, 0xef, 0xf1);
38 const SkColor kBorderColor = SkColorSetRGB(0xda, 0xdf, 0xe1); 37 const SkColor kBorderColor = SkColorSetRGB(0xda, 0xdf, 0xe1);
39 const SkColor kTitleTextColor = SkColorSetRGB(0xaa, 0xaa, 0xaa);
40 38
41 } // namespace 39 } // namespace
42 40
43 namespace ui { 41 namespace ui {
44 42
45 ImeWindowFrameView::ImeWindowFrameView(ImeWindowView* ime_window_view, 43 ImeWindowFrameView::ImeWindowFrameView(ImeWindowView* ime_window_view,
46 ImeWindow::Mode mode) 44 ImeWindow::Mode mode)
47 : ime_window_view_(ime_window_view), 45 : ime_window_view_(ime_window_view),
48 mode_(mode), 46 mode_(mode),
49 close_button_(nullptr), 47 close_button_(nullptr),
50 title_icon_(nullptr), 48 title_icon_(nullptr) {}
51 title_label_(nullptr) {}
52 49
53 ImeWindowFrameView::~ImeWindowFrameView() {} 50 ImeWindowFrameView::~ImeWindowFrameView() {}
54 51
55 void ImeWindowFrameView::Init() { 52 void ImeWindowFrameView::Init() {
56 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); 53 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
57 54
58 close_button_ = new views::ImageButton(this); 55 close_button_ = new views::ImageButton(this);
59 close_button_->SetImage(views::CustomButton::STATE_NORMAL, 56 close_button_->SetImage(views::CustomButton::STATE_NORMAL,
60 rb.GetImageSkiaNamed(IDR_IME_WINDOW_CLOSE)); 57 rb.GetImageSkiaNamed(IDR_IME_WINDOW_CLOSE));
61 close_button_->SetImage(views::CustomButton::STATE_HOVERED, 58 close_button_->SetImage(views::CustomButton::STATE_HOVERED,
62 rb.GetImageSkiaNamed(IDR_IME_WINDOW_CLOSE_H)); 59 rb.GetImageSkiaNamed(IDR_IME_WINDOW_CLOSE_H));
63 close_button_->SetImage(views::CustomButton::STATE_PRESSED, 60 close_button_->SetImage(views::CustomButton::STATE_PRESSED,
64 rb.GetImageSkiaNamed(IDR_IME_WINDOW_CLOSE_C)); 61 rb.GetImageSkiaNamed(IDR_IME_WINDOW_CLOSE_C));
65 close_button_->SetImageAlignment(views::ImageButton::ALIGN_CENTER, 62 close_button_->SetImageAlignment(views::ImageButton::ALIGN_CENTER,
66 views::ImageButton::ALIGN_MIDDLE); 63 views::ImageButton::ALIGN_MIDDLE);
67 AddChildView(close_button_); 64 AddChildView(close_button_);
68 65
69 title_icon_ = new views::ImageView(); 66 title_icon_ = new views::ImageView();
70 title_icon_->SetImage(ime_window_view_->GetWindowIcon()); 67 title_icon_->SetImage(ime_window_view_->GetWindowIcon());
71 title_icon_->SetTooltipText(ime_window_view_->GetWindowTitle()); 68 title_icon_->SetTooltipText(ime_window_view_->GetWindowTitle());
72 AddChildView(title_icon_); 69 AddChildView(title_icon_);
73
74 title_label_ = new views::Label(ime_window_view_->GetWindowTitle(),
75 rb.GetFontList(ui::ResourceBundle::BoldFont));
76 title_label_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
77 title_label_->SetAutoColorReadabilityEnabled(false);
78 AddChildView(title_label_);
79 }
80
81 void ImeWindowFrameView::UpdateTitle() {
82 UpdateWindowTitle();
83 } 70 }
84 71
85 void ImeWindowFrameView::UpdateIcon() { 72 void ImeWindowFrameView::UpdateIcon() {
86 UpdateWindowIcon(); 73 UpdateWindowIcon();
87 } 74 }
88 75
89 gfx::Rect ImeWindowFrameView::GetBoundsForClientView() const { 76 gfx::Rect ImeWindowFrameView::GetBoundsForClientView() const {
90 if (in_follow_cursor_mode()) { 77 if (in_follow_cursor_mode()) {
91 return gfx::Rect(kTitlebarHeight, kBorderThickness, 78 return gfx::Rect(kTitlebarHeight, kBorderThickness,
92 std::max(0, width() - kTitlebarHeight - kBorderThickness), 79 std::max(0, width() - kTitlebarHeight - kBorderThickness),
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 125
139 window_mask->close(); 126 window_mask->close();
140 } 127 }
141 128
142 void ImeWindowFrameView::ResetWindowControls() {} 129 void ImeWindowFrameView::ResetWindowControls() {}
143 130
144 void ImeWindowFrameView::UpdateWindowIcon() { 131 void ImeWindowFrameView::UpdateWindowIcon() {
145 title_icon_->SchedulePaint(); 132 title_icon_->SchedulePaint();
146 } 133 }
147 134
148 void ImeWindowFrameView::UpdateWindowTitle() { 135 void ImeWindowFrameView::UpdateWindowTitle() {}
149 title_label_->SetText(ime_window_view_->GetWindowTitle());
150 }
151 136
152 void ImeWindowFrameView::SizeConstraintsChanged() {} 137 void ImeWindowFrameView::SizeConstraintsChanged() {}
153 138
154 gfx::Size ImeWindowFrameView::GetPreferredSize() const { 139 gfx::Size ImeWindowFrameView::GetPreferredSize() const {
155 gfx::Size pref_size = 140 gfx::Size pref_size =
156 ime_window_view_->window()->client_view()->GetPreferredSize(); 141 ime_window_view_->window()->client_view()->GetPreferredSize();
157 gfx::Rect bounds(0, 0, pref_size.width(), pref_size.height()); 142 gfx::Rect bounds(0, 0, pref_size.width(), pref_size.height());
158 return ime_window_view_->window() 143 return ime_window_view_->window()
159 ->non_client_view() 144 ->non_client_view()
160 ->GetWindowBoundsForClientBounds(bounds) 145 ->GetWindowBoundsForClientBounds(bounds)
(...skipping 12 matching lines...) Expand all
173 // Layout the icon. 158 // Layout the icon.
174 // TODO(shuchen): Consider the RTL case. 159 // TODO(shuchen): Consider the RTL case.
175 int icon_y = (kTitlebarHeight - kIconSize) / 2; 160 int icon_y = (kTitlebarHeight - kIconSize) / 2;
176 bool follow_cursor = in_follow_cursor_mode(); 161 bool follow_cursor = in_follow_cursor_mode();
177 title_icon_->SetBounds(follow_cursor ? icon_y : kTitlebarLeftPadding, 162 title_icon_->SetBounds(follow_cursor ? icon_y : kTitlebarLeftPadding,
178 follow_cursor ? kTitlebarLeftPadding : icon_y, 163 follow_cursor ? kTitlebarLeftPadding : icon_y,
179 kIconSize, kIconSize); 164 kIconSize, kIconSize);
180 165
181 if (follow_cursor) { 166 if (follow_cursor) {
182 close_button_->SetVisible(false); 167 close_button_->SetVisible(false);
183 title_label_->SetVisible(false);
184 } else { 168 } else {
185 // Layout the close button. 169 // Layout the close button.
186 int right = width();
187 close_button_->SetBounds(width() - kTitlebarRightPadding - kButtonSize, 170 close_button_->SetBounds(width() - kTitlebarRightPadding - kButtonSize,
188 (kTitlebarHeight - kButtonSize) / 2, kButtonSize, 171 (kTitlebarHeight - kButtonSize) / 2, kButtonSize,
189 kButtonSize); 172 kButtonSize);
190 right = close_button_->x();
191
192 // Layout the title.
193 int title_x = title_icon_->bounds().right() + kTitleAndButtonPadding;
194 int title_height = title_label_->font_list().GetHeight();
195 title_label_->SetBounds(
196 title_x, icon_y + ((kIconSize - title_height - 1) / 2),
197 std::max(0, right - kTitleAndButtonPadding - title_x), title_height);
198 } 173 }
199 } 174 }
200 175
201 void ImeWindowFrameView::OnPaint(gfx::Canvas* canvas) { 176 void ImeWindowFrameView::OnPaint(gfx::Canvas* canvas) {
202 UpdateControlStyles();
203 PaintFrameBackground(canvas); 177 PaintFrameBackground(canvas);
204 } 178 }
205 179
206 bool ImeWindowFrameView::OnMousePressed(const ui::MouseEvent& event) { 180 bool ImeWindowFrameView::OnMousePressed(const ui::MouseEvent& event) {
207 if (event.IsOnlyLeftMouseButton()) { 181 if (event.IsOnlyLeftMouseButton()) {
208 gfx::Point mouse_location = event.location(); 182 gfx::Point mouse_location = event.location();
209 views::View::ConvertPointToScreen(this, &mouse_location); 183 views::View::ConvertPointToScreen(this, &mouse_location);
210 return ime_window_view_->OnTitlebarPointerPressed( 184 return ime_window_view_->OnTitlebarPointerPressed(
211 mouse_location, ImeWindowView::PointerType::MOUSE); 185 mouse_location, ImeWindowView::PointerType::MOUSE);
212 } 186 }
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 if (handled) 234 if (handled)
261 event->SetHandled(); 235 event->SetHandled();
262 } 236 }
263 237
264 void ImeWindowFrameView::ButtonPressed(views::Button* sender, 238 void ImeWindowFrameView::ButtonPressed(views::Button* sender,
265 const ui::Event& event) { 239 const ui::Event& event) {
266 if (sender == close_button_) 240 if (sender == close_button_)
267 ime_window_view_->Close(); 241 ime_window_view_->Close();
268 } 242 }
269 243
270 void ImeWindowFrameView::UpdateControlStyles() {
271 title_label_->SetEnabledColor(kTitleTextColor);
272 }
273
274 void ImeWindowFrameView::PaintFrameBackground(gfx::Canvas* canvas) { 244 void ImeWindowFrameView::PaintFrameBackground(gfx::Canvas* canvas) {
275 canvas->DrawColor(kBackgroundColor); 245 canvas->DrawColor(kBackgroundColor);
276 246
277 // left border. 247 // left border.
278 canvas->FillRect(gfx::Rect(0, 0, kBorderThickness, height()), 248 canvas->FillRect(gfx::Rect(0, 0, kBorderThickness, height()),
279 kBorderColor); 249 kBorderColor);
280 // top border. 250 // top border.
281 canvas->FillRect(gfx::Rect(0, 0, width(), kBorderThickness), 251 canvas->FillRect(gfx::Rect(0, 0, width(), kBorderThickness),
282 kBorderColor); 252 kBorderColor);
283 // right border. 253 // right border.
284 canvas->FillRect(gfx::Rect(width() - kBorderThickness, 0, kBorderThickness, 254 canvas->FillRect(gfx::Rect(width() - kBorderThickness, 0, kBorderThickness,
285 height()), 255 height()),
286 kBorderColor); 256 kBorderColor);
287 // bottom border. 257 // bottom border.
288 canvas->FillRect(gfx::Rect(0, height() - kBorderThickness, width(), 258 canvas->FillRect(gfx::Rect(0, height() - kBorderThickness, width(),
289 kBorderThickness), 259 kBorderThickness),
290 kBorderColor); 260 kBorderColor);
291 } 261 }
292 262
293 } // namespace ui 263 } // namespace ui
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/ime/ime_window_frame_view.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698