Chromium Code Reviews| Index: ash/wm/default_state.cc |
| diff --git a/ash/wm/default_state.cc b/ash/wm/default_state.cc |
| index a6e0ee291bf6b81ef6533a8f00f14425ee2d05f4..ac67591fe580cbc6a28a53206c66a07e884c3fbc 100644 |
| --- a/ash/wm/default_state.cc |
| +++ b/ash/wm/default_state.cc |
| @@ -78,16 +78,25 @@ void DefaultState::OnWMEvent(WindowState* window_state, |
| if (ProcessCompoundEvents(window_state, event)) |
| return; |
| + WindowStateType current = window_state->GetStateType(); |
|
varkha
2014/09/23 22:35:31
nit: current_state_type would be more expressive n
dtapuska
2014/09/26 14:17:07
Acknowledged.
|
| WindowStateType next_state_type = WINDOW_STATE_TYPE_NORMAL; |
| switch (event->type()) { |
| case WM_EVENT_NORMAL: |
| - next_state_type = WINDOW_STATE_TYPE_NORMAL; |
| + if (current == WINDOW_STATE_TYPE_DOCKED_MINIMIZED) { |
|
varkha
2014/09/23 22:35:31
nit: Ternary? Here and below.
|
| + next_state_type = WINDOW_STATE_TYPE_DOCKED; |
| + } else { |
| + next_state_type = WINDOW_STATE_TYPE_NORMAL; |
| + } |
| break; |
| case WM_EVENT_MAXIMIZE: |
| next_state_type = WINDOW_STATE_TYPE_MAXIMIZED; |
| break; |
| case WM_EVENT_MINIMIZE: |
| - next_state_type = WINDOW_STATE_TYPE_MINIMIZED; |
| + if (current == WINDOW_STATE_TYPE_DOCKED) { |
| + next_state_type = WINDOW_STATE_TYPE_DOCKED_MINIMIZED; |
| + } else { |
| + next_state_type = WINDOW_STATE_TYPE_MINIMIZED; |
| + } |
| break; |
| case WM_EVENT_FULLSCREEN: |
| next_state_type = WINDOW_STATE_TYPE_FULLSCREEN; |
| @@ -98,6 +107,18 @@ void DefaultState::OnWMEvent(WindowState* window_state, |
| case WM_EVENT_SNAP_RIGHT: |
| next_state_type = WINDOW_STATE_TYPE_RIGHT_SNAPPED; |
| break; |
| + case WM_EVENT_DOCK: |
| + next_state_type = WINDOW_STATE_TYPE_DOCKED; |
| + break; |
| + case WM_EVENT_UNDOCK: |
|
varkha
2014/09/23 22:35:31
Can we make it work without this event type?
dtapuska
2014/09/26 14:17:06
Done.
|
| + if (current == WINDOW_STATE_TYPE_DOCKED) { |
| + next_state_type = WINDOW_STATE_TYPE_NORMAL; |
| + } else if (current == WINDOW_STATE_TYPE_DOCKED_MINIMIZED) { |
| + next_state_type = WINDOW_STATE_TYPE_MINIMIZED; |
| + } else { |
| + return; |
|
varkha
2014/09/23 22:35:31
Does this ever happen (if not - NOTREACHED() would
dtapuska
2014/09/26 14:17:07
Done.
|
| + } |
| + break; |
| case WM_EVENT_SET_BOUNDS: |
| SetBounds(window_state, static_cast<const SetBoundsEvent*>(event)); |
| return; |
| @@ -119,8 +140,6 @@ void DefaultState::OnWMEvent(WindowState* window_state, |
| return; |
| } |
| - WindowStateType current = window_state->GetStateType(); |
| - |
| if (next_state_type == current && window_state->IsSnapped()) { |
| gfx::Rect snapped_bounds = event->type() == WM_EVENT_SNAP_LEFT ? |
| GetDefaultLeftSnappedWindowBoundsInParent(window_state->window()) : |
| @@ -273,6 +292,8 @@ bool DefaultState::ProcessCompoundEvents(WindowState* window_state, |
| case WM_EVENT_SNAP_RIGHT: |
| case WM_EVENT_SET_BOUNDS: |
| case WM_EVENT_SHOW_INACTIVE: |
| + case WM_EVENT_DOCK: |
| + case WM_EVENT_UNDOCK: |
| break; |
| case WM_EVENT_ADDED_TO_WORKSPACE: |
| case WM_EVENT_WORKAREA_BOUNDS_CHANGED: |
| @@ -372,6 +393,8 @@ bool DefaultState::ProcessWorkspaceEvents(WindowState* window_state, |
| case WM_EVENT_SNAP_RIGHT: |
| case WM_EVENT_SET_BOUNDS: |
| case WM_EVENT_SHOW_INACTIVE: |
| + case WM_EVENT_DOCK: |
| + case WM_EVENT_UNDOCK: |
| break; |
| } |
| return false; |
| @@ -507,6 +530,9 @@ void DefaultState::UpdateBoundsFromState(WindowState* window_state, |
| GetDefaultLeftSnappedWindowBoundsInParent(window_state->window()) : |
| GetDefaultRightSnappedWindowBoundsInParent(window_state->window()); |
| break; |
| + case WINDOW_STATE_TYPE_DOCKED: |
| + case WINDOW_STATE_TYPE_DOCKED_MINIMIZED: |
| + break; |
| case WINDOW_STATE_TYPE_DEFAULT: |
| case WINDOW_STATE_TYPE_NORMAL: { |
| gfx::Rect work_area_in_parent = |