]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkorientable.c
treeview: fix a critical warning
[~andy/gtk] / gtk / gtkorientable.c
index 2a3c761355945b43919d05f19b826f6dd573582c..0f72542473a24979c6ee1f234ba0ac392dce9bcc 100644 (file)
  * 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., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "config.h"
 
-#include "gtkorientable.h"
+#include "gtkorientableprivate.h"
 #include "gtkprivate.h"
-#include "gtktypeutils.h"
+#include "gtktypebuiltins.h"
 #include "gtkintl.h"
 
 
@@ -85,6 +83,9 @@ gtk_orientable_set_orientation (GtkOrientable  *orientable,
   g_object_set (orientable,
                 "orientation", orientation,
                 NULL);
+
+  if (GTK_IS_WIDGET (orientable))
+    _gtk_orientable_set_style_classes (orientable);
 }
 
 /**
@@ -111,3 +112,27 @@ gtk_orientable_get_orientation (GtkOrientable *orientable)
 
   return orientation;
 }
+
+void
+_gtk_orientable_set_style_classes (GtkOrientable *orientable)
+{
+  GtkStyleContext *context;
+  GtkOrientation orientation;
+
+  g_return_if_fail (GTK_IS_ORIENTABLE (orientable));
+  g_return_if_fail (GTK_IS_WIDGET (orientable));
+
+  context = gtk_widget_get_style_context (GTK_WIDGET (orientable));
+  orientation = gtk_orientable_get_orientation (orientable);
+
+  if (orientation == GTK_ORIENTATION_HORIZONTAL)
+    {
+      gtk_style_context_add_class (context, GTK_STYLE_CLASS_HORIZONTAL);
+      gtk_style_context_remove_class (context, GTK_STYLE_CLASS_VERTICAL);
+    }
+  else
+    {
+      gtk_style_context_add_class (context, GTK_STYLE_CLASS_VERTICAL);
+      gtk_style_context_remove_class (context, GTK_STYLE_CLASS_HORIZONTAL);
+    }
+}