| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 "chrome/views/grid_layout.h" | 5 #include "chrome/views/grid_layout.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "chrome/views/view.h" | 10 #include "chrome/views/view.h" |
| (...skipping 553 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 564 | 564 |
| 565 int ColumnSet::GetColumnWidth(int start_col, int col_span) { | 565 int ColumnSet::GetColumnWidth(int start_col, int col_span) { |
| 566 return LayoutElement::TotalSize(start_col, col_span, &columns_); | 566 return LayoutElement::TotalSize(start_col, col_span, &columns_); |
| 567 } | 567 } |
| 568 | 568 |
| 569 void ColumnSet::ResetColumnXCoordinates() { | 569 void ColumnSet::ResetColumnXCoordinates() { |
| 570 LayoutElement::CalculateLocationsFromSize(&columns_); | 570 LayoutElement::CalculateLocationsFromSize(&columns_); |
| 571 } | 571 } |
| 572 | 572 |
| 573 void ColumnSet::CalculateSize() { | 573 void ColumnSet::CalculateSize() { |
| 574 CSize pref; | 574 gfx::Size pref; |
| 575 // Reset the preferred and remaining sizes. | 575 // Reset the preferred and remaining sizes. |
| 576 for (std::vector<ViewState*>::iterator i = view_states_.begin(); | 576 for (std::vector<ViewState*>::iterator i = view_states_.begin(); |
| 577 i != view_states_.end(); ++i) { | 577 i != view_states_.end(); ++i) { |
| 578 ViewState* view_state = *i; | 578 ViewState* view_state = *i; |
| 579 pref.cx = pref.cy = 0; | |
| 580 if (!view_state->pref_width_fixed || !view_state->pref_height_fixed) { | 579 if (!view_state->pref_width_fixed || !view_state->pref_height_fixed) { |
| 581 view_state->view->GetPreferredSize(&pref); | 580 pref = view_state->view->GetPreferredSize(); |
| 582 if (!view_state->pref_width_fixed) | 581 if (!view_state->pref_width_fixed) |
| 583 view_state->pref_width = pref.cx; | 582 view_state->pref_width = pref.width(); |
| 584 if (!view_state->pref_height_fixed) | 583 if (!view_state->pref_height_fixed) |
| 585 view_state->pref_height = pref.cy; | 584 view_state->pref_height = pref.height(); |
| 586 } | 585 } |
| 587 view_state->remaining_width = pref.cx; | 586 view_state->remaining_width = pref.width(); |
| 588 view_state->remaining_height = pref.cy; | 587 view_state->remaining_height = pref.height(); |
| 589 } | 588 } |
| 590 | 589 |
| 591 // Let layout element reset the sizes for us. | 590 // Let layout element reset the sizes for us. |
| 592 LayoutElement::ResetSizes(&columns_); | 591 LayoutElement::ResetSizes(&columns_); |
| 593 | 592 |
| 594 // Distribute the size of each view with a col span == 1. | 593 // Distribute the size of each view with a col span == 1. |
| 595 std::vector<ViewState*>::iterator view_state_iterator = | 594 std::vector<ViewState*>::iterator view_state_iterator = |
| 596 view_states_.begin(); | 595 view_states_.begin(); |
| 597 for (; view_state_iterator != view_states_.end() && | 596 for (; view_state_iterator != view_states_.end() && |
| 598 (*view_state_iterator)->col_span == 1; ++view_state_iterator) { | 597 (*view_state_iterator)->col_span == 1; ++view_state_iterator) { |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 782 &x, &width); | 781 &x, &width); |
| 783 int y = rows_[view_state->start_row]->Location() + top_inset_; | 782 int y = rows_[view_state->start_row]->Location() + top_inset_; |
| 784 int height = LayoutElement::TotalSize(view_state->start_row, | 783 int height = LayoutElement::TotalSize(view_state->start_row, |
| 785 view_state->row_span, &rows_); | 784 view_state->row_span, &rows_); |
| 786 CalculateSize(view_state->pref_height, view_state->v_align, | 785 CalculateSize(view_state->pref_height, view_state->v_align, |
| 787 &y, &height); | 786 &y, &height); |
| 788 view->SetBounds(x, y, width, height); | 787 view->SetBounds(x, y, width, height); |
| 789 } | 788 } |
| 790 } | 789 } |
| 791 | 790 |
| 792 void GridLayout::GetPreferredSize(View* host, CSize* out) { | 791 gfx::Size GridLayout::GetPreferredSize(View* host) { |
| 793 DCHECK(host_ == host); | 792 DCHECK(host_ == host); |
| 794 SizeRowsAndColumns(false, 0, 0, out); | 793 CSize out; |
| 794 SizeRowsAndColumns(false, 0, 0, &out); |
| 795 return gfx::Size(out.cx, out.cy); |
| 795 } | 796 } |
| 796 | 797 |
| 797 int GridLayout::GetPreferredHeightForWidth(View* host, int width) { | 798 int GridLayout::GetPreferredHeightForWidth(View* host, int width) { |
| 798 DCHECK(host_ == host); | 799 DCHECK(host_ == host); |
| 799 CSize pref; | 800 CSize pref; |
| 800 SizeRowsAndColumns(false, width, 0, &pref); | 801 SizeRowsAndColumns(false, width, 0, &pref); |
| 801 return pref.cy; | 802 return pref.cy; |
| 802 } | 803 } |
| 803 | 804 |
| 804 void GridLayout::SizeRowsAndColumns(bool layout, int width, int height, | 805 void GridLayout::SizeRowsAndColumns(bool layout, int width, int height, |
| (...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1004 ColumnSet* GridLayout::GetLastValidColumnSet() { | 1005 ColumnSet* GridLayout::GetLastValidColumnSet() { |
| 1005 for (int i = current_row_ - 1; i >= 0; --i) { | 1006 for (int i = current_row_ - 1; i >= 0; --i) { |
| 1006 if (rows_[i]->column_set()) | 1007 if (rows_[i]->column_set()) |
| 1007 return rows_[i]->column_set(); | 1008 return rows_[i]->column_set(); |
| 1008 } | 1009 } |
| 1009 return NULL; | 1010 return NULL; |
| 1010 } | 1011 } |
| 1011 | 1012 |
| 1012 } // namespace | 1013 } // namespace |
| 1013 | 1014 |
| OLD | NEW |