| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/gtk/gtk_chrome_link_button.h" | 5 #include "chrome/browser/ui/gtk/gtk_chrome_link_button.h" |
| 6 | 6 |
| 7 #include <stdlib.h> | 7 #include <stdlib.h> |
| 8 | 8 |
| 9 #include "chrome/browser/ui/gtk/gtk_util.h" | 9 #include "chrome/browser/ui/gtk/gtk_util.h" |
| 10 #include "ui/gfx/gtk_util.h" | 10 #include "ui/gfx/gtk_util.h" |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 104 gtk_label_set_markup(GTK_LABEL(button->label), | 104 gtk_label_set_markup(GTK_LABEL(button->label), |
| 105 button->using_native_theme ? button->native_markup : | 105 button->using_native_theme ? button->native_markup : |
| 106 button->normal_markup); | 106 button->normal_markup); |
| 107 } | 107 } |
| 108 | 108 |
| 109 static void gtk_chrome_link_button_style_changed(GtkChromeLinkButton* button) { | 109 static void gtk_chrome_link_button_style_changed(GtkChromeLinkButton* button) { |
| 110 // Regenerate the link with the possibly new colors after the user has | 110 // Regenerate the link with the possibly new colors after the user has |
| 111 // changed his GTK style. | 111 // changed his GTK style. |
| 112 gtk_chrome_link_button_set_text(button); | 112 gtk_chrome_link_button_set_text(button); |
| 113 | 113 |
| 114 if (GTK_WIDGET_VISIBLE(button)) | 114 if (gtk_widget_get_visible(GTK_WIDGET(button))) |
| 115 gtk_widget_queue_draw(GTK_WIDGET(button)); | 115 gtk_widget_queue_draw(GTK_WIDGET(button)); |
| 116 } | 116 } |
| 117 | 117 |
| 118 static gboolean gtk_chrome_link_button_expose(GtkWidget* widget, | 118 static gboolean gtk_chrome_link_button_expose(GtkWidget* widget, |
| 119 GdkEventExpose* event) { | 119 GdkEventExpose* event) { |
| 120 GtkChromeLinkButton* button = GTK_CHROME_LINK_BUTTON(widget); | 120 GtkChromeLinkButton* button = GTK_CHROME_LINK_BUTTON(widget); |
| 121 GtkWidget* label = button->label; | 121 GtkWidget* label = button->label; |
| 122 | 122 |
| 123 if (GTK_WIDGET_STATE(widget) == GTK_STATE_ACTIVE && button->is_normal) { | 123 if (gtk_widget_get_state(widget) == GTK_STATE_ACTIVE && button->is_normal) { |
| 124 gtk_label_set_markup(GTK_LABEL(label), button->pressed_markup); | 124 gtk_label_set_markup(GTK_LABEL(label), button->pressed_markup); |
| 125 button->is_normal = FALSE; | 125 button->is_normal = FALSE; |
| 126 } else if (GTK_WIDGET_STATE(widget) != GTK_STATE_ACTIVE && | 126 } else if (gtk_widget_get_state(widget) != GTK_STATE_ACTIVE && |
| 127 !button->is_normal) { | 127 !button->is_normal) { |
| 128 gtk_label_set_markup(GTK_LABEL(label), | 128 gtk_label_set_markup(GTK_LABEL(label), |
| 129 button->using_native_theme ? button->native_markup : | 129 button->using_native_theme ? button->native_markup : |
| 130 button->normal_markup); | 130 button->normal_markup); |
| 131 button->is_normal = TRUE; | 131 button->is_normal = TRUE; |
| 132 } | 132 } |
| 133 | 133 |
| 134 // Draw the link inside the button. | 134 // Draw the link inside the button. |
| 135 gtk_container_propagate_expose(GTK_CONTAINER(widget), label, event); | 135 gtk_container_propagate_expose(GTK_CONTAINER(widget), label, event); |
| 136 | 136 |
| 137 // Draw the focus rectangle. | 137 // Draw the focus rectangle. |
| 138 if (GTK_WIDGET_HAS_FOCUS(widget)) { | 138 if (gtk_widget_has_focus(widget)) { |
| 139 gtk_paint_focus(widget->style, widget->window, | 139 gtk_paint_focus(widget->style, widget->window, |
| 140 static_cast<GtkStateType>(GTK_WIDGET_STATE(widget)), | 140 gtk_widget_get_state(widget), |
| 141 &event->area, widget, NULL, | 141 &event->area, widget, NULL, |
| 142 widget->allocation.x, widget->allocation.y, | 142 widget->allocation.x, widget->allocation.y, |
| 143 widget->allocation.width, widget->allocation.height); | 143 widget->allocation.width, widget->allocation.height); |
| 144 } | 144 } |
| 145 | 145 |
| 146 return TRUE; | 146 return TRUE; |
| 147 } | 147 } |
| 148 | 148 |
| 149 static void gtk_chrome_link_button_enter(GtkButton* button) { | 149 static void gtk_chrome_link_button_enter(GtkButton* button) { |
| 150 GtkWidget* widget = GTK_WIDGET(button); | 150 GtkWidget* widget = GTK_WIDGET(button); |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 221 return lb; | 221 return lb; |
| 222 } | 222 } |
| 223 | 223 |
| 224 void gtk_chrome_link_button_set_use_gtk_theme(GtkChromeLinkButton* button, | 224 void gtk_chrome_link_button_set_use_gtk_theme(GtkChromeLinkButton* button, |
| 225 gboolean use_gtk) { | 225 gboolean use_gtk) { |
| 226 if (use_gtk != button->using_native_theme) { | 226 if (use_gtk != button->using_native_theme) { |
| 227 button->using_native_theme = use_gtk; | 227 button->using_native_theme = use_gtk; |
| 228 | 228 |
| 229 gtk_chrome_link_button_set_text(button); | 229 gtk_chrome_link_button_set_text(button); |
| 230 | 230 |
| 231 if (GTK_WIDGET_VISIBLE(button)) | 231 if (gtk_widget_get_visible(GTK_WIDGET(button))) |
| 232 gtk_widget_queue_draw(GTK_WIDGET(button)); | 232 gtk_widget_queue_draw(GTK_WIDGET(button)); |
| 233 } | 233 } |
| 234 } | 234 } |
| 235 | 235 |
| 236 void gtk_chrome_link_button_set_label(GtkChromeLinkButton* button, | 236 void gtk_chrome_link_button_set_label(GtkChromeLinkButton* button, |
| 237 const char* text) { | 237 const char* text) { |
| 238 g_free(button->text); | 238 g_free(button->text); |
| 239 button->text = g_strdup(text); | 239 button->text = g_strdup(text); |
| 240 | 240 |
| 241 gtk_chrome_link_button_set_text(button); | 241 gtk_chrome_link_button_set_text(button); |
| 242 | 242 |
| 243 if (GTK_WIDGET_VISIBLE(button)) | 243 if (gtk_widget_get_visible(GTK_WIDGET(button))) |
| 244 gtk_widget_queue_draw(GTK_WIDGET(button)); | 244 gtk_widget_queue_draw(GTK_WIDGET(button)); |
| 245 } | 245 } |
| 246 | 246 |
| 247 void gtk_chrome_link_button_set_normal_color(GtkChromeLinkButton* button, | 247 void gtk_chrome_link_button_set_normal_color(GtkChromeLinkButton* button, |
| 248 const GdkColor* color) { | 248 const GdkColor* color) { |
| 249 if (color) { | 249 if (color) { |
| 250 snprintf(button->normal_color, 9, "#%02X%02X%02X", color->red / 257, | 250 snprintf(button->normal_color, 9, "#%02X%02X%02X", color->red / 257, |
| 251 color->green / 257, color->blue / 257); | 251 color->green / 257, color->blue / 257); |
| 252 } else { | 252 } else { |
| 253 strncpy(button->normal_color, "blue", 9); | 253 strncpy(button->normal_color, "blue", 9); |
| 254 } | 254 } |
| 255 | 255 |
| 256 gtk_chrome_link_button_set_text(button); | 256 gtk_chrome_link_button_set_text(button); |
| 257 | 257 |
| 258 if (GTK_WIDGET_VISIBLE(button)) | 258 if (gtk_widget_get_visible(GTK_WIDGET(button))) |
| 259 gtk_widget_queue_draw(GTK_WIDGET(button)); | 259 gtk_widget_queue_draw(GTK_WIDGET(button)); |
| 260 } | 260 } |
| 261 | 261 |
| 262 G_END_DECLS | 262 G_END_DECLS |
| OLD | NEW |