]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkthemingengine.c
Make GtkToolItemGroup use GtkStyleContext
[~andy/gtk] / gtk / gtkthemingengine.c
index e3cde59e24c1f4f5914ce70c692d495ba4b75b84..4dc889c00eb1c063027c999f149257d705932c15 100644 (file)
@@ -809,7 +809,7 @@ gtk_theming_engine_get_border_color (GtkThemingEngine *engine,
  * gtk_theming_engine_get_border:
  * @engine: a #GtkthemingEngine
  * @state: state to retrieve the border for
- * @color: (out): return value for the border settings
+ * @border: (out): return value for the border settings
  *
  * Gets the border for a given state as a #GtkBorder.
  *
@@ -832,7 +832,7 @@ gtk_theming_engine_get_border (GtkThemingEngine *engine,
  * gtk_theming_engine_get_padding:
  * @engine: a #GtkthemingEngine
  * @state: state to retrieve the padding for
- * @color: (out): return value for the padding settings
+ * @padding: (out): return value for the padding settings
  *
  * Gets the padding for a given state as a #GtkBorder.
  *
@@ -853,9 +853,9 @@ gtk_theming_engine_get_padding (GtkThemingEngine *engine,
 
 /**
  * gtk_theming_engine_get_margin:
- * @engien: a #GtkThemingEngine
+ * @engine: a #GtkThemingEngine
  * @state: state to retrieve the border for
- * @color: (out): return value for the margin settings
+ * @margin: (out): return value for the margin settings
  *
  * Gets the margin for a given state as a #GtkBorder.
  *
@@ -874,6 +874,29 @@ gtk_theming_engine_get_margin (GtkThemingEngine *engine,
   gtk_style_context_get_margin (priv->context, state, margin);
 }
 
+/**
+ * gtk_theming_engine_get_font:
+ * @engine: a #GtkThemingEngine
+ * @state: state to retrieve the font for
+ *
+ * Returns the font description for a given state.
+ *
+ * Returns: the #PangoFontDescription for the given state. This
+ *          object is owned by GTK+ and should not be freed.
+ *
+ * Since: 3.0
+ **/
+const PangoFontDescription *
+gtk_theming_engine_get_font (GtkThemingEngine *engine,
+                             GtkStateFlags     state)
+{
+  GtkThemingEnginePrivate *priv;
+
+  g_return_val_if_fail (GTK_IS_THEMING_ENGINE (engine), NULL);
+
+  priv = engine->priv;
+  return gtk_style_context_get_font (priv->context, state);
+}
 
 /* GtkThemingModule */
 
@@ -2006,10 +2029,20 @@ gtk_theming_engine_render_expander (GtkThemingEngine *engine,
   if (!running)
     progress = (flags & GTK_STATE_FLAG_ACTIVE) ? 1 : 0;
 
-  if (is_rtl)
-    angle = (G_PI) - ((G_PI / 2) * progress);
+  if (gtk_theming_engine_has_class (engine, GTK_STYLE_CLASS_VERTICAL))
+    {
+      if (is_rtl)
+        angle = (G_PI) - ((G_PI / 2) * progress);
+      else
+        angle = (G_PI / 2) * progress;
+    }
   else
-    angle = (G_PI / 2) * progress;
+    {
+      if (is_rtl)
+        angle = (G_PI / 2) + ((G_PI / 2) * progress);
+      else
+        angle = (G_PI / 2) - ((G_PI / 2) * progress);
+    }
 
   interp = progress;
 
@@ -2300,13 +2333,13 @@ gtk_theming_engine_render_layout (GtkThemingEngine *engine,
       cairo_set_matrix (cr, &cairo_matrix);
     }
   else
-    cairo_translate (cr, x, y);
+    cairo_move_to (cr, x, y);
 
   if (flags & GTK_STATE_FLAG_INSENSITIVE)
     {
       cairo_save (cr);
       cairo_set_source_rgb (cr, 1, 1, 1);
-      cairo_move_to (cr, 1, 1);
+      cairo_move_to (cr, x + 1, y + 1);
       _gtk_pango_fill_layout (cr, layout);
       cairo_restore (cr);
     }
@@ -2581,7 +2614,7 @@ gtk_theming_engine_render_handle (GtkThemingEngine *engine,
   cairo_rectangle (cr, x, y, width, height);
   cairo_fill (cr);
 
-  if (gtk_theming_engine_has_class (engine, "grip"))
+  if (gtk_theming_engine_has_class (engine, GTK_STYLE_CLASS_GRIP))
     {
       GtkJunctionSides sides;
       gint skip = -1;
@@ -2846,7 +2879,7 @@ gtk_theming_engine_render_handle (GtkThemingEngine *engine,
 
       cairo_restore (cr);
     }
-  else if (gtk_theming_engine_has_class (engine, "paned"))
+  else if (gtk_theming_engine_has_class (engine, GTK_STYLE_CLASS_PANE_SEPARATOR))
     {
       if (width > height)
         for (xx = x + width / 2 - 15; xx <= x + width / 2 + 15; xx += 5)
@@ -2889,18 +2922,12 @@ gtk_theming_engine_render_activity (GtkThemingEngine *engine,
       gdouble half;
       gint i;
 
-      num_steps = 0;
-
-      gtk_theming_engine_get_style (engine,
-                                    "num-steps", &num_steps,
-                                    NULL);
+      num_steps = 12;
 
       state = gtk_theming_engine_get_state (engine);
       gtk_theming_engine_get (engine, state,
                               "color", &color,
                               NULL);
-      if (num_steps == 0)
-        num_steps = 12;
 
       if (gtk_theming_engine_state_is_running (engine, GTK_STATE_ACTIVE, &progress))
         step = (guint) (progress * num_steps);