Index: chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk.h |
diff --git a/chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk.h b/chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk.h |
deleted file mode 100644 |
index 2df04282110914b81b70fb905b5552ed9f643a52..0000000000000000000000000000000000000000 |
--- a/chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk.h |
+++ /dev/null |
@@ -1,425 +0,0 @@ |
-// Copyright (c) 2012 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_UI_GTK_BOOKMARKS_BOOKMARK_BAR_GTK_H_ |
-#define CHROME_BROWSER_UI_GTK_BOOKMARKS_BOOKMARK_BAR_GTK_H_ |
- |
-#include <gtk/gtk.h> |
- |
-#include <vector> |
- |
-#include "base/compiler_specific.h" |
-#include "base/gtest_prod_util.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/memory/weak_ptr.h" |
-#include "base/prefs/pref_member.h" |
-#include "chrome/browser/bookmarks/bookmark_model_observer.h" |
-#include "chrome/browser/bookmarks/bookmark_stats.h" |
-#include "chrome/browser/ui/bookmarks/bookmark_bar.h" |
-#include "chrome/browser/ui/bookmarks/bookmark_bar_instructions_delegate.h" |
-#include "chrome/browser/ui/bookmarks/bookmark_context_menu_controller.h" |
-#include "chrome/browser/ui/gtk/menu_bar_helper.h" |
-#include "content/public/browser/notification_observer.h" |
-#include "content/public/browser/notification_registrar.h" |
-#include "ui/base/gtk/gtk_signal.h" |
-#include "ui/base/gtk/owned_widget_gtk.h" |
-#include "ui/gfx/animation/animation.h" |
-#include "ui/gfx/animation/animation_delegate.h" |
-#include "ui/gfx/animation/slide_animation.h" |
-#include "ui/gfx/point.h" |
-#include "ui/gfx/size.h" |
- |
-class BookmarkBarInstructionsGtk; |
-class BookmarkMenuController; |
-class Browser; |
-class BrowserWindowGtk; |
-class GtkThemeService; |
-class MenuGtk; |
-class TabstripOriginProvider; |
- |
-namespace content { |
-class PageNavigator; |
-} |
- |
-class BookmarkBarGtk : public gfx::AnimationDelegate, |
- public BookmarkModelObserver, |
- public MenuBarHelper::Delegate, |
- public content::NotificationObserver, |
- public BookmarkBarInstructionsDelegate, |
- public BookmarkContextMenuControllerDelegate { |
- public: |
- BookmarkBarGtk(BrowserWindowGtk* window, |
- Browser* browser, |
- TabstripOriginProvider* tabstrip_origin_provider); |
- virtual ~BookmarkBarGtk(); |
- |
- // Returns the current browser. |
- Browser* browser() const { return browser_; } |
- |
- // Returns the top level widget. |
- GtkWidget* widget() const { return event_box_.get(); } |
- |
- // Sets the PageNavigator that is used when the user selects an entry on |
- // the bookmark bar. |
- void SetPageNavigator(content::PageNavigator* navigator); |
- |
- // Create the contents of the bookmark bar. |
- void Init(); |
- |
- // Changes the state of the bookmark bar. |
- void SetBookmarkBarState(BookmarkBar::State state, |
- BookmarkBar::AnimateChangeType animate_type); |
- |
- // Get the current height of the bookmark bar. |
- int GetHeight(); |
- |
- // Returns true if the bookmark bar is showing an animation. |
- bool IsAnimating(); |
- |
- // gfx::AnimationDelegate implementation ------------------------------------- |
- virtual void AnimationProgressed(const gfx::Animation* animation) OVERRIDE; |
- virtual void AnimationEnded(const gfx::Animation* animation) OVERRIDE; |
- |
- // MenuBarHelper::Delegate implementation ------------------------------------ |
- virtual void PopupForButton(GtkWidget* button) OVERRIDE; |
- virtual void PopupForButtonNextTo(GtkWidget* button, |
- GtkMenuDirectionType dir) OVERRIDE; |
- |
- // BookmarkContextMenuController::Delegate implementation -------------------- |
- virtual void CloseMenu() OVERRIDE; |
- |
- const gfx::Animation* animation() { return &slide_animation_; } |
- |
- int max_height() const { return max_height_; } |
- |
- private: |
- FRIEND_TEST_ALL_PREFIXES(BookmarkBarGtkUnittest, DisplaysHelpMessageOnEmpty); |
- FRIEND_TEST_ALL_PREFIXES(BookmarkBarGtkUnittest, |
- HidesHelpMessageWithBookmark); |
- FRIEND_TEST_ALL_PREFIXES(BookmarkBarGtkUnittest, BuildsButtons); |
- |
- // Change the visibility of the bookmarks bar. (Starts out hidden, per GTK's |
- // default behaviour). There are three visiblity states: |
- // |
- // Showing - bookmark bar is fully visible. |
- // Hidden - bookmark bar is hidden except for a few pixels that give |
- // extra padding to the bottom of the toolbar. Buttons are not |
- // clickable. |
- // Fullscreen - bookmark bar is fully hidden. |
- void Show(BookmarkBar::State old_state, |
- BookmarkBar::AnimateChangeType animate_type); |
- void Hide(BookmarkBar::State old_state, |
- BookmarkBar::AnimateChangeType animate_type); |
- |
- // Calculate maximum height of bookmark bar. |
- void CalculateMaxHeight(); |
- |
- // Helper function which generates GtkToolItems for |bookmark_toolbar_|. |
- void CreateAllBookmarkButtons(); |
- |
- // Sets the visibility of the instructional text based on whether there are |
- // any bookmarks in the bookmark bar node. |
- void SetInstructionState(); |
- |
- // Sets the visibility of the overflow chevron. |
- void SetChevronState(); |
- |
- // Shows or hides the other bookmarks button depending on whether there are |
- // bookmarks in it. |
- void UpdateOtherBookmarksVisibility(); |
- |
- // Destroys all the bookmark buttons in the GtkToolbar. |
- void RemoveAllButtons(); |
- |
- // Adds the "other bookmarks" and overflow buttons. |
- void AddCoreButtons(); |
- |
- // Removes and recreates all buttons in the bar. |
- void ResetButtons(); |
- |
- // Returns the number of buttons corresponding to starred urls/folders. This |
- // is equivalent to the number of children the bookmark bar node from the |
- // bookmark bar model has. |
- int GetBookmarkButtonCount(); |
- |
- // Returns BOOKMARK_LAUNCH_LOCATION_DETACHED_BAR or |
- // BOOKMARK_LAUNCH_LOCATION_ATTACHED_BAR based on detached state. |
- BookmarkLaunchLocation GetBookmarkLaunchLocation() const; |
- |
- // Set the appearance of the overflow button appropriately (either chromium |
- // style or GTK style). |
- void SetOverflowButtonAppearance(); |
- |
- // Returns the index of the first bookmark that is not visible on the bar. |
- // Returns -1 if they are all visible. |
- // |extra_space| is how much extra space to give the toolbar during the |
- // calculation (for the purposes of determining if ditching the chevron |
- // would be a good idea). |
- // If non-NULL, |showing_folders| will be packed with all the folders that are |
- // showing on the bar. |
- int GetFirstHiddenBookmark(int extra_space, |
- std::vector<GtkWidget*>* showing_folders); |
- |
- // Update the detached state (either enable or disable it, or do nothing). |
- void UpdateDetachedState(BookmarkBar::State old_state); |
- |
- // Turns on or off the app_paintable flag on |event_box_|, depending on our |
- // state. |
- void UpdateEventBoxPaintability(); |
- |
- // Queue a paint on the event box. |
- void PaintEventBox(); |
- |
- // Finds the size of the current web contents, if it exists and sets |size| |
- // to the correct value. Returns false if there isn't a WebContents, a |
- // condition that can happen during testing. |
- bool GetWebContentsSize(gfx::Size* size); |
- |
- // Connects to the "size-allocate" signal on the given widget, and causes it |
- // to throb after allocation. This is called when a new item is added to the |
- // bar. We can't call StartThrobbing directly because we don't know if it's |
- // visible or not until after the widget is allocated. |
- void StartThrobbingAfterAllocation(GtkWidget* item); |
- |
- // Used by StartThrobbingAfterAllocation. |
- CHROMEGTK_CALLBACK_1(BookmarkBarGtk, void, OnItemAllocate, GtkAllocation*); |
- |
- // Makes the appropriate widget on the bookmark bar stop throbbing |
- // (a folder, the overflow chevron, or nothing). |
- void StartThrobbing(const BookmarkNode* node); |
- |
- // Set |throbbing_widget_| to |widget|. Also makes sure that |
- // |throbbing_widget_| doesn't become stale. |
- void SetThrobbingWidget(GtkWidget* widget); |
- |
- // An item has been dragged over the toolbar, update the drag context |
- // and toolbar UI appropriately. |
- gboolean ItemDraggedOverToolbar( |
- GdkDragContext* context, int index, guint time); |
- |
- // When dragging in the middle of a folder, assume the user wants to drop |
- // on the folder. Towards the edges, assume the user wants to drop on the |
- // toolbar. This makes it possible to drop between two folders. This function |
- // returns the index on the toolbar the drag should target, or -1 if the |
- // drag should hit the folder. |
- int GetToolbarIndexForDragOverFolder(GtkWidget* button, gint x); |
- |
- void ClearToolbarDropHighlighting(); |
- |
- // Overridden from BookmarkModelObserver: |
- virtual void BookmarkModelLoaded(BookmarkModel* model, |
- bool ids_reassigned) OVERRIDE; |
- virtual void BookmarkModelBeingDeleted(BookmarkModel* model) OVERRIDE; |
- virtual void BookmarkNodeMoved(BookmarkModel* model, |
- const BookmarkNode* old_parent, |
- int old_index, |
- const BookmarkNode* new_parent, |
- int new_index) OVERRIDE; |
- virtual void BookmarkNodeAdded(BookmarkModel* model, |
- const BookmarkNode* parent, |
- int index) OVERRIDE; |
- virtual void BookmarkNodeRemoved(BookmarkModel* model, |
- const BookmarkNode* parent, |
- int old_index, |
- const BookmarkNode* node) OVERRIDE; |
- virtual void BookmarkAllNodesRemoved(BookmarkModel* model) OVERRIDE; |
- virtual void BookmarkNodeChanged(BookmarkModel* model, |
- const BookmarkNode* node) OVERRIDE; |
- virtual void BookmarkNodeFaviconChanged(BookmarkModel* model, |
- const BookmarkNode* node) OVERRIDE; |
- virtual void BookmarkNodeChildrenReordered(BookmarkModel* model, |
- const BookmarkNode* node) OVERRIDE; |
- |
- // Overridden from content::NotificationObserver: |
- virtual void Observe(int type, |
- const content::NotificationSource& source, |
- const content::NotificationDetails& details) OVERRIDE; |
- |
- GtkWidget* CreateBookmarkButton(const BookmarkNode* node); |
- GtkToolItem* CreateBookmarkToolItem(const BookmarkNode* node); |
- |
- void ConnectFolderButtonEvents(GtkWidget* widget, bool is_tool_item); |
- |
- // Finds the BookmarkNode from the model associated with |button|. |
- const BookmarkNode* GetNodeForToolButton(GtkWidget* button); |
- |
- // Creates and displays a popup menu for BookmarkNode |node|. |
- void PopupMenuForNode(GtkWidget* sender, const BookmarkNode* node, |
- GdkEventButton* event); |
- |
- // GtkButton callbacks. |
- CHROMEGTK_CALLBACK_1(BookmarkBarGtk, gboolean, OnButtonPressed, |
- GdkEventButton*); |
- CHROMEGTK_CALLBACK_0(BookmarkBarGtk, void, OnClicked); |
- CHROMEGTK_CALLBACK_1(BookmarkBarGtk, void, OnButtonDragBegin, |
- GdkDragContext*); |
- CHROMEGTK_CALLBACK_1(BookmarkBarGtk, void, OnButtonDragEnd, GdkDragContext*); |
- CHROMEGTK_CALLBACK_4(BookmarkBarGtk, void, OnButtonDragGet, |
- GdkDragContext*, GtkSelectionData*, guint, guint); |
- |
- // GtkButton callbacks for folder buttons. |
- CHROMEGTK_CALLBACK_0(BookmarkBarGtk, void, OnFolderClicked); |
- |
- // GtkButton callback for apps button. |
- CHROMEGTK_CALLBACK_0(BookmarkBarGtk, void, OnAppsButtonClicked); |
- |
- // GtkToolbar callbacks. |
- CHROMEGTK_CALLBACK_4(BookmarkBarGtk, gboolean, OnToolbarDragMotion, |
- GdkDragContext*, gint, gint, guint); |
- CHROMEGTK_CALLBACK_1(BookmarkBarGtk, void, OnToolbarSizeAllocate, |
- GtkAllocation*); |
- |
- // Used for both folder buttons and the toolbar. |
- CHROMEGTK_CALLBACK_6(BookmarkBarGtk, void, OnDragReceived, |
- GdkDragContext*, gint, gint, GtkSelectionData*, |
- guint, guint); |
- CHROMEGTK_CALLBACK_2(BookmarkBarGtk, void, OnDragLeave, |
- GdkDragContext*, guint); |
- |
- // Used for folder buttons. |
- CHROMEGTK_CALLBACK_4(BookmarkBarGtk, gboolean, OnFolderDragMotion, |
- GdkDragContext*, gint, gint, guint); |
- |
- // GtkEventBox callbacks. |
- CHROMEGTK_CALLBACK_1(BookmarkBarGtk, gboolean, OnEventBoxExpose, |
- GdkEventExpose*); |
- CHROMEGTK_CALLBACK_0(BookmarkBarGtk, void, OnEventBoxDestroy); |
- |
- // Callbacks on our parent widget. |
- CHROMEGTK_CALLBACK_1(BookmarkBarGtk, void, OnParentSizeAllocate, |
- GtkAllocation*); |
- |
- // |throbbing_widget_| callback. |
- CHROMEGTK_CALLBACK_0(BookmarkBarGtk, void, OnThrobbingWidgetDestroy); |
- |
- // Overriden from BookmarkBarInstructionsDelegate: |
- virtual void ShowImportDialog() OVERRIDE; |
- |
- // Updates the visibility of the apps shortcut button |apps_shortcut_visible_| |
- // changes. |
- void OnAppsPageShortcutVisibilityChanged(); |
- |
- // Updates the drag&drop state when |edit_bookmarks_enabled_| changes. |
- void OnEditBookmarksEnabledChanged(); |
- |
- // Used for opening urls. |
- content::PageNavigator* page_navigator_; |
- |
- Browser* browser_; |
- BrowserWindowGtk* window_; |
- |
- // Provides us with the offset into the background theme image. |
- TabstripOriginProvider* tabstrip_origin_provider_; |
- |
- // Model providing details as to the starred entries/folders that should be |
- // shown. This is owned by the Profile. |
- BookmarkModel* model_; |
- |
- // Contains |bookmark_hbox_|. Event box exists to prevent leakage of |
- // background color from the toplevel application window's GDK window. |
- ui::OwnedWidgetGtk event_box_; |
- |
- // Used to detached the bookmark bar when on the NTP. |
- GtkWidget* ntp_padding_box_; |
- |
- // Used to paint the background of the bookmark bar when in detached mode. |
- GtkWidget* paint_box_; |
- |
- // Used to position all children. |
- GtkWidget* bookmark_hbox_; |
- |
- // Alignment widget that is visible if there are no bookmarks on |
- // the bookmar bar. |
- GtkWidget* instructions_; |
- |
- // BookmarkBarInstructionsGtk that holds the label and the link for importing |
- // bookmarks when there are no bookmarks on the bookmark bar. |
- scoped_ptr<BookmarkBarInstructionsGtk> instructions_gtk_; |
- |
- // The apps page shortcut button. |
- GtkWidget* apps_shortcut_button_; |
- |
- // GtkToolbar which contains all the bookmark buttons. |
- ui::OwnedWidgetGtk bookmark_toolbar_; |
- |
- // The button that shows extra bookmarks that don't fit on the bookmark |
- // bar. |
- GtkWidget* overflow_button_; |
- |
- // A separator between the main bookmark bar area and |
- // |other_bookmarks_button_|. |
- GtkWidget* other_bookmarks_separator_; |
- |
- // The other bookmarks button. |
- GtkWidget* other_bookmarks_button_; |
- |
- // Padding for the other bookmarks button. |
- GtkWidget* other_padding_; |
- |
- // The BookmarkNode from the model being dragged. NULL when we aren't |
- // dragging. |
- const BookmarkNode* dragged_node_; |
- |
- // The visual representation that follows the cursor during drags. |
- GtkWidget* drag_icon_; |
- |
- // We create a GtkToolbarItem from |dragged_node_| ;or display. |
- GtkToolItem* toolbar_drop_item_; |
- |
- // Theme provider for building buttons. |
- GtkThemeService* theme_service_; |
- |
- // Whether we should show the instructional text in the bookmark bar. |
- bool show_instructions_; |
- |
- MenuBarHelper menu_bar_helper_; |
- |
- // The last displayed right click menu, or NULL if no menus have been |
- // displayed yet. |
- // The controller. |
- scoped_ptr<BookmarkContextMenuController> current_context_menu_controller_; |
- // The view. |
- scoped_ptr<MenuGtk> current_context_menu_; |
- |
- // The last displayed left click menu, or NULL if no menus have been |
- // displayed yet. |
- scoped_ptr<BookmarkMenuController> current_menu_; |
- |
- gfx::SlideAnimation slide_animation_; |
- |
- // Used to optimize out |bookmark_toolbar_| size-allocate events we don't |
- // need to respond to. |
- int last_allocation_width_; |
- |
- content::NotificationRegistrar registrar_; |
- |
- // The size of the web contents last time we forced a paint. We keep track |
- // of this so we don't force too many paints. |
- gfx::Size last_web_contents_size_; |
- |
- // The last coordinates recorded by OnButtonPress; used to line up the |
- // drag icon during bookmark drags. |
- gfx::Point last_pressed_coordinates_; |
- |
- // The currently throbbing widget. This is NULL if no widget is throbbing. |
- // We track it because we only want to allow one widget to throb at a time. |
- GtkWidget* throbbing_widget_; |
- |
- // Tracks whether the apps shortcut button should be shown. |
- BooleanPrefMember apps_shortcut_visible_; |
- |
- // Tracks whether bookmarks can be modified. |
- BooleanPrefMember edit_bookmarks_enabled_; |
- |
- BookmarkBar::State bookmark_bar_state_; |
- |
- // Maximum height of the bookmark bar. |
- int max_height_; |
- |
- base::WeakPtrFactory<BookmarkBarGtk> weak_factory_; |
- |
- DISALLOW_COPY_AND_ASSIGN(BookmarkBarGtk); |
-}; |
- |
-#endif // CHROME_BROWSER_UI_GTK_BOOKMARKS_BOOKMARK_BAR_GTK_H_ |