diff options
Diffstat (limited to 'views/controls/table')
-rw-r--r-- | views/controls/table/table_view.cc | 14 | ||||
-rw-r--r-- | views/controls/table/table_view.h | 8 |
2 files changed, 14 insertions, 8 deletions
diff --git a/views/controls/table/table_view.cc b/views/controls/table/table_view.cc index 8b86a6e..7ab4c91 100644 --- a/views/controls/table/table_view.cc +++ b/views/controls/table/table_view.cc @@ -64,7 +64,6 @@ TableView::TableView(TableModel* model, single_selection_(single_selection), ignore_listview_change_(false), custom_colors_enabled_(false), - sized_columns_(false), autosize_columns_(autosize_columns), resizable_columns_(resizable_columns), list_view_(NULL), @@ -133,10 +132,8 @@ void TableView::DidChangeBounds(const gfx::Rect& previous, return; SendMessage(list_view_, WM_SETREDRAW, static_cast<WPARAM>(FALSE), 0); Layout(); - if ((!sized_columns_ || autosize_columns_) && width() > 0) { - sized_columns_ = true; + if (autosize_columns_ && width() > 0) ResetColumnSizes(); - } UpdateContentOffset(); SendMessage(list_view_, WM_SETREDRAW, static_cast<WPARAM>(TRUE), 0); } @@ -1551,6 +1548,15 @@ gfx::Font TableView::GetAltTextFont() { return ResourceBundle::GetSharedInstance().GetFont(ResourceBundle::BaseFont); } +void TableView::VisibilityChanged(View* starting_from, bool is_visible) { + // GetClientRect as used by ResetColumnSize to obtain the total width + // available to the columns only works when the native control is visible, so + // update the column sizes in case we become visible. This depends on + // VisibilityChanged() being called in post order on the view tree. + if (is_visible && autosize_columns_) + ResetColumnSizes(); +} + // // TableSelectionIterator diff --git a/views/controls/table/table_view.h b/views/controls/table/table_view.h index f237df2..28d877e 100644 --- a/views/controls/table/table_view.h +++ b/views/controls/table/table_view.h @@ -407,6 +407,10 @@ class TableView : public NativeControl, // Returns the font used for alt text. gfx::Font GetAltTextFont(); + // Overriden in order to update the column sizes, which can only be sized + // accurately when the native control is available. + virtual void VisibilityChanged(View* starting_from, bool is_visible); + TableModel* model_; TableTypes table_type_; TableViewObserver* table_view_observer_; @@ -432,10 +436,6 @@ class TableView : public NativeControl, // Reflects the value passed to SetCustomColorsEnabled. bool custom_colors_enabled_; - // Whether or not the columns have been sized in the ListView. This is - // set to true the first time Layout() is invoked and we have a valid size. - bool sized_columns_; - // Whether or not columns should automatically be resized to fill the // the available width when the list view is resized. bool autosize_columns_; |