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

Side by Side Diff: views/window/dialog_client_view.cc

Issue 159046: Implementing accelerators for Linux toolkit_views (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « views/widget/widget_gtk.cc ('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 (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 "views/window/dialog_client_view.h" 5 #include "views/window/dialog_client_view.h"
6 6
7 #include "app/gfx/canvas.h" 7 #include "app/gfx/canvas.h"
8 #include "app/gfx/font.h" 8 #include "app/gfx/font.h"
9 #include "app/l10n_util.h" 9 #include "app/l10n_util.h"
10 #include "app/resource_bundle.h" 10 #include "app/resource_bundle.h"
11 #include "base/keyboard_codes.h"
11 #include "grit/app_strings.h" 12 #include "grit/app_strings.h"
12 #include "views/controls/button/native_button.h" 13 #include "views/controls/button/native_button.h"
13 #include "views/standard_layout.h" 14 #include "views/standard_layout.h"
14 #include "views/window/dialog_delegate.h" 15 #include "views/window/dialog_delegate.h"
15 #include "views/window/window.h" 16 #include "views/window/window.h"
16 17
17 #if defined(OS_WIN) 18 #if defined(OS_WIN)
18 #include <windows.h> 19 #include <windows.h>
19 #include <uxtheme.h> 20 #include <uxtheme.h>
20 #include <vsstyle.h> 21 #include <vsstyle.h>
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 if (label.empty()) 122 if (label.empty())
122 label = l10n_util::GetString(IDS_APP_OK); 123 label = l10n_util::GetString(IDS_APP_OK);
123 bool is_default_button = 124 bool is_default_button =
124 (dd->GetDefaultDialogButton() & MessageBoxFlags::DIALOGBUTTON_OK) != 0; 125 (dd->GetDefaultDialogButton() & MessageBoxFlags::DIALOGBUTTON_OK) != 0;
125 ok_button_ = new DialogButton(this, window(), 126 ok_button_ = new DialogButton(this, window(),
126 MessageBoxFlags::DIALOGBUTTON_OK, label, 127 MessageBoxFlags::DIALOGBUTTON_OK, label,
127 is_default_button); 128 is_default_button);
128 ok_button_->SetGroup(kButtonGroup); 129 ok_button_->SetGroup(kButtonGroup);
129 if (is_default_button) 130 if (is_default_button)
130 default_button_ = ok_button_; 131 default_button_ = ok_button_;
131 #if defined(OS_WIN)
132 if (!(buttons & MessageBoxFlags::DIALOGBUTTON_CANCEL)) 132 if (!(buttons & MessageBoxFlags::DIALOGBUTTON_CANCEL))
133 ok_button_->AddAccelerator(Accelerator(VK_ESCAPE, false, false, false)); 133 ok_button_->AddAccelerator(Accelerator(base::VKEY_ESCAPE,
134 #else 134 false, false, false));
135 NOTIMPLEMENTED();
136 // TODO(port): add accelerators
137 #endif
138 AddChildView(ok_button_); 135 AddChildView(ok_button_);
139 } 136 }
140 if (buttons & MessageBoxFlags::DIALOGBUTTON_CANCEL && !cancel_button_) { 137 if (buttons & MessageBoxFlags::DIALOGBUTTON_CANCEL && !cancel_button_) {
141 std::wstring label = 138 std::wstring label =
142 dd->GetDialogButtonLabel(MessageBoxFlags::DIALOGBUTTON_CANCEL); 139 dd->GetDialogButtonLabel(MessageBoxFlags::DIALOGBUTTON_CANCEL);
143 if (label.empty()) { 140 if (label.empty()) {
144 if (buttons & MessageBoxFlags::DIALOGBUTTON_OK) { 141 if (buttons & MessageBoxFlags::DIALOGBUTTON_OK) {
145 label = l10n_util::GetString(IDS_APP_CANCEL); 142 label = l10n_util::GetString(IDS_APP_CANCEL);
146 } else { 143 } else {
147 label = l10n_util::GetString(IDS_APP_CLOSE); 144 label = l10n_util::GetString(IDS_APP_CLOSE);
148 } 145 }
149 } 146 }
150 bool is_default_button = 147 bool is_default_button =
151 (dd->GetDefaultDialogButton() & MessageBoxFlags::DIALOGBUTTON_CANCEL) 148 (dd->GetDefaultDialogButton() & MessageBoxFlags::DIALOGBUTTON_CANCEL)
152 != 0; 149 != 0;
153 cancel_button_ = new DialogButton(this, window(), 150 cancel_button_ = new DialogButton(this, window(),
154 MessageBoxFlags::DIALOGBUTTON_CANCEL, 151 MessageBoxFlags::DIALOGBUTTON_CANCEL,
155 label, is_default_button); 152 label, is_default_button);
156 cancel_button_->SetGroup(kButtonGroup); 153 cancel_button_->SetGroup(kButtonGroup);
157 #if defined(OS_WIN) 154 cancel_button_->AddAccelerator(Accelerator(base::VKEY_ESCAPE,
158 cancel_button_->AddAccelerator(Accelerator(VK_ESCAPE, false, false, false)); 155 false, false, false));
159 #else
160 NOTIMPLEMENTED();
161 // TODO(port): add accelerators
162 #endif
163 if (is_default_button) 156 if (is_default_button)
164 default_button_ = ok_button_; 157 default_button_ = ok_button_;
165 AddChildView(cancel_button_); 158 AddChildView(cancel_button_);
166 } 159 }
167 if (!buttons) { 160 if (!buttons) {
168 // Register the escape key as an accelerator which will close the window 161 // Register the escape key as an accelerator which will close the window
169 // if there are no dialog buttons. 162 // if there are no dialog buttons.
170 #if defined(OS_WIN) 163 AddAccelerator(Accelerator(base::VKEY_ESCAPE, false, false, false));
171 AddAccelerator(Accelerator(VK_ESCAPE, false, false, false));
172 #else
173 NOTIMPLEMENTED();
174 // TODO(port): add accelerators
175 #endif
176 } 164 }
177 } 165 }
178 166
179 void DialogClientView::SetDefaultButton(NativeButton* new_default_button) { 167 void DialogClientView::SetDefaultButton(NativeButton* new_default_button) {
180 if (default_button_ && default_button_ != new_default_button) { 168 if (default_button_ && default_button_ != new_default_button) {
181 default_button_->SetIsDefault(false); 169 default_button_->SetIsDefault(false);
182 default_button_ = NULL; 170 default_button_ = NULL;
183 } 171 }
184 172
185 if (new_default_button) { 173 if (new_default_button) {
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 if (width > 0) { 351 if (width > 0) {
364 width += 2 * kButtonHEdgeMargin; 352 width += 2 * kButtonHEdgeMargin;
365 prefsize.set_width(std::max(prefsize.width(), width)); 353 prefsize.set_width(std::max(prefsize.width(), width));
366 } 354 }
367 } 355 }
368 prefsize.Enlarge(0, button_height); 356 prefsize.Enlarge(0, button_height);
369 return prefsize; 357 return prefsize;
370 } 358 }
371 359
372 bool DialogClientView::AcceleratorPressed(const Accelerator& accelerator) { 360 bool DialogClientView::AcceleratorPressed(const Accelerator& accelerator) {
373 #if defined(OS_WIN) 361 // We only expect Escape key.
374 DCHECK(accelerator.GetKeyCode() == VK_ESCAPE); // We only expect Escape key. 362 DCHECK(accelerator.GetKeyCode() == base::VKEY_ESCAPE);
375 #else
376 NOTIMPLEMENTED();
377 // TODO(port): add accelerators
378 #endif
379 Close(); 363 Close();
380 return true; 364 return true;
381 } 365 }
382 366
383 //////////////////////////////////////////////////////////////////////////////// 367 ////////////////////////////////////////////////////////////////////////////////
384 // DialogClientView, ButtonListener implementation: 368 // DialogClientView, ButtonListener implementation:
385 369
386 void DialogClientView::ButtonPressed(Button* sender) { 370 void DialogClientView::ButtonPressed(Button* sender) {
387 // We NULL check the delegate here since the buttons can receive WM_COMMAND 371 // We NULL check the delegate here since the buttons can receive WM_COMMAND
388 // messages even after they (and the window containing us) are destroyed. 372 // messages even after they (and the window containing us) are destroyed.
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
517 initialized = true; 501 initialized = true;
518 } 502 }
519 } 503 }
520 504
521 void DialogClientView::Close() { 505 void DialogClientView::Close() {
522 window()->Close(); 506 window()->Close();
523 GetDialogDelegate()->OnClose(); 507 GetDialogDelegate()->OnClose();
524 } 508 }
525 509
526 } // namespace views 510 } // namespace views
OLDNEW
« no previous file with comments | « views/widget/widget_gtk.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698