+2007-06-01 Michael Natterer <mitch@imendio.com>
+
+ * gtk/gtkmenuitem.c (gtk_menu_item_position_menu): don't switch
+ submenu opening direction for overlapping reasons if there is even
+ less space on the other side (bug #441863, Tommi Komulainen).
+
2007-06-01 Michael Natterer <mitch@imendio.com>
* gtk/gtkfilechooserdialog.c (response_cb): change fix for #347883
gint horizontal_offset;
gint vertical_offset;
gint parent_xthickness;
+ gint available_left, available_right;
g_return_if_fail (menu != NULL);
g_return_if_fail (x != NULL);
get_offsets (menu, &horizontal_offset, &vertical_offset);
+ available_left = tx - monitor.x;
+ available_right = monitor.x + monitor.width - (tx + widget->allocation.width);
+
if (GTK_IS_MENU_BAR (widget->parent))
{
menu_item->from_menubar = TRUE;
switch (menu_item->submenu_direction)
{
case GTK_DIRECTION_LEFT:
- if ((tx - twidth - parent_xthickness - horizontal_offset) >= monitor.x)
+ if (tx - twidth - parent_xthickness - horizontal_offset >= monitor.x ||
+ available_left >= available_right)
tx -= twidth + parent_xthickness + horizontal_offset;
else
{
break;
case GTK_DIRECTION_RIGHT:
- if ((tx + widget->allocation.width + parent_xthickness + horizontal_offset + twidth) <= monitor.x + monitor.width)
+ if (tx + widget->allocation.width + parent_xthickness + horizontal_offset + twidth <= monitor.x + monitor.width ||
+ available_right >= available_left)
tx += widget->allocation.width + parent_xthickness + horizontal_offset;
else
{