gtkmm 3.24.7
Public Member Functions | Static Public Member Functions | Protected Member Functions | Related Functions | List of all members
Gtk::StyleContext Class Reference

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

#include <gtkmm/stylecontext.h>

Inherits Glib::Object.

Public Member Functions

 StyleContext (StyleContext && src) noexcept
 
StyleContextoperator= (StyleContext && src) noexcept
 
 ~StyleContext () noexcept override
 
GtkStyleContext * gobj ()
 Provides access to the underlying C GObject. More...
 
const GtkStyleContext * gobj () const
 Provides access to the underlying C GObject. More...
 
GtkStyleContext * gobj_copy ()
 Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs. More...
 
void add_provider (const Glib::RefPtr< StyleProvider > & provider, guint priority)
 Adds a style provider to context, to be used in style construction. More...
 
void remove_provider (const Glib::RefPtr< StyleProvider > & provider)
 Removes provider from the style providers list in context. More...
 
void context_save ()
 Saves the context state, so temporary modifications done through add_class(), remove_class(), set_state(), etc. More...
 
void context_restore ()
 Restores context state to a previous stage. More...
 
void set_state (StateFlags flags)
 Sets the state to be used for style matching. More...
 
StateFlags get_state () const
 Returns the state used for style matching. More...
 
void set_scale (int scale)
 Sets the scale to use when getting image assets for the style. More...
 
int get_scale () const
 Returns the scale used for assets. More...
 
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()). More...
 
void set_path (const WidgetPath & path)
 Sets the Gtk::WidgetPath used for style matching. More...
 
WidgetPath get_path () const
 Returns the widget path used for style matching. More...
 
void set_parent (const Glib::RefPtr< StyleContext > & parent)
 Sets the parent style context for context. More...
 
void unset_parent ()
 
Glib::RefPtr< StyleContextget_parent ()
 Gets the parent context set via set_parent(). More...
 
Glib::RefPtr< const StyleContextget_parent () const
 Gets the parent context set via set_parent(). More...
 
std::vector< Glib::ustring > list_classes () const
 Returns the list of classes currently defined in context. More...
 
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. More...
 
void remove_class (const Glib::ustring & class_name)
 Removes class_name from context. More...
 
bool has_class (const Glib::ustring & class_name)
 Returns true if context currently has defined the given class name. More...
 
GList * list_regions ()
 Returns the list of regions currently defined in context. More...
 
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. More...
 
void remove_region (const Glib::ustring & region_name)
 Removes a region from context. More...
 
bool has_region (const Glib::ustring & region_name, RegionFlags & flags_return)
 Returns true if context has the region defined. More...
 
template<class PropertyType >
void get_style_property (const Glib::ustring & property_name, PropertyType & value) const
 Gets the value of a style property. More...
 
void get_style_property_value (const Glib::ustring & property_name, Glib::ValueBase & value) const
 Gets the value for a widget style property. More...
 
Glib::RefPtr< IconSetlookup_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 nullptr. More...
 
void set_screen (const Glib::RefPtr< Gdk::Screen > & screen)
 Attaches context to the given screen. More...
 
Glib::RefPtr< Gdk::Screenget_screen ()
 Returns the Gdk::Screen to which context is attached. More...
 
Glib::RefPtr< const Gdk::Screenget_screen () const
 Returns the Gdk::Screen to which context is attached. More...
 
void set_direction (TextDirection direction)
 Sets the reading direction for rendering purposes. More...
 
TextDirection get_direction () const
 Returns the widget direction used for rendering. More...
 
void set_junction_sides (JunctionSides sides)
 Sets the sides where rendered elements (mostly through gtk_render_frame()) will visually connect with other visual elements. More...
 
JunctionSides get_junction_sides () const
 Returns the sides where rendered elements connect visually with others. More...
 
void set_frame_clock (const Glib::RefPtr< Gdk::FrameClock > & frame_clock)
 Attaches context to the given frame clock. More...
 
Glib::RefPtr< Gdk::FrameClockget_frame_clock ()
 Returns the Gdk::FrameClock to which context is attached. More...
 
