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

Side by Side Diff: chrome/browser/ui/libgtk2ui/gtk2_ui.cc

Issue 292153008: linux_aura: Fix the insets on LabelButtons. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add comments about where the smaller insets come from. Created 6 years, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/libgtk2ui/gtk2_ui.h" 5 #include "chrome/browser/ui/libgtk2ui/gtk2_ui.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/debug/leak_annotations.h" 10 #include "base/debug/leak_annotations.h"
(...skipping 541 matching lines...) Expand 10 before | Expand all | Expand 10 after
552 } 552 }
553 return gfx::Image(); 553 return gfx::Image();
554 } 554 }
555 555
556 scoped_ptr<views::Border> Gtk2UI::CreateNativeBorder( 556 scoped_ptr<views::Border> Gtk2UI::CreateNativeBorder(
557 views::LabelButton* owning_button, 557 views::LabelButton* owning_button,
558 scoped_ptr<views::Border> border) { 558 scoped_ptr<views::Border> border) {
559 if (owning_button->GetNativeTheme() != NativeThemeGtk2::instance()) 559 if (owning_button->GetNativeTheme() != NativeThemeGtk2::instance())
560 return border.Pass(); 560 return border.Pass();
561 561
562 return scoped_ptr<views::Border>(new Gtk2Border(this, owning_button)); 562 return scoped_ptr<views::Border>(
563 new Gtk2Border(this, owning_button, border.Pass()));
563 } 564 }
564 565
565 void Gtk2UI::AddWindowButtonOrderObserver( 566 void Gtk2UI::AddWindowButtonOrderObserver(
566 views::WindowButtonOrderObserver* observer) { 567 views::WindowButtonOrderObserver* observer) {
567 if (!leading_buttons_.empty() || !trailing_buttons_.empty()) { 568 if (!leading_buttons_.empty() || !trailing_buttons_.empty()) {
568 observer->OnWindowButtonOrderingChange(leading_buttons_, 569 observer->OnWindowButtonOrderingChange(leading_buttons_,
569 trailing_buttons_); 570 trailing_buttons_);
570 } 571 }
571 572
572 observer_list_.AddObserver(observer); 573 observer_list_.AddObserver(observer);
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after
933 // Some GTK themes only define the text selection colors on the GtkEntry 934 // Some GTK themes only define the text selection colors on the GtkEntry
934 // class, so we need to use that for getting selection colors. 935 // class, so we need to use that for getting selection colors.
935 active_selection_bg_color_ = 936 active_selection_bg_color_ =
936 GdkColorToSkColor(entry_style->base[GTK_STATE_SELECTED]); 937 GdkColorToSkColor(entry_style->base[GTK_STATE_SELECTED]);
937 active_selection_fg_color_ = 938 active_selection_fg_color_ =
938 GdkColorToSkColor(entry_style->text[GTK_STATE_SELECTED]); 939 GdkColorToSkColor(entry_style->text[GTK_STATE_SELECTED]);
939 inactive_selection_bg_color_ = 940 inactive_selection_bg_color_ =
940 GdkColorToSkColor(entry_style->base[GTK_STATE_ACTIVE]); 941 GdkColorToSkColor(entry_style->base[GTK_STATE_ACTIVE]);
941 inactive_selection_fg_color_ = 942 inactive_selection_fg_color_ =
942 GdkColorToSkColor(entry_style->text[GTK_STATE_ACTIVE]); 943 GdkColorToSkColor(entry_style->text[GTK_STATE_ACTIVE]);
943
944 // Update the insets that we hand to Gtk2Border.
945 UpdateButtonInsets();
946 } 944 }
947 945
948 GdkColor Gtk2UI::BuildFrameColors(GtkStyle* frame_style) { 946 GdkColor Gtk2UI::BuildFrameColors(GtkStyle* frame_style) {
949 GdkColor* theme_frame = NULL; 947 GdkColor* theme_frame = NULL;
950 GdkColor* theme_inactive_frame = NULL; 948 GdkColor* theme_inactive_frame = NULL;
951 GdkColor* theme_incognito_frame = NULL; 949 GdkColor* theme_incognito_frame = NULL;
952 GdkColor* theme_incognito_inactive_frame = NULL; 950 GdkColor* theme_incognito_inactive_frame = NULL;
953 gtk_widget_style_get(GTK_WIDGET(fake_frame_), 951 gtk_widget_style_get(GTK_WIDGET(fake_frame_),
954 "frame-color", &theme_frame, 952 "frame-color", &theme_frame,
955 "inactive-frame-color", &theme_inactive_frame, 953 "inactive-frame-color", &theme_inactive_frame,
(...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after
1352 1350
1353 // Finally, we convert our pixbuf into a type we can use. 1351 // Finally, we convert our pixbuf into a type we can use.
1354 SkBitmap border = GdkPixbufToImageSkia(pixbuf); 1352 SkBitmap border = GdkPixbufToImageSkia(pixbuf);
1355 g_object_unref(pixbuf); 1353 g_object_unref(pixbuf);
1356 g_object_unref(pixmap); 1354 g_object_unref(pixmap);
1357 gtk_widget_destroy(window); 1355 gtk_widget_destroy(window);
1358 1356
1359 return border; 1357 return border;
1360 } 1358 }
1361 1359
1362 gfx::Insets Gtk2UI::GetButtonInsets() const {
1363 return button_insets_;
1364 }
1365
1366 void Gtk2UI::UpdateButtonInsets() {
1367 GtkWidget* window = gtk_offscreen_window_new();
1368 GtkWidget* button = gtk_button_new();
1369 gtk_container_add(GTK_CONTAINER(window), button);
1370
1371 GtkBorder* border = NULL;
1372 gtk_widget_style_get(GTK_WIDGET(button),
1373 "default-border",
1374 &border,
1375 NULL);
1376
1377 gfx::Insets insets;
1378 if (border) {
1379 button_insets_ = gfx::Insets(border->top, border->left,
1380 border->bottom, border->right);
1381 gtk_border_free(border);
1382 } else {
1383 // Defined in gtkbutton.c:
1384 button_insets_ = gfx::Insets(1, 1, 1, 1);
1385 }
1386
1387 gtk_widget_destroy(window);
1388 }
1389
1390 void Gtk2UI::ClearAllThemeData() { 1360 void Gtk2UI::ClearAllThemeData() {
1391 gtk_images_.clear(); 1361 gtk_images_.clear();
1392 } 1362 }
1393 1363
1394 void Gtk2UI::OnStyleSet(GtkWidget* widget, GtkStyle* previous_style) { 1364 void Gtk2UI::OnStyleSet(GtkWidget* widget, GtkStyle* previous_style) {
1395 ClearAllThemeData(); 1365 ClearAllThemeData();
1396 LoadGtkValues(); 1366 LoadGtkValues();
1397 NativeThemeGtk2::instance()->NotifyObservers(); 1367 NativeThemeGtk2::instance()->NotifyObservers();
1398 } 1368 }
1399 1369
1400 } // namespace libgtk2ui 1370 } // namespace libgtk2ui
1401 1371
1402 views::LinuxUI* BuildGtk2UI() { 1372 views::LinuxUI* BuildGtk2UI() {
1403 return new libgtk2ui::Gtk2UI; 1373 return new libgtk2ui::Gtk2UI;
1404 } 1374 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698