[gtk+/wip/attachment-rectangle] menubutton: use popup menu alignment
- From: William Hua <williamhua src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/attachment-rectangle] menubutton: use popup menu alignment
- Date: Fri, 28 Aug 2015 09:02:48 +0000 (UTC)
commit 33dd6ca28d84f79a90eeedc47627f04a1b63b4c1
Author: William Hua <william hua canonical com>
Date: Fri Aug 28 09:53:17 2015 +0100
menubutton: use popup menu alignment
gtk/gtkmenubutton.c | 42 +++++++++++++++++++++++++++++++++++-------
1 files changed, 35 insertions(+), 7 deletions(-)
---
diff --git a/gtk/gtkmenubutton.c b/gtk/gtkmenubutton.c
index 4a5a05d..945f7c7 100644
--- a/gtk/gtkmenubutton.c
+++ b/gtk/gtkmenubutton.c
@@ -404,24 +404,52 @@ popup_menu (GtkMenuButton *menu_button,
switch (priv->arrow_type)
{
case GTK_ARROW_UP:
- options = GDK_ATTACHMENT_ATTACH_TOP_EDGE;
- break;
case GTK_ARROW_DOWN:
case GTK_ARROW_NONE:
- options = GDK_ATTACHMENT_ATTACH_BOTTOM_EDGE;
+ options = priv->arrow_type == GTK_ARROW_UP ? GDK_ATTACHMENT_ATTACH_TOP_EDGE :
GDK_ATTACHMENT_ATTACH_BOTTOM_EDGE;
+
+ switch (gtk_widget_get_halign (priv->menu))
+ {
+ case GTK_ALIGN_FILL:
+ case GTK_ALIGN_START:
+ case GTK_ALIGN_BASELINE:
+ options |= GDK_ATTACHMENT_ALIGN_LEFT_EDGES;
+ break;
+ case GTK_ALIGN_END:
+ options |= GDK_ATTACHMENT_ALIGN_RIGHT_EDGES;
+ break;
+ default:
+ break;
+ }
+
break;
case GTK_ARROW_LEFT:
- options = GDK_ATTACHMENT_ATTACH_LEFT_EDGE;
- break;
case GTK_ARROW_RIGHT:
- options = GDK_ATTACHMENT_ATTACH_RIGHT_EDGE;
+ options = priv->arrow_type == GTK_ARROW_LEFT ? GDK_ATTACHMENT_ATTACH_LEFT_EDGE :
GDK_ATTACHMENT_ATTACH_RIGHT_EDGE;
+
+ switch (gtk_widget_get_valign (priv->menu))
+ {
+ case GTK_ALIGN_FILL:
+ case GTK_ALIGN_START:
+ case GTK_ALIGN_BASELINE:
+ options |= GDK_ATTACHMENT_ALIGN_TOP_EDGES;
+ break;
+ case GTK_ALIGN_END:
+ options |= GDK_ATTACHMENT_ALIGN_BOTTOM_EDGES;
+ break;
+ default:
+ break;
+ }
+
break;
}
+ options |= GDK_ATTACHMENT_ATTACH_OPPOSITE_EDGE;
+
gtk_menu_popup_against (GTK_MENU (priv->menu),
device,
NULL,
- GTK_WIDGET (menu_button),
+ priv->align_widget ? priv->align_widget : GTK_WIDGET (menu_button),
NULL,
options,
NULL,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]