Glib::RefPtr< const Gdk::FrameClockget_frame_clock () const
 Returns the Gdk::FrameClock to which context is attached. More...
 
bool lookup_color (const Glib::ustring & color_name, Gdk::RGBA & color)
 Looks up and resolves a color name in the context color map. More...
 
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. More...
 
void cancel_animations (gpointer region_id)
 Stops all running animations for region_id and all animatable regions underneath. More...
 
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. More...
 
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. More...
 
void pop_animatable_region ()
 Pops an animatable region from context. More...
 
Gdk::RGBA get_color (StateFlags state=(StateFlags) 0) const
 Gets the foreground color for a given state. More...
 
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. More...
 
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. More...
 
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. More...
 
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). More...
 
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_CHECKED state will determine whether the option is on or off, and Gtk::STATE_FLAG_INCONSISTENT whether it should be marked as undefined. More...
 
void render_arrow (const ::Cairo::RefPtr< ::Cairo::Context > & cr, double angle, double x, double y, double size)
 Renders an arrow pointing to angle. More...
 
void render_background (const ::Cairo::RefPtr< ::Cairo::Context > & cr, double x, double y, double width, double height)
 Renders the background of an element. More...
 
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. More...
 
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. More...
 
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. More...
 
void render_layout (const ::Cairo::RefPtr< ::Cairo::Context > & cr, double x, double y, PangoLayout * layout)
 Renders layout on the coordinates x, y. More...
 
void render_layout (const ::Cairo::RefPtr< ::Cairo::Context > & cr, double x, double y, const Glib::RefPtr< Pango::Layout > & layout)
 Renders layout on the coordinates x, y. More...
 
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). More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
void render_activity (const ::Cairo::RefPtr< ::Cairo::Context > & cr, double x, double y, double width, double height)
 Renders an activity indicator (such as in Gtk::Spinner). More...
 
Glib::RefPtr< Gdk::Pixbufrender_icon_pixbuf (const IconSource & source, IconSize size)
 Renders the icon specified by source at the given size, returning the result in a pixbuf. More...
 
void render_icon (const ::Cairo::RefPtr< ::Cairo::Context > & cr, const Glib::RefPtr< Gdk::Pixbuf > & pixbuf, double x, double y)
 Renders the icon in pixbuf at the specified x and y coordinates. More...
 
void render_insertion_cursor (const ::Cairo::RefPtr< ::Cairo::Context > & cr, double x, double y, const Glib::RefPtr< Pango::Layout > & layout, int index, Pango::Direction direction)
 Draws a text caret on cr at the specified index of layout. More...
 
Glib::SignalProxy< void > signal_changed ()
 
Glib::PropertyProxy< Glib::RefPtr< Gdk::Screen > > property_screen ()
 The associated GdkScreen. More...
 
Glib::PropertyProxy_ReadOnly< Glib::RefPtr< Gdk::Screen > > property_screen () const
 The associated GdkScreen. More...
 
Glib::PropertyProxy< TextDirectionproperty_direction ()
 Text direction. More...
 
Glib::PropertyProxy_ReadOnly< TextDirectionproperty_direction () const
 Text direction. More...
 
Glib::PropertyProxy< Glib::RefPtr< Gdk::FrameClock > > property_paint_clock ()
 The associated GdkFrameClock. More...
 
Glib::PropertyProxy_ReadOnly< Glib::RefPtr< Gdk::FrameClock > > property_paint_clock () const
 The associated GdkFrameClock. More...
 
Glib::PropertyProxy< Glib::RefPtr< StyleContext > > property_parent ()
 Sets or gets the style context’s parent. More...
 
Glib::PropertyProxy_ReadOnly< Glib::RefPtr< StyleContext > > property_parent () const
 Sets or gets the style context’s parent. More...
 

Static Public Member Functions

static GType get_type ()
 Get the GType for this class, for use with the underlying GObject type system. More...
 
static Glib::RefPtr< StyleContextcreate ()
 
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. More...
 
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. More...
 

Protected Member Functions

 StyleContext ()
 
virtual void on_changed ()
 This is a default handler for the signal signal_changed(). More...
 

Related Functions

