gtkmm: Gtk::StyleContext Class Reference

gtkmm 3.4.0

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes

- Class List
- Class Index
- Class Hierarchy
- Class Members

Public Member Functions | Static Public Member Functions | Protected Member Functions | Related Functions
Gtk::StyleContext Class Reference

This object stores styling information affecting a widget defined by WidgetPath. More...

Inheritance diagram for Gtk::StyleContext:
[legend]

List of all members.

## Public Member Functions
virtual | ~StyleContext ()
GtkStyleContext* | gobj ()
| Provides access to the underlying C GObject.
const GtkStyleContext* | gobj () const
| Provides access to the underlying C GObject.
GtkStyleContext* | gobj_copy ()
| Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs.
void | add_provider (const Glib::RefPtr< StyleProvider >& provider, guint priority)
| Adds a style provider to context, to be used in style construction.
void | remove_provider (const Glib::RefPtr< StyleProvider >& provider)
| Removes provider from the style providers list in context.
void | context_save ()
| Saves the context state, so all modifications done through add_class(), remove_class(), add_region(), remove_region() or set_junction_sides() can be reverted in one go through restore().
void | context_restore ()
| Restores context state to a previous stage.
void | set_state (StateFlags flags)
| Sets the state to be used when rendering with any of the gtk_render_*() functions.
StateFlags | get_state () const
| Returns the state used when rendering.
bool | state_is_running (StateType state, gdouble* progress)
| Returns `true` if there is a transition animation running for the current region (see push_animatable_region()).
void | set_path (const WidgetPath& path)
| Sets the Gtk::WidgetPath used for style matching.
WidgetPath | get_path () const
| Returns the widget path used for style matching.
void | set_parent (const Glib::RefPtr< StyleContext >& parent)
| Sets the parent style context for context.
void | unset_parent ()
Glib::RefPtr< StyleContext > | get_parent ()
| Gets the parent context set via set_parent().
Glib::RefPtr< const StyleContext > | get_parent () const
| Gets the parent context set via set_parent().
std::vector< Glib::ustring > | list_classes () const
| Returns the list of classes currently defined in context.
void | add_class (const Glib::ustring& class_name)
| Adds a style class to context, so posterior calls to get() or any of the gtk_render_*() functions will make use of this new class for styling.
void | remove_class (const Glib::ustring& class_name)
| Removes class_name from context.
bool | has_class (const Glib::ustring& class_name)
| Returns `true` if context currently has defined the given class name.
GList* | list_regions ()
| Returns the list of regions currently defined in context.
void | add_region (const Glib::ustring& region_name, RegionFlags flags)
| Adds a region to context, so posterior calls to get() or any of the gtk_render_*() functions will make use of this new region for styling.
void | remove_region (const Glib::ustring& region_name)
| Removes a region from context.
bool | has_region (const Glib::ustring& region_name, RegionFlags& flags_return)
| Returns `true` if context has the region defined.
Glib::RefPtr< IconSet > | lookup_icon_set (const Glib::ustring& stock_id)
| Looks up stock_id in the icon factories associated to context and the default icon factory, returning an icon set if found, otherwise `0`.
void | set_screen (const Glib::RefPtr< Gdk::Screen >& screen)
| Attaches context to the given screen.
Glib::RefPtr< Gdk::Screen > | get_screen ()
| Returns the Gdk::Screen to which context is attached.
Glib::RefPtr< const Gdk::Screen > | get_screen () const
| Returns the Gdk::Screen to which context is attached.
void | set_direction (TextDirection direction)
| Sets the reading direction for rendering purposes.
TextDirection | get_direction () const
| Returns the widget direction used for rendering.
void | set_junction_sides (JunctionSides sides)
| Sets the sides where rendered elements (mostly through gtk_render_frame()) will visually connect with other visual elements.
JunctionSides | get_junction_sides () const
| Returns the sides where rendered elements connect visually with others.
bool | lookup_color (const Glib::ustring& color_name, Gdk::RGBA& color)
| Looks up and resolves a color name in the context color map.
void | notify_state_change (const Glib::RefPtr< Gdk::Window >& window, gpointer region_id, StateType state, bool state_value)
| Notifies a state change on context, so if the current style makes use of transition animations, one will be started so all rendered elements under region_id are animated for state state being set to value state_value.
void | cancel_animations (gpointer region_id)
| Stops all running animations for region_id and all animatable regions underneath.
void | scroll_animations (const Glib::RefPtr< Gdk::Window >& window, int dx, int dy)
| This function is analogous to gdk_window_scroll(), and should be called together with it so the invalidation areas for any ongoing animation are scrolled together with it.
void | push_animatable_region (gpointer region_id)
| Pushes an animatable region, so all further gtk_render_*() calls between this call and the following pop_animatable_region() will potentially show transition animations for this region if notify_state_change() is called for a given state, and the current theme/style defines transition animations for state changes.
void | pop_animatable_region ()
| Pops an animatable region from context.
Gdk::RGBA | get_color (StateFlags state=(StateFlags) 0) const
Gdk::RGBA | get_background_color (StateFlags state=(StateFlags) 0) const
Gdk::RGBA | get_border_color (StateFlags state=(StateFlags) 0) const
Pango::FontDescription | get_font (StateFlags state=(StateFlags) 0) const
| Returns the font description for a given state.
Border | get_border (StateFlags state=(StateFlags) 0) const
Border | get_padding (StateFlags state=(StateFlags) 0) const
Border | get_margin (StateFlags state=(StateFlags) 0) const
void | invalidate ()
| Invalidates context style information, so it will be reconstructed again.
void | set_background (const Glib::RefPtr< Gdk::Window >& window)
| Sets the background of window to the background pattern or color specified in context for its current state.
void | render_check (const ::Cairo::RefPtr< ::Cairo::Context >& cr, double x, double y, double width, double height)
| Renders a checkmark (as in a Gtk::CheckButton).
void | render_option (const ::Cairo::RefPtr< ::Cairo::Context >& cr, double x, double y, double width, double height)
| Renders an option mark (as in a Gtk::RadioButton), the Gtk::STATE_FLAG_ACTIVE state will determine whether the option is on or off, and Gtk::STATE_FLAG_INCONSISTENT whether it should be marked as undefined.
void | render_arrow (const ::Cairo::RefPtr< ::Cairo::Context >& cr, double angle, double x, double y, double size)
| Renders an arrow pointing to angle.
void | render_background (const ::Cairo::RefPtr< ::Cairo::Context >& cr, double x, double y, double width, double height)
| Renders the background of an element.
void | render_frame (const ::Cairo::RefPtr< ::Cairo::Context >& cr, double x, double y, double width, double height)
| Renders a frame around the rectangle defined by x, y, width, height.
void | render_expander (const ::Cairo::RefPtr< ::Cairo::Context >& cr, double x, double y, double width, double height)
| Renders an expander (as used in Gtk::TreeView and Gtk::Expander) in the area defined by x, y, width, height.
void | render_focus (const ::Cairo::RefPtr< ::Cairo::Context >& cr, double x, double y, double width, double height)
| Renders a focus indicator on the rectangle determined by x, y, width, height.
void | render_layout (const ::Cairo::RefPtr< ::Cairo::Context >& cr, double x, double y, PangoLayout* layout)
| Renders layout on the coordinates x, y.
void | render_line (const ::Cairo::RefPtr< ::Cairo::Context >& cr, double x0, double y0, double x1, double y1)
| Renders a line from (x0, y0) to (x1, y1).
void | render_slider (const ::Cairo::RefPtr< ::Cairo::Context >& cr, double x, double y, double width, double height, Orientation orientation)
| Renders a slider (as in Gtk::Scale) in the rectangle defined by x, y, width, height.
void | render_frame_gap (const ::Cairo::RefPtr< ::Cairo::Context >& cr, double x, double y, double width, double height, PositionType gap_side, double xy0_gap, double xy1_gap)
| Renders a frame around the rectangle defined by ( x, y, width, height), leaving a gap on one side.
void | render_extension (const ::Cairo::RefPtr< ::Cairo::Context >& cr, double x, double y, double width, double height, PositionType gap_side)
| Renders a extension (as in a Gtk::Notebook tab) in the rectangle defined by x, y, width, height.
void | render_handle (const ::Cairo::RefPtr< ::Cairo::Context >& cr, double x, double y, double width, double height)
| Renders a handle (as in Gtk::HandleBox, Gtk::Paned and Gtk::Window's resize grip), in the rectangle determined by x, y, width, height.
void | render_activity (const ::Cairo::RefPtr< ::Cairo::Context >& cr, double x, double y, double width, double height)
| Renders an activity area (Such as in Gtk::Spinner or the fill line in Gtk::Range), the state Gtk::STATE_FLAG_ACTIVE determines whether there is activity going on.
Glib::RefPtr< Gdk::Pixbuf > | render_icon_pixbuf (const IconSource& source, IconSize size)
| Renders the icon specified by source at the given size, returning the result in a pixbuf.
Glib::SignalProxy0< void > | signal_changed ()
Glib::PropertyProxy < Glib::RefPtr< Gdk::Screen > > | property_screen ()
| The associated GdkScreen.
Glib::PropertyProxy_ReadOnly < Glib::RefPtr< Gdk::Screen > > | property_screen () const
| The associated GdkScreen.
Glib::PropertyProxy < TextDirection > | property_direction ()
| Text direction.
Glib::PropertyProxy_ReadOnly < TextDirection > | property_direction () const
| Text direction.
Glib::PropertyProxy < Glib::RefPtr< StyleContext > > | property_parent ()
| The parent style context.
Glib::PropertyProxy_ReadOnly < Glib::RefPtr< StyleContext > > | property_parent () const
| The parent style context.
## Static Public Member Functions
static Glib::RefPtr< StyleContext > | create ()
static void | add_provider_for_screen (const Glib::RefPtr< Gdk::Screen >& screen, const Glib::RefPtr< StyleProvider >& provider, guint priority)
| Adds a global style provider to screen, which will be used in style construction for all Gtk::StyleContexts under screen.
static void | remove_provider_for_screen (const Glib::RefPtr< Gdk::Screen >& screen, const Glib::RefPtr< StyleProvider >& provider)
| Removes provider from the global style providers list in screen.
## Protected Member Functions
| StyleContext ()
virtual void | on_changed ()
| This is a default handler for the signal signal_changed().
## Related Functions
(Note that these are not member functions.)
Glib::RefPtr< Gtk::StyleContext > | wrap (GtkStyleContext* object, bool take_copy=false)
| A Glib::wrap() method for this object.

## Detailed Description

This object stores styling information affecting a widget defined by WidgetPath.

In order to construct the final style information, StyleContext queries information from all attached StyleProviders. Style providers can be either attached explicitly to the context through add_provider(), or to the screen through add_provider_for_screen(). The resulting style is a combination of all providers' information in priority order.

For GTK+ widgets, any StyleContext returned by Widget::get_style_context() will already have a WidgetPath, a Gdk::Screen and RTL/LTR information set, The style context will be also updated automatically if any of these settings change on the widget.

If you are using the theming layer standalone, you will need to set a widget path and a screen yourself to the created style context through set_path() and set_screen(), as well as updating the context yourself using invalidate() whenever any of the conditions change, such as a change in the Settings::property_gtk_theme_name() setting or a hierarchy change in the rendered widget.

Transition animations

StyleContext has built-in support for state change transitions. Note that these animations respect the Settings::property_gtk_enable_animations() setting.

For simple widgets where state changes affect the whole widget area, calling notify_state_change() with a no region is sufficient to trigger the transition animation. And GTK+ already does that when Widget::set_state() or Widget::set_state_flags() are called.

If a widget needs to declare several animatable regions (i.e. not affecting the whole widget area), its Widget::signal_draw() signal handler needs to wrap the render operations for the different regions with calls to push_animatable_region() and pop_animatable_region(). These methods take an identifier for the region which must be unique within the style context. For simple widgets with a fixed set of animatable regions, using an enumeration works well.

For complex widgets with an arbitrary number of animatable regions, it is up to the implementation to come up with a way to uniquely identify each animatable region. Using pointers to internal objects is one way to achieve this.

The widget also needs to notify the style context about a state change for a given animatable region so the animation is triggered. notify_state_change() can take no region IDs, meaning that the whole widget area will be updated by the animation.

Since gtkmm 3.0:

## Constructor & Destructor Documentation

virtual Gtk::StyleContext::~StyleContext | ( |  | ) | `[virtual]`

Gtk::StyleContext::StyleContext | ( |  | ) | `[protected]`

## Member Function Documentation

void Gtk::StyleContext::add_class | ( | const Glib::ustring & | class_name | ) |

Adds a style class to context, so posterior calls to get() or any of the gtk_render_*() functions will make use of this new class for styling.

In the CSS file format, a Gtk::Entry defining an "entry" class, would be matched by:

GtkEntry.entry { ... }

While any widget defining an "entry" class would be matched by:

.entry { ... }

Since gtkmm 3.0:

Parameters:

  class_name | Class name to use in styling.

void Gtk::StyleContext::add_provider | ( | const Glib::RefPtr< StyleProvider >& | provider,
|  | guint | priority
| ) |  |

Adds a style provider to context, to be used in style construction.

<note>If both priorities are the same, A Gtk::StyleProvider added through this function takes precedence over another added through add_provider_for_screen().</note>

Since gtkmm 3.0:

Parameters:

  provider | A Gtk::StyleProvider.
  priority | The priority of the style provider. The lower it is, the earlier it will be used in the style construction. Typically this will be in the range between Gtk::STYLE_PROVIDER_PRIORITY_FALLBACK and Gtk::STYLE_PROVIDER_PRIORITY_USER.

static void Gtk::StyleContext::add_provider_for_screen | ( | const Glib::RefPtr< Gdk::Screen >& | screen,
|  | const Glib::RefPtr< StyleProvider >& | provider,
|  | guint | priority
| ) |  | `[static]`

Adds a global style provider to screen, which will be used in style construction for all Gtk::StyleContexts under screen.

GTK+ uses this to make styling information from Gtk::Settings available.

<note>If both priorities are the same, A Gtk::StyleProvider added through add_provider() takes precedence over another added through this function.</note>

Since gtkmm 3.0:

Parameters:

  screen | A Gdk::Screen.
  provider | A Gtk::StyleProvider.
  priority | The priority of the style provider. The lower it is, the earlier it will be used in the style construction. Typically this will be in the range between Gtk::STYLE_PROVIDER_PRIORITY_FALLBACK and Gtk::STYLE_PROVIDER_PRIORITY_USER.

void Gtk::StyleContext::add_region | ( | const Glib::ustring & | region_name,
|  | RegionFlags | flags
| ) |  |

Adds a region to context, so posterior calls to get() or any of the gtk_render_*() functions will make use of this new region for styling.

In the CSS file format, a Gtk::TreeView defining a "row" region, would be matched by:

GtkTreeView row { ... }

Pseudo-classes are used for matching flags, so the two following rules:

GtkTreeView row:nth-child(even) { ... } GtkTreeView row:nth-child(odd) { ... }

would apply to even and odd rows, respectively.

<note>Region names must only contain lowercase letters and '-', starting always with a lowercase letter.</note>

Since gtkmm 3.0:

Parameters:

  region_name | Region name to use in styling.
  flags | Flags that apply to the region.

void Gtk::StyleContext::cancel_animations | ( | gpointer | region_id | ) |

Stops all running animations for region_id and all animatable regions underneath.

A `0` region_id will stop all ongoing animations in context, when dealing with a Gtk::StyleContext obtained through Gtk::Widget::get_style_context(), this is normally done for you in all circumstances you would expect all widget to be stopped, so this should be only used in complex widgets with different animatable regions.

Since gtkmm 3.0:

Parameters:

  region_id | Animatable region to stop, or `0`. See push_animatable_region().

void Gtk::StyleContext::context_restore | ( |  | ) |

Restores context state to a previous stage.

See save().

Since gtkmm 3.0:

void Gtk::StyleContext::context_save | ( |  | ) |

Saves the context state, so all modifications done through add_class(), remove_class(), add_region(), remove_region() or set_junction_sides() can be reverted in one go through restore().

Since gtkmm 3.0:

static Glib::RefPtr<StyleContext> Gtk::StyleContext::create | ( |  | ) | `[static]`

Gdk::RGBA Gtk::StyleContext::get_background_color | ( | StateFlags | state = `(StateFlags) 0` | ) | const

Border Gtk::StyleContext::get_border | ( | StateFlags | state = `(StateFlags) 0` | ) | const

Gdk::RGBA Gtk::StyleContext::get_border_color | ( | StateFlags | state = `(StateFlags) 0` | ) | const

Gdk::RGBA Gtk::StyleContext::get_color | ( | StateFlags | state = `(StateFlags) 0` | ) | const

TextDirection Gtk::StyleContext::get_direction | ( |  | ) | const

Returns the widget direction used for rendering.

Since gtkmm 3.0:

Returns:
  The widget direction.

Pango::FontDescription Gtk::StyleContext::get_font | ( | StateFlags | state = `(StateFlags) 0` | ) | const

Returns the font description for a given state.

The returned object is const and will remain valid until the Gtk::StyleContext::signal_changed() signal happens.

Since gtkmm 3.0:

Parameters:

  state | State to retrieve the font for.

Returns:
  The Pango::FontDescription for the given state. This object is owned by GTK+ and should not be freed.

JunctionSides Gtk::StyleContext::get_junction_sides | ( |  | ) | const

Returns the sides where rendered elements connect visually with others.

Since gtkmm 3.0:

Returns:
  The junction sides.

Border Gtk::StyleContext::get_margin | ( | StateFlags | state = `(StateFlags) 0` | ) | const

Border Gtk::StyleContext::get_padding | ( | StateFlags | state = `(StateFlags) 0` | ) | const

Glib::RefPtr<StyleContext> Gtk::StyleContext::get_parent | ( |  | ) |

Gets the parent context set via set_parent().

See that function for details.

Since gtkmm 3.4:

Returns:
  The parent context or `0`.

Glib::RefPtr<const StyleContext> Gtk::StyleContext::get_parent | ( |  | ) | const

Gets the parent context set via set_parent().

See that function for details.

Since gtkmm 3.4:

Returns:
  The parent context or `0`.

WidgetPath Gtk::StyleContext::get_path | ( |  | ) | const

Returns the widget path used for style matching.

Since gtkmm 3.0:

Returns:
  A Gtk::WidgetPath.

Glib::RefPtr<Gdk::Screen> Gtk::StyleContext::get_screen | ( |  | ) |

Returns the Gdk::Screen to which context is attached.

Returns:
  A Gdk::Screen.

Glib::RefPtr<const Gdk::Screen> Gtk::StyleContext::get_screen | ( |  | ) | const

Returns the Gdk::Screen to which context is attached.

Returns:
  A Gdk::Screen.

StateFlags Gtk::StyleContext::get_state | ( |  | ) | const

Returns the state used when rendering.

Since gtkmm 3.0:

Returns:
  The state flags.

GtkStyleContext* Gtk::StyleContext::gobj | ( |  | ) | `[inline]`

Provides access to the underlying C GObject.

Reimplemented from Glib::ObjectBase.

const GtkStyleContext* Gtk::StyleContext::gobj | ( |  | ) | const`[inline]`

Provides access to the underlying C GObject.

Reimplemented from Glib::ObjectBase.

GtkStyleContext* Gtk::StyleContext::gobj_copy | ( |  | ) |

Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs.

bool Gtk::StyleContext::has_class | ( | const Glib::ustring & | class_name | ) |

Returns `true` if context currently has defined the given class name.

Since gtkmm 3.0:

Parameters:

  class_name | A class name.

Returns:
  `true` if context has class_name defined.

bool Gtk::StyleContext::has_region | ( | const Glib::ustring & | region_name,
|  | RegionFlags& | flags_return
| ) |  |

Returns `true` if context has the region defined.

If flags_return is not `0`, it is set to the flags affecting the region.

Since gtkmm 3.0:

Parameters:

  region_name | A region name.
  flags_return | Return location for region flags.

Returns:
  `true` if region is defined.

void Gtk::StyleContext::invalidate | ( |  | ) |

Invalidates context style information, so it will be reconstructed again.

If you're using a Gtk::StyleContext returned from Gtk::Widget::get_style_context(), you do not need to call this yourself.

Since gtkmm 3.0:

std::vector<Glib::ustring> Gtk::StyleContext::list_classes | ( |  | ) | const

Returns the list of classes currently defined in context.

Since gtkmm 3.0:

Returns:
  A List of strings with the currently defined classes. The contents of the list are owned by GTK+, but you must free the list itself with Glib::list_free() when you are done with it.

GList* Gtk::StyleContext::list_regions | ( |  | ) |

Returns the list of regions currently defined in context.

Since gtkmm 3.0:

Returns:
  A List of strings with the currently defined regions. The contents of the list are owned by GTK+, but you must free the list itself with Glib::list_free() when you are done with it.

bool Gtk::StyleContext::lookup_color | ( | const Glib::ustring & | color_name,
|  | Gdk::RGBA& | color
| ) |  |

Looks up and resolves a color name in the context color map.

Parameters:

  color_name | Color name to lookup.
  color | Return location for the looked up color.

Returns:
  `true` if color_name was found and resolved, `false` otherwise.

Glib::RefPtr<IconSet> Gtk::StyleContext::lookup_icon_set | ( | const Glib::ustring & | stock_id | ) |

Looks up stock_id in the icon factories associated to context and the default icon factory, returning an icon set if found, otherwise `0`.

Parameters:

  stock_id | An icon name.

Returns:
  The looked up Gtk::IconSet, or `0`.

void Gtk::StyleContext::notify_state_change | ( | const Glib::RefPtr< Gdk::Window >& | window,
|  | gpointer | region_id,
|  | StateType | state,
|  | bool | state_value
| ) |  |

Notifies a state change on context, so if the current style makes use of transition animations, one will be started so all rendered elements under region_id are animated for state state being set to value state_value.

The window parameter is used in order to invalidate the rendered area as the animation runs, so make sure it is the same window that is being rendered on by the gtk_render_*() functions.

If region_id is `0`, all rendered elements using context will be affected by this state transition.

As a practical example, a Gtk::Button notifying a state transition on the prelight state:

gtk_style_context_notify_state_change (context, gtk_widget_get_window (widget), `0`, GTK_STATE_PRELIGHT, button->in_button);

Can be handled in the CSS file like this:

GtkButton { background-color: #f00 }

GtkButton:hover { background-color: #fff; transition: 200ms linear }

This combination will animate the button background from red to white if a pointer enters the button, and back to red if the pointer leaves the button.

Note that state is used when finding the transition parameters, which is why the style places the transition under the :hover pseudo-class.

Since gtkmm 3.0:

Parameters:

  window | A Gdk::Window.
  region_id | Animatable region to notify on, or `0`. See push_animatable_region().
  state | State to trigger transition for.
  state_value | `true` if state is the state we are changing to, `false` if we are changing away from it.

virtual void Gtk::StyleContext::on_changed | ( |  | ) | `[protected, virtual]`

This is a default handler for the signal signal_changed().

void Gtk::StyleContext::pop_animatable_region | ( |  | ) |

Pops an animatable region from context.

See push_animatable_region().

Since gtkmm 3.0:

Glib::PropertyProxy< TextDirection > Gtk::StyleContext::property_direction | ( |  | ) |

Text direction.

You rarely need to use properties because there are get_ and set_ methods for almost all of them.

Returns:
  A PropertyProxy that allows you to get or set the property of the value, or receive notification when the value of the property changes.

Glib::PropertyProxy_ReadOnly< TextDirection > Gtk::StyleContext::property_direction | ( |  | ) | const

Text direction.

You rarely need to use properties because there are get_ and set_ methods for almost all of them.

Returns:
  A PropertyProxy that allows you to get or set the property of the value, or receive notification when the value of the property changes.

Glib::PropertyProxy< Glib::RefPtr<StyleContext> > Gtk::StyleContext::property_parent | ( |  | ) |

The parent style context.

You rarely need to use properties because there are get_ and set_ methods for almost all of them.

Returns:
  A PropertyProxy that allows you to get or set the property of the value, or receive notification when the value of the property changes.

Glib::PropertyProxy_ReadOnly< Glib::RefPtr<StyleContext> > Gtk::StyleContext::property_parent | ( |  | ) | const

The parent style context.

You rarely need to use properties because there are get_ and set_ methods for almost all of them.

Returns:
  A PropertyProxy that allows you to get or set the property of the value, or receive notification when the value of the property changes.

Glib::PropertyProxy< Glib::RefPtr<Gdk::Screen> > Gtk::StyleContext::property_screen | ( |  | ) |

The associated GdkScreen.

You rarely need to use properties because there are get_ and set_ methods for almost all of them.

Returns:
  A PropertyProxy that allows you to get or set the property of the value, or receive notification when the value of the property changes.

Glib::PropertyProxy_ReadOnly< Glib::RefPtr<Gdk::Screen> > Gtk::StyleContext::property_screen | ( |  | ) | const

The associated GdkScreen.

You rarely need to use properties because there are get_ and set_ methods for almost all of them.

Returns:
  A PropertyProxy that allows you to get or set the property of the value, or receive notification when the value of the property changes.

void Gtk::StyleContext::push_animatable_region | ( | gpointer | region_id | ) |

Pushes an animatable region, so all further gtk_render_*() calls between this call and the following pop_animatable_region() will potentially show transition animations for this region if notify_state_change() is called for a given state, and the current theme/style defines transition animations for state changes.

The region_id used must be unique in context so the theming engine can uniquely identify rendered elements subject to a state transition.

Since gtkmm 3.0:

Parameters:

  region_id | Unique identifier for the animatable region.

void Gtk::StyleContext::remove_class | ( | const Glib::ustring & | class_name | ) |

Removes class_name from context.

Since gtkmm 3.0:

Parameters:

  class_name | Class name to remove.

void Gtk::StyleContext::remove_provider | ( | const Glib::RefPtr< StyleProvider >& | provider | ) |

Removes provider from the style providers list in context.

Since gtkmm 3.0:

Parameters:

  provider | A Gtk::StyleProvider.

static void Gtk::StyleContext::remove_provider_for_screen | ( | const Glib::RefPtr< Gdk::Screen >& | screen,
|  | const Glib::RefPtr< StyleProvider >& | provider
| ) |  | `[static]`

Removes provider from the global style providers list in screen.

Since gtkmm 3.0:

Parameters:

  screen | A Gdk::Screen.
  provider | A Gtk::StyleProvider.

void Gtk::StyleContext::remove_region | ( | const Glib::ustring & | region_name | ) |

Removes a region from context.

Since gtkmm 3.0:

Parameters:

  region_name | Region name to unset.

void Gtk::StyleContext::render_activity | ( | const ::Cairo::RefPtr< ::Cairo::Context > & | cr,
|  | double | x,
|  | double | y,
|  | double | width,
|  | double | height
| ) |  |

Renders an activity area (Such as in Gtk::Spinner or the fill line in Gtk::Range), the state Gtk::STATE_FLAG_ACTIVE determines whether there is activity going on.

Since gtkmm 3.0:

Parameters:

  context | A Gtk::StyleContext.
  cr | A #cairo_t.
  x | X origin of the rectangle.
  y | Y origin of the rectangle.
  width | Rectangle width.
  height | Rectangle height.

void Gtk::StyleContext::render_arrow | ( | const ::Cairo::RefPtr< ::Cairo::Context > & | cr,
|  | double | angle,
|  | double | x,
|  | double | y,
|  | double | size
| ) |  |

Renders an arrow pointing to angle.

<title>Typical arrow rendering at 0, 1/2 ∏, ∏ and 3/2 ∏</title> <inlinegraphic fileref="arrows.png" format="PNG">

Since gtkmm 3.0:

Parameters:

  context | A Gtk::StyleContext.
  cr | A #cairo_t.
  angle | Arrow angle from 0 to 2* PI, being 0 the arrow pointing to the north.
  x | X origin of the render area.
  y | Y origin of the render area.
  size | Square side for render area.

void Gtk::StyleContext::render_background | ( | const ::Cairo::RefPtr< ::Cairo::Context > & | cr,
|  | double | x,
|  | double | y,
|  | double | width,
|  | double | height
| ) |  |

Renders the background of an element.

<title>Typical background rendering, showing the effect of <parameter>background-image</parameter>, <parameter>border-width</parameter> and <parameter>border-radius</parameter></title> <inlinegraphic fileref="background.png" format="PNG">

Since gtkmm 3.0:

Parameters:

  context | A Gtk::StyleContext.
  cr | A #cairo_t.
  x | X origin of the rectangle.
  y | Y origin of the rectangle.
  width | Rectangle width.
  height | Rectangle height.

void Gtk::StyleContext::render_check | ( | const ::Cairo::RefPtr< ::Cairo::Context > & | cr,
|  | double | x,
|  | double | y,
|  | double | width,
|  | double | height
| ) |  |

Renders a checkmark (as in a Gtk::CheckButton).

The Gtk::STATE_FLAG_ACTIVE state determines whether the check is on or off, and Gtk::STATE_FLAG_INCONSISTENT determines whether it should be marked as undefined.

<title>Typical checkmark rendering</title> <inlinegraphic fileref="checks.png" format="PNG">

Since gtkmm 3.0:

Parameters:

  context | A Gtk::StyleContext.
  cr | A #cairo_t.
  x | X origin of the rectangle.
  y | Y origin of the rectangle.
  width | Rectangle width.
  height | Rectangle height.

void Gtk::StyleContext::render_expander | ( | const ::Cairo::RefPtr< ::Cairo::Context > & | cr,
|  | double | x,
|  | double | y,
|  | double | width,
|  | double | height
| ) |  |

Renders an expander (as used in Gtk::TreeView and Gtk::Expander) in the area defined by x, y, width, height.

The state Gtk::STATE_FLAG_ACTIVE determines whether the expander is collapsed or expanded.

<title>Typical expander rendering</title> <inlinegraphic fileref="expanders.png" format="PNG">

Since gtkmm 3.0:

Parameters:

  context | A Gtk::StyleContext.
  cr | A #cairo_t.
  x | X origin of the rectangle.
  y | Y origin of the rectangle.
  width | Rectangle width.
  height | Rectangle height.

void Gtk::StyleContext::render_extension | ( | const ::Cairo::RefPtr< ::Cairo::Context > & | cr,
|  | double | x,
|  | double | y,
|  | double | width,
|  | double | height,
|  | PositionType | gap_side
| ) |  |

Renders a extension (as in a Gtk::Notebook tab) in the rectangle defined by x, y, width, height.

The side where the extension connects to is defined by gap_side.

<title>Typical extension rendering</title> <inlinegraphic fileref="extensions.png" format="PNG">

Since gtkmm 3.0:

Parameters:

  context | A Gtk::StyleContext.
  cr | A #cairo_t.
  x | X origin of the rectangle.
  y | Y origin of the rectangle.
  width | Rectangle width.
  height | Rectangle height.
  gap_side | Side where the gap is.

void Gtk::StyleContext::render_focus | ( | const ::Cairo::RefPtr< ::Cairo::Context > & | cr,
|  | double | x,
|  | double | y,
|  | double | width,
|  | double | height
| ) |  |

Renders a focus indicator on the rectangle determined by x, y, width, height.

<title>Typical focus rendering</title> <inlinegraphic fileref="focus.png" format="PNG">

Since gtkmm 3.0:

Parameters:

  context | A Gtk::StyleContext.
  cr | A #cairo_t.
  x | X origin of the rectangle.
  y | Y origin of the rectangle.
  width | Rectangle width.
  height | Rectangle height.

void Gtk::StyleContext::render_frame | ( | const ::Cairo::RefPtr< ::Cairo::Context > & | cr,
|  | double | x,
|  | double | y,
|  | double | width,
|  | double | height
| ) |  |

Renders a frame around the rectangle defined by x, y, width, height.

<title>Examples of frame rendering, showing the effect of <parameter>border-image</parameter>, <parameter>border-color</parameter>, <parameter>border-width</parameter>, <parameter>border-radius</parameter> and junctions</title> <inlinegraphic fileref="frames.png" format="PNG">

Since gtkmm 3.0:

Parameters:

  context | A Gtk::StyleContext.
  cr | A #cairo_t.
  x | X origin of the rectangle.
  y | Y origin of the rectangle.
  width | Rectangle width.
  height | Rectangle height.

void Gtk::StyleContext::render_frame_gap | ( | const ::Cairo::RefPtr< ::Cairo::Context > & | cr,
|  | double | x,
|  | double | y,
|  | double | width,
|  | double | height,
|  | PositionType | gap_side,
|  | double | xy0_gap,
|  | double | xy1_gap
| ) |  |

Renders a frame around the rectangle defined by ( x, y, width, height), leaving a gap on one side.

xy0_gap and xy1_gap will mean X coordinates for Gtk::POS_TOP and Gtk::POS_BOTTOM gap sides, and Y coordinates for Gtk::POS_LEFT and Gtk::POS_RIGHT.

<title>Typical rendering of a frame with a gap</title> <inlinegraphic fileref="frame-gap.png" format="PNG">

Since gtkmm 3.0:

Parameters:

  context | A Gtk::StyleContext.
  cr | A #cairo_t.
  x | X origin of the rectangle.
  y | Y origin of the rectangle.
  width | Rectangle width.
  height | Rectangle height.
  gap_side | Side where the gap is.
  xy0_gap | Initial coordinate (X or Y depending on gap_side) for the gap.
  xy1_gap | End coordinate (X or Y depending on gap_side) for the gap.

void Gtk::StyleContext::render_handle | ( | const ::Cairo::RefPtr< ::Cairo::Context > & | cr,
|  | double | x,
|  | double | y,
|  | double | width,
|  | double | height
| ) |  |

Renders a handle (as in Gtk::HandleBox, Gtk::Paned and Gtk::Window's resize grip), in the rectangle determined by x, y, width, height.

<title>Handles rendered for the paned and grip classes</title> <inlinegraphic fileref="handles.png" format="PNG">

Since gtkmm 3.0:

Parameters:

  context | A Gtk::StyleContext.
  cr | A #cairo_t.
  x | X origin of the rectangle.
  y | Y origin of the rectangle.
  width | Rectangle width.
  height | Rectangle height.

Glib::RefPtr<Gdk::Pixbuf> Gtk::StyleContext::render_icon_pixbuf | ( | const IconSource& | source,
|  | IconSize | size
| ) |  |

Renders the icon specified by source at the given size, returning the result in a pixbuf.

Since gtkmm 3.0:

Parameters:

  context | A Gtk::StyleContext.
  source | The Gtk::IconSource specifying the icon to render.
  size | The size to render the icon at. A size of (GtkIconSize) -1 means render at the size of the source and don't scale.

Returns:
  A newly-created Gdk::Pixbuf containing the rendered icon.

void Gtk::StyleContext::render_layout | ( | const ::Cairo::RefPtr< ::Cairo::Context > & | cr,
|  | double | x,
|  | double | y,
|  | PangoLayout * | layout
| ) |  |

Renders layout on the coordinates x, y.

Since gtkmm 3.0:

Parameters:

  context | A Gtk::StyleContext.
  cr | A #cairo_t.
  x | X origin.
  y | Y origin.
  layout | The Pango::Layout to render.

void Gtk::StyleContext::render_line | ( | const ::Cairo::RefPtr< ::Cairo::Context > & | cr,
|  | double | x0,
|  | double | y0,
|  | double | x1,
|  | double | y1
| ) |  |

Renders a line from (x0, y0) to (x1, y1).

Since gtkmm 3.0:

Parameters:

  context | A Gtk::StyleContext.
  cr | A #cairo_t.
  x0 | X coordinate for the origin of the line.
  y0 | Y coordinate for the origin of the line.
  x1 | X coordinate for the end of the line.
  y1 | Y coordinate for the end of the line.

void Gtk::StyleContext::render_option | ( | const ::Cairo::RefPtr< ::Cairo::Context > & | cr,
|  | double | x,
|  | double | y,
|  | double | width,
|  | double | height
| ) |  |

Renders an option mark (as in a Gtk::RadioButton), the Gtk::STATE_FLAG_ACTIVE state will determine whether the option is on or off, and Gtk::STATE_FLAG_INCONSISTENT whether it should be marked as undefined.

<title>Typical option mark rendering</title> <inlinegraphic fileref="options.png" format="PNG">

Since gtkmm 3.0:

Parameters:

  context | A Gtk::StyleContext.
  cr | A #cairo_t.
  x | X origin of the rectangle.
  y | Y origin of the rectangle.
  width | Rectangle width.
  height | Rectangle height.

void Gtk::StyleContext::render_slider | ( | const ::Cairo::RefPtr< ::Cairo::Context > & | cr,
|  | double | x,
|  | double | y,
|  | double | width,
|  | double | height,
|  | Orientation | orientation
| ) |  |

Renders a slider (as in Gtk::Scale) in the rectangle defined by x, y, width, height.

orientation defines whether the slider is vertical or horizontal.

<title>Typical slider rendering</title> <inlinegraphic fileref="sliders.png" format="PNG">

Since gtkmm 3.0:

Parameters:

  context | A Gtk::StyleContext.
  cr | A #cairo_t.
  x | X origin of the rectangle.
  y | Y origin of the rectangle.
  width | Rectangle width.
  height | Rectangle height.
  orientation | Orientation of the slider.

void Gtk::StyleContext::scroll_animations | ( | const Glib::RefPtr< Gdk::Window >& | window,
|  | int | dx,
|  | int | dy
| ) |  |

This function is analogous to gdk_window_scroll(), and should be called together with it so the invalidation areas for any ongoing animation are scrolled together with it.

Since gtkmm 3.0:

Parameters:

  window | A Gdk::Window used previously in notify_state_change().
  dx | Amount to scroll in the X axis.
  dy | Amount to scroll in the Y axis.

void Gtk::StyleContext::set_background | ( | const Glib::RefPtr< Gdk::Window >& | window | ) |

Sets the background of window to the background pattern or color specified in context for its current state.

Since gtkmm 3.0:

Parameters:

  window | A Gdk::Window.

void Gtk::StyleContext::set_direction | ( | TextDirection | direction | ) |

Sets the reading direction for rendering purposes.

If you are using a Gtk::StyleContext returned from Gtk::Widget::get_style_context(), you do not need to call this yourself.

Since gtkmm 3.0:

Parameters:

  direction | The new direction.

void Gtk::StyleContext::set_junction_sides | ( | JunctionSides | sides | ) |

Sets the sides where rendered elements (mostly through gtk_render_frame()) will visually connect with other visual elements.

This is merely a hint that may or may not be honored by theming engines.

Container widgets are expected to set junction hints as appropriate for their children, so it should not normally be necessary to call this function manually.

Since gtkmm 3.0:

Parameters:

  sides | Sides where rendered elements are visually connected to other elements.

void Gtk::StyleContext::set_parent | ( | const Glib::RefPtr< StyleContext >& | parent | ) |

Sets the parent style context for context.

The parent style context is used to implement inheritance of properties.

If you are using a Gtk::StyleContext returned from Gtk::Widget::get_style_context(), the parent will be set for you.

Since gtkmm 3.4:

Parameters:

  parent | The new parent or `0`.

void Gtk::StyleContext::set_path | ( | const WidgetPath& | path | ) |

Sets the Gtk::WidgetPath used for style matching.

As a consequence, the style will be regenerated to match the new given path.

If you are using a Gtk::StyleContext returned from Gtk::Widget::get_style_context(), you do not need to call this yourself.

Since gtkmm 3.0:

Parameters:

  path | A Gtk::WidgetPath.

void Gtk::StyleContext::set_screen | ( | const Glib::RefPtr< Gdk::Screen >& | screen | ) |

Attaches context to the given screen.

The screen is used to add style information from 'global' style providers, such as the screens Gtk::Settings instance.

If you are using a Gtk::StyleContext returned from Gtk::Widget::get_style_context(), you do not need to call this yourself.

Since gtkmm 3.0:

Parameters:

  screen | A Gdk::Screen.

void Gtk::StyleContext::set_state | ( | StateFlags | flags | ) |

Sets the state to be used when rendering with any of the gtk_render_*() functions.

Since gtkmm 3.0:

Parameters:

  flags | State to represent.

Glib::SignalProxy0< void > Gtk::StyleContext::signal_changed | ( |  | ) |

Slot Prototype:
  `void on_my_changed()`

bool Gtk::StyleContext::state_is_running | ( | StateType | state,
|  | gdouble * | progress
| ) |  |

Returns `true` if there is a transition animation running for the current region (see push_animatable_region()).

If progress is not `0`, the animation progress will be returned there, 0.0 means the state is closest to being unset, while 1.0 means it's closest to being set. This means transition animation will run from 0 to 1 when state is being set and from 1 to 0 when it's being unset.

Since gtkmm 3.0:

Parameters:

  state | A widget state.
  progress | Return location for the transition progress.

Returns:
  `true` if there is a running transition animation for state.

void Gtk::StyleContext::unset_parent | ( |  | ) |

## Friends And Related Function Documentation

Glib::RefPtr< Gtk::StyleContext > wrap | ( | GtkStyleContext * | object,
|  | bool | take_copy = `false`
| ) |  | `[related]`

A Glib::wrap() method for this object.

Parameters:

  object | The C instance.
  take_copy | False if the result should take ownership of the C instance. True if it should take a new copy or ref.

Returns:
  A C++ instance that wraps this C instance.

The documentation for this class was generated from the following file:

- gtkmm/stylecontext.h