前提・実現したいこと
linux上のgtk3で簡易なepwingビューワを自作しており、textviewウィジェットで辞書の検索結果の表示する部分での質問です。
編集属性・カーソル表示属性をoffにして、「b」キーを押下したら画面をPageUpする機能を実装する中で、”key-press-event"に対するシステムデフォルトのコールバック関数を抑止することを実現したい。
発生している問題・エラーメッセージ
検索結果を表示中に「b」キーを押下すると、一旦、textviewに表示されているtextbufferのend iteratorにviewportが移動した後で、PageUpされるため、意図した動作になりません。
該当のソースコード
C
1(main()の抜粋) 2gtk_text_view_set_editable(textview,FALSE); 3get_text_view_set_cursor_visible(textview,FALSE); 4g_signal_connect(textview,"key-release-event",G_CALLBACK(cb_event),NULL); 5 6(cb_event()の抜粋) 7gtk_text_view_get_visible_rect(textview,&rect); 8switch(event->keyval) 9 case GDK_KEY_b: 10 gtk_text_view_get_iter_at_location(textview,&iter,rect.x,rect.y-rect.height); 11 gtk_text_view_scroll_to_iter(textview,&iter,0.0,TRUE,0.0,0.0);
試したこと
・g_signal_connect_afterでのコールバック関数やkey-press-eventでのイベント登録(上記のソースと同様いずれの組み合わせも同様でした)
・システムデフォルトのコールバック関数をg_signal_disconnectで遮断しようとしたのですが、handlerIDの取得方法が分かりませんでした。(ユーザ定義ではg_signal_connectの戻り値でhandlerIDを取得できました)
補足情報(FW/ツールのバージョンなど)
・kernel:5.1.9 vanilla
・glibc:2.30
・glib:2.60.2
・gtk:3.24.10
・DisplayManager:Wayland(weston-6.0.1)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。