(Note that these are not member functions.)

Glib::RefPtr< Gtk::StyleContextwrap (GtkStyleContext * object, bool take_copy=false)
 A Glib::wrap() method for this object. More...
 

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

◆ StyleContext() [1/2]

Gtk::StyleContext::StyleContext ( StyleContext &&  src)
noexcept

◆ ~StyleContext()

Gtk::StyleContext::~StyleContext ( )
overridenoexcept

◆ StyleContext() [2/2]

Gtk::StyleContext::StyleContext ( )
protected

Member Function Documentation

◆ add_class()

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 a “search” class, would be matched by:

[C example ellipted]

While any widget defining a “search” class would be matched by:

[C example ellipted]

Since gtkmm 3.0:
Parameters
class_nameClass name to use in styling.

◆ add_provider()

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 that a style provider added by this function only affects the style of the widget to which context belongs. If you want to affect the style of all widgets, use add_provider_for_screen().

Note
If both priorities are the same, a Gtk::StyleProvider added through this function takes precedence over another added through add_provider_for_screen().
Since gtkmm 3.0:
Parameters
providerA Gtk::StyleProvider.
priorityThe 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.

◆ add_provider_for_screen()

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.
Since gtkmm 3.0:
Parameters
screenA Gdk::Screen.
providerA Gtk::StyleProvider.
priorityThe 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.

◆ add_region()

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:

[C example ellipted]

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

[C example ellipted]

would apply to even and odd rows, respectively.

Region names must only contain lowercase letters and “-”, starting always with a lowercase letter.

Since gtkmm 3.0:

Deprecated: 3.14

Deprecated:
There is no replacement.
Parameters
region_nameRegion name to use in styling.
flagsFlags that apply to the region.

◆ cancel_animations()

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

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

A nullptr 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:

Deprecated: 3.6: This function does nothing.

Deprecated:
This function does nothing.
Parameters
region_idAnimatable region to stop, or nullptr. See push_animatable_region().

◆ context_restore()

void Gtk::StyleContext::context_restore ( )

Restores context state to a previous stage.

See save().

Since gtkmm 3.0:

◆ context_save()

void Gtk::StyleContext::context_save ( )

Saves the context state, so temporary modifications done through add_class(), remove_class(), set_state(), etc.

can quickly be reverted in one go through restore().

The matching call to restore() must be done before GTK returns to the main loop.

Since gtkmm 3.0:

◆ create()

static Glib::RefPtr< StyleContext > Gtk::StyleContext::create ( )
static

◆ get_background_color()

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

◆ get_border()

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

◆ get_border_color()

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

◆ get_color()

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

Gets the foreground color for a given state.

Since gtkmm 3.0:
Parameters
stateState to retrieve the color for.
Returns
The foreground color for the given state.

◆ get_direction()

TextDirection Gtk::StyleContext::get_direction ( ) const

Returns the widget direction used for rendering.

Since gtkmm 3.0:

Deprecated: 3.8: Use get_state() and check for Gtk::STATE_FLAG_DIR_LTR and Gtk::STATE_FLAG_DIR_RTL instead.

Deprecated:
Use get_state() and check for Gtk::STATE_FLAG_DIR_LTR and Gtk::STATE_FLAG_DIR_RTL instead.
Returns
The widget direction.

◆ get_font()

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

Returns the font description for a given state.

Since gtkmm 3.0:
Parameters
stateState to retrieve the font for.
Returns
The Pango::FontDescription for the given state.

◆ get_frame_clock() [1/2]

Glib::RefPtr< Gdk::FrameClock > Gtk::StyleContext::get_frame_clock ( )

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

Since gtkmm 3.24:
Returns
A Gdk::FrameClock, or nullptr if context does not have an attached frame clock.

◆ get_frame_clock() [2/2]

Glib::RefPtr< const Gdk::FrameClock > Gtk::StyleContext::get_frame_clock ( ) const

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

Since gtkmm 3.24:
Returns
A Gdk::FrameClock, or nullptr if context does not have an attached frame clock.

◆ get_junction_sides()

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.

◆ get_margin()

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

◆ get_padding()

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

