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

Unified Diff: chrome/browser/gtk/browser_toolbar_gtk.cc

Issue 149681: GTK Themes: Make the omnibox area look more native. (Closed)
Patch Set: Change names for Dean Created 11 years, 5 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/gtk/browser_toolbar_gtk.h ('k') | chrome/browser/gtk/go_button_gtk.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/gtk/browser_toolbar_gtk.cc
diff --git a/chrome/browser/gtk/browser_toolbar_gtk.cc b/chrome/browser/gtk/browser_toolbar_gtk.cc
index a5717783a4a1bead21d269d9182e41a02c028b49..37534494ad8fc781f79870514d30247649165201 100644
--- a/chrome/browser/gtk/browser_toolbar_gtk.cc
+++ b/chrome/browser/gtk/browser_toolbar_gtk.cc
@@ -145,18 +145,20 @@ void BrowserToolbarGtk::Init(Profile* profile,
SetUpDragForHomeButton();
// Group the start, omnibox, and go button into an hbox.
- GtkWidget* omnibox_hbox_ = gtk_hbox_new(FALSE, 0);
+ GtkWidget* location_hbox = gtk_hbox_new(FALSE, 0);
star_.reset(BuildStarButton(l10n_util::GetStringUTF8(IDS_TOOLTIP_STAR)));
- gtk_box_pack_start(GTK_BOX(omnibox_hbox_), star_->widget(), FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(location_hbox), star_->widget(), FALSE, FALSE, 0);
location_bar_->Init();
- gtk_box_pack_start(GTK_BOX(omnibox_hbox_), location_bar_->widget(), TRUE,
+ gtk_box_pack_start(GTK_BOX(location_hbox), location_bar_->widget(), TRUE,
TRUE, 0);
go_.reset(new GoButtonGtk(location_bar_.get(), browser_));
- gtk_box_pack_start(GTK_BOX(omnibox_hbox_), go_->widget(), FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(location_hbox), go_->widget(), FALSE, FALSE, 0);
- gtk_box_pack_start(GTK_BOX(toolbar_), omnibox_hbox_, TRUE, TRUE, 0);
+ g_signal_connect(location_hbox, "expose-event",
+ G_CALLBACK(OnLocationHboxExpose), this);
+ gtk_box_pack_start(GTK_BOX(toolbar_), location_hbox, TRUE, TRUE, 0);
// Group the menu buttons together in an hbox.
GtkWidget* menus_hbox_ = gtk_hbox_new(FALSE, 0);
@@ -434,6 +436,44 @@ gboolean BrowserToolbarGtk::OnToolbarExpose(GtkWidget* widget,
}
// static
+gboolean BrowserToolbarGtk::OnLocationHboxExpose(GtkWidget* location_hbox,
+ GdkEventExpose* e,
+ BrowserToolbarGtk* toolbar) {
+ if (toolbar->theme_provider_->UseGtkTheme()) {
+ // To get the proper look surrounding the location bar, we fake out the
+ // theme engine into drawing a button. We fake out GTK by constructing a
+ // box that's from the top left corner of the bookmark button to the bottom
+ // right of the go button and fill it with a button's box (or the opposite
+ // if in RTL mode).
+ GtkWidget* star = toolbar->star_->widget();
+ GtkWidget* left = NULL;
+ GtkWidget* right = NULL;
+ if (gtk_widget_get_direction(star) ==
+ GTK_TEXT_DIR_LTR) {
+ left = toolbar->star_->widget();
+ right = toolbar->go_->widget();
+ } else {
+ left = toolbar->go_->widget();
+ right = toolbar->star_->widget();
+ }
+
+ gint x = left->allocation.x;
+ gint y = left->allocation.y;
+ gint width = (right->allocation.x - left->allocation.x) +
+ right->allocation.width;
+ gint height = (right->allocation.y - left->allocation.y) +
+ right->allocation.height;
+
+ gtk_paint_box(star->style, location_hbox->window,
+ GTK_STATE_NORMAL, GTK_SHADOW_OUT, NULL,
+ location_hbox, "button",
+ x, y, width, height);
+ }
+
+ return FALSE;
+}
+
+// static
void BrowserToolbarGtk::OnButtonClick(GtkWidget* button,
BrowserToolbarGtk* toolbar) {
int tag = -1;
« no previous file with comments | « chrome/browser/gtk/browser_toolbar_gtk.h ('k') | chrome/browser/gtk/go_button_gtk.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698