Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(46)

Side by Side Diff: chrome/browser/chromeos/options/options_window_view.cc

Issue 2812026: Auto-size the views version of the options dialog. (Closed)
Patch Set: Fix autosizing issue with gtk pref pages in chromeos options dialog. Created 10 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/browser/options_window.h" 5 #include "chrome/browser/options_window.h"
6 6
7 #include "app/l10n_util.h" 7 #include "app/l10n_util.h"
8 #include "app/resource_bundle.h" 8 #include "app/resource_bundle.h"
9 #include "base/scoped_ptr.h" 9 #include "base/scoped_ptr.h"
10 #include "chrome/browser/browser_list.h" 10 #include "chrome/browser/browser_list.h"
(...skipping 17 matching lines...) Expand all
28 #include "views/controls/tabbed_pane/tabbed_pane.h" 28 #include "views/controls/tabbed_pane/tabbed_pane.h"
29 #include "views/widget/root_view.h" 29 #include "views/widget/root_view.h"
30 #include "views/window/dialog_delegate.h" 30 #include "views/window/dialog_delegate.h"
31 #include "views/window/window.h" 31 #include "views/window/window.h"
32 #include "views/window/window_gtk.h" 32 #include "views/window/window_gtk.h"
33 33
34 34
35 namespace chromeos { 35 namespace chromeos {
36 36
37 /////////////////////////////////////////////////////////////////////////////// 37 ///////////////////////////////////////////////////////////////////////////////
38 // GtkPreferencePageHost
39 //
40 // Hosts a GTK preference page and takes care of sizing it appropriately.
41 //
42 class GtkPreferencePageHost : public views::NativeViewHost {
43 public:
44 explicit GtkPreferencePageHost(GtkWidget* widget);
45
46 private:
47 // views::View overrides:
48 virtual void ViewHierarchyChanged(bool is_add, View* parent, View* child);
49 virtual gfx::Size GetPreferredSize();
50
51 GtkWidget* widget_;
52
53 DISALLOW_COPY_AND_ASSIGN(GtkPreferencePageHost);
54 };
55
56 GtkPreferencePageHost::GtkPreferencePageHost(GtkWidget* widget)
57 : widget_(widget) {
58 set_background(views::Background::CreateSolidBackground(SK_ColorWHITE));
59 }
60
61 void GtkPreferencePageHost::ViewHierarchyChanged(bool is_add,
62 View* parent,
63 View* child) {
64 NativeViewHost::ViewHierarchyChanged(is_add, parent, child);
65 if (is_add && child == this)
66 Attach(widget_);
67 }
68
69 gfx::Size GtkPreferencePageHost::GetPreferredSize() {
70 // We need to show the widget and its children since otherwise containers like
71 // gtk_box don't compute the correct size.
72 gtk_widget_show_all(widget_);
73 GtkRequisition requisition = { 0, 0 };
74 gtk_widget_size_request(GTK_WIDGET(widget_), &requisition);
75 GtkRequisition& size(widget_->requisition);
76 return gfx::Size(size.width, size.height);
77 }
78
79 ///////////////////////////////////////////////////////////////////////////////
38 // OptionsWindowView 80 // OptionsWindowView
39 // 81 //
40 // The contents of the Options dialog window. 82 // The contents of the Options dialog window.
41 // 83 //
42 class OptionsWindowView : public views::View, 84 class OptionsWindowView : public views::View,
43 public views::DialogDelegate, 85 public views::DialogDelegate,
44 public views::TabbedPane::Listener { 86 public views::TabbedPane::Listener {
45 public: 87 public:
46 static const int kDialogPadding; 88 static const int kDialogPadding;
47 static const SkColor kDialogBackground; 89 static const SkColor kDialogBackground;
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 /////////////////////////////////////////////////////////////////////////////// 249 ///////////////////////////////////////////////////////////////////////////////
208 // OptionsWindowView, views::View overrides: 250 // OptionsWindowView, views::View overrides:
209 251
210 void OptionsWindowView::Layout() { 252 void OptionsWindowView::Layout() {
211 tabs_->SetBounds(kDialogPadding, kDialogPadding, 253 tabs_->SetBounds(kDialogPadding, kDialogPadding,
212 width() - (2 * kDialogPadding), 254 width() - (2 * kDialogPadding),
213 height() - (2 * kDialogPadding)); 255 height() - (2 * kDialogPadding));
214 } 256 }
215 257
216 gfx::Size OptionsWindowView::GetPreferredSize() { 258 gfx::Size OptionsWindowView::GetPreferredSize() {
217 return gfx::Size(views::Window::GetLocalizedContentsSize( 259 gfx::Size size(tabs_->GetPreferredSize());
218 IDS_OPTIONS_DIALOG_WIDTH_CHARS, 260 size.Enlarge(2 * kDialogPadding, 2 * kDialogPadding);
219 IDS_OPTIONS_DIALOG_HEIGHT_LINES)); 261 return size;
220 } 262 }
221 263
222 void OptionsWindowView::ViewHierarchyChanged(bool is_add, 264 void OptionsWindowView::ViewHierarchyChanged(bool is_add,
223 views::View* parent, 265 views::View* parent,
224 views::View* child) { 266 views::View* child) {
225 // Can't init before we're inserted into a Container, because we require a 267 // Can't init before we're inserted into a Container, because we require a
226 // HWND to parent native child controls to. 268 // HWND to parent native child controls to.
227 if (is_add && child == this) 269 if (is_add && child == this)
228 Init(); 270 Init();
229 } 271 }
(...skipping 26 matching lines...) Expand all
256 l10n_util::GetString(IDS_OPTIONS_SYSTEM_TAB_LABEL), 298 l10n_util::GetString(IDS_OPTIONS_SYSTEM_TAB_LABEL),
257 system_page, false); 299 system_page, false);
258 300
259 InternetPageView* internet_page = new InternetPageView(profile_); 301 InternetPageView* internet_page = new InternetPageView(profile_);
260 internet_page->set_background(views::Background::CreateSolidBackground( 302 internet_page->set_background(views::Background::CreateSolidBackground(
261 SK_ColorWHITE)); 303 SK_ColorWHITE));
262 tabs_->AddTabAtIndex(tab_index++, 304 tabs_->AddTabAtIndex(tab_index++,
263 l10n_util::GetString(IDS_OPTIONS_INTERNET_TAB_LABEL), 305 l10n_util::GetString(IDS_OPTIONS_INTERNET_TAB_LABEL),
264 internet_page, false); 306 internet_page, false);
265 307
266 views::NativeViewHost* general_page_view = new views::NativeViewHost();
267 general_page_view->set_background(views::Background::CreateSolidBackground(
268 SK_ColorWHITE));
269 tabs_->AddTabAtIndex(tab_index++, 308 tabs_->AddTabAtIndex(tab_index++,
270 l10n_util::GetString(IDS_OPTIONS_GENERAL_TAB_LABEL), 309 l10n_util::GetString(IDS_OPTIONS_GENERAL_TAB_LABEL),
271 general_page_view, false); 310 new GtkPreferencePageHost(
272 general_page_view->Attach(general_page_.get_page_widget()); 311 general_page_.get_page_widget()),
312 false);
273 313
274 views::NativeViewHost* content_page_view = new views::NativeViewHost();
275 content_page_view->set_background(views::Background::CreateSolidBackground(
276 SK_ColorWHITE));
277 tabs_->AddTabAtIndex(tab_index++, 314 tabs_->AddTabAtIndex(tab_index++,
278 l10n_util::GetString(IDS_OPTIONS_CONTENT_TAB_LABEL), 315 l10n_util::GetString(IDS_OPTIONS_CONTENT_TAB_LABEL),
279 content_page_view, false); 316 new GtkPreferencePageHost(
280 content_page_view->Attach(content_page_.get_page_widget()); 317 content_page_.get_page_widget()),
318 false);
281 319
282 views::NativeViewHost* advanced_page_view = new views::NativeViewHost();
283 advanced_page_view->set_background(views::Background::CreateSolidBackground(
284 SK_ColorWHITE));
285 tabs_->AddTabAtIndex(tab_index++, 320 tabs_->AddTabAtIndex(tab_index++,
286 l10n_util::GetString(IDS_OPTIONS_ADVANCED_TAB_LABEL), 321 l10n_util::GetString(IDS_OPTIONS_ADVANCED_TAB_LABEL),
287 advanced_page_view, false); 322 new GtkPreferencePageHost(
288 advanced_page_view->Attach(advanced_page_.get_page_widget()); 323 advanced_page_.get_page_widget()),
324 false);
289 325
290 DCHECK(tabs_->GetTabCount() == OPTIONS_PAGE_COUNT); 326 DCHECK(tabs_->GetTabCount() == OPTIONS_PAGE_COUNT);
291 327
292 initialized_ = true; 328 initialized_ = true;
293 } 329 }
294 330
295 OptionsPageView* OptionsWindowView::GetCurrentOptionsPageView() const { 331 OptionsPageView* OptionsWindowView::GetCurrentOptionsPageView() const {
296 int selected_option_page = tabs_->GetSelectedTabIndex(); 332 int selected_option_page = tabs_->GetSelectedTabIndex();
297 if (selected_option_page < OPTIONS_PAGE_GENERAL) { 333 if (selected_option_page < OPTIONS_PAGE_GENERAL) {
298 return static_cast<OptionsPageView*>(tabs_->GetSelectedTab()); 334 return static_cast<OptionsPageView*>(tabs_->GetSelectedTab());
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 // a new one for the current active browser. 373 // a new one for the current active browser.
338 chromeos::CloseOptionsWindow(); 374 chromeos::CloseOptionsWindow();
339 375
340 OptionsWindowView::instance_ = new OptionsWindowView(profile); 376 OptionsWindowView::instance_ = new OptionsWindowView(profile);
341 views::Window::CreateChromeWindow(chromeos::GetOptionsViewParent(), 377 views::Window::CreateChromeWindow(chromeos::GetOptionsViewParent(),
342 gfx::Rect(), 378 gfx::Rect(),
343 OptionsWindowView::instance_); 379 OptionsWindowView::instance_);
344 380
345 OptionsWindowView::instance_->ShowOptionsPage(page, highlight_group); 381 OptionsWindowView::instance_->ShowOptionsPage(page, highlight_group);
346 } 382 }
347
OLDNEW
« no previous file with comments | « chrome/app/resources/locale_settings_zh-TW.xtb ('k') | chrome/browser/views/options/advanced_contents_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698