[Aptitude-svn-commit] r4142 - in branches/aptitude-0.3/aptitude: . src/vscreen

Daniel Burrows dburrows at costa.debian.org
Wed Sep 21 00:08:19 UTC 2005


Author: dburrows
Date: Wed Sep 21 00:08:17 2005
New Revision: 4142

Modified:
   branches/aptitude-0.3/aptitude/ChangeLog
   branches/aptitude-0.3/aptitude/src/vscreen/vs_table.cc
Log:
Fix new-focus choosing in the table widget.

Modified: branches/aptitude-0.3/aptitude/ChangeLog
==============================================================================
--- branches/aptitude-0.3/aptitude/ChangeLog	(original)
+++ branches/aptitude-0.3/aptitude/ChangeLog	Wed Sep 21 00:08:17 2005
@@ -1,5 +1,19 @@
 2005-09-20  Daniel Burrows  <dburrows at debian.org>
 
+	* src/vscreen/vs_table.cc:
+
+	  Fix the logic that chooses a new focus after the current focus
+	  goes away: most places were only looking at *UN*focussable
+	  widgets; instead, only consider widgets that are visible and can
+	  be focussed.
+
+	* src/vscreen/vscreen_widget.cc:
+
+	  Don't mark the widget as having been destroyed until after it's
+	  been hidden and removed from its owner; this avoids some nasty
+	  weirdness due to the way that the vscreen_widget accessors
+	  change their behavior when the widget is destroyed.
+
 	* src/broken_indicator.cc, src/solution_screen.cc:
 
 	  Display the resolver progress in the solution screen instead of

Modified: branches/aptitude-0.3/aptitude/src/vscreen/vs_table.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/vscreen/vs_table.cc	(original)
+++ branches/aptitude-0.3/aptitude/src/vscreen/vs_table.cc	Wed Sep 21 00:08:17 2005
@@ -176,14 +176,16 @@
 
       focus++;
 
-      while(focus!=children.end() && focus->w->focus_me())
+      while(focus != children.end() &&
+	    (!focus->w->get_visible() || !focus->w->focus_me()))
 	focus++;
 
       if(focus==children.end())
 	{
 	  focus=children.begin();
 
-	  while(focus!=children.end() && focus->w->focus_me())
+	  while(focus != children.end() &&
+		(!focus->w->get_visible() || !focus->w->focus_me()))
 	    focus++;
 	}
 
@@ -251,7 +253,8 @@
 	    focus++;
 
 	    while(focus != children.end() && (focus == i ||
-					      focus->w->focus_me()))
+					      !focus->w->get_visible() ||
+					      !focus->w->focus_me()))
 	      focus++;
 
 	    if(focus == children.end())
@@ -259,6 +262,7 @@
 		focus = children.begin();
 
 		while(focus != children.end() && (focus == i ||
+						  !focus->w->get_visible() ||
 						  focus->w->focus_me()))
 		  focus++;
 	      }
@@ -316,7 +320,8 @@
 
 vs_widget_ref vs_table::get_focus()
 {
-  if(focus!=children.end() && focus->w->focus_me())
+  if(focus!=children.end() && focus->w->get_visible() &&
+     focus->w->focus_me())
     return focus->w;
   else
     {
@@ -325,7 +330,7 @@
 
       for(focus=children.begin(); focus!=children.end(); focus++)
 	{
-	  if(focus->w->focus_me())
+	  if(focus->w->get_visible() && focus->w->focus_me())
 	    {
 	      focus->w->focussed();
 	      return focus->w;
@@ -529,13 +534,15 @@
 
 	  focus++;
 
-	  while(focus!=children.end() && !focus->w->focus_me())
+	  while(focus!=children.end() &&
+		!(focus->w->get_visible() && focus->w->focus_me()))
 	    focus++;
 
 	  if(focus==children.end())
 	    {
 	      focus=children.begin();
-	      while(focus!=children.end() && !focus->w->focus_me())
+	      while(focus!=children.end() &&
+		    !(focus->w->get_visible() && focus->w->focus_me()))
 		focus++;
 	    }
 



More information about the Aptitude-svn-commit mailing list