Chromium Code Reviews| Index: chrome/browser/views/tab_contents/tab_contents_view_views.h |
| diff --git a/chrome/browser/views/tab_contents/tab_contents_view_views.h b/chrome/browser/views/tab_contents/tab_contents_view_views.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..f9da0b7430bd1d219eb540d4f16bc6baf7c88a13 |
| --- /dev/null |
| +++ b/chrome/browser/views/tab_contents/tab_contents_view_views.h |
| @@ -0,0 +1,134 @@ |
| +// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef CHROME_BROWSER_VIEWS_TAB_CONTENTS_TAB_CONTENTS_VIEW_VIEWS_H_ |
| +#define CHROME_BROWSER_VIEWS_TAB_CONTENTS_TAB_CONTENTS_VIEW_VIEWS_H_ |
| +#pragma once |
| + |
| +#include <vector> |
| + |
| +#include "base/scoped_ptr.h" |
| +#include "chrome/browser/tab_contents/tab_contents_view.h" |
| +#include "gfx/size.h" |
| +#include "views/view.h" |
| + |
| +class ConstrainedWindowGtk; |
| +typedef struct _GtkFloatingContainer GtkFloatingContainer; |
| +class RenderViewContextMenuViews; |
| +class SadTabView; |
| +class SkBitmap; |
| +class TabContentsDragSource; |
| +class WebDragDestGtk; |
| + |
| +namespace gfx { |
| +class Point; |
| +} |
|
oshima
2010/11/08 20:59:38
// namespace gfx
Alex Nicolaou
2010/11/12 04:05:00
Done.
|
| + |
| +namespace views { |
| +class NativeViewHost; |
| +} |
|
oshima
2010/11/08 20:59:38
// namespace views
Alex Nicolaou
2010/11/12 04:05:00
Done.
|
| + |
| +// Views-specific implementation of the TabContentsView for the touch UI. |
| +class TabContentsViewViews : public TabContentsView, public views::View { |
| + public: |
| + // The corresponding TabContents is passed in the constructor, and manages our |
| + // lifetime. This doesn't need to be the case, but is this way currently |
| + // because that's what was easiest when they were split. |
| + explicit TabContentsViewViews(TabContents* tab_contents); |
| + virtual ~TabContentsViewViews(); |
| + |
| + // Unlike Windows, ConstrainedWindows need to collaborate with the |
| + // TabContentsViewViews to position the dialogs. |
| + void AttachConstrainedWindow(ConstrainedWindowGtk* constrained_window); |
| + void RemoveConstrainedWindow(ConstrainedWindowGtk* constrained_window); |
| + |
| + // TabContentsView implementation |
| + virtual void CreateView(const gfx::Size& initial_size); |
| + virtual RenderWidgetHostView* CreateViewForWidget( |
| + RenderWidgetHost* render_widget_host); |
| + virtual gfx::NativeView GetNativeView() const; |
| + virtual gfx::NativeView GetContentNativeView() const; |
| + virtual gfx::NativeWindow GetTopLevelNativeWindow() const; |
| + virtual void GetContainerBounds(gfx::Rect* out) const; |
| + virtual void SetPageTitle(const std::wstring& title); |
| + virtual void OnTabCrashed(); |
| + virtual void SizeContents(const gfx::Size& size); |
| + virtual void Focus(); |
| + virtual void SetInitialFocus(); |
| + virtual void StoreFocus(); |
| + virtual void RestoreFocus(); |
| + |
| + // views::View implementation |
| + virtual void Paint(gfx::Canvas* canvas); |
| + |
| + // Backend implementation of RenderViewHostDelegate::View. |
| + virtual void ShowContextMenu(const ContextMenuParams& params); |
| + virtual void ShowPopupMenu(const gfx::Rect& bounds, |
| + int item_height, |
| + double item_font_size, |
| + int selected_item, |
| + const std::vector<WebMenuItem>& items, |
| + bool right_aligned); |
| + virtual void StartDragging(const WebDropData& drop_data, |
| + WebKit::WebDragOperationsMask ops_allowed, |
| + const SkBitmap& image, |
| + const gfx::Point& image_offset); |
| + virtual void UpdateDragCursor(WebKit::WebDragOperation operation); |
| + virtual void GotFocus(); |
| + virtual void TakeFocus(bool reverse); |
| + virtual void VisibilityChanged(views::View *, bool is_visible); |
| + |
| + private: |
| + // Signal handlers ----------------------------------------------------------- |
| + |
| + // Handles notifying the TabContents and other operations when the window was |
| + // shown or hidden. |
| + void WasHidden(); |
| + void WasShown(); |
| + |
| + // Handles resizing of the contents. This will notify the RenderWidgetHostView |
| + // of the change, reposition popups, and the find in page bar. |
| + void WasSized(const gfx::Size& size); |
| + |
| + // For any floating views (ConstrainedDialogs) this function centers them |
| + // within this view. It's called whem a ConstrainedDialog is attached and |
| + // when this view is resized. |
| + void SetFloatingPosition(const gfx::Size& size); |
| + |
| + // --------------------------------------------------------------------------- |
|
oshima
2010/11/08 20:59:38
nuke this
Alex Nicolaou
2010/11/12 04:05:00
Done. This is just a replica of what's been done i
|
| + |
| + // Used to render the sad tab. This will be non-NULL only when the sad tab is |
| + // visible. |
| + SadTabView* sad_tab_; |
| + |
| + // Whether to ignore the next CHAR keyboard event. |
| + bool ignore_next_char_event_; |
| + |
| + // The id used in the ViewStorage to store the last focused view. |
| + int last_focused_view_storage_id_; |
| + |
| + // The context menu. Callbacks are asynchronous so we need to keep it around. |
| + scoped_ptr<RenderViewContextMenuViews> context_menu_; |
| + |
| + // Handles drags from this TabContentsView. |
| + // TODO scoped_ptr<TabContentsDragSource> drag_source_; |
|
oshima
2010/11/08 20:59:38
Use standard format for TODO.
Alex Nicolaou
2010/11/12 04:05:00
Done.
|
| + |
| + // The event for the last mouse down we handled. We need this for drags. |
| + GdkEventButton last_mouse_down_; |
| + |
| + // The helper object that handles drag destination related interactions with |
| + // GTK. |
| + // TODO scoped_ptr<WebDragDestGtk> drag_dest_; |
|
oshima
2010/11/08 20:59:38
same here.
Alex Nicolaou
2010/11/12 04:05:00
Done.
|
| + |
| + // Current size. See comment in WidgetGtk as to why this is cached. |
| + gfx::Size size_; |
| + |
| + // Each individual UI for constrained dialogs currently displayed. The |
| + // objects in this vector are owned by the TabContents, not the view. |
| + std::vector<ConstrainedWindowGtk*> constrained_windows_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(TabContentsViewViews); |
| +}; |
| + |
| +#endif // CHROME_BROWSER_VIEWS_TAB_CONTENTS_TAB_CONTENTS_VIEW_VIEWS_H_ |