私のアプリケーションでは、プロセスの実行中にほとんどのボタンとイベントボックスを無効にする必要がある場合があります(もちろん「キャンセル」ボタンを除く)。各イベントボックスには、クリックできるラベルが含まれています。これらのラベルがクリック可能であることをユーザーに理解させるために、テキストに下線を付け、これらのラベルにカーソルを合わせるとカーソルが変化します。
問題は、イベントボックスを無効にすると(感度を低くする)、かなり醜いアーティファクトが表示されることです。
そこで、この関数を検索して見つけました:gtk_event_box_set_visible_window。注:私は(残念ながら)Gtk 2.22を使用していますが、Webサイトからドキュメントを削除しただけです。とにかく、この関数のテキストは同じです。
この機能により、イベントボックスにGDK_INPUT_ONLY
ウィンドウを作成させることができます。そうすると、イベントボックスを無効にしても、醜くなりません。
ただし、イベントボックスには出力可能なウィンドウがないため、
gdk_window_set_cursor(event_box->window, cursor);
イベントボックスだけでなく、ウィンドウ全体のカーソルを変更します。
ウィンドウが表示されないこととウィンドウ上でカーソルが切り替わるという矛盾は多少わかりますが、それ以外の場合は、イベントボックス上でカーソルを変更できますが、イベントボックスが無効になっているときにアーティファクトが表示されないのはどうしてですか?