• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
3 // found in the LICENSE file.
4 
5 #ifndef CHROME_BROWSER_UI_GTK_GTK_CHROME_BUTTON_H_
6 #define CHROME_BROWSER_UI_GTK_GTK_CHROME_BUTTON_H_
7 #pragma once
8 
9 #include <gdk/gdk.h>
10 #include <gtk/gtkbutton.h>
11 
12 G_BEGIN_DECLS
13 
14 #define GTK_TYPE_CHROME_BUTTON        (gtk_chrome_button_get_type ())
15 #define GTK_CHROME_BUTTON(obj)                              \
16   (G_TYPE_CHECK_INSTANCE_CAST((obj), GTK_TYPE_CHROME_BUTTON, GtkChromeButton))
17 #define GTK_CHROME_BUTTON_CLASS(klass)                      \
18   (G_TYPE_CHECK_CLASS_CAST((klass), GTK_TYPE_CHROME_BUTTON, \
19                            GtkChromeButtonClass))
20 #define GTK_IS_CHROME_BUTTON(obj)                           \
21   (G_TYPE_CHECK_INSTANCE_TYPE((obj), GTK_TYPE_CHROME_BUTTON))
22 #define GTK_IS_CHROME_BUTTON_CLASS(klass)                   \
23   (G_TYPE_CHECK_CLASS_TYPE((klass), GTK_TYPE_CHROME_BUTTON))
24 #define GTK_CHROME_BUTTON_GET_CLASS(obj)                    \
25   (G_TYPE_INSTANCE_GET_CLASS((obj), GTK_TYPE_CHROME_BUTTON, GtkChromeButton))
26 
27 typedef struct _GtkChromeButton        GtkChromeButton;
28 typedef struct _GtkChromeButtonClass   GtkChromeButtonClass;
29 
30 struct _GtkChromeButton {
31   GtkButton button;
32 };
33 
34 struct _GtkChromeButtonClass {
35   GtkButtonClass parent_class;
36 };
37 
38 GtkWidget* gtk_chrome_button_new();
39 
40 GType gtk_chrome_button_get_type();
41 
42 // Set the paint state to |state|. This overrides the widget's current state.
43 void gtk_chrome_button_set_paint_state(GtkChromeButton* button,
44                                        GtkStateType state);
45 
46 // Revert to using the widget's current state for painting.
47 void gtk_chrome_button_unset_paint_state(GtkChromeButton* button);
48 
49 // Whether we should use custom theme images or let GTK take care of it.
50 void gtk_chrome_button_set_use_gtk_rendering(GtkChromeButton* button,
51                                              gboolean value);
52 
53 // Sets the partial hover state of the button. The acceptable range is 0.0 to
54 // 1.0. If |state| is outside of that range, then revert the button to normal
55 // hovering. This can be overridden by gtk_chrome_button_set_paint_state.
56 void gtk_chrome_button_set_hover_state(GtkChromeButton* button,
57                                        gdouble state);
58 
59 G_END_DECLS
60 
61 #endif  // CHROME_BROWSER_UI_GTK_GTK_CHROME_BUTTON_H_
62