◆ get_parent() [1/2]

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 nullptr.

◆ get_parent() [2/2]

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 nullptr.

◆ get_path()

WidgetPath Gtk::StyleContext::get_path ( ) const

Returns the widget path used for style matching.

Since gtkmm 3.0:
Returns
A Gtk::WidgetPath.

◆ get_scale()

int Gtk::StyleContext::get_scale ( ) const

Returns the scale used for assets.

Since gtkmm 3.10:
Returns
The scale.

◆ get_screen() [1/2]

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

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

Returns
A Gdk::Screen.

◆ get_screen() [2/2]

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

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

Returns
A Gdk::Screen.

◆ get_state()

StateFlags Gtk::StyleContext::get_state ( ) const

Returns the state used for style matching.

This method should only be used to retrieve the Gtk::StateFlags to pass to Gtk::StyleContext methods, like get_padding(). If you need to retrieve the current state of a Gtk::Widget, use Gtk::Widget::get_state_flags().

Since gtkmm 3.0:
Returns
The state flags.

◆ get_style_property()

template <class PropertyType >
void Gtk::StyleContext::get_style_property ( const Glib::ustring &  property_name,
PropertyType &  value 
) const

Gets the value of a style property.

Parameters
property_nameThe name of a style property.
valueLocation to return the property value.

◆ get_style_property_value()

void Gtk::StyleContext::get_style_property_value ( const Glib::ustring &  property_name,
Glib::ValueBase &  value 
) const

Gets the value for a widget style property.

When value is no longer needed, Glib::value_unset() must be called to free any allocated memory.

Parameters
property_nameThe name of the widget style property.
valueReturn location for the property value.

◆ get_type()

static GType Gtk::StyleContext::get_type ( )
static

Get the GType for this class, for use with the underlying GObject type system.

◆ gobj() [1/2]

GtkStyleContext * Gtk::StyleContext::gobj ( )
inline

Provides access to the underlying C GObject.

◆ gobj() [2/2]

const GtkStyleContext * Gtk::StyleContext::gobj ( ) const
inline

Provides access to the underlying C GObject.

◆ gobj_copy()

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.

◆ has_class()

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_nameA class name.
Returns
true if context has class_name defined.

◆ has_region()

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 nullptr, it is set to the flags affecting the region.

Since gtkmm 3.0:

Deprecated: 3.14

Deprecated:
There is no replacement.
Parameters
region_nameA region name.
flags_returnReturn location for region flags.
Returns
true if region is defined.

◆ invalidate()

void Gtk::StyleContext::invalidate ( )

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

It is useful if you modify the context and need the new information immediately.

Since gtkmm 3.0:

Deprecated: 3.12: Style contexts are invalidated automatically.

Deprecated:
Style contexts are invalidated automatically.

◆ list_classes()

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.

◆ list_regions()

GList * Gtk::StyleContext::list_regions ( )

Returns the list of regions currently defined in context.

Since gtkmm 3.0:

Deprecated: 3.14

Deprecated:
There is no replacement.
Returns
A List of strings with the currently defined regions.

◆ lookup_color()

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_nameColor name to lookup.
colorReturn location for the looked up color.
Returns
true if color_name was found and resolved, false otherwise.

◆ lookup_icon_set()

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 nullptr.

Deprecated: 3.10: Use Gtk::IconTheme::lookup_icon() instead.

Deprecated:
Use IconTheme::lookup_icon() instead.
Parameters
stock_idAn icon name.
Returns
The looked up Gtk::IconSet, or nullptr.

◆ notify_state_change()

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 nullptr, 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:

[C example ellipted]

Can be handled in the CSS file like this:

[C example ellipted]

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:

Deprecated: 3.6: This function does nothing.

Deprecated:
This function does nothing.
Parameters
windowA Gdk::Window.
region_idAnimatable region to notify on, or nullptr. See push_animatable_region().
stateState to trigger transition for.
state_valuetrue if state is the state we are changing to, false if we are changing away from it.

◆ on_changed()

virtual void Gtk::StyleContext::on_changed ( )
protectedvirtual

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

◆ operator=()

