2015年05月25日

作業日誌

 Windows用GTK+のウィジェット間ドラッグ&ドロップ機能の正しい使い方がいまいち把握できない。一番簡単に使おうと思ったら、とりあえずdrag-data-getシグナルとdrag-data-receivedシグナルのハンドラを書いとけばいいのかな。

 actionにCOPYとMOVEを指定しとくと、IconViewからのShiftキーを押しながらのドラッグで移動モードが動作するみたいだけど、そこはCtrlキーじゃないのか?

(追記)

 「Shiftキーで移動」は、例えばWindowsのエクスプローラでも同じだったので、上記の訂正部分は気にする必要はなかった。

 違和感は別のところに原因があった。

 Windowsのエクスプローラでは、アイコン選択のための最後のクリックで一度マウスボタンを放して、ドラッグのためのクリックは別にやり直すことができるが、GTK+の現在のWindows向けバイナリ版(3.6.4)のIconViewでは、アイコン選択時の最後のクリックで押したマウスボタンを放さずにそのままドラッグ操作を始めなければならない。そうしないと、アイコンの選択状態が変わってしまう。

 この仕様があるために、アイコンを複数選択するためのShift/Ctrlキー操作がドラッグ&ドロップのモード(移動orコピー)にも影響してしまう。つまり、一度のShift/Ctrlキー操作の中で、押す時と放す時で別のことを考えなければならない。これはかなり面倒だ。

 最新のソースコードで、このあたりどうなっているのか、自分では今のところちょっと確認できない。
posted by chrono at 07:37| Comment(0) | TrackBack(0) | 日記、雑文

HSPでGTK+のシグナルハンドラの呼び出し時に引数が正常に使えるようになった

 今まではHSPからGTK+を使う時に既存のコールバック実装プラグインを利用していて、シグナルハンドラの引数を参照しようとすると、システムエラーが出てスクリプトが落ちてしまうことが多く困っていたが、tds12さん作のモジュール(公開場所:http://hsp.tv/play/pforum.php?mode=all&num=62130)を利用することでシグナルハンドラの引数が自由に使えるようになった。

 モジュールのnewclbk3命令を呼び出す時に、p4に1(CLBKMODE_CDECL)を指定する。

※ https://github.com/kitachro/hsp-gtk/tree/master/tutorialでHSPからWindows用のGTK+を使うプログラムのサンプルを公開しています。
posted by chrono at 06:46| Comment(0) | TrackBack(0) | HSP