ヘッドアップディスプレイをMonoDevelopに固定するか、Ubuntuでグローバルメニューを不正に作成する方法





MonoDevelopでのHUDの操作性の問題は、MonoDevelopでメニューがまったく表示されないという事実にあるグローバルメニューへの移行に起因する古いバグに根ざしています。 グローバルメニューの使用自体をオフにすることで修復されました 。 曲線の問題を修正するのではなく、アプリケーションのブラックリストを作成するのはとても簡単です。

ピクセルを節約したいという欲求と、HUDをいじくり続けたいという欲求が犠牲になりました。 私の貴重な時間の2時間にも及ぶ、松葉杖を数本、まだ巻き上げました。



グローバルメニューの作業への小さな余談:アプリケーションによってD-Bus経由でエクスポートされ、開発者が追加のコードを記述しないように、Canonicalはウィンドウツールキットの通常の人間のメニューを取得し、開発者向けにエクスポートする反転ライブラリをリベットしました。しかし、それについては後で。 ただし、このメニューを手動でエクスポートする方法はありません。 もっと正確に言えば、libdbusmenuという名前の泥だらけのライブラリがあり、少なくともいくつかのドキュメントは完全に存在しません。 この種の所有権は正反対です。コードは公開されていますが、その使用方法をまったく理解できないため、適切に使用できません。 したがって、GnomePlatform.csにSetGlobalMenuメソッド(グローバルメニューを備えたシステムに特別に提供され、MacPlatform.csに実装されている)を実装することはできません。まあ、松葉杖がエクスポーターで動作しない理由を理解し、松葉杖で動作させる必要があります。 NCEをさまざまなサイズの中国製の鉄片で動作させる必要があったときから、WinCE 4.2が認識できないほど切断されていたため、私はそのような倒錯に対処しませんでした。





まず、UBUNTU_MENUPROXYゼロ化で松葉杖を取り外し、すべての側面がすでに修復され、すべてが機能していることを望みました。 奇跡は起こりませんでした。 さて、グローバルメニュー用のデバッグツールがあるかどうかを確認してください。 current-menu-dumpというユーティリティがあり、非常に興味深い結果が得られました 。メニューは引き続きエクスポートされますが、誰も表示しません。 当時はこの現象の説明はありませんでしたが、環境変数APPMENU_DISPLAY_BOTHがググされ、エクスポーターに通常のメニューも表示するように強制されました。 打ち上げの結果はさらに素晴らしいものでした。







つまり、通常のメニューバーのメニュー項目にカーソルを合わせると、すぐにグローバルメニューに表示されます。



この奇妙な振る舞いは、2つのオリジナルの技術的解決策の組み合わせによって説明されています。



  1. Unityは、サブメニューのない第1レベルのグローバルメニュー項目を表示しません
  2. MonoDevelopはメニュー項目の「遅延」ロードを使用するため、開始時にそのようなサブメニューはありません


環境がそれ自体でメニュー表示イベントを送信しない場合、それを行います。 急いで、 AddInをMonoDevelopにスカルプトします。これは、メニューバーを見つけてすべてのメニューを実行します。それを開始すると、奇跡が起こります。 1つの「マイナー」な迷惑ではない場合:







P_は、ホットキーのヒントとヒントの不足を強調しています。



これもlibappmenuの不正な実装が原因です。複雑なメニュー項目を適切に処理できず、MonoDevelopでは複雑です。内部の各項目は、それぞれ署名用とホットキー用の2つのラベルを持つHBoxです。 実際には、Labelの「label」プロパティの変更に関する通知をキャッチすることで、GLib開発者に多大な感謝の意を表したいと思います。



MonoDevelopでHUDとグローバルメニューのサポートを取得するには、 PPAからmonodevelop-latestおよびmonodevelop-appmenuパッケージをインストールする必要があります(12.04のビルドのみ):



sudo apt-add-repository ppa:keks9n/monodevelop-latest sudo apt-get update sudo apt-get install monodevelop-latest monodevelop-appmenu
      
      






All Articles