StyleContext & Gtk::StyleContext::operator= ( StyleContext &&  src)
noexcept

◆ pop_animatable_region()

void Gtk::StyleContext::pop_animatable_region ( )

Pops an animatable region from context.

See push_animatable_region().

Since gtkmm 3.0:

Deprecated: 3.6: This function does nothing.

Deprecated:
This function does nothing.

◆ property_direction() [1/2]

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

Text direction.

Deprecated:
Use set_state()/get_state() and Gtk::STATE_FLAG_DIR_LTR/GtkSTATE_FLAG_DIR_RTL instead.

Default value: Gtk::TEXT_DIR_LTR

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

◆ property_direction() [2/2]

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

Text direction.

Deprecated:
Use set_state()/get_state() and Gtk::STATE_FLAG_DIR_LTR/GtkSTATE_FLAG_DIR_RTL instead.

Default value: Gtk::TEXT_DIR_LTR

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

◆ property_paint_clock() [1/2]

Glib::PropertyProxy< Glib::RefPtr< Gdk::FrameClock > > Gtk::StyleContext::property_paint_clock ( )

The associated GdkFrameClock.

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

◆ property_paint_clock() [2/2]

Glib::PropertyProxy_ReadOnly< Glib::RefPtr< Gdk::FrameClock > > Gtk::StyleContext::property_paint_clock ( ) const

The associated GdkFrameClock.

Since gtkmm 3.24:
Returns
A PropertyProxy_ReadOnly that allows you to get the value of the property, or receive notification when the value of the property changes.

◆ property_parent() [1/2]

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

Sets or gets the style context’s parent.

See Gtk::StyleContext::set_parent() for details.

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

◆ property_parent() [2/2]

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

Sets or gets the style context’s parent.

See Gtk::StyleContext::set_parent() for details.

Since gtkmm 3.4:
Returns
A PropertyProxy_ReadOnly that allows you to get the value of the property, or receive notification when the value of the property changes.

◆ property_screen() [1/2]

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

The associated GdkScreen.

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

◆ property_screen() [2/2]

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

The associated GdkScreen.

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

◆ push_animatable_region()

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 themes can uniquely identify rendered elements subject to a state transition.

Since gtkmm 3.0:

Deprecated: 3.6: This function does nothing.

Deprecated:
This function does nothing.
Parameters
region_idUnique identifier for the animatable region.

◆ remove_class()

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

Removes class_name from context.

Since gtkmm 3.0:
Parameters
class_nameClass name to remove.

◆ remove_provider()

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

Removes provider from the style providers list in context.

Since gtkmm 3.0:
Parameters
providerA Gtk::StyleProvider.

◆ remove_provider_for_screen()

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
screenA Gdk::Screen.
providerA Gtk::StyleProvider.

◆ remove_region()

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

Removes a region from context.

Since gtkmm 3.0:

Deprecated: 3.14

Deprecated:
There is no replacement.
Parameters
region_nameRegion name to unset.

◆ render_activity()

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

Renders an activity indicator (such as in Gtk::Spinner).

The state Gtk::STATE_FLAG_CHECKED determines whether there is activity going on.

Since gtkmm 3.0:
Parameters
crA #cairo_t.
xX origin of the rectangle.
yY origin of the rectangle.
widthRectangle width.
heightRectangle height.

◆ render_arrow()

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.

Typical arrow rendering at 0, 1⁄2 π;, π; and 3⁄2 π:

Since gtkmm 3.0:
Parameters
crA #cairo_t.
angleArrow angle from 0 to 2 * G_PI, being 0 the arrow pointing to the north.
xX origin of the render area.
yY origin of the render area.
sizeSquare side for render area.

◆ render_background()

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.

Typical background rendering, showing the effect of background-image, border-width and border-radius:

Since gtkmm 3.0:
Parameters
crA #cairo_t.
xX origin of the rectangle.
yY origin of the rectangle.
widthRectangle width.
heightRectangle height.

◆ render_check()

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_CHECKED state determines whether the check is on or off, and Gtk::STATE_FLAG_INCONSISTENT determines whether it should be marked as undefined.

