Skip unrealized children when doing focus sorting. (#323995, Dan Winship)
2005-12-14 Matthias Clasen <mclasen@redhat.com> * gtk/gtkcontainer.c (_gtk_container_focus_sort): Skip unrealized children when doing focus sorting. (#323995, Dan Winship)
This commit is contained in:
		
				
					committed by
					
						
						Matthias Clasen
					
				
			
			
				
	
			
			
			
						parent
						
							c5cc9b7162
						
					
				
				
					commit
					d095fa575d
				
			@ -1,3 +1,8 @@
 | 
				
			|||||||
 | 
					2005-12-14  Matthias Clasen  <mclasen@redhat.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						* gtk/gtkcontainer.c (_gtk_container_focus_sort): Skip unrealized
 | 
				
			||||||
 | 
						children when doing focus sorting.  (#323995, Dan Winship)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
2005-12-14  Rodney Dawes  <dobey@novell.com>
 | 
					2005-12-14  Rodney Dawes  <dobey@novell.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	* gtk/gtkfilesystemunix.c (gtk_file_system_unix_volume_render_icon):
 | 
						* gtk/gtkfilesystemunix.c (gtk_file_system_unix_volume_render_icon):
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,8 @@
 | 
				
			|||||||
 | 
					2005-12-14  Matthias Clasen  <mclasen@redhat.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						* gtk/gtkcontainer.c (_gtk_container_focus_sort): Skip unrealized
 | 
				
			||||||
 | 
						children when doing focus sorting.  (#323995, Dan Winship)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
2005-12-14  Rodney Dawes  <dobey@novell.com>
 | 
					2005-12-14  Rodney Dawes  <dobey@novell.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	* gtk/gtkfilesystemunix.c (gtk_file_system_unix_volume_render_icon):
 | 
						* gtk/gtkfilesystemunix.c (gtk_file_system_unix_volume_render_icon):
 | 
				
			||||||
 | 
				
			|||||||
@ -1706,10 +1706,8 @@ up_down_compare (gconstpointer a,
 | 
				
			|||||||
  CompareInfo *compare = data;
 | 
					  CompareInfo *compare = data;
 | 
				
			||||||
  gint y1, y2;
 | 
					  gint y1, y2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (!get_allocation_coords (compare->container, (GtkWidget *)a, &allocation1))
 | 
					  get_allocation_coords (compare->container, (GtkWidget *)a, &allocation1);
 | 
				
			||||||
    return 0;
 | 
					  get_allocation_coords (compare->container, (GtkWidget *)b, &allocation2);
 | 
				
			||||||
  if (!get_allocation_coords (compare->container, (GtkWidget *)b, &allocation2))
 | 
					 | 
				
			||||||
    return 0;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  y1 = allocation1.y + allocation1.height / 2;
 | 
					  y1 = allocation1.y + allocation1.height / 2;
 | 
				
			||||||
  y2 = allocation2.y + allocation2.height / 2;
 | 
					  y2 = allocation2.y + allocation2.height / 2;
 | 
				
			||||||
@ -1835,10 +1833,8 @@ left_right_compare (gconstpointer a,
 | 
				
			|||||||
  CompareInfo *compare = data;
 | 
					  CompareInfo *compare = data;
 | 
				
			||||||
  gint x1, x2;
 | 
					  gint x1, x2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (!get_allocation_coords (compare->container, (GtkWidget *)a, &allocation1))
 | 
					  get_allocation_coords (compare->container, (GtkWidget *)a, &allocation1);
 | 
				
			||||||
    return 0;
 | 
					  get_allocation_coords (compare->container, (GtkWidget *)b, &allocation2);
 | 
				
			||||||
  if (!get_allocation_coords (compare->container, (GtkWidget *)b, &allocation2))
 | 
					 | 
				
			||||||
    return 0;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  x1 = allocation1.x + allocation1.width / 2;
 | 
					  x1 = allocation1.x + allocation1.width / 2;
 | 
				
			||||||
  x2 = allocation2.x + allocation2.width / 2;
 | 
					  x2 = allocation2.x + allocation2.width / 2;
 | 
				
			||||||
@ -1979,19 +1975,26 @@ _gtk_container_focus_sort (GtkContainer     *container,
 | 
				
			|||||||
			   GtkDirectionType  direction,
 | 
								   GtkDirectionType  direction,
 | 
				
			||||||
			   GtkWidget        *old_focus)
 | 
								   GtkWidget        *old_focus)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  children = g_list_copy (children);
 | 
					  GList *visible_children = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  while (children)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      if (GTK_WIDGET_REALIZED (children->data))
 | 
				
			||||||
 | 
						visible_children = g_list_prepend (visible_children, children->data);
 | 
				
			||||||
 | 
					      children = children->next;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  switch (direction)
 | 
					  switch (direction)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
    case GTK_DIR_TAB_FORWARD:
 | 
					    case GTK_DIR_TAB_FORWARD:
 | 
				
			||||||
    case GTK_DIR_TAB_BACKWARD:
 | 
					    case GTK_DIR_TAB_BACKWARD:
 | 
				
			||||||
      return gtk_container_focus_sort_tab (container, children, direction, old_focus);
 | 
					      return gtk_container_focus_sort_tab (container, visible_children, direction, old_focus);
 | 
				
			||||||
    case GTK_DIR_UP:
 | 
					    case GTK_DIR_UP:
 | 
				
			||||||
    case GTK_DIR_DOWN:
 | 
					    case GTK_DIR_DOWN:
 | 
				
			||||||
      return gtk_container_focus_sort_up_down (container, children, direction, old_focus);
 | 
					      return gtk_container_focus_sort_up_down (container, visible_children, direction, old_focus);
 | 
				
			||||||
    case GTK_DIR_LEFT:
 | 
					    case GTK_DIR_LEFT:
 | 
				
			||||||
    case GTK_DIR_RIGHT:
 | 
					    case GTK_DIR_RIGHT:
 | 
				
			||||||
      return gtk_container_focus_sort_left_right (container, children, direction, old_focus);
 | 
					      return gtk_container_focus_sort_left_right (container, visible_children, direction, old_focus);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  g_assert_not_reached ();
 | 
					  g_assert_not_reached ();
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user