diff options
author | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-13 16:03:53 +0000 |
---|---|---|
committer | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-13 16:03:53 +0000 |
commit | 4672de6247fe7a865b2abeaac1b4a76c9369b7a3 (patch) | |
tree | eaa314bbb797dae5152877b1ad170f44d1eb51b4 /views/controls/tabbed_pane | |
parent | 37ae86f0c4b50dc83b13da17ae1a9ef7083fa76f (diff) | |
download | chromium_src-4672de6247fe7a865b2abeaac1b4a76c9369b7a3.zip chromium_src-4672de6247fe7a865b2abeaac1b4a76c9369b7a3.tar.gz chromium_src-4672de6247fe7a865b2abeaac1b4a76c9369b7a3.tar.bz2 |
Split the hierarchy.
* Widget ----
Now recognizes a supplied NativeWidget via InitParams. If this is specified then a default one is not created.
Is now created directly rather than using a factory. NativeWidget creation is not performed until Init() is called. This means some functions that rely on a NativeWidget must not be called until _AFTER_ Init() (explains some of the function call reordering in this CL, e.g. moving SetOpacity() until after Init()).
ResetLastMouseMovedFlag() moved to this API so that BaseTabStrip can call it in a cross-platform way.
Made last remaining unimplemented methods on Widget pass-thru to NativeWidget implementations.
* WidgetWin/WidgetGtk ----
The NativeWidget implementations now both require a NativeWidgetDelegate implementation upon construction. This is passed through the constructor by the static factory method NativeWidget::CreateNativeWidget and by subclasses such as WindowWin, BubbleWidgetWin, etc.
Some classes that are constructed directly (e.g. LockWindow, in ChromeOS) never have a Widget created for them, so they create the Widget themselves in their base class initializer.
Code in these classes (and their WindowWin/WindowGtk, BrowserFrameWin, BrowserFrameGtk subclasses) must now call GetWidget() etc to call Widget API methods since they are no longer subclasses.
static_casting to this (and derived) types must now be done on the Widget's native_widget().
GetWindow() is renamed to GetContainingWindow() to avoid naming conflicts.
* Window ----
Window is now a subclass of Widget.
Now recognizes a supplied NativeWindow via InitParams. If this is specified then a default one is not created.
Window::CloseWindow becomes an override of Widget::Close.
CloseAllSecondaryWindows() becomes CloseAllSecondaryWidgets() and moves to widget.h
IsAppWindow() is removed and replaced by set_is_secondary_widget on Widget.
* MenuHost ----
Subclasses Widget now.
* TabContentsViewViews ----
It looks like the Gtk-views code here was still using the old implementation of the Native version of this class - i.e. a class that subclassed TabContentsView AND WidgetGtk. A no-no. I had to write NativeTabContentsViewGtk, which is almost identical to NativeTabContentsViewWin with the Gtk bits of TabContentsViewGtk thrown in.
* BrowserFrame ----
Platform-specific functionality is now restricted to BrowserFrameWin/BrowserFrameGtk behind a NativeBrowserFrame interface. Construction is exposed via a static factory method on NativeBrowserFrame.
BrowserFrame becomes a concrete class that now subclasses Window.
As a result, it no longer needs a GetWindow() accessor method, so people with a BrowserFrame* can just call Window methods directly on it.
It is constructed directly, replacing the BrowserFrame::Create() method.
NativeBrowserFrameDelegate is no longer needed.
BrowserFrameChromeos is simpler as a couple of #ifdefs in BrowserFrame, so I got rid of that too.
* AutocompletePopupWin/Gtk ----
No longer required. AutocompletePopupContentsView now just uses a Widget directly.
* There is some lingering ugliness:
- If you set a native_window field on Window::InitParams you must also manually set widget_init_params.native_widget. I will make InitParams do more of this automatically later.
- It'd be nice for the ContentsView to be specified via InitParams. I'll get to this later.
- NativeBrowserFrame could probably disappear as an interface. It only exists to provide a couple of methods that may be implemented in other ways.
- delete_on_destroy should now be an ownership directionality enum. I will do this later.
- Secondary-widgetness should somehow be inferred from transience. Later.
- set_focus_on_creation for both the NativeWidgets should probably move to Widget if it is really needed.
- WidgetWin/Gtk::SetInitialFocus seems like it could move to Widget.
- I need to clean up function order in some cases.
BUG=72040
TEST=none
Review URL: http://codereview.chromium.org/7012006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@85269 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views/controls/tabbed_pane')
4 files changed, 11 insertions, 11 deletions
diff --git a/views/controls/tabbed_pane/native_tabbed_pane_gtk.cc b/views/controls/tabbed_pane/native_tabbed_pane_gtk.cc index 123ece2..2fbdbe9 100644 --- a/views/controls/tabbed_pane/native_tabbed_pane_gtk.cc +++ b/views/controls/tabbed_pane/native_tabbed_pane_gtk.cc @@ -77,8 +77,8 @@ View* NativeTabbedPaneGtk::RemoveTabAtIndex(int index) { GtkWidget* page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(native_view()), index); - WidgetGtk* widget = - static_cast<WidgetGtk*>(NativeWidget::GetNativeWidgetForNativeView(page)); + Widget* widget = + NativeWidget::GetNativeWidgetForNativeView(page)->GetWidget(); // detach the content view from widget so that we can delete widget // without destroying the content view. @@ -154,7 +154,7 @@ void NativeTabbedPaneGtk::DoAddTabAtIndex(int index, int tab_count = GetTabCount(); DCHECK(index <= tab_count); - Widget* page_container = Widget::CreateWidget(); + Widget* page_container = new Widget; page_container->Init( Widget::InitParams(Widget::InitParams::TYPE_CONTROL)); page_container->SetContentsView(contents); @@ -195,18 +195,18 @@ void NativeTabbedPaneGtk::DoAddTabAtIndex(int index, GetRootView()->Layout(); } -WidgetGtk* NativeTabbedPaneGtk::GetWidgetAt(int index) { +Widget* NativeTabbedPaneGtk::GetWidgetAt(int index) { DCHECK(index <= GetTabCount()); GtkWidget* page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(native_view()), index); - WidgetGtk* widget = - static_cast<WidgetGtk*>(NativeWidget::GetNativeWidgetForNativeView(page)); + Widget* widget = + NativeWidget::GetNativeWidgetForNativeView(page)->GetWidget(); DCHECK(widget); return widget; } View* NativeTabbedPaneGtk::GetTabViewAt(int index) { - WidgetGtk* widget = GetWidgetAt(index); + Widget* widget = GetWidgetAt(index); DCHECK(widget && widget->GetRootView()->child_count() == 1); return widget->GetRootView()->GetChildViewAt(0); } diff --git a/views/controls/tabbed_pane/native_tabbed_pane_gtk.h b/views/controls/tabbed_pane/native_tabbed_pane_gtk.h index 6b25032..bbe412d 100644 --- a/views/controls/tabbed_pane/native_tabbed_pane_gtk.h +++ b/views/controls/tabbed_pane/native_tabbed_pane_gtk.h @@ -49,8 +49,8 @@ class NativeTabbedPaneGtk : public NativeControlGtk, View* contents, bool select_if_first_tab); - // Returns the WidgetGtk containing the tab contents at |index|. - WidgetGtk* GetWidgetAt(int index); + // Returns the Widget containing the tab contents at |index|. + Widget* GetWidgetAt(int index); View* GetTabViewAt(int index); void OnSwitchPage(int selected_tab_index); diff --git a/views/controls/tabbed_pane/native_tabbed_pane_win.cc b/views/controls/tabbed_pane/native_tabbed_pane_win.cc index 0054de0..1a025cb 100644 --- a/views/controls/tabbed_pane/native_tabbed_pane_win.cc +++ b/views/controls/tabbed_pane/native_tabbed_pane_win.cc @@ -292,7 +292,7 @@ void NativeTabbedPaneWin::CreateNativeControl() { SendMessage(tab_control, WM_SETFONT, reinterpret_cast<WPARAM>(font), FALSE); // Create the view container which is a child of the TabControl. - content_window_ = Widget::CreateWidget(); + content_window_ = new Widget; Widget::InitParams params(Widget::InitParams::TYPE_CONTROL); params.parent = tab_control; content_window_->Init(params); diff --git a/views/controls/tabbed_pane/tabbed_pane_unittest.cc b/views/controls/tabbed_pane/tabbed_pane_unittest.cc index 1cd1621..1ceef86 100644 --- a/views/controls/tabbed_pane/tabbed_pane_unittest.cc +++ b/views/controls/tabbed_pane/tabbed_pane_unittest.cc @@ -44,7 +44,7 @@ class TabbedPaneTest : public testing::Test, WindowDelegate { } virtual void TearDown() { - window_->CloseWindow(); + window_->Close(); message_loop_.RunAllPending(); } |