summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac1
-rw-r--r--tests/Makefile.am2
-rw-r--r--tests/visuals/Makefile.am28
-rw-r--r--tests/visuals/inline-toolbar.ui120
-rw-r--r--tests/visuals/primary-toolbar.ui213
-rw-r--r--tests/visuals/visuals.c85
6 files changed, 448 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac
index 22608673b1..5c7811792b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1747,6 +1747,7 @@ tests/a11y/Makefile
tests/css/Makefile
tests/css/parser/Makefile
tests/reftests/Makefile
+tests/visuals/Makefile
docs/Makefile
docs/reference/Makefile
docs/reference/gdk/Makefile
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 7173805e1c..9652b41ff2 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1,7 +1,7 @@
## Makefile.am for gtk+/tests
include $(top_srcdir)/Makefile.decl
-SUBDIRS = css reftests a11y
+SUBDIRS = css reftests a11y visuals
AM_CPPFLAGS = \
-I$(top_srcdir) \
diff --git a/tests/visuals/Makefile.am b/tests/visuals/Makefile.am
new file mode 100644
index 0000000000..aec9e3bf12
--- /dev/null
+++ b/tests/visuals/Makefile.am
@@ -0,0 +1,28 @@
+AM_CPPFLAGS = \
+ -I$(top_srcdir) \
+ -I$(top_builddir)/gdk \
+ -I$(top_srcdir)/gdk \
+ $(GTK_DEBUG_FLAGS) \
+ $(GTK_DEP_CFLAGS) \
+ $(GDK_DEP_CFLAGS)
+
+AM_CXXFLAGS = $(AM_CPPFLAGS)
+
+DEPS = \
+ $(top_builddir)/gtk/libgtk-3.la
+
+LDADDS = \
+ $(top_builddir)/gtk/libgtk-3.la \
+ $(top_builddir)/gdk/libgdk-3.la \
+ $(GTK_DEP_LIBS) \
+ -lm
+
+noinst_PROGRAMS = visuals
+
+visuals_DEPENDENCIES = $(TEST_DEPS)
+visuals_LDADD = $(LDADDS)
+visuals_SOURCES = visuals.c
+
+EXTRA_DIST = \
+ inline-toolbar.ui \
+ primary-toolbar.ui \ No newline at end of file
diff --git a/tests/visuals/inline-toolbar.ui b/tests/visuals/inline-toolbar.ui
new file mode 100644
index 0000000000..5421cbd505
--- /dev/null
+++ b/tests/visuals/inline-toolbar.ui
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <!-- interface-requires gtk+ 3.0 -->
+ <object class="GtkWindow" id="window1">
+ <property name="can_focus">False</property>
+ <property name="default_width">600</property>
+ <child>
+ <object class="GtkGrid" id="grid">
+ <property name="row-spacing">6</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkToolbar" id="toolbar1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="icon_size">1</property>
+ <style>
+ <class name="inline-toolbar"/>
+ </style>
+ <child>
+ <object class="GtkToggleToolButton" id="toolbutton1">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="label" translatable="yes">Normal</property>
+ <property name="use_underline">True</property>
+ <property name="icon_name">list-add-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton" id="toolbutton2">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="label" translatable="yes">Normal</property>
+ <property name="use_underline">True</property>
+ <property name="icon_name">list-add-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton" id="toolbutton3">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="label" translatable="yes">Active</property>
+ <property name="use_underline">True</property>
+ <property name="icon_name">list-remove-symbolic</property>
+ <property name="active">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton" id="toolbutton4">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="label" translatable="yes">Active</property>
+ <property name="use_underline">True</property>
+ <property name="icon_name">list-remove-symbolic</property>
+ <property name="active">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton" id="toolbutton5">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="label" translatable="yes">Insensitive</property>
+ <property name="use_underline">True</property>
+ <property name="icon_name">edit-find-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton" id="toolbutton6">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="label" translatable="yes">Insensitive Active</property>
+ <property name="use_underline">True</property>
+ <property name="icon_name">go-up-symbolic</property>
+ <property name="active">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/tests/visuals/primary-toolbar.ui b/tests/visuals/primary-toolbar.ui
new file mode 100644
index 0000000000..1517fd7cf6
--- /dev/null
+++ b/tests/visuals/primary-toolbar.ui
@@ -0,0 +1,213 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <!-- interface-requires gtk+ 3.0 -->
+ <object class="GtkWindow" id="window1">
+ <property name="can_focus">False</property>
+ <property name="default_width">800</property>
+ <child>
+ <object class="GtkGrid" id="grid">
+ <property name="row-spacing">6</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkToolbar" id="toolbar1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <style>
+ <class name="primary-toolbar"/>
+ </style>
+ <child>
+ <object class="GtkToggleToolButton" id="toolbutton1">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="label" translatable="yes">Normal</property>
+ <property name="use_underline">True</property>
+ <property name="is_important">True</property>
+ <property name="icon_name">edit-find</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton" id="toolbutton2">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="label" translatable="yes">Active</property>
+ <property name="use_underline">True</property>
+ <property name="is_important">True</property>
+ <property name="icon_name">edit-find</property>
+ <property name="active">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton" id="toolbutton3">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Insensitive</property>
+ <property name="use_underline">True</property>
+ <property name="is_important">True</property>
+ <property name="icon_name">edit-find</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton" id="toolbutton4">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Insensitive Active</property>
+ <property name="use_underline">True</property>
+ <property name="icon_name">edit-find</property>
+ <property name="is_important">True</property>
+ <property name="active">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolItem" id="toolitementry">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <child>
+ <object class="GtkEntry" id="entry1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property name="placeholder-text" translatable="yes">Search...</property>
+ <property name="secondary-icon-name">edit-find-symbolic</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolItem" id="toolitemswitch">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <child>
+ <object class="GtkSwitch" id="switch1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolbar" id="toolbar2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <style>
+ <class name="primary-toolbar"/>
+ </style>
+ <child>
+ <object class="GtkToggleToolButton" id="toolbutton5">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Normal</property>
+ <property name="use_underline">True</property>
+ <property name="is_important">True</property>
+ <property name="icon_name">edit-find-symbolic</property>
+ <style>
+ <class name="raised"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton" id="toolbutton6">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Active</property>
+ <property name="use_underline">True</property>
+ <property name="is_important">True</property>
+ <property name="icon_name">edit-find-symbolic</property>
+ <property name="active">True</property>
+ <style>
+ <class name="raised"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton" id="toolbutton7">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Insensitive</property>
+ <property name="use_underline">True</property>
+ <property name="is_important">True</property>
+ <property name="icon_name">edit-find-symbolic</property>
+ <style>
+ <class name="raised"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton" id="toolbutton8">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Insensitive Active</property>
+ <property name="use_underline">True</property>
+ <property name="icon_name">edit-find-symbolic</property>
+ <property name="is_important">True</property>
+ <property name="active">True</property>
+ <style>
+ <class name="raised"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/tests/visuals/visuals.c b/tests/visuals/visuals.c
new file mode 100644
index 0000000000..df65b5960f
--- /dev/null
+++ b/tests/visuals/visuals.c
@@ -0,0 +1,85 @@
+/* visuals: UI runner for visual GtkBuilder files
+ *
+ * Copyright (C) 2012 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ * Author: Cosimo Cecchi <cosimoc@gnome.org>
+ *
+ */
+
+#include <gtk/gtk.h>
+
+static void
+dark_button_toggled_cb (GtkToggleButton *button,
+ gpointer user_data)
+{
+ gboolean active = gtk_toggle_button_get_active (button);
+ GtkSettings *settings = gtk_settings_get_default ();
+
+ g_object_set (settings,
+ "gtk-application-prefer-dark-theme", active,
+ NULL);
+}
+
+static void
+create_dark_popup (GtkWidget *parent)
+{
+ GtkWidget *popup = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ GtkWidget *button = gtk_toggle_button_new_with_label ("Dark");
+
+ gtk_window_set_decorated (GTK_WINDOW (popup), FALSE);
+ gtk_widget_set_size_request (popup, 100, 100);
+ gtk_window_set_resizable (GTK_WINDOW (popup), FALSE);
+
+ g_signal_connect (popup, "delete-event",
+ G_CALLBACK (gtk_true), NULL);
+
+ gtk_container_add (GTK_CONTAINER (popup), button);
+ g_signal_connect (button, "toggled",
+ G_CALLBACK (dark_button_toggled_cb), NULL);
+
+ gtk_window_set_transient_for (GTK_WINDOW (popup), GTK_WINDOW (parent));
+
+ gtk_widget_show_all (popup);
+}
+
+int
+main (int argc, char *argv[])
+{
+ GtkBuilder *builder;
+ GtkWidget *window;
+ const gchar *filename;
+
+ gtk_init (&argc, &argv);
+
+ if (argc > 1)
+ filename = argv[1];
+
+ builder = gtk_builder_new ();
+ gtk_builder_add_from_file (builder, filename, NULL);
+
+ window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
+ g_object_unref (G_OBJECT (builder));
+ g_signal_connect (window, "destroy",
+ G_CALLBACK (gtk_main_quit), NULL);
+ gtk_widget_show_all (window);
+
+ create_dark_popup (window);
+ gtk_main ();
+
+ return 0;
+}