アクセラレータを Gtk::ToggleToolButton に接続しようとしていますが、残念ながら「トグル」信号は「アクティブ化可能」ではないため、次のように代わりに「クリック」に接続する必要があります。
togglebutton->add_accelerator("clicked", ...etc..)
これは機能し、 signal_clicked() に接続されているハンドラーを起動しますが、実際にはボタンの外観を変更したり、「トグル」シグナルを起動したりしません。基本的に、「クリック」を起動しても、ボタンの「アクティブ」状態は変わりません。
したがって、明らかな解決策は、「クリックされた」コールバック内から toolbutton->set_active(true/false) を呼び出すことです。しかし、現在の問題は、set_active 自体が「クリックされた」シグナルと「トグルされた」シグナルを発生させるため、次の無限ループに陥ることです。
accelerator -> clicked handler -> set_active() -> clicked handler -> set_active()
ですから、私の質問は、ToggleToolButton にアクセラレータを追加して、ボタンを切り替えるという予期される動作を実現するにはどうすればよいですか?