Chromium Code Reviews| Index: ui/aura/toplevel_window_event_filter.cc |
| diff --git a/ui/aura/toplevel_window_event_filter.cc b/ui/aura/toplevel_window_event_filter.cc |
| index 98d29d302ca3d7e22f83460086447e22a07668d6..a6a5f6bed130753df958fe93fd3834c7556ec3af 100644 |
| --- a/ui/aura/toplevel_window_event_filter.cc |
| +++ b/ui/aura/toplevel_window_event_filter.cc |
| @@ -130,10 +130,10 @@ bool ToplevelWindowEventFilter::OnMouseEvent(Window* target, |
| switch (event->type()) { |
| case ui::ET_MOUSE_MOVED: |
| - window_component_ = |
| - target->delegate()->GetNonClientComponent(event->location()); |
| + UpdateWindowComponentForEvent(target, event); |
| break; |
| case ui::ET_MOUSE_PRESSED: |
|
Ben Goodger (Google)
2011/10/16 22:23:33
Add this comment above this line:
We also update
oshima
2011/10/17 19:30:57
This happens when mouse is released and then press
|
| + UpdateWindowComponentForEvent(target, event); |
| mouse_down_bounds_ = target->bounds(); |
| mouse_down_offset_in_target_ = event->location(); |
| mouse_down_offset_in_parent_ = mouse_down_offset_in_target_; |
| @@ -184,6 +184,12 @@ bool ToplevelWindowEventFilter::HandleDrag(Window* target, MouseEvent* event) { |
| return true; |
| } |
| +void ToplevelWindowEventFilter::UpdateWindowComponentForEvent( |
| + Window* target, MouseEvent* event) { |
| + window_component_ = |
| + target->delegate()->GetNonClientComponent(event->location()); |
| +} |
| + |
| gfx::Point ToplevelWindowEventFilter::GetOriginForDrag( |
| int bounds_change, |
| Window* target, |
| @@ -232,10 +238,18 @@ gfx::Size ToplevelWindowEventFilter::GetSizeForDrag(int bounds_change, |
| int x_multiplier = GetXMultiplierForWindowComponent(window_component_); |
| int y_multiplier = GetYMultiplierForWindowComponent(window_component_); |
| - size.Enlarge(size_change_direction & kBoundsChangeDirection_Horizontal ? |
| - x_multiplier * (first_x - second_x) : 0, |
| - size_change_direction & kBoundsChangeDirection_Vertical ? |
| - y_multiplier * (first_y - second_y) : 0); |
| + |
| + int width = size.width() + |
| + (size_change_direction & kBoundsChangeDirection_Horizontal ? |
| + x_multiplier * (first_x - second_x) : 0); |
| + int height = size.height() + |
| + (size_change_direction & kBoundsChangeDirection_Vertical ? |
| + y_multiplier * (first_y - second_y) : 0); |
| + |
| + // Enforce minimum window size. |
| + const gfx::Size min_size = target->minimum_size(); |
| + size.SetSize(std::max(width, min_size.width()), |
| + std::max(height, min_size.height())); |
| } |
| return size; |
| } |