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

Unified Diff: chrome/browser/ui/panels/panel_window_controller_cocoa.mm

Issue 10066032: Enable user resizing for docked Panels (GTK and Mac). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix tests Created 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/panels/panel_strip.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/panels/panel_window_controller_cocoa.mm
diff --git a/chrome/browser/ui/panels/panel_window_controller_cocoa.mm b/chrome/browser/ui/panels/panel_window_controller_cocoa.mm
index d79a02b7f8d3fa621971a74c5b0294150df3488c..cad5731297d4054e076e8fa910456ed5fb383844 100644
--- a/chrome/browser/ui/panels/panel_window_controller_cocoa.mm
+++ b/chrome/browser/ui/panels/panel_window_controller_cocoa.mm
@@ -172,7 +172,8 @@ enum {
// |pointInWindow| is in window coordinates.
- (panel::ResizingSides)edgeHitTest:(NSPoint)pointInWindow {
- DCHECK(panel_->CanResizeByMouse());
+ panel::Resizability resizability = panel_->CanResizeByMouse();
+ DCHECK_NE(panel::NOT_RESIZABLE, resizability);
NSPoint point = [self convertPoint:pointInWindow fromView:nil];
BOOL flipped = [self isFlipped];
@@ -182,16 +183,20 @@ enum {
return panel::RESIZE_RIGHT;
if (NSMouseInRect(point, topCursorRect_, flipped))
return panel::RESIZE_TOP;
- if (NSMouseInRect(point, bottomCursorRect_, flipped))
- return panel::RESIZE_BOTTOM;
if (NSMouseInRect(point, topLeftCursorRect_, flipped))
return panel::RESIZE_TOP_LEFT;
if (NSMouseInRect(point, topRightCursorRect_, flipped))
return panel::RESIZE_TOP_RIGHT;
- if (NSMouseInRect(point, bottomLeftCursorRect_, flipped))
- return panel::RESIZE_BOTTOM_LEFT;
- if (NSMouseInRect(point, bottomRightCursorRect_, flipped))
- return panel::RESIZE_BOTTOM_RIGHT;
+
+ // Bottom edge is not always resizable.
+ if (panel::RESIZABLE_ALL_SIDES == resizability) {
+ if (NSMouseInRect(point, bottomCursorRect_, flipped))
+ return panel::RESIZE_BOTTOM;
+ if (NSMouseInRect(point, bottomLeftCursorRect_, flipped))
+ return panel::RESIZE_BOTTOM_LEFT;
+ if (NSMouseInRect(point, bottomRightCursorRect_, flipped))
+ return panel::RESIZE_BOTTOM_RIGHT;
+ }
return panel::RESIZE_NONE;
}
@@ -204,7 +209,7 @@ enum {
// |point| is in coordinate system of the parent view.
- (NSView*)hitTest:(NSPoint)point {
// If panel is not resizable, let the mouse events fall through.
- if (!panel_->CanResizeByMouse())
+ if (panel::NOT_RESIZABLE == panel_->CanResizeByMouse())
return nil;
NSPoint pointInWindow = [[self superview] convertPoint:point toView:nil];
@@ -214,7 +219,7 @@ enum {
- (void)mouseDown:(NSEvent*)event {
// If the panel is not resizable, hitTest should have failed and no mouse
// events should have came here.
- DCHECK(panel_->CanResizeByMouse());
+ DCHECK_NE(panel::NOT_RESIZABLE, panel_->CanResizeByMouse());
[self prepareForDrag:event];
}
@@ -365,7 +370,8 @@ enum {
}
- (void)resetCursorRects {
- if(!panel_->CanResizeByMouse())
+ panel::Resizability resizability = panel_->CanResizeByMouse();
+ if (panel::NOT_RESIZABLE == resizability)
return;
NSRect bounds = [self bounds];
@@ -389,11 +395,6 @@ enum {
kWidthOfMouseResizeArea);
[self addCursorRect:topCursorRect_ cursor:northSouthCursor_];
- // Bottom horizontal edge.
- bottomCursorRect_ = topCursorRect_;
- bottomCursorRect_.origin.y = NSMinY(bounds);
- [self addCursorRect:bottomCursorRect_ cursor:northSouthCursor_];
-
// Top left corner.
topLeftCursorRect_ = NSMakeRect(NSMinX(bounds),
NSMaxY(bounds) - kWidthOfMouseResizeArea,
@@ -406,6 +407,15 @@ enum {
topRightCursorRect_.origin.x = NSMaxX(bounds) - kWidthOfMouseResizeArea;
[self addCursorRect:topRightCursorRect_ cursor:northEastSouthWestCursor_];
+ // Bottom edge is not always resizable.
+ if (panel::RESIZABLE_ALL_SIDES_EXCEPT_BOTTOM == resizability)
+ return;
+
+ // Bottom horizontal edge.
+ bottomCursorRect_ = topCursorRect_;
+ bottomCursorRect_.origin.y = NSMinY(bounds);
+ [self addCursorRect:bottomCursorRect_ cursor:northSouthCursor_];
+
// Bottom right corner.
bottomRightCursorRect_ = topRightCursorRect_;
bottomRightCursorRect_.origin.y = NSMinY(bounds);
« no previous file with comments | « chrome/browser/ui/panels/panel_strip.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698