[M1 Mac, Big Sur 11.6.5, FLTK 1.3.8]
一つの山場と予想されたドラッグ&ドロップですが、これについては有益なネット情報がありましたので拝借しました。
この40行のコードを書こうと思ったら今の私なら半日仕事です。とても助かりました。参考コードでauto型の存在を初めて知りました(C++11から採用)。Javaもvar型で型推論できますが、使ったことはありませんでした。
Fl_InputとセットになったFL_Box継承のBoxクラスは他のウィジェットが見えるように invisible(FL_NO_BOX)にするなど私なりに少し工夫を入れています。
ここまででappファイルのサイズはたったの942KBです。この分だと最終的には2,3MB以内に収まる感じがします。PyQt6版の100分の1です。
期待通りの爆速軽量アプリに仕上がりそうです。
<関連する関数とクラス>
class Box : Fl_Box {
Fl_Input* input_line;
public:
Box(int, int, int, int, Fl_Input*);
private:
auto handle(int) -> int override;
};
Box::Box(int x, int y, int width, int height, Fl_Input* input) : Fl_Box(FL_NO_BOX, x, y, width, height, "") {
this->input_line = input;
}
auto Box::handle(int event) -> int {
switch (event) {
case FL_DND_DRAG:
case FL_DND_ENTER:
case FL_DND_RELEASE:
return 1;
case FL_PASTE:
input_line->value(Fl::event_text());
return 1;
default:
return Fl_Box::handle(event);
}
}
<mainクラスの一部>
input_line = new Fl_Input(50,10,220,25,"");
Box *box = new Box(0, 0, 360,220, input_line);