| Index: chrome/browser/ui/gtk/back_forward_button_gtk.h
|
| diff --git a/chrome/browser/ui/gtk/back_forward_button_gtk.h b/chrome/browser/ui/gtk/back_forward_button_gtk.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..89b7b889ecd97b3afe0d10c4a91b419372078ac6
|
| --- /dev/null
|
| +++ b/chrome/browser/ui/gtk/back_forward_button_gtk.h
|
| @@ -0,0 +1,72 @@
|
| +// Copyright (c) 2009 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_BACK_FORWARD_BUTTON_GTK_H_
|
| +#define CHROME_BROWSER_UI_GTK_BACK_FORWARD_BUTTON_GTK_H_
|
| +#pragma once
|
| +
|
| +#include "app/gtk_signal.h"
|
| +#include "base/scoped_ptr.h"
|
| +#include "base/task.h"
|
| +#include "chrome/browser/gtk/custom_button.h"
|
| +#include "chrome/browser/gtk/menu_gtk.h"
|
| +
|
| +class BackForwardMenuModel;
|
| +class Browser;
|
| +
|
| +typedef struct _GtkWidget GtkWidget;
|
| +
|
| +// When clicked, these buttons will navigate forward or backward. When
|
| +// pressed and held, they show a dropdown menu of recent web sites.
|
| +class BackForwardButtonGtk : MenuGtk::Delegate {
|
| + public:
|
| + BackForwardButtonGtk(Browser* browser, bool is_forward);
|
| + virtual ~BackForwardButtonGtk();
|
| +
|
| + // MenuGtk::Delegate implementation.
|
| + virtual void StoppedShowing();
|
| + virtual bool AlwaysShowIconForCmd(int command_id) const;
|
| +
|
| + GtkWidget* widget() { return button_->widget(); }
|
| +
|
| + private:
|
| + // Executes the browser command.
|
| + CHROMEGTK_CALLBACK_0(BackForwardButtonGtk, void, OnClick);
|
| +
|
| + // Starts a timer to show the dropdown menu.
|
| + CHROMEGTK_CALLBACK_1(BackForwardButtonGtk, gboolean, OnButtonPress,
|
| + GdkEventButton*);
|
| +
|
| + // If there is a timer to show the dropdown menu, and the mouse has moved
|
| + // sufficiently down the screen, cancel the timer and immediately show the
|
| + // menu.
|
| + CHROMEGTK_CALLBACK_1(BackForwardButtonGtk, gboolean, OnMouseMove,
|
| + GdkEventMotion*);
|
| +
|
| + // Shows the dropdown menu.
|
| + void ShowBackForwardMenu();
|
| +
|
| + // The menu gets reset every time it is shown.
|
| + scoped_ptr<MenuGtk> menu_;
|
| +
|
| + scoped_ptr<CustomDrawButton> button_;
|
| +
|
| + // The browser to which we will send commands.
|
| + Browser* browser_;
|
| +
|
| + // Whether this button is a forward button.
|
| + bool is_forward_;
|
| +
|
| + // The dropdown menu model.
|
| + scoped_ptr<BackForwardMenuModel> menu_model_;
|
| +
|
| + // The y position of the last mouse down event.
|
| + int y_position_of_last_press_;
|
| +
|
| + ScopedRunnableMethodFactory<BackForwardButtonGtk> show_menu_factory_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(BackForwardButtonGtk);
|
| +};
|
| +
|
| +#endif // CHROME_BROWSER_UI_GTK_BACK_FORWARD_BUTTON_GTK_H_
|
|
|