GTK implementation of the action box button.

Does nothing so far.

TBR=ben@chromium.org
BUG=125307

Review URL: https://chromiumcodereview.appspot.com/10830140

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@149840 0039d316-1c4b-4281-b951-d872f2087c98
parent 95b0d8a2
// 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.
#include "chrome/browser/ui/gtk/action_box_button_gtk.h"
#include <gtk/gtk.h>
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/gtk/custom_button.h"
#include "chrome/browser/ui/gtk/view_id_util.h"
#include "chrome/browser/ui/view_ids.h"
#include "grit/generated_resources.h"
#include "grit/theme_resources.h"
#include "ui/base/l10n/l10n_util.h"
ActionBoxButtonGtk::ActionBoxButtonGtk(Browser* browser) : browser_(browser) {
button_.reset(new CustomDrawButton(
IDR_ACTION_BOX_BUTTON,
IDR_ACTION_BOX_BUTTON_PRESSED,
IDR_ACTION_BOX_BUTTON_PRESSED, // TODO: hover
0)); // TODO: disabled?
gtk_widget_set_tooltip_text(widget(),
l10n_util::GetStringUTF8(IDS_TOOLTIP_ACTION_BOX_BUTTON).c_str());
g_signal_connect(widget(), "clicked",
G_CALLBACK(OnClickThunk), this);
ViewIDUtil::SetID(widget(), VIEW_ID_ACTION_BOX_BUTTON);
}
ActionBoxButtonGtk::~ActionBoxButtonGtk() {
}
GtkWidget* ActionBoxButtonGtk::widget() {
return button_->widget();
}
void ActionBoxButtonGtk::OnClick(GtkWidget* widget) {
// TODO(mpcomplete): show the menu. See back_forward_button_gtk for menu
// stuff.
}
// 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_ACTION_BOX_BUTTON_GTK_H_
#define CHROME_BROWSER_UI_GTK_ACTION_BOX_BUTTON_GTK_H_
#include "base/compiler_specific.h"
#include "base/memory/scoped_ptr.h"
#include "ui/base/gtk/gtk_signal.h"
class Browser;
class CustomDrawButton;
typedef struct _GtkWidget GtkWidget;
// This class displays the action box button with an associated menu. This is
// where extension actions and the bookmark star live.
class ActionBoxButtonGtk {
public:
explicit ActionBoxButtonGtk(Browser* browser);
virtual ~ActionBoxButtonGtk();
GtkWidget* widget();
private:
// Executes the browser command.
CHROMEGTK_CALLBACK_0(ActionBoxButtonGtk, void, OnClick);
scoped_ptr<CustomDrawButton> button_;
// The browser to which we will send commands.
Browser* browser_;
DISALLOW_COPY_AND_ASSIGN(ActionBoxButtonGtk);
};
#endif // CHROME_BROWSER_UI_GTK_ACTION_BOX_BUTTON_GTK_H_
...@@ -45,6 +45,7 @@ ...@@ -45,6 +45,7 @@
#include "chrome/browser/ui/browser_tabstrip.h" #include "chrome/browser/ui/browser_tabstrip.h"
#include "chrome/browser/ui/content_settings/content_setting_bubble_model.h" #include "chrome/browser/ui/content_settings/content_setting_bubble_model.h"
#include "chrome/browser/ui/content_settings/content_setting_image_model.h" #include "chrome/browser/ui/content_settings/content_setting_image_model.h"
#include "chrome/browser/ui/gtk/action_box_button_gtk.h"
#include "chrome/browser/ui/gtk/bookmarks/bookmark_bubble_gtk.h" #include "chrome/browser/ui/gtk/bookmarks/bookmark_bubble_gtk.h"
#include "chrome/browser/ui/gtk/bookmarks/bookmark_utils_gtk.h" #include "chrome/browser/ui/gtk/bookmarks/bookmark_utils_gtk.h"
#include "chrome/browser/ui/gtk/browser_window_gtk.h" #include "chrome/browser/ui/gtk/browser_window_gtk.h"
...@@ -70,6 +71,7 @@ ...@@ -70,6 +71,7 @@
#include "chrome/common/extensions/extension_action.h" #include "chrome/common/extensions/extension_action.h"
#include "chrome/common/extensions/extension_manifest_constants.h" #include "chrome/common/extensions/extension_manifest_constants.h"
#include "chrome/common/extensions/extension_resource.h" #include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/extensions/extension_switch_utils.h"
#include "chrome/common/pref_names.h" #include "chrome/common/pref_names.h"
#include "content/public/browser/navigation_entry.h" #include "content/public/browser/navigation_entry.h"
#include "content/public/browser/notification_service.h" #include "content/public/browser/notification_service.h"
...@@ -469,8 +471,23 @@ void LocationBarViewGtk::Init(bool popup_window_mode) { ...@@ -469,8 +471,23 @@ void LocationBarViewGtk::Init(bool popup_window_mode) {
// doesn't work, someone is probably calling show_all on our parent box. // doesn't work, someone is probably calling show_all on our parent box.
gtk_box_pack_end(GTK_BOX(entry_box_), tab_to_search_hint_, FALSE, FALSE, 0); gtk_box_pack_end(GTK_BOX(entry_box_), tab_to_search_hint_, FALSE, FALSE, 0);
// Hide the star and Chrome To Mobile icons in popups, app windows, etc. if (extensions::switch_utils::IsActionBoxEnabled()) {
if (browser_defaults::bookmarks_enabled && !ShouldOnlyShowLocation()) { // TODO(mpcomplete): should we hide this if ShouldOnlyShowLocation()==true?
action_box_button_.reset(new ActionBoxButtonGtk(browser_));
// TODO(mpcomplete): Figure out why CustomDrawButton is offset 3 pixels.
// This offset corrects the strange offset of CustomDrawButton.
const int kMagicActionBoxYOffset = 3;
GtkWidget* alignment = gtk_alignment_new(0, 0, 1, 1);
gtk_alignment_set_padding(GTK_ALIGNMENT(alignment),
0, kMagicActionBoxYOffset,
0, kInnerPadding);
gtk_container_add(GTK_CONTAINER(alignment), action_box_button_->widget());
gtk_box_pack_end(GTK_BOX(hbox_.get()), alignment,
FALSE, FALSE, 0);
} else if (browser_defaults::bookmarks_enabled && !ShouldOnlyShowLocation()) {
// Hide the star and Chrome To Mobile icons in popups, app windows, etc.
CreateStarButton(); CreateStarButton();
gtk_box_pack_end(GTK_BOX(hbox_.get()), star_.get(), FALSE, FALSE, 0); gtk_box_pack_end(GTK_BOX(hbox_.get()), star_.get(), FALSE, FALSE, 0);
......
...@@ -38,13 +38,14 @@ ...@@ -38,13 +38,14 @@
#include "ui/base/gtk/owned_widget_gtk.h" #include "ui/base/gtk/owned_widget_gtk.h"
#include "webkit/glue/window_open_disposition.h" #include "webkit/glue/window_open_disposition.h"
class OmniboxViewGtk; class ActionBoxButtonGtk;
class Browser; class Browser;
class CommandUpdater; class CommandUpdater;
class ContentSettingImageModel; class ContentSettingImageModel;
class ContentSettingBubbleGtk; class ContentSettingBubbleGtk;
class ExtensionAction; class ExtensionAction;
class GtkThemeService; class GtkThemeService;
class OmniboxViewGtk;
class SkBitmap; class SkBitmap;
class ToolbarModel; class ToolbarModel;
...@@ -482,6 +483,8 @@ class LocationBarViewGtk : public OmniboxEditController, ...@@ -482,6 +483,8 @@ class LocationBarViewGtk : public OmniboxEditController,
// Alignment used to wrap |location_entry_|. // Alignment used to wrap |location_entry_|.
GtkWidget* location_entry_alignment_; GtkWidget* location_entry_alignment_;
scoped_ptr<ActionBoxButtonGtk> action_box_button_;
CommandUpdater* command_updater_; CommandUpdater* command_updater_;
ToolbarModel* toolbar_model_; ToolbarModel* toolbar_model_;
Browser* browser_; Browser* browser_;
......
...@@ -86,6 +86,9 @@ const char* GetNameFromID(ViewID id) { ...@@ -86,6 +86,9 @@ const char* GetNameFromID(ViewID id) {
case VIEW_ID_LOCATION_BAR: case VIEW_ID_LOCATION_BAR:
return "chrome-location-bar"; return "chrome-location-bar";
case VIEW_ID_ACTION_BOX_BUTTON:
return "chrome-action-box-button";
case VIEW_ID_BROWSER_ACTION_TOOLBAR: case VIEW_ID_BROWSER_ACTION_TOOLBAR:
return "chrome-toolbar-browser-actions-container"; return "chrome-toolbar-browser-actions-container";
......
...@@ -3025,6 +3025,8 @@ ...@@ -3025,6 +3025,8 @@
'browser/ui/global_error/global_error_service_factory.h', 'browser/ui/global_error/global_error_service_factory.h',
'browser/ui/gtk/accelerators_gtk.cc', 'browser/ui/gtk/accelerators_gtk.cc',
'browser/ui/gtk/accelerators_gtk.h', 'browser/ui/gtk/accelerators_gtk.h',
'browser/ui/gtk/action_box_button_gtk.cc',
'browser/ui/gtk/action_box_button_gtk.h',
'browser/ui/gtk/autofill/autofill_popup_view_gtk.cc', 'browser/ui/gtk/autofill/autofill_popup_view_gtk.cc',
'browser/ui/gtk/autofill/autofill_popup_view_gtk.h', 'browser/ui/gtk/autofill/autofill_popup_view_gtk.h',
'browser/ui/gtk/avatar_menu_bubble_gtk.cc', 'browser/ui/gtk/avatar_menu_bubble_gtk.cc',
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment