[gtk+/overlay: 23/34] overlay: add GTK_ALIGN_CENTER allocations
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/overlay: 23/34] overlay: add GTK_ALIGN_CENTER allocations
- Date: Sat, 11 Jun 2011 01:00:35 +0000 (UTC)
commit ceac510d3044e9b4d1b76c8e6af365b0c246e19c
Author: Ignacio Casal Quinteiro <icq gnome org>
Date: Fri May 27 11:11:46 2011 +0200
overlay: add GTK_ALIGN_CENTER allocations
demos/gtk-demo/overlay.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++
gtk/gtkoverlay.c | 33 +++++++++++++++++++++++++++
2 files changed, 88 insertions(+), 0 deletions(-)
---
diff --git a/demos/gtk-demo/overlay.c b/demos/gtk-demo/overlay.c
index 40a71b7..297555e 100644
--- a/demos/gtk-demo/overlay.c
+++ b/demos/gtk-demo/overlay.c
@@ -87,6 +87,61 @@ do_overlay (GtkWidget *do_widget)
gtk_overlay_add (GTK_OVERLAY (overlay), label);
gtk_overlay_set_offset (GTK_OVERLAY (overlay), label, 20, 5);
+ entry = gtk_entry_new ();
+ gtk_widget_set_halign (entry, GTK_ALIGN_END);
+ gtk_widget_set_valign (entry, GTK_ALIGN_CENTER);
+ gtk_overlay_add (GTK_OVERLAY (overlay), entry);
+
+ label = gtk_label_new ("Hello world");
+ gtk_widget_set_halign (label, GTK_ALIGN_END);
+ gtk_widget_set_valign (label, GTK_ALIGN_CENTER);
+ gtk_overlay_add (GTK_OVERLAY (overlay), label);
+ gtk_overlay_set_offset (GTK_OVERLAY (overlay), label, -20, 0);
+
+ entry = gtk_entry_new ();
+ gtk_widget_set_halign (entry, GTK_ALIGN_START);
+ gtk_widget_set_valign (entry, GTK_ALIGN_CENTER);
+ gtk_overlay_add (GTK_OVERLAY (overlay), entry);
+
+ label = gtk_label_new ("Hello world");
+ gtk_widget_set_halign (label, GTK_ALIGN_START);
+ gtk_widget_set_valign (label, GTK_ALIGN_CENTER);
+ gtk_overlay_add (GTK_OVERLAY (overlay), label);
+ gtk_overlay_set_offset (GTK_OVERLAY (overlay), label, 20, 0);
+
+ entry = gtk_entry_new ();
+ gtk_widget_set_halign (entry, GTK_ALIGN_CENTER);
+ gtk_widget_set_valign (entry, GTK_ALIGN_START);
+ gtk_overlay_add (GTK_OVERLAY (overlay), entry);
+
+ label = gtk_label_new ("Hello world");
+ gtk_widget_set_halign (label, GTK_ALIGN_CENTER);
+ gtk_widget_set_valign (label, GTK_ALIGN_START);
+ gtk_overlay_add (GTK_OVERLAY (overlay), label);
+ gtk_overlay_set_offset (GTK_OVERLAY (overlay), label, 10, 5);
+
+ entry = gtk_entry_new ();
+ gtk_widget_set_halign (entry, GTK_ALIGN_CENTER);
+ gtk_widget_set_valign (entry, GTK_ALIGN_END);
+ gtk_overlay_add (GTK_OVERLAY (overlay), entry);
+
+ label = gtk_label_new ("Hello world");
+ gtk_widget_set_halign (label, GTK_ALIGN_CENTER);
+ gtk_widget_set_valign (label, GTK_ALIGN_END);
+ gtk_overlay_add (GTK_OVERLAY (overlay), label);
+ gtk_overlay_set_offset (GTK_OVERLAY (overlay), label, 10, -5);
+
+ entry = gtk_entry_new ();
+ gtk_widget_set_halign (entry, GTK_ALIGN_CENTER);
+ gtk_widget_set_valign (entry, GTK_ALIGN_CENTER);
+ gtk_overlay_add (GTK_OVERLAY (overlay), entry);
+
+ label = gtk_label_new ("Hello world");
+ gtk_widget_set_halign (label, GTK_ALIGN_CENTER);
+ gtk_widget_set_valign (label, GTK_ALIGN_CENTER);
+ gtk_overlay_add (GTK_OVERLAY (overlay), label);
+ gtk_overlay_set_offset (GTK_OVERLAY (overlay), label, 0, 0);
+
gtk_widget_show_all (overlay);
}
diff --git a/gtk/gtkoverlay.c b/gtk/gtkoverlay.c
index 3ee41f1..7aacad4 100644
--- a/gtk/gtkoverlay.c
+++ b/gtk/gtkoverlay.c
@@ -290,6 +290,11 @@ gtk_overlay_size_allocate (GtkWidget *widget,
alloc.y = MAX (main_alloc.y, main_alloc.height - req.height + y_offset);
break;
+ case GTK_ALIGN_CENTER:
+ alloc.x = MAX (main_alloc.x, main_alloc.width - req.width + x_offset);
+ alloc.y = MAX (main_alloc.y, main_alloc.height / 2 - req.height / 2 + y_offset);
+ break;
+
default:
break;
}
@@ -308,6 +313,34 @@ gtk_overlay_size_allocate (GtkWidget *widget,
alloc.y = MAX (main_alloc.y, main_alloc.height - req.height + y_offset);
break;
+ case GTK_ALIGN_CENTER:
+ alloc.x = x_offset;
+ alloc.y = MAX (main_alloc.y, main_alloc.height / 2 - req.height / 2 + y_offset);
+ break;
+
+ default:
+ break;
+ }
+ break;
+
+ case GTK_ALIGN_CENTER:
+ switch (valign)
+ {
+ case GTK_ALIGN_START:
+ alloc.x = MAX (main_alloc.x, main_alloc.width / 2 - req.width / 2 + x_offset);
+ alloc.y = y_offset;
+ break;
+
+ case GTK_ALIGN_END:
+ alloc.x = MAX (main_alloc.x, main_alloc.width / 2 - req.width / 2 + x_offset);
+ alloc.y = MAX (main_alloc.y, main_alloc.height - req.height + y_offset);
+ break;
+
+ case GTK_ALIGN_CENTER:
+ alloc.x = MAX (main_alloc.x, main_alloc.width / 2 - req.width / 2 + x_offset);
+ alloc.y = MAX (main_alloc.y, main_alloc.height / 2 - req.height / 2 + y_offset);
+ break;
+
default:
break;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]