documentation for Fl_Tree in FLTK 1.3.4は言う場合:Fl_TreeコールバックはFL_WHEN_RELEASE
呼び出さ3210コールバック()が呼び出されたときに()
- FL_WHEN_RELEASEの値に応じ - マウスの左ボタンが離されたときにコールバックが呼び出さ項目
- FL_WHEN_CHANGED - コールバックは、マウスの左変化選択状態
しかし、マウスが離され、両方の違いがわからない場合はコールバックを呼び出すことができません。何か案は?
#include <FL/Fl.H>
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Tree.H>
static void cb_(Fl_Tree*, void*)
{
printf ("callback\n");
}
int main()
{
Fl_Double_Window* w = new Fl_Double_Window(325, 325);
Fl_Tree* o = new Fl_Tree(25, 25, 255, 245);
o->callback((Fl_Callback*)cb_);
o->when(FL_WHEN_RELEASE);
o->add("foo/bar");
o->add("foo/baz");
o->end();
w->show();
return Fl::run();
}
これは出力がFL_WHEN_RELEASEが設定されている場合でも、すべての変更の「コールバック」スニペット。
私はテスト/ツリーの例も試したことがあるはずです。だからここでドキュメントが間違っていると言いますか? ** FL_WHEN_RELEASE - アイテム上でマウスの左ボタンが放されたときに呼び出されるコールバック** – Andy
これらはどちらも正しい - それは単なるコンテキストです。ツリービューでは、項目を部分的に選択することはできないため、変更と解放の動作は同じです。編集ボックスでは、項目が部分的に選択され、異なる動作をすることができます。 – cup
しかしFl_Treeでは、既に選択されているアイテムがクリックされた場合、実際には違いが生じます。以前に別のアイテムが選択されていた場合は、FL_WHEN_CHANGEDのコールバックが必要です(選択が変更されているため)。しかし、すでに選択されている項目が再度クリックされた場合、FL_WHEN_RELEASEのコールバックを期待します。 – Andy