diff options
author | pfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-01 16:08:35 +0000 |
---|---|---|
committer | pfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-01 16:08:35 +0000 |
commit | 011479016795f1dd436f81849a21fd8d6ff65ce3 (patch) | |
tree | 699c8ff78d489eaac1319bf190b269ef065398c0 /views | |
parent | 1b0aa20944a873ca8b45c184d8a8fbd25fe4a51c (diff) | |
download | chromium_src-011479016795f1dd436f81849a21fd8d6ff65ce3.zip chromium_src-011479016795f1dd436f81849a21fd8d6ff65ce3.tar.gz chromium_src-011479016795f1dd436f81849a21fd8d6ff65ce3.tar.bz2 |
Add layout support for invisible SingleSplitView children.
Review URL: http://codereview.chromium.org/150120
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@19737 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views')
-rw-r--r-- | views/controls/single_split_view.cc | 37 |
1 files changed, 25 insertions, 12 deletions
diff --git a/views/controls/single_split_view.cc b/views/controls/single_split_view.cc index 1ddf229..c0e6e3c 100644 --- a/views/controls/single_split_view.cc +++ b/views/controls/single_split_view.cc @@ -35,20 +35,30 @@ void SingleSplitView::Layout() { View* leading = GetChildViewAt(0); View* trailing = GetChildViewAt(1); - if (divider_offset_ < 0) - divider_offset_ = (GetPrimaryAxisSize() - kDividerSize) / 2; - else - divider_offset_ = std::min(divider_offset_, - GetPrimaryAxisSize() - kDividerSize); - if (is_horizontal_) { - leading->SetBounds(0, 0, divider_offset_, height()); - trailing->SetBounds(divider_offset_ + kDividerSize, 0, - width() - divider_offset_ - kDividerSize, height()); + if (!leading->IsVisible() && !trailing->IsVisible()) + return; + + if (!trailing->IsVisible()) { + leading->SetBounds(0, 0, width(), height()); + } else if (!leading->IsVisible()) { + trailing->SetBounds(0, 0, width(), height()); } else { - leading->SetBounds(0, 0, width(), divider_offset_); - trailing->SetBounds(0, divider_offset_ + kDividerSize, - width(), height() - divider_offset_ - kDividerSize); + if (divider_offset_ < 0) + divider_offset_ = (GetPrimaryAxisSize() - kDividerSize) / 2; + else + divider_offset_ = std::min(divider_offset_, + GetPrimaryAxisSize() - kDividerSize); + + if (is_horizontal_) { + leading->SetBounds(0, 0, divider_offset_, height()); + trailing->SetBounds(divider_offset_ + kDividerSize, 0, + width() - divider_offset_ - kDividerSize, height()); + } else { + leading->SetBounds(0, 0, width(), divider_offset_); + trailing->SetBounds(0, divider_offset_ + kDividerSize, + width(), height() - divider_offset_ - kDividerSize); + } } SchedulePaint(); @@ -139,6 +149,9 @@ bool SingleSplitView::IsPointInDivider(int x, int y) { if (GetChildViewCount() < 2) return false; + if (!GetChildViewAt(0)->IsVisible() || !GetChildViewAt(1)->IsVisible()) + return false; + int divider_relative_offset; if (is_horizontal_) { divider_relative_offset = |