[Aptitude-devel] r3119 - in branches/aptitude-0.3/aptitude: . src/vscreen

Daniel Burrows dburrows@costa.debian.org
Wed, 27 Apr 2005 02:15:49 +0000


Author: dburrows
Date: Wed Apr 27 02:15:47 2005
New Revision: 3119

Modified:
   branches/aptitude-0.3/aptitude/ChangeLog
   branches/aptitude-0.3/aptitude/src/vscreen/vs_togglebutton.cc
   branches/aptitude-0.3/aptitude/src/vscreen/vs_togglebutton.h
Log:
Fix the cursor location and a few other things for multiline toggles.

Modified: branches/aptitude-0.3/aptitude/ChangeLog
==============================================================================
--- branches/aptitude-0.3/aptitude/ChangeLog	(original)
+++ branches/aptitude-0.3/aptitude/ChangeLog	Wed Apr 27 02:15:47 2005
@@ -1,5 +1,13 @@
 2005-04-26  Daniel Burrows  <dburrows@debian.org>
 
+	* src/vscreen/vs_togglebutton.cc, src/vscreen/vs_togglebutton.h:
+
+	  For multiline toggles, make sure to put the cursor on the line
+	  containing the toggle button.  Also, choose that line according
+	  to the widget size, not the text layout size; if the widget is
+	  smaller than the text layout, only step up to its height when
+	  drawing.
+
 	* src/vscreen/fragment_cache.cc, src/vscreen/fragment_cache.h, src/vscreen/vs_button.cc, src/vscreen/vs_button.h, src/vscreen/vs_togglebutton.cc:
 
 	  Get the cache working, and use it to hold the fragments of

Modified: branches/aptitude-0.3/aptitude/src/vscreen/vs_togglebutton.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/vscreen/vs_togglebutton.cc	(original)
+++ branches/aptitude-0.3/aptitude/src/vscreen/vs_togglebutton.cc	Wed Apr 27 02:15:47 2005
@@ -6,6 +6,10 @@
 #include "fragment.h"
 #include "fragment_cache.h"
 
+#include <algorithm>
+
+using namespace std;
+
 vs_togglebutton::vs_togglebutton(char _bracketl, char _mark, char _bracketr,
 				 fragment *_label, bool _checked)
 :vs_button(_label), checked(_checked),
@@ -32,13 +36,18 @@
   addch(bracketr);
 }
 
+point vs_togglebutton::get_cursorloc()
+{
+  return point(0, getmaxy()/2);
+}
+
 void vs_togglebutton::paint()
 {
   const size_t labelw=getmaxx()>=4?getmaxx()-4:0;
   const fragment_contents lines=get_label()->layout(labelw, labelw);
-  const size_t checkheight=lines.size()/2;
+  const size_t checkheight=getmaxy()/2;
 
-  for(size_t i=0; i<lines.size(); ++i)
+  for(size_t i=0; i<min<size_t>(lines.size(), getmaxy()); ++i)
     {
       if(i==checkheight)
 	{

Modified: branches/aptitude-0.3/aptitude/src/vscreen/vs_togglebutton.h
==============================================================================
--- branches/aptitude-0.3/aptitude/src/vscreen/vs_togglebutton.h	(original)
+++ branches/aptitude-0.3/aptitude/src/vscreen/vs_togglebutton.h	Wed Apr 27 02:15:47 2005
@@ -29,6 +29,8 @@
   vs_togglebutton(char _bracketl, char _mark, char _bracketr,
 		  const std::string &_label, bool _checked=false);
 
+  point get_cursorloc();
+
   void paint();
 
   bool get_checked() {return checked;}