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

Side by Side Diff: ash/wm/workspace/frame_maximize_button.cc

Issue 14297013: Cleanup: Remove unnecessary ".get()" from scoped_ptrs<>. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 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 | « ash/wm/window_cycle_controller.cc ('k') | ash/wm/workspace/multi_window_resize_controller.cc » ('j') | 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "ash/wm/workspace/frame_maximize_button.h" 5 #include "ash/wm/workspace/frame_maximize_button.h"
6 6
7 #include "ash/launcher/launcher.h" 7 #include "ash/launcher/launcher.h"
8 #include "ash/screen_ash.h" 8 #include "ash/screen_ash.h"
9 #include "ash/shelf/shelf_widget.h" 9 #include "ash/shelf/shelf_widget.h"
10 #include "ash/shell.h" 10 #include "ash/shell.h"
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 // Before the window gets destroyed, the maximizer dialog needs to be shut 97 // Before the window gets destroyed, the maximizer dialog needs to be shut
98 // down since it would otherwise call into a deleted object. 98 // down since it would otherwise call into a deleted object.
99 maximizer_.reset(); 99 maximizer_.reset();
100 if (widget_) 100 if (widget_)
101 OnWindowDestroying(widget_->GetNativeWindow()); 101 OnWindowDestroying(widget_->GetNativeWindow());
102 } 102 }
103 103
104 void FrameMaximizeButton::SnapButtonHovered(SnapType type) { 104 void FrameMaximizeButton::SnapButtonHovered(SnapType type) {
105 // Make sure to only show hover operations when no button is pressed and 105 // Make sure to only show hover operations when no button is pressed and
106 // a similar snap operation in progress does not get re-applied. 106 // a similar snap operation in progress does not get re-applied.
107 if (is_snap_enabled_ || (type == snap_type_ && snap_sizer_.get())) 107 if (is_snap_enabled_ || (type == snap_type_ && snap_sizer_))
108 return; 108 return;
109 // Prime the mouse location with the center of the (local) button. 109 // Prime the mouse location with the center of the (local) button.
110 press_location_ = gfx::Point(width() / 2, height() / 2); 110 press_location_ = gfx::Point(width() / 2, height() / 2);
111 // Then get an adjusted mouse position to initiate the effect. 111 // Then get an adjusted mouse position to initiate the effect.
112 gfx::Point location = press_location_; 112 gfx::Point location = press_location_;
113 switch (type) { 113 switch (type) {
114 case SNAP_LEFT: 114 case SNAP_LEFT:
115 location.set_x(location.x() - width()); 115 location.set_x(location.x() - width());
116 break; 116 break;
117 case SNAP_RIGHT: 117 case SNAP_RIGHT:
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 CHECK_EQ(widget_->GetNativeWindow(), window); 180 CHECK_EQ(widget_->GetNativeWindow(), window);
181 widget_->GetNativeWindow()->RemoveObserver(this); 181 widget_->GetNativeWindow()->RemoveObserver(this);
182 widget_->RemoveObserver(this); 182 widget_->RemoveObserver(this);
183 widget_ = NULL; 183 widget_ = NULL;
184 } 184 }
185 } 185 }
186 186
187 void FrameMaximizeButton::OnWidgetActivationChanged(views::Widget* widget, 187 void FrameMaximizeButton::OnWidgetActivationChanged(views::Widget* widget,
188 bool active) { 188 bool active) {
189 // Upon losing focus, the control bubble should hide. 189 // Upon losing focus, the control bubble should hide.
190 if (!active && maximizer_.get()) 190 if (!active && maximizer_)
191 maximizer_.reset(); 191 maximizer_.reset();
192 } 192 }
193 193
194 bool FrameMaximizeButton::OnMousePressed(const ui::MouseEvent& event) { 194 bool FrameMaximizeButton::OnMousePressed(const ui::MouseEvent& event) {
195 // If we are already in a mouse click / drag operation, a second button down 195 // If we are already in a mouse click / drag operation, a second button down
196 // call will cancel (this addresses crbug.com/143755). 196 // call will cancel (this addresses crbug.com/143755).
197 if (is_snap_enabled_) { 197 if (is_snap_enabled_) {
198 Cancel(false); 198 Cancel(false);
199 } else { 199 } else {
200 is_snap_enabled_ = event.IsOnlyLeftMouseButton(); 200 is_snap_enabled_ = event.IsOnlyLeftMouseButton();
201 if (is_snap_enabled_) 201 if (is_snap_enabled_)
202 ProcessStartEvent(event); 202 ProcessStartEvent(event);
203 } 203 }
204 ImageButton::OnMousePressed(event); 204 ImageButton::OnMousePressed(event);
205 return true; 205 return true;
206 } 206 }
207 207
208 void FrameMaximizeButton::OnMouseEntered(const ui::MouseEvent& event) { 208 void FrameMaximizeButton::OnMouseEntered(const ui::MouseEvent& event) {
209 ImageButton::OnMouseEntered(event); 209 ImageButton::OnMouseEntered(event);
210 if (!maximizer_.get()) { 210 if (!maximizer_) {
211 DCHECK(GetWidget()); 211 DCHECK(GetWidget());
212 if (!widget_) { 212 if (!widget_) {
213 widget_ = frame_->GetWidget(); 213 widget_ = frame_->GetWidget();
214 widget_->GetNativeWindow()->AddObserver(this); 214 widget_->GetNativeWindow()->AddObserver(this);
215 widget_->AddObserver(this); 215 widget_->AddObserver(this);
216 } 216 }
217 maximizer_.reset(new MaximizeBubbleController( 217 maximizer_.reset(new MaximizeBubbleController(
218 this, 218 this,
219 GetMaximizeBubbleFrameState(), 219 GetMaximizeBubbleFrameState(),
220 bubble_appearance_delay_ms_)); 220 bubble_appearance_delay_ms_));
221 } 221 }
222 } 222 }
223 223
224 void FrameMaximizeButton::OnMouseExited(const ui::MouseEvent& event) { 224 void FrameMaximizeButton::OnMouseExited(const ui::MouseEvent& event) {
225 ImageButton::OnMouseExited(event); 225 ImageButton::OnMouseExited(event);
226 // Remove the bubble menu when the button is not pressed and the mouse is not 226 // Remove the bubble menu when the button is not pressed and the mouse is not
227 // within the bubble. 227 // within the bubble.
228 if (!is_snap_enabled_ && maximizer_.get()) { 228 if (!is_snap_enabled_ && maximizer_) {
229 if (maximizer_->GetBubbleWindow()) { 229 if (maximizer_->GetBubbleWindow()) {
230 gfx::Point screen_location = Shell::GetScreen()->GetCursorScreenPoint(); 230 gfx::Point screen_location = Shell::GetScreen()->GetCursorScreenPoint();
231 if (!maximizer_->GetBubbleWindow()->GetBoundsInScreen().Contains( 231 if (!maximizer_->GetBubbleWindow()->GetBoundsInScreen().Contains(
232 screen_location)) { 232 screen_location)) {
233 maximizer_.reset(); 233 maximizer_.reset();
234 // Make sure that all remaining snap hover states get removed. 234 // Make sure that all remaining snap hover states get removed.
235 SnapButtonHovered(SNAP_NONE); 235 SnapButtonHovered(SNAP_NONE);
236 } 236 }
237 } else { 237 } else {
238 // The maximize dialog does not show up immediately after creating the 238 // The maximize dialog does not show up immediately after creating the
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 return; 302 return;
303 } 303 }
304 } 304 }
305 305
306 ImageButton::OnGestureEvent(event); 306 ImageButton::OnGestureEvent(event);
307 } 307 }
308 308
309 void FrameMaximizeButton::ProcessStartEvent(const ui::LocatedEvent& event) { 309 void FrameMaximizeButton::ProcessStartEvent(const ui::LocatedEvent& event) {
310 DCHECK(is_snap_enabled_); 310 DCHECK(is_snap_enabled_);
311 // Prepare the help menu. 311 // Prepare the help menu.
312 if (!maximizer_.get()) { 312 if (!maximizer_) {
313 maximizer_.reset(new MaximizeBubbleController( 313 maximizer_.reset(new MaximizeBubbleController(
314 this, 314 this,
315 GetMaximizeBubbleFrameState(), 315 GetMaximizeBubbleFrameState(),
316 bubble_appearance_delay_ms_)); 316 bubble_appearance_delay_ms_));
317 } else { 317 } else {
318 // If the menu did not show up yet, we delay it even a bit more. 318 // If the menu did not show up yet, we delay it even a bit more.
319 maximizer_->DelayCreation(); 319 maximizer_->DelayCreation();
320 } 320 }
321 snap_sizer_.reset(NULL); 321 snap_sizer_.reset(NULL);
322 InstallEventFilter(); 322 InstallEventFilter();
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 is_snap_enabled_ = false; 372 is_snap_enabled_ = false;
373 snap_sizer_.reset(); 373 snap_sizer_.reset();
374 } 374 }
375 phantom_window_.reset(); 375 phantom_window_.reset();
376 snap_type_ = SNAP_NONE; 376 snap_type_ = SNAP_NONE;
377 update_timer_.Stop(); 377 update_timer_.Stop();
378 SchedulePaint(); 378 SchedulePaint();
379 } 379 }
380 380
381 void FrameMaximizeButton::InstallEventFilter() { 381 void FrameMaximizeButton::InstallEventFilter() {
382 if (escape_event_filter_.get()) 382 if (escape_event_filter_)
383 return; 383 return;
384 384
385 escape_event_filter_.reset(new EscapeEventFilter(this)); 385 escape_event_filter_.reset(new EscapeEventFilter(this));
386 } 386 }
387 387
388 void FrameMaximizeButton::UninstallEventFilter() { 388 void FrameMaximizeButton::UninstallEventFilter() {
389 escape_event_filter_.reset(NULL); 389 escape_event_filter_.reset(NULL);
390 } 390 }
391 391
392 void FrameMaximizeButton::UpdateSnapFromEventLocation() { 392 void FrameMaximizeButton::UpdateSnapFromEventLocation() {
393 // If the drag threshold has been exceeded the snap location is up to date. 393 // If the drag threshold has been exceeded the snap location is up to date.
394 if (exceeded_drag_threshold_) 394 if (exceeded_drag_threshold_)
395 return; 395 return;
396 exceeded_drag_threshold_ = true; 396 exceeded_drag_threshold_ = true;
397 UpdateSnap(press_location_, false, press_is_gesture_); 397 UpdateSnap(press_location_, false, press_is_gesture_);
398 } 398 }
399 399
400 void FrameMaximizeButton::UpdateSnap(const gfx::Point& location, 400 void FrameMaximizeButton::UpdateSnap(const gfx::Point& location,
401 bool select_default, 401 bool select_default,
402 bool is_touch) { 402 bool is_touch) {
403 SnapType type = SnapTypeForLocation(location); 403 SnapType type = SnapTypeForLocation(location);
404 if (type == snap_type_) { 404 if (type == snap_type_) {
405 if (snap_sizer_.get()) { 405 if (snap_sizer_) {
406 snap_sizer_->Update(LocationForSnapSizer(location)); 406 snap_sizer_->Update(LocationForSnapSizer(location));
407 phantom_window_->Show(ScreenAsh::ConvertRectToScreen( 407 phantom_window_->Show(ScreenAsh::ConvertRectToScreen(
408 frame_->GetWidget()->GetNativeView()->parent(), 408 frame_->GetWidget()->GetNativeView()->parent(),
409 snap_sizer_->target_bounds())); 409 snap_sizer_->target_bounds()));
410 } 410 }
411 return; 411 return;
412 } 412 }
413 413
414 snap_type_ = type; 414 snap_type_ = type;
415 snap_sizer_.reset(); 415 snap_sizer_.reset();
(...skipping 10 matching lines...) Expand all
426 SnapSizer::InputType input_type = 426 SnapSizer::InputType input_type =
427 is_touch ? SnapSizer::TOUCH_MAXIMIZE_BUTTON_INPUT : 427 is_touch ? SnapSizer::TOUCH_MAXIMIZE_BUTTON_INPUT :
428 SnapSizer::OTHER_INPUT; 428 SnapSizer::OTHER_INPUT;
429 snap_sizer_.reset(new SnapSizer(frame_->GetWidget()->GetNativeWindow(), 429 snap_sizer_.reset(new SnapSizer(frame_->GetWidget()->GetNativeWindow(),
430 LocationForSnapSizer(location), 430 LocationForSnapSizer(location),
431 snap_edge, 431 snap_edge,
432 input_type)); 432 input_type));
433 if (select_default) 433 if (select_default)
434 snap_sizer_->SelectDefaultSizeAndDisableResize(); 434 snap_sizer_->SelectDefaultSizeAndDisableResize();
435 } 435 }
436 if (!phantom_window_.get()) { 436 if (!phantom_window_) {
437 phantom_window_.reset(new internal::PhantomWindowController( 437 phantom_window_.reset(new internal::PhantomWindowController(
438 frame_->GetWidget()->GetNativeWindow())); 438 frame_->GetWidget()->GetNativeWindow()));
439 } 439 }
440 if (maximizer_.get()) { 440 if (maximizer_) {
441 phantom_window_->set_phantom_below_window(maximizer_->GetBubbleWindow()); 441 phantom_window_->set_phantom_below_window(maximizer_->GetBubbleWindow());
442 maximizer_->SetSnapType(snap_type_); 442 maximizer_->SetSnapType(snap_type_);
443 } 443 }
444 phantom_window_->Show( 444 phantom_window_->Show(
445 ScreenBoundsForType(snap_type_, *snap_sizer_.get())); 445 ScreenBoundsForType(snap_type_, *snap_sizer_.get()));
446 } 446 }
447 447
448 SnapType FrameMaximizeButton::SnapTypeForLocation( 448 SnapType FrameMaximizeButton::SnapTypeForLocation(
449 const gfx::Point& location) const { 449 const gfx::Point& location) const {
450 MaximizeBubbleFrameState maximize_type = GetMaximizeBubbleFrameState(); 450 MaximizeBubbleFrameState maximize_type = GetMaximizeBubbleFrameState();
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
600 return FRAME_STATE_SNAP_LEFT; 600 return FRAME_STATE_SNAP_LEFT;
601 if (bounds.right() == screen.right()) 601 if (bounds.right() == screen.right())
602 return FRAME_STATE_SNAP_RIGHT; 602 return FRAME_STATE_SNAP_RIGHT;
603 // If we come here, it is likely caused by the fact that the 603 // If we come here, it is likely caused by the fact that the
604 // "VerticalResizeDoubleClick" stored a restore rectangle. In that case 604 // "VerticalResizeDoubleClick" stored a restore rectangle. In that case
605 // we allow all maximize operations (and keep the restore rectangle). 605 // we allow all maximize operations (and keep the restore rectangle).
606 return FRAME_STATE_NONE; 606 return FRAME_STATE_NONE;
607 } 607 }
608 608
609 } // namespace ash 609 } // namespace ash
OLDNEW
« no previous file with comments | « ash/wm/window_cycle_controller.cc ('k') | ash/wm/workspace/multi_window_resize_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698