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

Unified Diff: chrome/browser/ui/gtk/browser_toolbar_gtk.h

Issue 6099014: Move chrome/browser/gtk to chrome/browser/ui/gtk (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Move browser/gtk/ to browser/ui/gtk/, leave header stubs, update new header guards Created 9 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/gtk/browser_titlebar.cc ('k') | chrome/browser/ui/gtk/browser_toolbar_gtk.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/gtk/browser_toolbar_gtk.h
diff --git a/chrome/browser/ui/gtk/browser_toolbar_gtk.h b/chrome/browser/ui/gtk/browser_toolbar_gtk.h
new file mode 100644
index 0000000000000000000000000000000000000000..bcf05e21da5449555874ae08851a3728c03da89b
--- /dev/null
+++ b/chrome/browser/ui/gtk/browser_toolbar_gtk.h
@@ -0,0 +1,219 @@
+// 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_UI_GTK_BROWSER_TOOLBAR_GTK_H_
+#define CHROME_BROWSER_UI_GTK_BROWSER_TOOLBAR_GTK_H_
+#pragma once
+
+#include <gtk/gtk.h>
+#include <string>
+
+#include "app/active_window_watcher_x.h"
+#include "app/gtk_signal.h"
+#include "app/gtk_signal_registrar.h"
+#include "app/menus/accelerator.h"
+#include "app/menus/simple_menu_model.h"
+#include "base/scoped_ptr.h"
+#include "chrome/browser/command_updater.h"
+#include "chrome/browser/gtk/custom_button.h"
+#include "chrome/browser/gtk/menu_gtk.h"
+#include "chrome/browser/gtk/owned_widget_gtk.h"
+#include "chrome/browser/prefs/pref_member.h"
+#include "chrome/browser/ui/toolbar/wrench_menu_model.h"
+#include "chrome/common/notification_observer.h"
+#include "chrome/common/notification_registrar.h"
+
+class BackForwardButtonGtk;
+class Browser;
+class BrowserActionsToolbarGtk;
+class BrowserWindowGtk;
+class CustomDrawButton;
+class GtkThemeProvider;
+class LocationBar;
+class LocationBarViewGtk;
+class Profile;
+class ReloadButtonGtk;
+class TabContents;
+class ToolbarModel;
+
+// View class that displays the GTK version of the toolbar and routes gtk
+// events back to the Browser.
+class BrowserToolbarGtk : public CommandUpdater::CommandObserver,
+ public menus::AcceleratorProvider,
+ public MenuGtk::Delegate,
+ public NotificationObserver {
+ public:
+ explicit BrowserToolbarGtk(Browser* browser, BrowserWindowGtk* window);
+ virtual ~BrowserToolbarGtk();
+
+ // Create the contents of the toolbar. |top_level_window| is the GtkWindow
+ // to which we attach our accelerators.
+ void Init(Profile* profile, GtkWindow* top_level_window);
+
+ // Set the various widgets' ViewIDs.
+ void SetViewIDs();
+
+ void Show();
+ void Hide();
+
+ // Getter for the containing widget.
+ GtkWidget* widget() {
+ return event_box_;
+ }
+
+ // Getter for associated browser object.
+ Browser* browser() {
+ return browser_;
+ }
+
+ virtual LocationBar* GetLocationBar() const;
+
+ ReloadButtonGtk* GetReloadButton() { return reload_.get(); }
+
+ GtkWidget* GetAppMenuButton() { return wrench_menu_button_->widget(); }
+
+ BrowserActionsToolbarGtk* GetBrowserActionsToolbar() {
+ return actions_toolbar_.get();
+ }
+
+ LocationBarViewGtk* GetLocationBarView() { return location_bar_.get(); }
+
+ // We have to show padding on the bottom of the toolbar when the bookmark
+ // is in floating mode. Otherwise the bookmark bar will paint it for us.
+ void UpdateForBookmarkBarVisibility(bool show_bottom_padding);
+
+ void ShowAppMenu();
+
+ // Overridden from CommandUpdater::CommandObserver:
+ virtual void EnabledStateChangedForCommand(int id, bool enabled);
+
+ // Overridden from MenuGtk::Delegate:
+ virtual void StoppedShowing();
+ virtual GtkIconSet* GetIconSetForId(int idr);
+ virtual bool AlwaysShowIconForCmd(int command_id) const;
+
+ // Overridden from menus::AcceleratorProvider:
+ virtual bool GetAcceleratorForCommandId(int id,
+ menus::Accelerator* accelerator);
+
+ // NotificationObserver implementation.
+ virtual void Observe(NotificationType type,
+ const NotificationSource& source,
+ const NotificationDetails& details);
+
+ Profile* profile() { return profile_; }
+ void SetProfile(Profile* profile);
+
+ // Message that we should react to a state change.
+ void UpdateTabContents(TabContents* contents, bool should_restore_state);
+
+ private:
+ // Connect/Disconnect signals for dragging a url onto the home button.
+ void SetUpDragForHomeButton(bool enable);
+
+ // Sets the top corners of the toolbar to rounded, or sets them to normal,
+ // depending on the state of the browser window. Returns false if no action
+ // was taken (the roundedness was already correct), true otherwise.
+ bool UpdateRoundedness();
+
+ // Gtk callback for the "expose-event" signal.
+ // The alignment contains the toolbar.
+ CHROMEGTK_CALLBACK_1(BrowserToolbarGtk, gboolean, OnAlignmentExpose,
+ GdkEventExpose*);
+ CHROMEGTK_CALLBACK_1(BrowserToolbarGtk, gboolean, OnLocationHboxExpose,
+ GdkEventExpose*);
+
+ // Gtk callback for the "clicked" signal.
+ CHROMEGTK_CALLBACK_0(BrowserToolbarGtk, void, OnButtonClick);
+
+ // Gtk callback to intercept mouse clicks to the menu buttons.
+ CHROMEGTK_CALLBACK_1(BrowserToolbarGtk, gboolean, OnMenuButtonPressEvent,
+ GdkEventButton*);
+
+ // Used for drags onto home button.
+ CHROMEGTK_CALLBACK_6(BrowserToolbarGtk, void, OnDragDataReceived,
+ GdkDragContext*, gint, gint, GtkSelectionData*,
+ guint, guint);
+
+ // Used to draw the upgrade notification badge.
+ CHROMEGTK_CALLBACK_1(BrowserToolbarGtk, gboolean, OnWrenchMenuButtonExpose,
+ GdkEventExpose*);
+
+ // Updates preference-dependent state.
+ void NotifyPrefChanged(const std::string* pref);
+
+ static void SetSyncMenuLabel(GtkWidget* widget, gpointer userdata);
+
+ // Sometimes we only want to show the location w/o the toolbar buttons (e.g.,
+ // in a popup window).
+ bool ShouldOnlyShowLocation() const;
+
+ // An event box that holds |toolbar_|. We need the toolbar to have its own
+ // GdkWindow when we use the GTK drawing because otherwise the color from our
+ // parent GdkWindow will leak through with some theme engines (such as
+ // Clearlooks).
+ GtkWidget* event_box_;
+
+ // This widget handles padding around the outside of the toolbar.
+ GtkWidget* alignment_;
+
+ // Gtk widgets. The toolbar is an hbox with each of the other pieces of the
+ // toolbar placed side by side.
+ GtkWidget* toolbar_;
+
+ // All widgets to the left or right of the |location_hbox_|. We put the
+ // widgets on either side of location_hbox_ in their own toolbar so we can
+ // set their minimum sizes independently of |location_hbox_| which needs to
+ // grow/shrink in GTK+ mode.
+ GtkWidget* toolbar_left_;
+
+ // Contains all the widgets of the location bar.
+ GtkWidget* location_hbox_;
+
+ // The location bar view.
+ scoped_ptr<LocationBarViewGtk> location_bar_;
+
+ // All the buttons in the toolbar.
+ scoped_ptr<BackForwardButtonGtk> back_, forward_;
+ scoped_ptr<CustomDrawButton> home_;
+ scoped_ptr<ReloadButtonGtk> reload_;
+ scoped_ptr<BrowserActionsToolbarGtk> actions_toolbar_;
+ scoped_ptr<CustomDrawButton> wrench_menu_button_;
+
+ // The image shown in GTK+ mode in the wrench button.
+ GtkWidget* wrench_menu_image_;
+
+ // The model that contains the security level, text, icon to display...
+ ToolbarModel* model_;
+
+ GtkThemeProvider* theme_provider_;
+
+ scoped_ptr<MenuGtk> wrench_menu_;
+
+ WrenchMenuModel wrench_menu_model_;
+
+ Browser* browser_;
+ BrowserWindowGtk* window_;
+ Profile* profile_;
+
+ // Controls whether or not a home button should be shown on the toolbar.
+ BooleanPrefMember show_home_button_;
+
+ // Preferences controlling the configured home page.
+ StringPrefMember home_page_;
+ BooleanPrefMember home_page_is_new_tab_page_;
+
+ NotificationRegistrar registrar_;
+
+ // A GtkEntry that isn't part of the hierarchy. We keep this for native
+ // rendering.
+ OwnedWidgetGtk offscreen_entry_;
+
+ // Manages the home button drop signal handler.
+ scoped_ptr<GtkSignalRegistrar> drop_handler_;
+
+ DISALLOW_COPY_AND_ASSIGN(BrowserToolbarGtk);
+};
+
+#endif // CHROME_BROWSER_UI_GTK_BROWSER_TOOLBAR_GTK_H_
« no previous file with comments | « chrome/browser/ui/gtk/browser_titlebar.cc ('k') | chrome/browser/ui/gtk/browser_toolbar_gtk.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698