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

Daniel Burrows dburrows at costa.debian.org
Tue Sep 20 19:06:27 UTC 2005


Author: dburrows
Date: Tue Sep 20 19:06:24 2005
New Revision: 4134

Modified:
   branches/aptitude-0.3/aptitude/ChangeLog
   branches/aptitude-0.3/aptitude/src/vscreen/vs_multiplex.cc
   branches/aptitude-0.3/aptitude/src/vscreen/vs_multiplex.h
Log:
Add a signal that's emitted when the currently visible widget changes

Modified: branches/aptitude-0.3/aptitude/ChangeLog
==============================================================================
--- branches/aptitude-0.3/aptitude/ChangeLog	(original)
+++ branches/aptitude-0.3/aptitude/ChangeLog	Tue Sep 20 19:06:24 2005
@@ -1,5 +1,9 @@
 2005-09-20  Daniel Burrows  <dburrows at debian.org>
 
+	* src/vscreen/vs_multiplex.cc, src/vscreen/vs_multiplex.h:
+
+	  Add a signal that is emitted when the visible widget changes.
+
 	* src/vscreen/vs_tree.cc:
 
 	  Fix a silly compilation error.

Modified: branches/aptitude-0.3/aptitude/src/vscreen/vs_multiplex.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/vscreen/vs_multiplex.cc	(original)
+++ branches/aptitude-0.3/aptitude/src/vscreen/vs_multiplex.cc	Tue Sep 20 19:06:24 2005
@@ -269,13 +269,18 @@
   if(visible_child!=children.end() && get_isfocussed())
     visible_child->w->unfocussed();
 
+  list<child_info>::iterator old_visible = visible_child;
   visible_child=new_visible;
 
   if(visible_child!=children.end() && get_isfocussed())
     visible_child->w->focussed();
 
-  vscreen_queuelayout();
-  vscreen_update();
+  if(visible_child != old_visible)
+    {
+      cycled();
+      vscreen_queuelayout();
+      vscreen_update();
+    }
 }
 
 void vs_multiplex::hide_widget(const vs_widget_ref &w)
@@ -310,6 +315,8 @@
       if(visible_child!=children.end() && get_isfocussed())
 	visible_child->w->unfocussed();
 
+      list<child_info>::iterator old_visible = visible_child;
+
       if(new_visible==visible_child)
 	visible_child=children.end();
       else
@@ -317,10 +324,15 @@
 
       if(visible_child!=children.end() && get_isfocussed())
 	visible_child->w->focussed();
-    }
 
-  vscreen_queuelayout();
-  vscreen_update();
+
+      if(visible_child != old_visible)
+	{
+	  cycled();
+	  vscreen_queuelayout();
+	  vscreen_update();
+	}
+    }
 }
 
 void vs_multiplex::show_widget_bare(vscreen_widget &w)
@@ -444,11 +456,7 @@
 	    ++new_visible;
 	}
 
-      if(visible_child!=new_visible)
-	{
-	  vscreen_queuelayout();
-	  vscreen_update();
-	}
+      list<child_info>::iterator old_visible = visible_child;
 
       if(visible_child!=children.end() && get_isfocussed())
 	visible_child->w->unfocussed();
@@ -457,6 +465,14 @@
 
       if(visible_child!=children.end() && get_isfocussed())
 	visible_child->w->focussed();
+
+
+      if(visible_child != old_visible)
+	{
+	  cycled();
+	  vscreen_queuelayout();
+	  vscreen_update();
+	}
     }
 }
 
@@ -487,11 +503,7 @@
 	    --new_visible;
 	}
 
-      if(visible_child!=new_visible)
-	{
-	  vscreen_queuelayout();
-	  vscreen_update();
-	}
+      list<child_info>::iterator old_visible = visible_child;
 
       if(visible_child!=children.end() && get_isfocussed())
 	visible_child->w->unfocussed();
@@ -500,6 +512,14 @@
 
       if(visible_child!=children.end() && get_isfocussed())
 	visible_child->w->focussed();
+
+      if(visible_child != old_visible)
+	{
+	  cycled();
+
+	  vscreen_queuelayout();
+	  vscreen_update();
+	}
     }
 }
 

Modified: branches/aptitude-0.3/aptitude/src/vscreen/vs_multiplex.h
==============================================================================
--- branches/aptitude-0.3/aptitude/src/vscreen/vs_multiplex.h	(original)
+++ branches/aptitude-0.3/aptitude/src/vscreen/vs_multiplex.h	Tue Sep 20 19:06:24 2005
@@ -149,6 +149,9 @@
   // These cycle forward and backwards through the list of visible items.
   void cycle_forward();
   void cycle_backward();
+
+  /** Emitted when the currently visible widget changes. */
+  sigc::signal0<void> cycled;
 };
 
 typedef ref_ptr<vs_multiplex> vs_multiplex_ref;



More information about the Aptitude-svn-commit mailing list