Typical checkmark rendering:

Since gtkmm 3.0:
Parameters
crA #cairo_t.
xX origin of the rectangle.
yY origin of the rectangle.
widthRectangle width.
heightRectangle height.

◆ render_expander()

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_CHECKED determines whether the expander is collapsed or expanded.

Typical expander rendering:

Since gtkmm 3.0:
Parameters
crA #cairo_t.
xX origin of the rectangle.
yY origin of the rectangle.
widthRectangle width.
heightRectangle height.

◆ render_extension()

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.

Typical extension rendering:

Since gtkmm 3.0:
Parameters
crA #cairo_t.
xX origin of the rectangle.
yY origin of the rectangle.
widthRectangle width.
heightRectangle height.
gap_sideSide where the gap is.

◆ render_focus()

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.

Typical focus rendering:

Since gtkmm 3.0:
Parameters
crA #cairo_t.
xX origin of the rectangle.
yY origin of the rectangle.
widthRectangle width.
heightRectangle height.

◆ render_frame()

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.

Examples of frame rendering, showing the effect of border-image, border-color, border-width, border-radius and junctions:

Since gtkmm 3.0:
Parameters
crA #cairo_t.
xX origin of the rectangle.
yY origin of the rectangle.
widthRectangle width.
heightRectangle height.

◆ render_frame_gap()

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.

Typical rendering of a frame with a gap:

Since gtkmm 3.0:

Deprecated: 3.24: Use gtk_render_frame() instead. Themes can create gaps by omitting borders via CSS.

Deprecated:
Use render_frame() instead. Themes can create gaps by omitting borders via CSS.
Parameters
crA #cairo_t.
xX origin of the rectangle.
yY origin of the rectangle.
widthRectangle width.
heightRectangle height.
gap_sideSide where the gap is.
xy0_gapInitial coordinate (X or Y depending on gap_side) for the gap.
xy1_gapEnd coordinate (X or Y depending on gap_side) for the gap.

◆ render_handle()

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.

Handles rendered for the paned and grip classes:

Since gtkmm 3.0:
Parameters
crA #cairo_t.
xX origin of the rectangle.
yY origin of the rectangle.
widthRectangle width.
heightRectangle height.

◆ render_icon()

void Gtk::StyleContext::render_icon ( const ::Cairo::RefPtr< ::Cairo::Context > &  cr,
const Glib::RefPtr< Gdk::Pixbuf > &  pixbuf,
double  x,
double  y 
)

Renders the icon in pixbuf at the specified x and y coordinates.

This function will render the icon in pixbuf at exactly its size, regardless of scaling factors, which may not be appropriate when drawing on displays with high pixel densities.

You probably want to use gtk_render_icon_surface() instead, if you already have a Cairo surface.

Since gtkmm 3.2:
Parameters
crA #cairo_t.
pixbufA Gdk::Pixbuf containing the icon to draw.
xX position for the pixbuf.
yY position for the pixbuf.

◆ render_icon_pixbuf()

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:

Deprecated: 3.10: Use Gtk::IconTheme::load_icon() instead.

Deprecated:
Use IconTheme::load_icon() instead.
Parameters
sourceThe Gtk::IconSource specifying the icon to render.
sizeThe size (Gtk::IconSize) 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.

◆ render_insertion_cursor()

void Gtk::StyleContext::render_insertion_cursor ( const ::Cairo::RefPtr< ::Cairo::Context > &  cr,
double  x,
double  y,
const Glib::RefPtr< Pango::Layout > &  layout,
int  index,
Pango::Direction  direction 
)

Draws a text caret on cr at the specified index of layout.

Since gtkmm 3.4:
Parameters
crA #cairo_t.
xX origin.
yY origin.
layoutThe Pango::Layout of the text.
indexThe index in the Pango::Layout.
directionThe Pango::Direction of the text.

◆ render_layout() [1/2]

void Gtk::StyleContext::render_layout ( const ::Cairo::RefPtr< ::Cairo::Context > &  cr,
double  x,
double  y,
const Glib::RefPtr< Pango::Layout > &  layout 
)

Renders layout on the coordinates x, y.

