summaryrefslogtreecommitdiffstats
path: root/views
diff options
context:
space:
mode:
Diffstat (limited to 'views')
-rw-r--r--views/controls/resize_gripper.cc22
-rw-r--r--views/controls/resize_gripper.h10
2 files changed, 21 insertions, 11 deletions
diff --git a/views/controls/resize_gripper.cc b/views/controls/resize_gripper.cc
index f443f33..59a13aa 100644
--- a/views/controls/resize_gripper.cc
+++ b/views/controls/resize_gripper.cc
@@ -64,22 +64,26 @@ bool ResizeGripper::OnMouseDragged(const views::MouseEvent& event) {
if (!event.IsLeftMouseButton())
return false;
- gfx::Point point(event.x(), 0);
- View::ConvertPointToScreen(this, &point);
-
- delegate_->OnResize(point.x() - initial_position_, false);
+ ReportResizeAmount(event.x(), false);
return true;
}
void ResizeGripper::OnMouseReleased(const views::MouseEvent& event,
bool canceled) {
- gfx::Point point(event.x(), 0);
- View::ConvertPointToScreen(this, &point);
-
if (canceled)
- delegate_->OnResize(0, true);
+ ReportResizeAmount(initial_position_, true);
else
- delegate_->OnResize(point.x() - initial_position_, true);
+ ReportResizeAmount(event.x(), true);
+}
+
+void ResizeGripper::ReportResizeAmount(int resize_amount, bool last_update) {
+ gfx::Point point(resize_amount, 0);
+ View::ConvertPointToScreen(this, &point);
+ resize_amount = point.x() - initial_position_;
+
+ if (UILayoutIsRightToLeft())
+ resize_amount = -1 * resize_amount;
+ delegate_->OnResize(resize_amount, last_update);
}
} // namespace views
diff --git a/views/controls/resize_gripper.h b/views/controls/resize_gripper.h
index 1b65066..204aa9f 100644
--- a/views/controls/resize_gripper.h
+++ b/views/controls/resize_gripper.h
@@ -27,8 +27,10 @@ class ResizeGripper : public ImageView {
public:
// OnResize is sent when resizing is detected. |resize_amount| specifies the
// number of pixels that the user wants to resize by, and can be negative or
- // positive (depending on direction of dragging). |done_resizing| is
- // true if the user has released the mouse.
+ // positive (depending on direction of dragging and flips according to
+ // locale directionality: dragging to the left in LTR locales gives negative
+ // |resize_amount| but positive amount for RTL). |done_resizing| is true if
+ // the user has released the mouse.
virtual void OnResize(int resize_amount, bool done_resizing) = 0;
};
@@ -46,6 +48,10 @@ class ResizeGripper : public ImageView {
static const char kViewClassName[];
private:
+ // Report the amount the user resized by to the delegate, accounting for
+ // directionality.
+ void ReportResizeAmount(int resize_amount, bool last_update);
+
// The delegate to notify when we have updates.
ResizeGripperDelegate* delegate_;