プロジェクトの場合、Gtk-sharp (2.12) で「再利用可能」なポップアップを作成する必要があります。私は Ubuntu (14.04、LTS)、Monodevelop (4.0.12) で開発しています。
更新関数を呼び出すと、情報が更新され、それ自体がユーザーに表示されます。リフレッシュは問題ありません。私が抱えている問題は、ウィンドウをユーザーに提示するときです。
私の考えは、 window.Present() を使用してユーザーに表示することです。ただし、これをテストすると、奇妙な動作が見つかります。テスト コードは、この投稿の下部に含まれています。
すべての例は、新たに開始されたアプリケーションから始まると仮定します
シナリオ 1:
- プログラムを開始
- ウィンドウの外をクリック
- 待って
- 手順 2 と 3 を繰り返します。
結果: ウィンドウが表示され、手順 2 と 3 を繰り返すことができます。問題ない。
シナリオ 2:
- プログラムを開始
- 「非表示」ボタンをクリックします
- 待って
- ウィンドウが再表示されます -> これまでのところ、とても良い
- 「非表示」ボタンをクリックします
- ウィンドウの外をクリック
結果: アイコンは表示されますが、ウィンドウが表示されず、アイコンが揺れることがあります。
ここで何か不足していますか?ウィンドウをリセットするには、TestPresent の本体内でさらにアクションが必要ですか?
ウィンドウが非表示になっている場合は、表示が必要です。
static Window win;
public static void Main ()
{
Application.Init ();
win = new Window ("Test");
win.DeleteEvent += (o, args) => Application.Quit();
win.Resize (200, 200);
Button btnHide = new Button (new Label ("Hide"));
btnHide.Clicked += (sender, e) => win.Hide ();
win.Add (btnHide);
GLib.Timeout.Add(5000, new GLib.TimeoutHandler(TestPresent));
win.ShowAll ();
Application.Run ();
}
private static bool TestPresent()
{
win.Show ();
win.Present ();
return true;
}