[maemo-commits] [maemo-commits] r10015 - in projects/haf/branches/gtk+/maemo-gtk-2-10: . gtk

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Mon Feb 19 13:50:41 EET 2007
Author: mitch
Date: 2007-02-19 13:50:39 +0200 (Mon, 19 Feb 2007)
New Revision: 10015

Modified:
   projects/haf/branches/gtk+/maemo-gtk-2-10/ChangeLog
   projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkmenuitem.c
Log:
2007-02-19  Michael Natterer  <mitch at imendio.com>

	* gtk/gtkmenuitem.c (gtk_menu_item_paint): port over changes to
	menu item drawing when there is a submenu.



Modified: projects/haf/branches/gtk+/maemo-gtk-2-10/ChangeLog
===================================================================
--- projects/haf/branches/gtk+/maemo-gtk-2-10/ChangeLog	2007-02-19 09:20:30 UTC (rev 10014)
+++ projects/haf/branches/gtk+/maemo-gtk-2-10/ChangeLog	2007-02-19 11:50:39 UTC (rev 10015)
@@ -1,3 +1,8 @@
+2007-02-19  Michael Natterer  <mitch at imendio.com>
+
+	* gtk/gtkmenuitem.c (gtk_menu_item_paint): port over changes to
+	menu item drawing when there is a submenu.
+
 2007-02-16  Michael Natterer  <mitch at imendio.com>
 
 	* gtk/gtkcombobox.c (gtk_combo_box_menu_setup)

Modified: projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkmenuitem.c
===================================================================
--- projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkmenuitem.c	2007-02-19 09:20:30 UTC (rev 10014)
+++ projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkmenuitem.c	2007-02-19 11:50:39 UTC (rev 10015)
@@ -768,6 +768,56 @@
 	  gtk_widget_style_get (widget,
 				"selected-shadow-type", &selected_shadow_type,
 				NULL);
+
+#ifdef MAEMO_CHANGES
+          if (menu_item->submenu)
+            {
+              GtkMenuItem *msi;
+              gint focus_x = x;
+              gint focus_width = width;
+
+              if (menu_item->show_submenu_indicator)
+                {
+                  GtkRequisition child_requisition;
+                  gint arrow_size;
+
+#define HILDON_ARROW_SPACE 6
+
+                  gtk_widget_get_child_requisition (GTK_BIN (menu_item)->child,
+                                                    &child_requisition);
+
+                  arrow_size = child_requisition.height - 2 * widget->style->ythickness;
+                  if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR)
+                    focus_width = x + width - arrow_size - 2 - HILDON_ARROW_SPACE;
+                  else
+                    focus_x = x + arrow_size + 2 + HILDON_ARROW_SPACE;
+                }
+
+              /* This draws different focus depending on if it's the
+               * toplevel focused menu item. All items that have
+               * submenus that in turn have an item selected will be
+               * drawn with SELECTED-state focus. If this isn't the
+               * case, PRELIGHT-state focus is used.
+               */
+              msi = GTK_MENU_ITEM (GTK_MENU_SHELL (menu_item->submenu)->active_menu_item);
+
+              if ((msi == NULL) || (GTK_WIDGET (msi)->state == 0))
+                gtk_paint_box (widget->style,
+                               widget->window,
+                               GTK_STATE_PRELIGHT,
+                               selected_shadow_type,
+                               area, widget, "menuitem",
+                               focus_x, y, focus_width, height);
+              else
+                gtk_paint_box (widget->style,
+                               widget->window,
+                               GTK_STATE_SELECTED,
+                               selected_shadow_type,
+                               area, widget, "menuitem",
+                               focus_x, y, focus_width, height);
+            }
+          else
+#endif /* MAEMO_CHANGES */
 	  gtk_paint_box (widget->style,
 			 widget->window,
 			 GTK_STATE_PRELIGHT,
@@ -808,7 +858,12 @@
 	  arrow_extent = arrow_size * 0.8;
 	  
 	  shadow_type = GTK_SHADOW_OUT;
+#ifdef MAEMO_CHANGES
+	  if (state_type == GTK_STATE_PRELIGHT &&
+              GTK_WIDGET_VISIBLE (menu_item->submenu))
+#else
 	  if (state_type == GTK_STATE_PRELIGHT)
+#endif /* MAEMO_CHANGES */
 	    shadow_type = GTK_SHADOW_IN;
 
 	  if (direction == GTK_TEXT_DIR_LTR)
@@ -824,6 +879,10 @@
 
 	  arrow_y = y + (height - arrow_extent) / 2;
 
+#ifdef MAEMO_CHANGES
+          arrow_x = arrow_x - 4;
+#endif /* MAEMO_CHANGES */
+
 	  gtk_paint_arrow (widget->style, widget->window,
 			   state_type, shadow_type, 
 			   area, widget, "menuitem", 


More information about the maemo-commits mailing list