OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/controls/menu/menu_controller.h" | 5 #include "views/controls/menu/menu_controller.h" |
6 | 6 |
7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
8 #include "app/os_exchange_data.h" | 8 #include "app/os_exchange_data.h" |
9 #include "base/i18n/rtl.h" | 9 #include "base/i18n/rtl.h" |
10 #include "base/keyboard_codes.h" | 10 #include "base/keyboard_codes.h" |
11 #include "base/time.h" | 11 #include "base/time.h" |
12 #include "gfx/canvas.h" | 12 #include "gfx/canvas.h" |
13 #include "views/controls/button/menu_button.h" | 13 #include "views/controls/button/menu_button.h" |
14 #include "views/controls/menu/menu_scroll_view_container.h" | 14 #include "views/controls/menu/menu_scroll_view_container.h" |
15 #include "views/controls/menu/submenu_view.h" | 15 #include "views/controls/menu/submenu_view.h" |
16 #include "views/drag_utils.h" | 16 #include "views/drag_utils.h" |
17 #include "views/screen.h" | 17 #include "views/screen.h" |
18 #include "views/view_constants.h" | 18 #include "views/view_constants.h" |
19 #include "views/widget/root_view.h" | 19 #include "views/widget/root_view.h" |
20 #include "views/widget/widget.h" | 20 #include "views/widget/widget.h" |
21 #if defined(OS_LINUX) | |
22 #include "base/keyboard_code_conversion_gtk.h" | |
23 #endif | |
24 | 21 |
25 using base::Time; | 22 using base::Time; |
26 using base::TimeDelta; | 23 using base::TimeDelta; |
27 | 24 |
28 // Period of the scroll timer (in milliseconds). | 25 // Period of the scroll timer (in milliseconds). |
29 static const int kScrollTimerMS = 30; | 26 static const int kScrollTimerMS = 30; |
30 | 27 |
31 // Delay, in ms, between when menus are selected are moused over and the menu | 28 // Delay, in ms, between when menus are selected are moused over and the menu |
32 // appears. | 29 // appears. |
33 static const int kShowDelay = 400; | 30 static const int kShowDelay = 400; |
(...skipping 657 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
691 | 688 |
692 #else | 689 #else |
693 bool MenuController::Dispatch(GdkEvent* event) { | 690 bool MenuController::Dispatch(GdkEvent* event) { |
694 gtk_main_do_event(event); | 691 gtk_main_do_event(event); |
695 | 692 |
696 if (exit_type_ == EXIT_ALL) | 693 if (exit_type_ == EXIT_ALL) |
697 return false; | 694 return false; |
698 | 695 |
699 switch (event->type) { | 696 switch (event->type) { |
700 case GDK_KEY_PRESS: { | 697 case GDK_KEY_PRESS: { |
701 base::KeyboardCode win_keycode = | 698 if (!OnKeyDown(event->key.keyval)) |
702 base::WindowsKeyCodeForGdkKeyCode(event->key.keyval); | |
703 if (!OnKeyDown(win_keycode)) | |
704 return false; | 699 return false; |
705 guint32 keycode = gdk_keyval_to_unicode(event->key.keyval); | 700 guint32 keycode = gdk_keyval_to_unicode(event->key.keyval); |
706 if (keycode) | 701 if (keycode) |
707 return !SelectByChar(keycode); | 702 return !SelectByChar(keycode); |
708 return true; | 703 return true; |
709 } | 704 } |
710 | 705 |
711 default: | 706 default: |
712 break; | 707 break; |
713 } | 708 } |
714 | 709 |
715 return exit_type_ == EXIT_NONE; | 710 return exit_type_ == EXIT_NONE; |
716 } | 711 } |
717 #endif | 712 #endif |
718 | 713 |
719 bool MenuController::OnKeyDown(int key_code | 714 bool MenuController::OnKeyDown(int key_code |
720 #if defined(OS_WIN) | 715 #if defined(OS_WIN) |
721 , const MSG& msg | 716 , const MSG& msg |
722 #else | 717 #else |
723 #endif | 718 #endif |
724 ) { | 719 ) { |
725 DCHECK(blocking_run_); | 720 DCHECK(blocking_run_); |
726 DLOG(WARNING) << "OnKeyDown: " << key_code; | |
727 | 721 |
728 switch (key_code) { | 722 switch (key_code) { |
729 case base::VKEY_UP: | 723 case base::VKEY_UP: |
730 IncrementSelection(-1); | 724 IncrementSelection(-1); |
731 break; | 725 break; |
732 | 726 |
733 case base::VKEY_DOWN: | 727 case base::VKEY_DOWN: |
734 IncrementSelection(1); | 728 IncrementSelection(1); |
735 break; | 729 break; |
736 | 730 |
(...skipping 765 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1502 if (!scroll_task_.get()) | 1496 if (!scroll_task_.get()) |
1503 scroll_task_.reset(new MenuScrollTask()); | 1497 scroll_task_.reset(new MenuScrollTask()); |
1504 scroll_task_->Update(part); | 1498 scroll_task_->Update(part); |
1505 } | 1499 } |
1506 | 1500 |
1507 void MenuController::StopScrolling() { | 1501 void MenuController::StopScrolling() { |
1508 scroll_task_.reset(NULL); | 1502 scroll_task_.reset(NULL); |
1509 } | 1503 } |
1510 | 1504 |
1511 } // namespace views | 1505 } // namespace views |
OLD | NEW |