Since gtkmm 3.0:
Parameters
crA #cairo_t.
xX origin.
yY origin.
layoutThe Pango::Layout to render.

◆ render_layout() [2/2]

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:
Deprecated:
Use the render_layout() taking a const Glib::RefPtr<Pango::Layout>& layout.
Parameters
crA #cairo_t.
xX origin.
yY origin.
layoutThe Pango::Layout to render.

◆ render_line()

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
crA #cairo_t.
x0X coordinate for the origin of the line.
y0Y coordinate for the origin of the line.
x1X coordinate for the end of the line.
y1Y coordinate for the end of the line.

◆ render_option()

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_CHECKED state will determine whether the option is on or off, and Gtk::STATE_FLAG_INCONSISTENT whether it should be marked as undefined.

Typical option mark rendering:

Since gtkmm 3.0:
Parameters
crA #cairo_t.
xX origin of the rectangle.
yY origin of the rectangle.
widthRectangle width.
heightRectangle height.

◆ render_slider()

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.

Typical slider rendering:

Since gtkmm 3.0:
Parameters
crA #cairo_t.
xX origin of the rectangle.
yY origin of the rectangle.
widthRectangle width.
heightRectangle height.
orientationOrientation of the slider.

◆ scroll_animations()

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:

Deprecated: 3.6: This function does nothing.

Deprecated:
This function does nothing.
Parameters
windowA Gdk::Window used previously in notify_state_change().
dxAmount to scroll in the X axis.
dyAmount to scroll in the Y axis.

◆ set_background()

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:

Deprecated: 3.18: Use gtk_render_background() instead. Note that clients still using this function are now responsible for calling this function again whenever context is invalidated.

Deprecated:
Use render_background() instead. Note that clients still using this function are now responsible for calling this function again whenever the context is invalidated.
Parameters
windowA Gdk::Window.

◆ set_direction()

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:

Deprecated: 3.8: Use set_state() with Gtk::STATE_FLAG_DIR_LTR and Gtk::STATE_FLAG_DIR_RTL instead.

Deprecated:
Use set_state() with Gtk::STATE_FLAG_DIR_LTR and Gtk::STATE_FLAG_DIR_RTL instead.
Parameters
directionThe new direction.

◆ set_frame_clock()

void Gtk::StyleContext::set_frame_clock ( const Glib::RefPtr< Gdk::FrameClock > &  frame_clock)

Attaches context to the given frame clock.

The frame clock is used for the timing of animations.

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.24:
Parameters
frame_clockA Gdk::FrameClock.

◆ set_junction_sides()

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 themes.

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
sidesSides where rendered elements are visually connected to other elements.

◆ set_parent()

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
parentThe new parent or nullptr.

◆ set_path()

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
pathA Gtk::WidgetPath.

◆ set_scale()

void Gtk::StyleContext::set_scale ( int  scale)

Sets the scale to use when getting image assets for the style.

Since gtkmm 3.10:
Parameters
scaleScale.

◆ set_screen()

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 screen’s 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
screenA Gdk::Screen.

◆ set_state()

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

Sets the state to be used for style matching.

Since gtkmm 3.0:
Parameters
flagsState to represent.

◆ signal_changed()

Glib::SignalProxy< void > Gtk::StyleContext::signal_changed ( )
Slot Prototype:
void on_my_changed()

Flags: Run First

The signal_changed() signal is emitted when there is a change in the Gtk::StyleContext.

For a Gtk::StyleContext returned by Gtk::Widget::get_style_context(), the Gtk::Widget::signal_style_updated() signal/vfunc might be more convenient to use.

This signal is useful when using the theming layer standalone.

Since gtkmm 3.0:

◆ state_is_running()

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 nullptr, 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:

Deprecated: 3.6: This function always returns false

Deprecated:
This function always returns false.
Parameters
stateA widget state.
progressReturn location for the transition progress.
Returns
true if there is a running transition animation for state.

◆ unset_parent()

void Gtk::StyleContext::unset_parent ( )

Friends And Related Function Documentation

◆ wrap()

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

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

Parameters
objectThe C instance.
take_copyFalse 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.