[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;}