Hi,
I find that when clicking in TGListTree, the location of the pointer
on the screen is different from where the TGListTree thinks it is.
This makes it very difficult to open/close folders as one has to guess
where to click.
The loss of sync gets worse as one clicks further towards the end of a
long list. For example, in the attached code, in order to open/close
the last folder ("nine/nine") I must click on "nine/four".
The fonts used apparently affect things. I normally have the
following in my ~/.rootrc:
Unix.*.Gui.NormalFont: -adobe-helvetica-medium-r-*-*-18-*-*-*-*-*-iso8859-1
Unix.*.Gui.BoldFont: -adobe-helvetica-bold-r-*-*-18-*-*-*-*-*-iso8859-1
Unix.*.Gui.SmallFont: -adobe-helvetica-medium-r-*-*-16-*-*-*-*-*-iso8859-1
Unix.*.Gui.ProportionalFont: -adobe-courier-medium-r-*-*-18-*-*-*-*-*-iso8859-1
If I take this out, TGListTree behaves normally, even with a very long
list (max_dummy set to 10 in the test code).
-Brett.
// make a longish list tree. Run via:
// shell> root tt.C++
#include <TGFrame.h>
#include <TGListTree.h>
#include <TGCanvas.h>
#include <iostream>
using namespace std;
TGMainFrame* mf = 0;
const char* label[] = {
"zero",
"one",
"two",
"three",
"four",
"five",
"six",
"seven",
"eight",
"nine",
0
};
void tt()
{
mf = new TGMainFrame(gClient->GetRoot(),300,300);
TGCanvas* can = new TGCanvas(mf,10,10);
TGListTree* tt = new TGListTree(can,kHorizontalFrame);
tt->Associate(mf);
mf->AddFrame(can,new TGLayoutHints(kLHintsExpandX|kLHintsExpandY));
const int max_dummy = 1;
for (int dummy=0; dummy<max_dummy; ++dummy) {
for (int j=0; label[j]; ++j) {
cerr << "Adding: " << label[j] << endl;
TGListTreeItem* item = tt->AddItem(0,label[j]);
for (int i=0; label[i]; ++i) {
tt->AddItem(item,label[i]);
}
tt->OpenItem(item);
}
}
mf->MapSubwindows();
cerr << "Mapped sub windows\n";
mf->Layout();
cerr << "Layed out\n";
mf->Resize(mf->GetDefaultSize());
cerr << "Resized\n";
mf->MapWindow();
cerr << "Done\n";
}
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:08 MET