Home | History | Annotate | Download | only in gtk
      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