]> Pileus Git - ~andy/gtk/commitdiff
Fixed gtk_tree_menu_path_in_menu function which has been malfunctioning.
authorTristan Van Berkom <tristan.van.berkom@gmail.com>
Wed, 8 Dec 2010 13:30:22 +0000 (22:30 +0900)
committerTristan Van Berkom <tristan.van.berkom@gmail.com>
Tue, 4 Jan 2011 14:37:12 +0000 (23:37 +0900)
Now sensitivity is properly handled in the "apply-attributes" callback.

gtk/gtktreemenu.c

index bbb83f4658638206b7ff0c087bc1285483428062..98da2c1d2dd601d8d383afb03f04375b5f685b48 100644 (file)
@@ -734,33 +734,32 @@ gtk_tree_menu_path_in_menu (GtkTreeMenu  *menu,
   gboolean            is_header = FALSE;
 
   /* Check if the is in root of the model */
-  if (gtk_tree_path_get_depth (path) == 1)
-    {
-      if (!priv->root)
-       in_menu = TRUE;
-    }
+  if (gtk_tree_path_get_depth (path) == 1 && !priv->root)
+    in_menu = TRUE;
   /* If we are a submenu, compare the parent path */
-  else if (priv->root && gtk_tree_path_get_depth (path) > 1)
+  else if (priv->root)
     {
       GtkTreePath *root_path   = gtk_tree_row_reference_get_path (priv->root);
-      GtkTreePath *parent_path = gtk_tree_path_copy (path);
-
-      gtk_tree_path_up (parent_path);
+      GtkTreePath *search_path = gtk_tree_path_copy (path);
 
       if (root_path)
        {
-         if (gtk_tree_path_compare (root_path, parent_path) == 0)
-           in_menu = TRUE;
-         
-         if (!in_menu && priv->menu_with_header && 
-             gtk_tree_path_compare (root_path, path) == 0)
+         if (priv->menu_with_header && 
+             gtk_tree_path_compare (root_path, search_path) == 0)
            {
              in_menu   = TRUE;
              is_header = TRUE;
            }
+         else if (gtk_tree_path_get_depth (search_path) > 1)
+           {
+             gtk_tree_path_up (search_path);
+
+             if (gtk_tree_path_compare (root_path, search_path) == 0)
+               in_menu = TRUE;
+           }
        }
       gtk_tree_path_free (root_path);
-      gtk_tree_path_free (parent_path);
+      gtk_tree_path_free (search_path);
     }
 
   if (header_item)