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

Unified Diff: ash/common/system/chromeos/ime_menu/ime_menu_tray.cc

Issue 2541743004: Set ImeListView's scrollable range when updating (Closed)
Patch Set: Add ImeMenuListView class. Created 4 years 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/common/system/chromeos/ime_menu/ime_menu_tray.cc
diff --git a/ash/common/system/chromeos/ime_menu/ime_menu_tray.cc b/ash/common/system/chromeos/ime_menu/ime_menu_tray.cc
index b10258c4566138eff71a32bba9c167faa3734b4c..54924890f795151c5540dcc3dbde57bb4000e980 100644
--- a/ash/common/system/chromeos/ime_menu/ime_menu_tray.cc
+++ b/ash/common/system/chromeos/ime_menu/ime_menu_tray.cc
@@ -55,6 +55,13 @@ gfx::Range GetImeListViewRange() {
return gfx::Range(tray_item_height * min_items, tray_item_height * max_items);
}
+// Returns the minimum with of IME menu.
+int GetMinimumMenuWidth() {
+ return MaterialDesignController::IsSystemTrayMenuMaterial()
+ ? kTrayMenuMinimumWidthMd
+ : kTrayMenuMinimumWidth;
+}
+
// Shows language and input settings page.
void ShowIMESettings() {
WmShell::Get()->RecordUserMetricsAction(UMA_STATUS_AREA_IME_SHOW_DETAILED);
@@ -293,6 +300,39 @@ class ImeButtonsView : public views::View,
DISALLOW_COPY_AND_ASSIGN(ImeButtonsView);
};
+// The list view that contains the selected IME and property items.
+class ImeMenuListView : public ImeListView {
+ public:
+ explicit ImeMenuListView(SystemTrayItem* owner,
tdanderson 2016/12/07 22:53:04 nit: no 'explicit' since the constructor has more
Azure Wei 2016/12/08 03:04:12 Done. Removed 'explicit'.
+ bool show_keyboard_toggle,
+ SingleImeBehavior single_ime_behavior)
+ : ImeListView(owner, show_keyboard_toggle, ImeListView::HIDE_SINGLE_IME) {
+ }
+
+ ~ImeMenuListView() override {}
+
+ protected:
+ void Layout() override {
+ gfx::Range height_range = GetImeListViewRange();
+ if (MaterialDesignController::IsSystemTrayMenuMaterial()) {
+ scroller()->ClipHeightTo(height_range.start(), height_range.end());
+ } else {
+ uint32_t current_height = scroll_content()->height();
+ int minimum_menu_width = GetMinimumMenuWidth();
+ if (current_height > height_range.end()) {
+ scroller()->SetFixedSize(
+ gfx::Size(minimum_menu_width, height_range.end()));
+ } else if (current_height < height_range.start()) {
+ scroller()->SetFixedSize(
+ gfx::Size(minimum_menu_width, height_range.start()));
+ }
+ }
+ TrayDetailsView::Layout();
tdanderson 2016/12/07 22:53:04 I think this should instead call up to IMEListView
Azure Wei 2016/12/08 03:04:12 Yes, this should be ImeListView::Layout(). Thanks.
+ }
+
+ DISALLOW_COPY_AND_ASSIGN(ImeMenuListView);
+};
+
} // namespace
ImeMenuTray::ImeMenuTray(WmShelf* wm_shelf)
@@ -324,9 +364,7 @@ ImeMenuTray::~ImeMenuTray() {
}
void ImeMenuTray::ShowImeMenuBubble() {
- int minimum_menu_width = MaterialDesignController::IsSystemTrayMenuMaterial()
- ? kTrayMenuMinimumWidthMd
- : kTrayMenuMinimumWidth;
+ int minimum_menu_width = GetMinimumMenuWidth();
should_block_shelf_auto_hide_ = true;
views::TrayBubbleView::InitParams init_params(
GetAnchorAlignment(), minimum_menu_width, minimum_menu_width);
@@ -347,22 +385,8 @@ void ImeMenuTray::ShowImeMenuBubble() {
}
// Adds IME list to the bubble.
- ime_list_view_ = new ImeListView(nullptr, ShouldShowKeyboardToggle(),
- ImeListView::SHOW_SINGLE_IME);
-
- uint32_t current_height = ime_list_view_->scroll_content()->height();
- const gfx::Range height_range = GetImeListViewRange();
-
- if (MaterialDesignController::IsSystemTrayMenuMaterial()) {
- ime_list_view_->scroller()->ClipHeightTo(height_range.start(),
- height_range.end());
- } else if (current_height > height_range.end()) {
- ime_list_view_->scroller()->SetFixedSize(
- gfx::Size(minimum_menu_width, height_range.end()));
- } else if (current_height < height_range.start()) {
- ime_list_view_->scroller()->SetFixedSize(
- gfx::Size(minimum_menu_width, height_range.start()));
- }
+ ime_list_view_ = new ImeMenuListView(nullptr, ShouldShowKeyboardToggle(),
+ ImeListView::SHOW_SINGLE_IME);
bubble_view->AddChildView(ime_list_view_);
// The bottom view that contains buttons are not supported in login/lock
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698