Add 'resize_leading_on_bounds_change' property into the SingleSplitView.
When it is turned on, leading component is resized when split view gets new bounds. Review URL: http://codereview.chromium.org/155214 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@20258 0039d316-1c4b-4281-b951-d872f2087c98
Esse commit está contido em:
@@ -184,6 +184,7 @@ BookmarkManagerView::BookmarkManagerView(Profile* profile)
|
||||
|
||||
split_view_ = new views::SingleSplitView(tree_view_, table_view_,
|
||||
views::SingleSplitView::HORIZONTAL_SPLIT);
|
||||
split_view_->set_resize_leading_on_bounds_change(false);
|
||||
split_view_->set_background(
|
||||
views::Background::CreateSolidBackground(kBackgroundColorBottom));
|
||||
|
||||
|
||||
@@ -21,7 +21,8 @@ SingleSplitView::SingleSplitView(View* leading,
|
||||
View* trailing,
|
||||
Orientation orientation)
|
||||
: is_horizontal_(orientation == HORIZONTAL_SPLIT),
|
||||
divider_offset_(-1) {
|
||||
divider_offset_(-1),
|
||||
resize_leading_on_bounds_change_(true) {
|
||||
AddChildView(leading);
|
||||
AddChildView(trailing);
|
||||
#if defined(OS_WIN)
|
||||
@@ -31,6 +32,20 @@ SingleSplitView::SingleSplitView(View* leading,
|
||||
#endif
|
||||
}
|
||||
|
||||
void SingleSplitView::DidChangeBounds(const gfx::Rect& previous,
|
||||
const gfx::Rect& current) {
|
||||
if (resize_leading_on_bounds_change_) {
|
||||
if (is_horizontal_)
|
||||
divider_offset_ += current.width() - previous.width();
|
||||
else
|
||||
divider_offset_ += current.height() - previous.height();
|
||||
|
||||
if (divider_offset_ < 0)
|
||||
divider_offset_ = kDividerSize;
|
||||
}
|
||||
View::DidChangeBounds(previous, current);
|
||||
}
|
||||
|
||||
void SingleSplitView::Layout() {
|
||||
if (GetChildViewCount() != 2)
|
||||
return;
|
||||
|
||||
@@ -20,6 +20,9 @@ class SingleSplitView : public views::View {
|
||||
|
||||
SingleSplitView(View* leading, View* trailing, Orientation orientation);
|
||||
|
||||
virtual void DidChangeBounds(const gfx::Rect& previous,
|
||||
const gfx::Rect& current);
|
||||
|
||||
virtual void Layout();
|
||||
|
||||
// SingleSplitView's preferred size is the sum of the preferred widths
|
||||
@@ -36,6 +39,13 @@ class SingleSplitView : public views::View {
|
||||
}
|
||||
int divider_offset() { return divider_offset_; }
|
||||
|
||||
// Sets whether the leading component is resized when the split views size
|
||||
// changes. The default is true. A value of false results in the trailing
|
||||
// component resizing on a bounds change.
|
||||
void set_resize_leading_on_bounds_change(bool resize) {
|
||||
resize_leading_on_bounds_change_ = resize;
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual bool OnMousePressed(const MouseEvent& event);
|
||||
virtual bool OnMouseDragged(const MouseEvent& event);
|
||||
@@ -70,6 +80,8 @@ class SingleSplitView : public views::View {
|
||||
// Position of the divider.
|
||||
int divider_offset_;
|
||||
|
||||
bool resize_leading_on_bounds_change_;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(SingleSplitView);
|
||||
};
|
||||
|
||||
|
||||
Referência em uma Nova Issue
Bloquear um usuário