summaryrefslogtreecommitdiff
path: root/docs/reference
diff options
context:
space:
mode:
authorTristan Van Berkom <tristan.van.berkom@gmail.com>2010-12-05 00:36:37 +0900
committerTristan Van Berkom <tristan.van.berkom@gmail.com>2010-12-05 00:36:37 +0900
commit0d786985a368d88e8ab4e45fc3607efc5e773732 (patch)
tree5dfc8ec0e27ac3c23b9dc2eb097018971c28fd6b /docs/reference
parent1d3961b34258a7a8c97ca12993220554369fccb1 (diff)
parentcd76b057e9693b6919f4ccbe40ce205efc8d3caf (diff)
downloadgtk+-0d786985a368d88e8ab4e45fc3607efc5e773732.tar.gz
Merge branch 'master' into treeview-refactor
Conflicts: gtk/gtkmarshalers.list tests/Makefile.am
Diffstat (limited to 'docs/reference')
-rw-r--r--docs/reference/gdk/gdk-docs.sgml1
-rw-r--r--docs/reference/gdk/gdk3-overrides.txt23
-rw-r--r--docs/reference/gdk/gdk3-sections.txt45
-rw-r--r--docs/reference/gdk/gdk3.types3
-rw-r--r--docs/reference/gtk/Makefile.am29
-rw-r--r--docs/reference/gtk/gtk-docs.sgml23
-rw-r--r--docs/reference/gtk/gtk3-sections.txt345
-rw-r--r--docs/reference/gtk/gtk3.types4
-rw-r--r--docs/reference/gtk/images/arrows.pngbin0 -> 549 bytes
-rw-r--r--docs/reference/gtk/images/background.pngbin0 -> 1400 bytes
-rw-r--r--docs/reference/gtk/images/border1.pngbin0 -> 961 bytes
-rw-r--r--docs/reference/gtk/images/border2.pngbin0 -> 1684 bytes
-rw-r--r--docs/reference/gtk/images/border3.pngbin0 -> 2713 bytes
-rw-r--r--docs/reference/gtk/images/checks.pngbin0 -> 529 bytes
-rw-r--r--docs/reference/gtk/images/ease-in-out.pngbin0 -> 8955 bytes
-rw-r--r--docs/reference/gtk/images/ease-in.pngbin0 -> 8862 bytes
-rw-r--r--docs/reference/gtk/images/ease-out.pngbin0 -> 8819 bytes
-rw-r--r--docs/reference/gtk/images/ease.pngbin0 -> 9216 bytes
-rw-r--r--docs/reference/gtk/images/expanders.pngbin0 -> 697 bytes
-rw-r--r--docs/reference/gtk/images/extensions.pngbin0 -> 475 bytes
-rw-r--r--docs/reference/gtk/images/focus.pngbin0 -> 371 bytes
-rw-r--r--docs/reference/gtk/images/frame-gap.pngbin0 -> 322 bytes
-rw-r--r--docs/reference/gtk/images/frames.pngbin0 -> 3393 bytes
-rw-r--r--docs/reference/gtk/images/gradient1.pngbin0 -> 722 bytes
-rw-r--r--docs/reference/gtk/images/gradient2.pngbin0 -> 397 bytes
-rw-r--r--docs/reference/gtk/images/gradient3.pngbin0 -> 2579 bytes
-rw-r--r--docs/reference/gtk/images/gradient4.pngbin0 -> 4901 bytes
-rw-r--r--docs/reference/gtk/images/handles.pngbin0 -> 660 bytes
-rw-r--r--docs/reference/gtk/images/linear.pngbin0 -> 8693 bytes
-rw-r--r--docs/reference/gtk/images/options.pngbin0 -> 1048 bytes
-rw-r--r--docs/reference/gtk/images/slices.pngbin0 -> 1217 bytes
-rw-r--r--docs/reference/gtk/images/sliders.pngbin0 -> 470 bytes
-rw-r--r--docs/reference/gtk/migrating-2to3.xml6
-rw-r--r--docs/reference/gtk/migrating-ClientSideWindows.sgml14
-rw-r--r--docs/reference/gtk/migrating-GtkStyleContext.xml631
-rw-r--r--docs/reference/gtk/tmpl/gtkenums.sgml23
-rw-r--r--docs/reference/gtk/tmpl/gtkrc.sgml4
37 files changed, 1054 insertions, 97 deletions
diff --git a/docs/reference/gdk/gdk-docs.sgml b/docs/reference/gdk/gdk-docs.sgml
index a4f4d39123..c77b8be902 100644
--- a/docs/reference/gdk/gdk-docs.sgml
+++ b/docs/reference/gdk/gdk-docs.sgml
@@ -22,7 +22,6 @@
<xi:include href="xml/gdkdisplaymanager.xml" />
<xi:include href="xml/gdkscreen.xml" />
<xi:include href="xml/regions.xml" />
- <xi:include href="xml/drawing.xml" />
<xi:include href="xml/colors.xml" />
<xi:include href="xml/rgba_colors.xml" />
<xi:include href="xml/visuals.xml" />
diff --git a/docs/reference/gdk/gdk3-overrides.txt b/docs/reference/gdk/gdk3-overrides.txt
index bcc85bba84..3ba60be322 100644
--- a/docs/reference/gdk/gdk3-overrides.txt
+++ b/docs/reference/gdk/gdk3-overrides.txt
@@ -1,27 +1,4 @@
-# GdkPixmap, GdkBitmap and GdkDrawable are the same as GdkWindow.
-<STRUCT>
-<NAME>GdkWindow</NAME>
-struct GdkPixmap
-{
- gpointer user_data;
-};
-</STRUCT>
-<STRUCT>
-<NAME>GdkPixmap</NAME>
-struct GdkPixmap
-{
- gpointer user_data;
-};
-</STRUCT>
-<STRUCT>
-<NAME>GdkDrawable</NAME>
-struct GdkDrawable
-{
- gpointer user_data;
-};
-</STRUCT>
-
# GdkAtom is an opaque typedef
<STRUCT>
<NAME>GdkAtom</NAME>
diff --git a/docs/reference/gdk/gdk3-sections.txt b/docs/reference/gdk/gdk3-sections.txt
index 40bcaaf67d..f4b7e32999 100644
--- a/docs/reference/gdk/gdk3-sections.txt
+++ b/docs/reference/gdk/gdk3-sections.txt
@@ -257,6 +257,8 @@ gdk_color_to_string
<SUBSECTION Standard>
GDK_TYPE_COLOR
+<SUBSECTION Private>
+gdk_color_get_type
</SECTION>
<SECTION>
@@ -272,25 +274,9 @@ gdk_rgba_to_string
<SUBSECTION Standard>
GDK_TYPE_RGBA
-</SECTION>
-
-<SECTION>
-<TITLE>Drawing Primitives</TITLE>
-<FILE>drawing</FILE>
-GdkDrawable
-gdk_drawable_get_clip_region
-gdk_drawable_get_visible_region
-
-<SUBSECTION Standard>
-GDK_DRAWABLE
-GDK_DRAWABLE_GET_CLASS
-GDK_TYPE_DRAWABLE
-GDK_IS_DRAWABLE
-GDK_DRAWABLE_CLASS
-GDK_IS_DRAWABLE_CLASS
<SUBSECTION Private>
-GdkDrawableClass
+gdk_rgba_get_type
</SECTION>
<SECTION>
@@ -331,6 +317,7 @@ GDK_VISUAL_GET_CLASS
<SUBSECTION Private>
GdkVisualClass
+GdkVisualPrivate
gdk_visual_get_type
</SECTION>
@@ -339,7 +326,7 @@ gdk_visual_get_type
<FILE>windows</FILE>
GdkWindow
GdkWindowType
-GdkWindowClass
+GdkWindowWindowClass
GdkWindowHints
GdkGeometry
GdkGravity
@@ -397,9 +384,11 @@ gdk_window_constrain_size
gdk_window_beep
<SUBSECTION>
+gdk_window_get_clip_region
gdk_window_begin_paint_rect
gdk_window_begin_paint_region
gdk_window_end_paint
+gdk_window_get_visible_region
<SUBSECTION>
gdk_window_invalidate_rect
@@ -524,12 +513,12 @@ GDK_TYPE_WM_DECORATION
GDK_TYPE_WM_FUNCTION
<SUBSECTION Private>
-gdk_window_object_get_type
-gdk_drawable_get_type
+gdk_window_get_type
+gdk_window_window_class_get_type
GdkWindowObject
-GdkWindowObjectClass
+GdkWindowClass
GdkWindowImpl
-GdkWindowImplIface
+GdkWindowImplClass
GdkWindowRedirect
gdk_window_impl_get_type
gdk_window_freeze_toplevel_updates_libgtk_only
@@ -616,7 +605,6 @@ gdk_cairo_set_source_pixbuf
gdk_cairo_set_source_window
gdk_cairo_rectangle
gdk_cairo_region
-gdk_cairo_reset_clip
gdk_cairo_region_create_from_surface
</SECTION>
@@ -733,6 +721,7 @@ gdk_device_get_device_type
gdk_device_get_display
gdk_device_get_has_cursor
gdk_device_get_n_axes
+gdk_device_get_n_keys
<SUBSECTION>
gdk_device_grab
@@ -862,7 +851,6 @@ GdkNativeWindow
GdkEventDND
GdkEventProximity
GdkEventClient
-GdkEventNoExpose
GdkEventWindowState
GdkEventSetting
GdkEventOwnerChange
@@ -966,17 +954,13 @@ gdk_drag_context_get_type
<TITLE>X Window System Interaction</TITLE>
<FILE>x_interaction</FILE>
GDK_ROOT_WINDOW
-GDK_WINDOW_XDISPLAY
GDK_WINDOW_XID
GDK_DISPLAY_XDISPLAY
-GDK_DRAWABLE_XDISPLAY
-GDK_DRAWABLE_XID
GDK_SCREEN_XDISPLAY
GDK_SCREEN_XNUMBER
GDK_SCREEN_XSCREEN
GDK_CURSOR_XCURSOR
GDK_CURSOR_XDISPLAY
-GDK_WINDOW_XWINDOW
gdkx_visual_get
gdk_window_foreign_new
gdk_window_foreign_new_for_display
@@ -998,6 +982,7 @@ gdk_x11_cursor_get_xcursor
gdk_x11_cursor_get_xdisplay
gdk_x11_display_broadcast_startup_message
gdk_x11_display_get_startup_notification_id
+gdk_x11_display_set_startup_notification_id
gdk_x11_display_get_xdisplay
gdk_x11_display_grab
gdk_x11_display_ungrab
@@ -1006,8 +991,7 @@ gdk_x11_display_error_trap_pop
gdk_x11_display_error_trap_pop_ignored
gdk_x11_display_set_cursor_theme
gdk_x11_register_standard_event_type
-gdk_x11_drawable_get_xdisplay
-gdk_x11_drawable_get_xid
+gdk_x11_window_get_xid
gdk_x11_get_default_root_xwindow
gdk_x11_get_default_screen
gdk_x11_get_default_xdisplay
@@ -1028,7 +1012,6 @@ gdk_x11_get_xatom_name_for_display
<SUBSECTION Private>
GDK_HAVE_WCHAR_H
GDK_HAVE_WCTYPE_H
-gdk_x11_window_get_drawable_impl
</SECTION>
<SECTION>
diff --git a/docs/reference/gdk/gdk3.types b/docs/reference/gdk/gdk3.types
index f5889831f9..bb8607d4f8 100644
--- a/docs/reference/gdk/gdk3.types
+++ b/docs/reference/gdk/gdk3.types
@@ -3,8 +3,7 @@
gdk_display_get_type
gdk_display_manager_get_type
gdk_screen_get_type
-gdk_drawable_get_type
-gdk_window_object_get_type
+gdk_window_get_type
gdk_keymap_get_type
gdk_device_get_type
gdk_device_manager_get_type
diff --git a/docs/reference/gtk/Makefile.am b/docs/reference/gtk/Makefile.am
index 1de3259a6d..42d23fc1c1 100644
--- a/docs/reference/gtk/Makefile.am
+++ b/docs/reference/gtk/Makefile.am
@@ -22,6 +22,8 @@ CFILE_GLOB=$(top_srcdir)/gtk/*.c
# Header files to ignore when scanning
IGNORE_HFILES= \
fnmatch.h \
+ gtk9slice.h \
+ gtkanimationdescription.h \
gtkdebug.h \
gtkbuilderprivate.h \
gtkdndcursors.h \
@@ -77,6 +79,7 @@ IGNORE_HFILES= \
gtktexttagprivate.h \
gtktexttypes.h \
gtktextutil.h \
+ gtktimeline.h \
gtkthemes.h \
gtktrayicon.h \
gtktreedatalist.h \
@@ -122,6 +125,7 @@ content_files = \
migrating-2to3.xml \
migrating-checklist.sgml \
migrating-GtkApplication.xml \
+ migrating-GtkStyleContext.xml \
objects_grouped.sgml \
osx.sgml \
question_index.sgml \
@@ -144,6 +148,7 @@ expand_content_files = \
migrating-2to3.xml \
migrating-checklist.sgml \
migrating-GtkApplication.xml \
+ migrating-GtkStyleContext.xml \
question_index.sgml \
text_widget.sgml \
tree_widget.sgml
@@ -324,6 +329,30 @@ HTML_IMAGES = \
$(srcdir)/images/window-default.png \
$(srcdir)/images/hello-world.png \
$(srcdir)/images/switch.png
+ $(srcdir)/images/linear.png \
+ $(srcdir)/images/ease.png \
+ $(srcdir)/images/ease-in-out.png \
+ $(srcdir)/images/ease-in.png \
+ $(srcdir)/images/ease-out.png \
+ $(srcdir)/images/gradient1.png \
+ $(srcdir)/images/gradient2.png \
+ $(srcdir)/images/gradient3.png \
+ $(srcdir)/images/gradient4.png \
+ $(srcdir)/images/border1.png \
+ $(srcdir)/images/border2.png \
+ $(srcdir)/images/border3.png \
+ $(srcdir)/images/slices.png \
+ $(srcdir)/images/checks.png \
+ $(srcdir)/images/options.png \
+ $(srcdir)/images/arrows.png \
+ $(srcdir)/images/expanders.png \
+ $(srcdir)/images/background.png \
+ $(srcdir)/images/frames.png \
+ $(srcdir)/images/frame-gap.png \
+ $(srcdir)/images/sliders.png \
+ $(srcdir)/images/focus.png \
+ $(srcdir)/images/handles.png \
+ $(srcdir)/images/extensions.png
# Extra options to supply to gtkdoc-fixref
FIXXREF_OPTIONS=--extra-dir=../gdk/html \
diff --git a/docs/reference/gtk/gtk-docs.sgml b/docs/reference/gtk/gtk-docs.sgml
index db3435cb71..39b9624c0a 100644
--- a/docs/reference/gtk/gtk-docs.sgml
+++ b/docs/reference/gtk/gtk-docs.sgml
@@ -3,6 +3,8 @@
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
<!ENTITY version SYSTEM "version.xml">
+<!ENTITY pi "&#960;">
+<!ENTITY solidus "&#8260;">
]>
<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
<bookinfo>
@@ -38,19 +40,31 @@
<xi:include href="xml/gtkaccelmap.xml" />
<xi:include href="xml/gtkclipboard.xml" />
<xi:include href="xml/gtkdnd.xml" />
- <xi:include href="xml/gtkicontheme.xml" />
<xi:include href="xml/gtkstock.xml" />
- <xi:include href="xml/gtkiconfactory.xml" />
- <xi:include href="xml/gtkrc.xml" />
<xi:include href="xml/gtksettings.xml" />
<xi:include href="xml/gtkbindings.xml" />
<xi:include href="xml/gtkenums.xml" />
- <xi:include href="xml/gtkstyle.xml" />
<xi:include href="xml/gtkselection.xml" />
<xi:include href="xml/gtktesting.xml" />
<xi:include href="xml/filesystem.xml" />
</part>
+ <part id="theming">
+ <title>Theming in GTK+</title>
+ <xi:include href="xml/gtkstylecontext.xml" />
+ <xi:include href="xml/gtkcssprovider.xml" />
+ <xi:include href="xml/gtkstyleprovider.xml" />
+ <xi:include href="xml/gtkstyleproperties.xml" />
+ <xi:include href="xml/gtkthemingengine.xml" />
+ <xi:include href="xml/gtkwidgetpath.xml" />
+ <xi:include href="xml/gtksymboliccolor.xml" />
+ <xi:include href="xml/gtkgradient.xml" />
+ <xi:include href="xml/gtkicontheme.xml" />
+ <xi:include href="xml/gtkiconfactory.xml" />
+ <xi:include href="xml/gtkrc.xml" />
+ <xi:include href="xml/gtkstyle.xml" />
+ </part>
+
<part id="gtkobjects">
<title>GTK+ Widgets and Objects</title>
@@ -336,6 +350,7 @@
<xi:include href="xml/migrating-checklist.sgml" />
<xi:include href="xml/migrating-2to3.xml" />
<xi:include href="xml/migrating-GtkApplication.xml" />
+ <xi:include href="xml/migrating-GtkStyleContext.xml" />
</part>
<part>
diff --git a/docs/reference/gtk/gtk3-sections.txt b/docs/reference/gtk/gtk3-sections.txt
index 8104875f3d..08f6a2f475 100644
--- a/docs/reference/gtk/gtk3-sections.txt
+++ b/docs/reference/gtk/gtk3-sections.txt
@@ -881,6 +881,7 @@ gtk_container_set_resize_mode
gtk_container_check_resize
gtk_container_foreach
gtk_container_get_children
+gtk_container_get_path_for_child
gtk_container_set_reallocate_redraws
gtk_container_get_focus_child
gtk_container_set_focus_child
@@ -4956,6 +4957,11 @@ gtk_widget_input_shape_combine_region
gtk_widget_path
gtk_widget_class_path
gtk_widget_get_composite_name
+gtk_widget_override_background_color
+gtk_widget_override_color
+gtk_widget_override_font
+gtk_widget_override_symbolic_color
+gtk_widget_override_cursor
gtk_widget_modify_style
gtk_widget_get_modifier_style
gtk_widget_modify_fg
@@ -4964,11 +4970,11 @@ gtk_widget_modify_text
gtk_widget_modify_base
gtk_widget_modify_font
gtk_widget_modify_cursor
-gtk_widget_modify_symbolic_color
gtk_widget_create_pango_context
gtk_widget_get_pango_context
gtk_widget_create_pango_layout
gtk_widget_render_icon
+gtk_widget_render_icon_pixbuf
gtk_widget_pop_composite_child
gtk_widget_push_composite_child
gtk_widget_queue_draw_area
@@ -5043,6 +5049,9 @@ gtk_widget_is_sensitive
gtk_widget_get_state
gtk_widget_get_visible
gtk_widget_set_visible
+gtk_widget_set_state_flags
+gtk_widget_unset_state_flags
+gtk_widget_get_state_flags
gtk_widget_has_default
gtk_widget_has_focus
gtk_widget_has_grab
@@ -5062,6 +5071,11 @@ gtk_widget_get_requisition
gtk_widget_device_is_shadowed
<SUBSECTION>
+gtk_widget_get_path
+gtk_widget_get_style_context
+gtk_widget_reset_style
+
+<SUBSECTION>
gtk_requisition_new
gtk_requisition_copy
gtk_requisition_free
@@ -5358,6 +5372,319 @@ GTK_CHECK_VERSION
</SECTION>
<SECTION>
+<FILE>gtkwidgetpath</FILE>
+<TITLE>GtkWidgetPath</TITLE>
+GtkWidgetPath
+gtk_widget_path_append_type
+gtk_widget_path_copy
+gtk_widget_path_free
+gtk_widget_path_get_widget_type
+gtk_widget_path_has_parent
+gtk_widget_path_is_type
+gtk_widget_path_iter_add_class
+gtk_widget_path_iter_add_region
+gtk_widget_path_iter_clear_classes
+gtk_widget_path_iter_clear_regions
+gtk_widget_path_iter_get_name
+gtk_widget_path_iter_get_widget_type
+gtk_widget_path_iter_has_class
+gtk_widget_path_iter_has_name
+gtk_widget_path_iter_has_qclass
+gtk_widget_path_iter_has_qname
+gtk_widget_path_iter_has_qregion
+gtk_widget_path_iter_has_region
+gtk_widget_path_iter_list_classes
+gtk_widget_path_iter_list_regions
+gtk_widget_path_iter_remove_class
+gtk_widget_path_iter_remove_region
+gtk_widget_path_iter_set_name
+gtk_widget_path_iter_set_widget_type
+gtk_widget_path_length
+gtk_widget_path_new
+gtk_widget_path_prepend_type
+</SECTION>
+
+<SECTION>
+<FILE>gtkstyleprovider</FILE>
+<TITLE>GtkStyleProvider</TITLE>
+GtkStyleProviderIface
+GtkStyleProvider
+GTK_STYLE_PROVIDER_PRIORITY_FALLBACK
+GTK_STYLE_PROVIDER_PRIORITY_THEME
+GTK_STYLE_PROVIDER_PRIORITY_SETTINGS
+GTK_STYLE_PROVIDER_PRIORITY_APPLICATION
+GTK_STYLE_PROVIDER_PRIORITY_USER
+gtk_style_provider_get_icon_factory
+gtk_style_provider_get_style
+gtk_style_provider_get_style_property
+<SUBSECTION Standard>
+GTK_TYPE_STYLE_PROVIDER
+GTK_STYLE_PROVIDER
+GTK_IS_STYLE_PROVIDER
+GTK_STYLE_PROVIDER_GET_IFACE
+<SUBSECTION Private>
+gtk_style_provider_get_type
+</SECTION>
+
+<SECTION>
+<FILE>gtkstyleproperties</FILE>
+<TITLE>GtkStyleProperties</TITLE>
+GtkStyleProperties
+gtk_style_properties_clear
+gtk_style_properties_get
+gtk_style_properties_get_property
+gtk_style_properties_get_valist
+gtk_style_properties_lookup_color
+gtk_style_properties_lookup_property
+gtk_style_properties_map_color
+gtk_style_properties_merge
+gtk_style_properties_new
+GtkStylePropertyParser
+gtk_style_properties_register_property
+gtk_style_properties_set
+gtk_style_properties_set_property
+gtk_style_properties_set_valist
+gtk_style_properties_unset_property
+<SUBSECTION Standard>
+GTK_TYPE_STYLE_PROPERTIES
+GTK_IS_STYLE_PROPERTIES
+GTK_IS_STYLE_PROPERTIES_CLASS
+GTK_STYLE_PROPERTIES
+GTK_STYLE_PROPERTIES_CLASS
+GTK_STYLE_PROPERTIES_GET_CLASS
+<SUBSECTION Private>
+gtk_style_properties_get_type
+</SECTION>
+
+<SECTION>
+<FILE>gtkstylecontext</FILE>
+<TITLE>GtkStyleContext</TITLE>
+<SUBSECTION>
+GTK_STYLE_PROPERTY_BACKGROUND_COLOR
+GTK_STYLE_PROPERTY_COLOR
+GTK_STYLE_PROPERTY_FONT
+GTK_STYLE_PROPERTY_MARGIN
+GTK_STYLE_PROPERTY_PADDING
+GTK_STYLE_PROPERTY_BORDER_WIDTH
+GTK_STYLE_PROPERTY_BORDER_RADIUS
+GTK_STYLE_PROPERTY_BORDER_STYLE
+GTK_STYLE_PROPERTY_BORDER_COLOR
+GTK_STYLE_PROPERTY_BACKGROUND_IMAGE
+<SUBSECTION>
+GTK_STYLE_CLASS_BACKGROUND
+GTK_STYLE_CLASS_BUTTON
+GTK_STYLE_CLASS_CALENDAR
+GTK_STYLE_CLASS_CELL
+GTK_STYLE_CLASS_CHECK
+GTK_STYLE_CLASS_DEFAULT
+GTK_STYLE_CLASS_ENTRY
+GTK_STYLE_CLASS_HEADER
+GTK_STYLE_CLASS_MENU
+GTK_STYLE_CLASS_RADIO
+GTK_STYLE_CLASS_RUBBERBAND
+GTK_STYLE_CLASS_SCROLLBAR
+GTK_STYLE_CLASS_SLIDER
+GTK_STYLE_CLASS_TOOLTIP
+GTK_STYLE_CLASS_TROUGH
+GTK_STYLE_CLASS_ACCELERATOR
+GTK_STYLE_CLASS_DOCK
+GTK_STYLE_CLASS_GRIP
+GTK_STYLE_CLASS_MENUBAR
+GTK_STYLE_CLASS_MENUITEM
+GTK_STYLE_CLASS_PROGRESSBAR
+GTK_STYLE_CLASS_SPINNER
+GTK_STYLE_CLASS_TOOLBAR
+GTK_STYLE_REGION_COLUMN
+GTK_STYLE_REGION_COLUMN_HEADER
+GTK_STYLE_REGION_ROW
+GTK_STYLE_REGION_TAB
+<SUBSECTION>
+GtkStyleContext
+gtk_style_context_new
+gtk_style_context_add_provider
+gtk_style_context_add_provider_for_screen
+gtk_style_context_get
+gtk_style_context_get_direction
+gtk_style_context_get_junction_sides
+gtk_style_context_get_path
+gtk_style_context_get_property
+gtk_style_context_get_screen
+gtk_style_context_get_state
+gtk_style_context_get_style
+gtk_style_context_get_style_property
+gtk_style_context_get_style_valist
+gtk_style_context_get_valist
+gtk_style_context_get_color
+gtk_style_context_get_background_color
+gtk_style_context_get_border_color
+gtk_style_context_get_border
+gtk_style_context_get_padding
+gtk_style_context_get_margin
+gtk_style_context_invalidate
+gtk_style_context_state_is_running
+gtk_style_context_lookup_color
+gtk_style_context_lookup_icon_set
+gtk_style_context_notify_state_change
+gtk_style_context_pop_animatable_region
+gtk_style_context_push_animatable_region
+gtk_style_context_remove_provider
+gtk_style_context_remove_provider_for_screen
+gtk_style_context_reset_widgets
+gtk_style_context_set_background
+gtk_style_context_restore
+gtk_style_context_save
+gtk_style_context_set_direction
+gtk_style_context_set_junction_sides
+gtk_style_context_set_path
+gtk_style_context_add_class
+gtk_style_context_remove_class
+gtk_style_context_has_class
+gtk_style_context_list_classes
+gtk_style_context_add_region
+gtk_style_context_remove_region
+gtk_style_context_has_region
+gtk_style_context_list_regions
+gtk_style_context_set_screen
+gtk_style_context_set_state
+
+<SUBSECTION>
+GtkBorder
+gtk_border_new
+gtk_border_copy
+gtk_border_free
+
+<SUBSECTION>
+gtk_render_arrow
+gtk_render_background
+gtk_render_check
+gtk_render_expander
+gtk_render_extension
+gtk_render_focus
+gtk_render_frame
+gtk_render_frame_gap
+gtk_render_handle
+gtk_render_layout
+gtk_render_line
+gtk_render_option
+gtk_render_slider
+gtk_render_activity
+gtk_render_icon_pixbuf
+
+<SUBSECTION Standard>
+GTK_TYPE_STYLE_CONTEXT
+GTK_STYLE_CONTEXT
+GTK_STYLE_CONTEXT_CLASS
+GTK_STYLE_CONTEXT_GET_CLASS
+GTK_IS_STYLE_CONTEXT
+GTK_IS_STYLE_CONTEXT_CLASS
+GTK_TYPE_BORDER
+
+<SUBSECTION Private>
+gtk_style_context_get_type
+gtk_border_get_type
+</SECTION>
+
+<SECTION>
+<FILE>gtkcssprovider</FILE>
+<TITLE>GtkCssProvider</TITLE>
+GtkCssProvider
+gtk_css_provider_get_default
+gtk_css_provider_get_named
+gtk_css_provider_load_from_data
+gtk_css_provider_load_from_file
+gtk_css_provider_load_from_path
+gtk_css_provider_new
+GTK_CSS_PROVIDER_ERROR
+GtkCssProviderError
+<SUBSECTION Standard>
+GTK_TYPE_CSS_PROVIDER
+GTK_CSS_PROVIDER
+GTK_CSS_PROVIDER_CLASS
+GTK_CSS_PROVIDER_GET_CLASS
+GTK_IS_CSS_PROVIDER
+GTK_IS_CSS_PROVIDER_CLASS
+<SUBSECTION Private>
+gtk_css_provider_get_type
+gtk_css_provider_error_quark
+</SECTION>
+
+<SECTION>
+<FILE>gtkthemingengine</FILE>
+<TITLE>GtkThemingEngine</TITLE>
+GtkThemingEngineClass
+GtkThemingEngine
+gtk_theming_engine_get
+gtk_theming_engine_get_direction
+gtk_theming_engine_get_junction_sides
+gtk_theming_engine_get_path
+gtk_theming_engine_get_property
+gtk_theming_engine_get_screen
+gtk_theming_engine_get_state
+gtk_theming_engine_get_style
+gtk_theming_engine_get_style_property
+gtk_theming_engine_get_style_valist
+gtk_theming_engine_get_valist
+gtk_theming_engine_get_color
+gtk_theming_engine_get_background_color
+gtk_theming_engine_get_border_color
+gtk_theming_engine_get_border
+gtk_theming_engine_get_padding
+gtk_theming_engine_get_margin
+gtk_theming_engine_has_class
+gtk_theming_engine_has_region
+gtk_theming_engine_lookup_color
+gtk_theming_engine_state_is_running
+gtk_theming_engine_load
+gtk_theming_engine_register_property
+<SUBSECTION Standard>
+GTK_THEMING_ENGINE
+GTK_THEMING_ENGINE_CLASS
+GTK_THEMING_ENGINE_GET_CLASS
+GTK_IS_THEMING_ENGINE
+GTK_IS_THEMING_ENGINE_CLASS
+<SUBSECTION Private>
+GTK_TYPE_THEMING_ENGINE
+gtk_theming_engine_get_type
+</SECTION>
+
+<SECTION>
+<FILE>gtksymboliccolor</FILE>
+<TITLE>GtkSymbolicColor</TITLE>
+GtkSymbolicColor
+gtk_symbolic_color_new_literal
+gtk_symbolic_color_new_name
+gtk_symbolic_color_new_shade
+gtk_symbolic_color_new_alpha
+gtk_symbolic_color_new_mix
+gtk_symbolic_color_ref
+gtk_symbolic_color_unref
+gtk_symbolic_color_resolve
+
+<SUBSECTION Standard>
+GTK_TYPE_SYMBOLIC_COLOR
+
+<SUBSECTION Private>
+gtk_symbolic_color_get_type
+</SECTION>
+
+<SECTION>
+<FILE>gtkgradient</FILE>
+<TITLE>GtkGradient</TITLE>
+GtkGradient
+gtk_gradient_new_linear
+gtk_gradient_new_radial
+gtk_gradient_add_color_stop
+gtk_gradient_ref
+gtk_gradient_unref
+gtk_gradient_resolve
+
+<SUBSECTION Standard>
+GTK_TYPE_GRADIENT
+
+gtk_gradient_get_type
+</SECTION>
+
+<SECTION>
<FILE>gtkstyle</FILE>
<TITLE>GtkStyle</TITLE>
GTK_STYLE_ATTACHED
@@ -5397,12 +5724,6 @@ gtk_paint_resize_grip
gtk_draw_insertion_cursor
<SUBSECTION>
-GtkBorder
-gtk_border_new
-gtk_border_copy
-gtk_border_free
-
-<SUBSECTION>
GtkRcProperty
GtkRcPropertyParser
@@ -5414,10 +5735,8 @@ GTK_TYPE_STYLE
GTK_STYLE_CLASS
GTK_IS_STYLE_CLASS
GTK_STYLE_GET_CLASS
-GTK_TYPE_BORDER
-<SUBSECTION Private>
+
gtk_style_get_type
-gtk_border_get_type
GtkThemeEngine
</SECTION>
@@ -5667,12 +5986,16 @@ GtkScrollType
GtkSelectionMode
GtkShadowType
GtkStateType
+GtkStateFlags
GtkToolbarStyle
GtkUpdateType
GtkWindowPosition
GtkWindowType
GtkSortType
GtkDragResult
+GtkJunctionSides
+GtkBorderStyle
+GtkRegionFlags
<SUBSECTION Private>
GTK_PATH_PRIO_MASK
@@ -5834,6 +6157,7 @@ gtk_icon_info_get_builtin_pixbuf
gtk_icon_info_load_icon
gtk_icon_info_load_symbolic
gtk_icon_info_load_symbolic_for_style
+gtk_icon_info_load_symbolic_for_context
gtk_icon_info_set_raw_coordinates
gtk_icon_info_get_embedded_rect
gtk_icon_info_get_attach_points
@@ -5875,6 +6199,7 @@ gtk_icon_set_new
gtk_icon_set_new_from_pixbuf
gtk_icon_set_ref
gtk_icon_set_render_icon
+gtk_icon_set_render_icon_pixbuf
gtk_icon_set_unref
gtk_icon_size_lookup
gtk_icon_size_lookup_for_settings
diff --git a/docs/reference/gtk/gtk3.types b/docs/reference/gtk/gtk3.types
index bdf3063bd2..fe0ff45f6b 100644
--- a/docs/reference/gtk/gtk3.types
+++ b/docs/reference/gtk/gtk3.types
@@ -50,6 +50,7 @@ gtk_color_selection_get_type
gtk_combo_box_get_type
gtk_combo_box_text_get_type
gtk_container_get_type
+gtk_css_provider_get_type
gtk_dialog_get_type
gtk_drawing_area_get_type
gtk_editable_get_type
@@ -144,6 +145,8 @@ gtk_statusbar_get_type
gtk_status_icon_get_type
gtk_switch_get_type
gtk_style_get_type
+gtk_style_context_get_type
+gtk_style_provider_get_type
gtk_table_get_type
gtk_tearoff_menu_item_get_type
gtk_text_buffer_get_type
@@ -153,6 +156,7 @@ gtk_text_mark_get_type
gtk_text_tag_get_type
gtk_text_tag_table_get_type
gtk_text_view_get_type
+gtk_theming_engine_get_type
gtk_toggle_action_get_type
gtk_toggle_button_get_type
gtk_toggle_tool_button_get_type
diff --git a/docs/reference/gtk/images/arrows.png b/docs/reference/gtk/images/arrows.png
new file mode 100644
index 0000000000..d189a510a5
--- /dev/null
+++ b/docs/reference/gtk/images/arrows.png
Binary files differ
diff --git a/docs/reference/gtk/images/background.png b/docs/reference/gtk/images/background.png
new file mode 100644
index 0000000000..ad6ea36a99
--- /dev/null
+++ b/docs/reference/gtk/images/background.png
Binary files differ
diff --git a/docs/reference/gtk/images/border1.png b/docs/reference/gtk/images/border1.png
new file mode 100644
index 0000000000..92e2cc5bf2
--- /dev/null
+++ b/docs/reference/gtk/images/border1.png
Binary files differ
diff --git a/docs/reference/gtk/images/border2.png b/docs/reference/gtk/images/border2.png
new file mode 100644
index 0000000000..808c3a56d0
--- /dev/null
+++ b/docs/reference/gtk/images/border2.png
Binary files differ
diff --git a/docs/reference/gtk/images/border3.png b/docs/reference/gtk/images/border3.png
new file mode 100644
index 0000000000..980f4bdbc4
--- /dev/null
+++ b/docs/reference/gtk/images/border3.png
Binary files differ
diff --git a/docs/reference/gtk/images/checks.png b/docs/reference/gtk/images/checks.png
new file mode 100644
index 0000000000..143043a274
--- /dev/null
+++ b/docs/reference/gtk/images/checks.png
Binary files differ
diff --git a/docs/reference/gtk/images/ease-in-out.png b/docs/reference/gtk/images/ease-in-out.png
new file mode 100644
index 0000000000..1591b6fee1
--- /dev/null
+++ b/docs/reference/gtk/images/ease-in-out.png
Binary files differ
diff --git a/docs/reference/gtk/images/ease-in.png b/docs/reference/gtk/images/ease-in.png
new file mode 100644
index 0000000000..cece95df7f
--- /dev/null
+++ b/docs/reference/gtk/images/ease-in.png
Binary files differ
diff --git a/docs/reference/gtk/images/ease-out.png b/docs/reference/gtk/images/ease-out.png
new file mode 100644
index 0000000000..9a5162f082
--- /dev/null
+++ b/docs/reference/gtk/images/ease-out.png
Binary files differ
diff --git a/docs/reference/gtk/images/ease.png b/docs/reference/gtk/images/ease.png
new file mode 100644
index 0000000000..6a70bcdc2d
--- /dev/null
+++ b/docs/reference/gtk/images/ease.png
Binary files differ
diff --git a/docs/reference/gtk/images/expanders.png b/docs/reference/gtk/images/expanders.png
new file mode 100644
index 0000000000..629922e4d1
--- /dev/null
+++ b/docs/reference/gtk/images/expanders.png
Binary files differ
diff --git a/docs/reference/gtk/images/extensions.png b/docs/reference/gtk/images/extensions.png
new file mode 100644
index 0000000000..f41d710ac8
--- /dev/null
+++ b/docs/reference/gtk/images/extensions.png
Binary files differ
diff --git a/docs/reference/gtk/images/focus.png b/docs/reference/gtk/images/focus.png
new file mode 100644
index 0000000000..583d292c9c
--- /dev/null
+++ b/docs/reference/gtk/images/focus.png
Binary files differ
diff --git a/docs/reference/gtk/images/frame-gap.png b/docs/reference/gtk/images/frame-gap.png
new file mode 100644
index 0000000000..3c0caf24d4
--- /dev/null
+++ b/docs/reference/gtk/images/frame-gap.png
Binary files differ
diff --git a/docs/reference/gtk/images/frames.png b/docs/reference/gtk/images/frames.png
new file mode 100644
index 0000000000..12d6c7efc7
--- /dev/null
+++ b/docs/reference/gtk/images/frames.png
Binary files differ
diff --git a/docs/reference/gtk/images/gradient1.png b/docs/reference/gtk/images/gradient1.png
new file mode 100644
index 0000000000..248c998daf
--- /dev/null
+++ b/docs/reference/gtk/images/gradient1.png
Binary files differ
diff --git a/docs/reference/gtk/images/gradient2.png b/docs/reference/gtk/images/gradient2.png
new file mode 100644
index 0000000000..cc5fc054d3
--- /dev/null
+++ b/docs/reference/gtk/images/gradient2.png
Binary files differ
diff --git a/docs/reference/gtk/images/gradient3.png b/docs/reference/gtk/images/gradient3.png
new file mode 100644
index 0000000000..4ff8f90bd8
--- /dev/null
+++ b/docs/reference/gtk/images/gradient3.png
Binary files differ
diff --git a/docs/reference/gtk/images/gradient4.png b/docs/reference/gtk/images/gradient4.png
new file mode 100644
index 0000000000..b619cae336
--- /dev/null
+++ b/docs/reference/gtk/images/gradient4.png
Binary files differ
diff --git a/docs/reference/gtk/images/handles.png b/docs/reference/gtk/images/handles.png
new file mode 100644
index 0000000000..24151b559b
--- /dev/null
+++ b/docs/reference/gtk/images/handles.png
Binary files differ
diff --git a/docs/reference/gtk/images/linear.png b/docs/reference/gtk/images/linear.png
new file mode 100644
index 0000000000..2339839e21
--- /dev/null
+++ b/docs/reference/gtk/images/linear.png
Binary files differ
diff --git a/docs/reference/gtk/images/options.png b/docs/reference/gtk/images/options.png
new file mode 100644
index 0000000000..3c274810fa
--- /dev/null
+++ b/docs/reference/gtk/images/options.png
Binary files differ
diff --git a/docs/reference/gtk/images/slices.png b/docs/reference/gtk/images/slices.png
new file mode 100644
index 0000000000..c0a064efbf
--- /dev/null
+++ b/docs/reference/gtk/images/slices.png
Binary files differ
diff --git a/docs/reference/gtk/images/sliders.png b/docs/reference/gtk/images/sliders.png
new file mode 100644
index 0000000000..e832aa708d
--- /dev/null
+++ b/docs/reference/gtk/images/sliders.png
Binary files differ
diff --git a/docs/reference/gtk/migrating-2to3.xml b/docs/reference/gtk/migrating-2to3.xml
index d150987e11..fc39ff1e24 100644
--- a/docs/reference/gtk/migrating-2to3.xml
+++ b/docs/reference/gtk/migrating-2to3.xml
@@ -134,7 +134,7 @@
them, are gone. This includes the <literal>gdk_draw</literal> family
of functions like gdk_draw_rectangle() and gdk_draw_drawable(). As
#GdkGC is roughly equivalent to #cairo_t and #GdkImage was used for
- drawing images to GdkDrawables, which cairo supports automatically,
+ drawing images to GdkWindows, which cairo supports automatically,
a transition is usually straightforward.
</para>
<para>
@@ -143,7 +143,7 @@
was replaced.
</para>
<example>
- <title>Drawing a GdkPixbuf onto a GdkDrawable</title>
+ <title>Drawing a GdkPixbuf onto a GdkWindow</title>
<para>
Drawing a pixbuf onto a drawable used to be done like this:
<programlisting><![CDATA[
@@ -170,7 +170,7 @@ cairo_destroy (cr);
</para>
</example>
<example>
- <title>Drawing a tiled GdkPixmap to a GdkDrawable</title>
+ <title>Drawing a tiled GdkPixmap to a GdkWindow</title>
<para>
Tiled pixmaps are often used for drawing backgrounds.
Old code looked something like this:
diff --git a/docs/reference/gtk/migrating-ClientSideWindows.sgml b/docs/reference/gtk/migrating-ClientSideWindows.sgml
index 845e9561b2..017249c3e9 100644
--- a/docs/reference/gtk/migrating-ClientSideWindows.sgml
+++ b/docs/reference/gtk/migrating-ClientSideWindows.sgml
@@ -13,7 +13,7 @@
longer correct to assume that each window has an associated XID.
Code that makes this assumption can sometimes be fixed by calling
gdk_window_ensure_native() on the windows in question.
- Calling gdk_x11_drawable_get_xid() (or GDK_WINDOW_XID()) from the
+ Calling gdk_x11_window_get_xid() (or GDK_WINDOW_XID()) from the
X11-specific API on a non-native window will explicitly call
gdk_window_ensure_native(), so old code using this will continue to
work. A small gotcha is that the GDK_WINDOW_XID() call is no longer a
@@ -46,15 +46,9 @@
<para>
Problems can also occur when using cairo for drawing. One thing that can
- go wrong is clip handling. If you ever need to reset the clip region on
- a cairo_t (i.e. use cairo_reset_clip()), you have to to use
- gdk_cairo_reset_clip() instead. The reason for this is that the cairo_reset_clip() call will remove the initial clip region that limits your drawing to
- the client-side window at hand, so you will end up drawing over stuff
- outside the window. You also need to use gdk_cairo_reset_clip() if you
- use a cairo_t that was not allocated in a double-buffered expose handler
- and keep it in use after window hierarchy changes (resizing, moving,
- stacking order changes). The easiest fix for this kind of problem is to
- simply create a new cairo context for each expose event.
+ go wrong is clip handling. You may not use cairo_reset_clip() on a
+ cairo_t on a cairo context created via gdk_cairo_create() or passed to
+ the GtkWidget::draw signal.
</para>
<para>
diff --git a/docs/reference/gtk/migrating-GtkStyleContext.xml b/docs/reference/gtk/migrating-GtkStyleContext.xml
new file mode 100644
index 0000000000..775fee0545
--- /dev/null
+++ b/docs/reference/gtk/migrating-GtkStyleContext.xml
@@ -0,0 +1,631 @@
+<?xml version="1.0"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+]>
+<chapter id="gtk-migrating-GtkStyleContext">
+ <title>Migrating from GtkStyle to GtkStyleContext</title>
+
+ <para>
+ In GTK+ 3.0, #GtkStyleContext was added to replace #GtkStyle and
+ the theming infrastructure available in 2.x. GtkStyleContext is an
+ object similar in spirit to GtkStyle, as it contains theming information,
+ although in a more complete and tokenized fashion. There are two aspects
+ to switching to GtkStyleContext: porting themes and theme engines, and
+ porting applications, libraries and widgets.
+ </para>
+
+ <refsect2 id="gtk-migrating-GtkStyleContext-themes">
+ <title>Migrating themes</title>
+
+ <para>
+ From GTK+ 3.0 on, theme engines must implement #GtkThemingEngine and be
+ installed in <filename>$libdir/gtk+-3.0/$GTK_VERSION/theming-engines</filename>,
+ and the files containing style information must be written in the CSS-like
+ format that is understood by #GtkCssProvider. For a theme named
+ "Clearlooks", the CSS file parsed by default is
+ <filename>$datadir/themes/Clearlooks/gtk-3.0/gtk.css</filename>,
+ with possible variants such as the dark theme being named
+ <filename>gtk-dark.css</filename> in the same directory.
+ </para>
+ </refsect2>
+
+ <refsect2 id="gtk-migrating-theme-GtkStyleContext-engines">
+ <title>Migrating theme engines</title>
+
+ <para>
+ Migrating a #GtkStyle based engine to a #GtkThemingEngine based one
+ should be straightforward for most of the vfuncs. Besides a cleanup
+ in the available paint methods and a simplification in the passed
+ arguments (in favor of #GtkStyleContext containing all the information),
+ the available render methods resemble those of #GtkStyle quite
+ evidently. Notable differences include:
+ </para>
+
+ <orderedlist>
+ <listitem>
+ All variations of gtk_paint_box(), gtk_paint_flat_box(),
+ gtk_paint_shadow(), gtk_paint_box_gap() and gtk_paint_shadow_gap()
+ are replaced by gtk_render_background(), gtk_render_frame() and
+ gtk_render_frame_gap(). The first function renders frameless
+ backgrounds and the last two render frames in various forms.
+ </listitem>
+ <listitem>
+ gtk_paint_resize_grip() has been subsumed by gtk_render_handle()
+ with a #GTK_STYLE_CLASS_GRIP class set in the style context.
+ </listitem>
+ <listitem>
+ gtk_paint_spinner() disappears in favor of gtk_render_activity()
+ with a #GTK_STYLE_CLASS_SPINNER class set in the style context.
+ </listitem>
+ </orderedlist>
+
+ <para>
+ The list of available render methods is:
+ </para>
+
+ <simplelist>
+ <member>
+ gtk_render_background(): Renders a widget/area background.
+ </member>
+ <member>
+ gtk_render_frame(): Renders a frame border around the given rectangle.
+ Usually the detail of the border depends on the theme information,
+ plus the current widget state.
+ </member>
+ <member>
+ gtk_render_frame_gap(): Renders a frame border with a gap on one side.
+ </member>
+ <member>
+ gtk_render_layout(): Renders a #PangoLayout.
+ </member>
+ <member>
+ gtk_render_handle(): Renders all kind of handles and resize grips,
+ depending on the style class.
+ </member>
+ <member>
+ gtk_render_check(): Render checkboxes.
+ </member>
+ <member>
+ gtk_render_option(): Render radiobuttons.
+ </member>
+ <member>
+ gtk_render_arrow(): Renders an arrow pointing to a direction.
+ </member>
+ <member>
+ gtk_render_expander(): Renders an expander indicator, such as in
+ #GtkExpander.
+ </member>
+ <member>
+ gtk_render_focus(): Renders the indication that a widget has the
+ keyboard focus.
+ </member>
+ <member>
+ gtk_render_line(): Renders a line from one coordinate to another.
+ </member>
+ <member>
+ gtk_render_slider(): Renders a slider, such as in #GtkScale.
+ </member>
+ <member>
+ gtk_render_extension(): Renders an extension that protrudes from
+ a UI element, such as a notebook tab.
+ </member>
+ <member>
+ gtk_render_activity(): Renders an area displaying activity, be it
+ a progressbar or a spinner.
+ </member>
+ <member>
+ gtk_render_icon_pixbuf(): Renders an icon into a #GdkPixbuf.
+ </member>
+ </simplelist>
+
+ <para>
+ One of the main differences to #GtkStyle-based engines is that the
+ rendered widget is totally isolated from the theme engine, all style
+ information is meant to be retrieved from the #GtkThemingEngine API,
+ or from the #GtkWidgetPath obtained from gtk_theming_engine_get_path(),
+ which fully represents the rendered widget's hierarchy from a styling
+ point of view.
+ </para>
+
+ <para>
+ The detail string available in #GtkStyle-based engines has been
+ replaced by widget regions and style classes. Regions are a way for
+ complex widgets to associate different styles with different areas,
+ such as even and odd rows in a treeview. Style classes allow sharing
+ of style information between widgets, regardless of their type.
+ Regions and style classes can be used in style sheets to associate
+ styles, and them engines can also access them. There are several
+ predefined classes and regions such as %GTK_STYLE_CLASS_BUTTON or
+ %GTK_STYLE_REGION_TAB in <filename>gtkstylecontext.h</filename>,
+ although custom widgets may define their own, which themes may
+ attempt to handle.
+ </para>
+
+ </refsect2>
+
+ <refsect2 id="gtk-migrating-GtkStyleContext-parser-extensions">
+ <title>Extending the CSS parser</title>
+
+ <para>
+ In #GtkStyle-based engines, #GtkRCStyle provided ways to extend the
+ gtkrc parser with engine-specific extensions. This has been replaced
+ by gtk_theming_engine_register_property(), which lets a theme engine
+ register new properties with an arbitrary type. While there is built-in
+ support for most basic types, it is possible to use a custom parser
+ for the property.
+ </para>
+
+ <para>
+ The installed properties depend on the #GtkThemeEngine::name property,
+ so they should be added in the <literal>constructed()</literal> vfunc.
+ For example, if an engine with the name "Clearlooks" installs a
+ "focus-color" property with the type #GdkRGBA, the property
+ <literal>-Clearlooks-focus-color</literal> will be registered and
+ accepted in CSS like this:
+ <informalexample><programlisting>
+ GtkEntry {
+ -Clearlooks-focus-color: rgba(255, 0, 0, 1.0);
+ }
+ </programlisting></informalexample>
+ </para>
+
+ <para>
+ Widget style properties also follow a similar syntax, with the widget
+ type name used as a prefix. For example, the #GtkWidget:focus-line-width
+ style property can be modified in CSS as
+ <literal>-GtkWidget-focus-line-width</literal>.
+ </para>
+ </refsect2>
+
+ <refsect2 id="gtk-migrating-GtkStyleContext-css">
+ <title>Using the CSS file format</title>
+
+ <para>
+ The syntax of RC and CSS files formats is obviously different.
+ The CSS-like syntax will hopefully be much more familiar to many
+ people, lowering the barrier for custom theming.
+ </para>
+ <para>
+ Instead of going through the syntax differences one-by-one, we
+ will present a more or less comprehensive example and discuss
+ how it can be translated into CSS:
+ </para>
+
+ <example>
+ <title>Sample RC code</title>
+ <programlisting>
+ style "default" {
+ xthickness = 1
+ ythickness = 1
+
+ GtkButton::child-displacement-x = 1
+ GtkButton::child-displacement-y = 1
+ GtkCheckButton::indicator-size = 14
+
+ bg[NORMAL] = @bg_color
+ bg[PRELIGHT] = shade (1.02, @bg_color)
+ bg[SELECTED] = @selected_bg_color
+ bg[INSENSITIVE] = @bg_color
+ bg[ACTIVE] = shade (0.9, @bg_color)
+
+ fg[NORMAL] = @fg_color
+ fg[PRELIGHT] = @fg_color
+ fg[SELECTED] = @selected_fg_color
+ fg[INSENSITIVE] = darker (@bg_color)
+ fg[ACTIVE] = @fg_color
+
+ text[NORMAL] = @text_color
+ text[PRELIGHT] = @text_color
+ text[SELECTED] = @selected_fg_color
+ text[INSENSITIVE] = darker (@bg_color)
+ text[ACTIVE] = @selected_fg_color
+
+ base[NORMAL] = @base_color
+ base[PRELIGHT] = shade (0.95, @bg_color)
+ base[SELECTED] = @selected_bg_color
+ base[INSENSITIVE] = @bg_color
+ base[ACTIVE] = shade (0.9, @selected_bg_color)
+
+ engine "clearlooks" {
+ colorize_scrollbar = TRUE
+ style = CLASSIC
+ }
+ }
+
+ style "tooltips" {
+ xthickness = 4
+ ythickness = 4
+
+ bg[NORMAL] = @tooltip_bg_color
+ fg[NORMAL] = @tooltip_fg_color
+ }
+
+ style "button" {
+ xthickness = 3
+ ythickness = 3
+
+ bg[NORMAL] = shade (1.04, @bg_color)
+ bg[PRELIGHT] = shade (1.06, @bg_color)
+ bg[ACTIVE] = shade (0.85, @bg_color)
+ }
+
+ style "entry" {
+ xthickness = 3
+ ythickness = 3
+
+ bg[SELECTED] = mix (0.4, @selected_bg_color, @base_color)
+ fg[SELECTED] = @text_color
+
+ engine "clearlooks" {
+ focus_color = shade (0.65, @selected_bg_color)
+ }
+ }
+
+ style "other" {
+ bg[NORMAL] = &num;fff;
+ }
+
+ class "GtkWidget" style "default"
+ class "GtkEntry" style "entry"
+ widget_class "*&lt;GtkButton&gt;" style "button"
+ widget "gtk-tooltip*" style "tooltips"
+ widget_class "window-name.*.GtkButton" style "other"
+ </programlisting>
+ </example>
+
+ <para>
+ would roughly translate to this CSS:
+ </para>
+
+ <example>
+ <title>CSS translation</title>
+ <programlisting>
+ * {
+ padding: 1;
+ -GtkButton-child-displacement-x: 1;
+ -GtkButton-child-displacement-y: 1;
+ -GtkCheckButton-indicator-size: 14;
+
+ background-color: @bg_color;
+ color: @fg_color;
+
+ -Clearlooks-colorize-scrollbar: true;
+ -Clearlooks-style: classic;
+ }
+
+ *:hover {
+ background-color: shade (@bg_color, 1.02);
+ }
+
+ *:selected {
+ background-color: @selected_bg_color;
+ color: @selected_fg_color;
+ }
+
+ *:insensitive {
+ color: shade (@bg_color, 0.7);
+ }
+
+ *:active {
+ background-color: shade (@bg_color, 0.9);
+ }
+
+ .tooltip {
+ padding: 4;
+
+ background-color: @tooltip_bg_color;
+ color: @tooltip_fg_color;
+ }
+
+ .button {
+ padding: 3;
+ background-color: shade (@bg_color, 1.04);
+ }
+
+ .button:hover {
+ background-color: shade (@bg_color, 1.06);
+ }
+
+ .button:active {
+ background-color: shade (@bg_color, 0.85);
+ }
+
+ .entry {
+ padding: 3;
+
+ background-color: @base_color;
+ color: @text_color;
+ }
+
+ .entry:selected {
+ background-color: mix (@selected_bg_color, @base_color, 0.4);
+ -Clearlooks-focus-color: shade (0.65, @selected_bg_color)
+ }
+
+ /* The latter selector is an specification of the first,
+ since any widget may use the same classes or names */
+ &num;window-name .button,
+ GtkWindow&num;window-name GtkButton.button {
+ background-color: &num;fff;
+ }
+ </programlisting>
+ </example>
+
+ <para>
+ One notable difference is the reduction from fg/bg/text/base colors
+ to only foreground/background, in exchange the widget is able to render
+ its various elements with different CSS classes, which can be themed
+ independently.
+ </para>
+
+ <para>
+ Access to colors has also changed a bit. With #GtkStyle, the common
+ way to access colors is:
+ <informalexample><programlisting>
+ GdkColor *color1;
+ GdkColor color2;
+
+ color1 = &amp;style->bg[GTK_STATE_PRELIGHT];
+ gtk_style_lookup_color (style, "focus_color", &amp;color2);
+ </programlisting></informalexample>
+ With #GtkStyleContext, you generally use #GdkRGBA instead of #GdkColor
+ and the code looks like this:
+ <informalexample><programlisting>
+ GdkRGBA *color1;
+ GdkRGBA color2;
+
+ gtk_style_context_get (context, GTK_STATE_FLAG_PRELIGHT,
+ "background-color", &amp;color1,
+ NULL);
+ gtk_style_context_lookup_color (context, "focus_color", &amp;color2);
+
+ ...
+
+ gdk_rgba_free (color1);
+ </programlisting></informalexample>
+ Note that the memory handling here is different: gtk_style_context_get()
+ expects the address of a GdkRGBA* and returns a newly allocated struct,
+ gtk_style_context_lookup_color() expects the address of an existing
+ struct, and fills it.
+ </para>
+
+ <para>
+ It is worth mentioning that the new file format does not support
+ custom keybindings nor stock icon mappings as the RC format did.
+ </para>
+ </refsect2>
+
+ <refsect2 id="gtk-migrating-GtkStyleContext-checklist">
+ <title>A checklist for widgets</title>
+
+ <para>
+ When porting your widgets to use #GtkStyleContext, this checklist
+ might be useful.
+ </para>
+
+ <orderedlist>
+ <listitem>
+ Replace <literal>style_set()</literal> calls with
+ <literal>style_updated()</literal>.
+ </listitem>
+
+ <listitem>
+ <para>
+ Try to identify the role of what you're rendering with any number
+ of classes. This will replace the detail string. There is a predefined
+ set of CSS classes which you can reuse where appropriate. Doing so
+ will give you theming 'for free', whereas custom classes will require
+ extra work in the theme. Note that complex widgets are likely to
+ need different styles when rendering different parts, and style
+ classes are one way to achieve this. This could result in code like
+ the following (simplified) examples:
+ </para>
+
+ <example>
+ <title>Setting a permanent CSS class</title>
+ <programlisting>
+ static void
+ gtk_button_init (GtkButton *button)
+ {
+ GtkStyleContext *context;
+
+ ...
+
+ context = gtk_widget_get_style_context (GTK_WIDGET (button));
+
+ /* Set the "button" class */
+ gtk_style_context_add_class (context, GTK_STYLE_CLASS_BUTTON);
+ }
+ </programlisting>
+ </example>
+
+ <para>
+ Or
+ </para>
+
+ <example>
+ <title>Using dynamic CSS classes for different elements</title>
+ <programlisting>
+ static gboolean
+ gtk_spin_button_draw (GtkSpinButton *spin,
+ cairo_t *cr)
+ {
+ GtkStyleContext *context;
+
+ ...
+
+ context = gtk_widget_get_style_context (GTK_WIDGET (spin));
+
+ gtk_style_context_save (context);
+ gtk_style_context_add_class (context, GTK_STYLE_CLASS_ENTRY);
+
+ /* Call to entry draw impl with "entry" class */
+ parent_class->draw (spin, cr);
+
+ gtk_style_context_restore (context);
+ gtk_style_context_save (context);
+
+ /* Render up/down buttons with the "button" class */
+ gtk_style_context_add_class (context, GTK_STYLE_CLASS_BUTTON);
+ draw_up_button (spin, cr);
+ draw_down_button (spin, cr);
+
+ gtk_style_context_restore (context);
+
+ ...
+ }
+ </programlisting>
+ </example>
+
+ <para>
+ Note that #GtkStyleContext only provides fg/bg colors, so text/base
+ is done through distinctive theming of the different classes. For
+ example, an entry would usually be black on white while a button
+ would usually be black on light grey.
+ </para>
+ </listitem>
+
+ <listitem>
+ Replace all <literal>gtk_paint_*()</literal> calls with corresponding
+ <literal>gtk_render_*()</literal> calls. The most distinctive changes
+ are the use of #GtkStateFlags to represent the widget state and the
+ lack of #GtkShadowType. For gtk_render_check() and gtk_render_option(),
+ the @shadow_type parameter is replaced by the #GTK_STATE_FLAG_ACTIVE
+ and #GTK_STATE_FLAG_INCONSISTENT state flags. For things such as
+ pressed/unpressed button states, #GTK_STATE_FLAG_ACTIVE is used, and
+ the CSS may style normal/active states differently to render
+ outset/inset borders, respectively.
+ </listitem>
+
+ <listitem>
+ The various <literal>gtk_widget_modify_*()</literal> functions to
+ override colors or fonts for individual widgets have been replaced
+ by similar <literal>gtk_widget_override_*()</literal> functions.
+ </listitem>
+
+ <listitem>
+ It is no longer necessary to call gtk_widget_style_attach(),
+ gtk_style_attach(), gtk_style_detach() or gtk_widget_ensure_style().
+ </listitem>
+
+ <listitem>
+ Replace all uses of xthickness/ythickness. #GtkStyleContext uses the
+ CSS box model, and there are border-width/padding/margin properties to
+ replace the different applications of X and Y thickness. Note that all
+ of this is merely a guideline. Widgets may choose to follow it or not.
+ </listitem>
+ </orderedlist>
+ </refsect2>
+
+ <refsect2 id="gtk-migrating-GtkStyleContext-parsing">
+ <title>Parsing of custom resources</title>
+ <para>
+ As a consequence of the RC format going away, calling gtk_rc_parse() or
+ gtk_rc_parse_string() won't have any effect on a widgets appearance.
+ The way to replace these calls is using a custom #GtkStyleProvider,
+ either for an individual widget through gtk_style_context_add_provider()
+ or for all widgets on a screen through gtk_style_context_add_provider_for_screen().
+ Typically, the provider will be a #GtkCssProvider, which parse CSS
+ information from a file or from a string.
+ </para>
+
+ <para>
+ Notice that you can also get style information from custom resources
+ by implementing the #GtkStyleProvider interface yourself. This is
+ an advanced feature that should be rarely used.
+ </para>
+ </refsect2>
+
+ <refsect2 id="gtk-migrating-GtkStyleContext-bonus-points">
+ <title>Bonus points</title>
+
+ <para>
+ There are some features in #GtkStyleContext that were not available in
+ #GtkStyle, or were made available over time for certain widgets through
+ extending the detail string in obscure ways. There is a lot more
+ information available when rendering UI elements, and it is accessible
+ in more uniform, less hacky ways. By going through this list you'll
+ ensure your widget is a good citizen in a fully themable user interface.
+ </para>
+
+ <orderedlist>
+ <listitem>
+ If your widget renders a series of similar elements, such as tabs
+ in a #GtkNotebook or rows/column in a #GtkTreeView, consider adding
+ regions through gtk_style_context_add_region(). These regions can be
+ referenced in CSS and the :nth-child pseudo-class may be used to match
+ the elements depending on the flags passed.
+
+ <example>
+ <title>Theming widget regions</title>
+ <programlisting>
+ GtkNotebook tab {
+ background-color: &num;f3329d;
+ }
+
+ GtkTreeView row::nth-child (even) {
+ background-color: &num;dddddd;
+ }
+ </programlisting>
+ </example>
+ </listitem>
+
+ <listitem>
+ <para>
+ If your container renders child widgets within different regions,
+ make it implement GtkContainer::get_path_for_child(). This function
+ lets containers assign a special #GtkWidgetPath to child widgets
+ depending on their role/region. This is necessary to extend the
+ concept above throughout the widget hierarchy.
+ </para>
+
+ <para>
+ For example, a #GtkNotebook modifies the tab labels' #GtkWidgetPath
+ so the "tab" region is added. This makes it possible to theme tab
+ labels through:
+ </para>
+
+ <example>
+ <title>Theming a widget within a parent container region</title>
+ <programlisting>
+ GtkNotebook tab GtkLabel {
+ font: Sans 8;
+ }
+ </programlisting>
+ </example>
+
+ </listitem>
+
+ <listitem>
+ If you intend several visual elements to look interconnected,
+ make sure you specify rendered elements' connection areas with
+ gtk_style_context_set_junction_sides(). It is of course up to the
+ theme to make use of this information or not.
+ </listitem>
+
+ <listitem>
+ <para>
+ #GtkStyleContext supports implicit animations on state changes for
+ the most simple case out-of-the-box: widgets with a single animatable
+ area, whose state is changed with gtk_widget_set_state_flags() or
+ gtk_widget_unset_state_flags(). These functions trigger animated
+ transitions for the affected state flags. Examples of widgets for
+ which this kind of animation may be sufficient are #GtkButton or
+ #GtkEntry.
+ </para>
+ <para>
+ If your widget consists of more than a simple area, and these areas
+ may be rendered with different states, make sure to mark the rendered
+ areas with gtk_style_context_push_animatable_region() and
+ gtk_style_context_pop_animatable_region().
+ </para>
+
+ <para>
+ gtk_style_context_notify_state_change() may be used to trigger a
+ transition for a given state. The region ID will determine the
+ animatable region that is affected by this transition.
+ </para>
+ </listitem>
+ </orderedlist>
+ </refsect2>
+</chapter>
diff --git a/docs/reference/gtk/tmpl/gtkenums.sgml b/docs/reference/gtk/tmpl/gtkenums.sgml
index 90c5817326..24b4d335af 100644
--- a/docs/reference/gtk/tmpl/gtkenums.sgml
+++ b/docs/reference/gtk/tmpl/gtkenums.sgml
@@ -315,19 +315,16 @@ Used to change the appearance of an outline typically provided by a #GtkFrame.
<!-- ##### ENUM GtkStateType ##### -->
<para>
-This type indicates the current state of a widget; the state determines how
-the widget is drawn. The #GtkStateType enumeration is also used to
-identify different colors in a #GtkStyle for drawing, so states can be
-used for subparts of a widget as well as entire widgets.
-</para>
-
-@GTK_STATE_NORMAL: State during normal operation.
-@GTK_STATE_ACTIVE: State of a currently active widget, such as a depressed button.
-@GTK_STATE_PRELIGHT: State indicating that the mouse pointer is over
-the widget and the widget will respond to mouse clicks.
-@GTK_STATE_SELECTED: State of a selected item, such the selected row in a list.
-@GTK_STATE_INSENSITIVE: State indicating that the widget is
-unresponsive to user actions.
+
+</para>
+
+@GTK_STATE_NORMAL:
+@GTK_STATE_ACTIVE:
+@GTK_STATE_PRELIGHT:
+@GTK_STATE_SELECTED:
+@GTK_STATE_INSENSITIVE:
+@GTK_STATE_INCONSISTENT:
+@GTK_STATE_FOCUSED:
<!-- ##### ENUM GtkToolbarStyle ##### -->
<para>
diff --git a/docs/reference/gtk/tmpl/gtkrc.sgml b/docs/reference/gtk/tmpl/gtkrc.sgml
index e146d3157f..b89710a3f6 100644
--- a/docs/reference/gtk/tmpl/gtkrc.sgml
+++ b/docs/reference/gtk/tmpl/gtkrc.sgml
@@ -10,6 +10,10 @@ GTK+ provides resource file mechanism for configuring
various aspects of the operation of a GTK+ program
at runtime.
</para>
+<para>
+In GTK+ 3.0, resource files have been deprecated and replaced
+by CSS-like style sheets, which are understood by #GtkCssProvider.
+</para>
<refsect2><title>Default files</title>
<para>