]> Pileus Git - ~andy/gtk/blobdiff - tests/styleexamples.c
Illustrate extension rendering
[~andy/gtk] / tests / styleexamples.c
index b66add59aca9545ad4b72c63284a68327a85302c..6b65ba86bd9ff05d4c5c37de05301e8a4e4a30b1 100644 (file)
@@ -226,7 +226,44 @@ draw_cb_slider (GtkWidget *widget, cairo_t *cr)
   return TRUE;
 }
 
+static gboolean
+draw_cb_focus (GtkWidget *widget, cairo_t *cr)
+{
+  GtkStyleContext *context;
+
+  context = gtk_widget_get_style_context (widget);
+
+  gtk_style_context_save (context);
+
+  gtk_render_focus (context, cr, 12, 12, 50, 50);
+
+  gtk_style_context_restore (context);
+
+  return TRUE;
+}
+
+static gboolean
+draw_cb_extension (GtkWidget *widget, cairo_t *cr)
+{
+  GtkStyleContext *context;
+
+  context = gtk_widget_get_style_context (widget);
+
+  gtk_style_context_save (context);
 
+  gtk_style_context_add_class (context, "notebook");
+  gtk_style_context_add_region (context, GTK_STYLE_REGION_TAB, 0);
+
+  gtk_style_context_set_state (context, 0);
+  gtk_render_extension (context, cr, 26, 12, 24, 12, GTK_POS_BOTTOM);
+  gtk_render_extension (context, cr, 12, 26, 12, 24, GTK_POS_RIGHT);
+  gtk_render_extension (context, cr, 26, 52, 24, 12, GTK_POS_TOP);
+  gtk_render_extension (context, cr, 52, 26, 12, 24, GTK_POS_LEFT);
+
+  gtk_style_context_restore (context);
+
+  return TRUE;
+}
 
 static char *what;
 
@@ -249,6 +286,10 @@ draw_cb (GtkWidget *widget, cairo_t *cr)
     return draw_cb_activity (widget, cr);
   else if (strcmp (what, "slider") == 0)
     return draw_cb_slider (widget, cr);
+  else if (strcmp (what, "focus") == 0)
+    return draw_cb_focus (widget, cr);
+  else if (strcmp (what, "extension") == 0)
+    return draw_cb_extension (widget, cr);
 
   return FALSE;
 }