[Kazehakase-devel 992] Re: 動的に生成されるポップアップメニュー

Zurück zum Archiv-Index

Yoichi Imai yoich****@silve*****
2004年 3月 21日 (日) 01:59:28 JST


今井です。
On Sun, 21 Mar 2004 00:55:26 +0900 (JST)
Hidetaka Iwai <tyuyu****@sings*****> wrote:

> 岩井@札幌です。libeggについて質問があります。
> 
> 入力メソッドやエンコーディングのポップアップメニュー、またはsf.jpに要
> 望として提出されているクリックでタブリストについて、これらは実行時に動
> 的に中身が決定されるために、kz-ui-*.xmlにその内容を列挙するわけにはい
> かないと思います。これでlibeggの恩恵に預るには
> 
> 1. kz-ui-*.xmlで<submenu></submenu>でサブメニューだけ用意
> 2. kz_actions_popup_menu_modalでegg_menu_merge_get_widgetを呼んで、予
>    め定義してあるでサブメニューをゲット
> 3. サブメニューがNULLじゃなかったら、そのサブメニューに対して
>     gtk_menu_shell_appendでアイテムを追加
> 
> という手順で上手く行くかと考えて、実際そのようなコードを書いてみたので
> すが、一応動くもののGtkImageMenuItemからGtkMenuShellへのInvalid Castで
> あるという旨の警告が出ます(当り前なのか..?(^^;
> 
> 何か他に上手い方法はあるのでしょうか。それとも、libeggの恩恵に預るのは
> 無理だったりするのでしょうか。
欲しい情報はたぶんこれじゃないですかね。
kz-window.c, kz_window_sync_ui_level():
        widget = egg_menu_merge_get_widget(kz->menu_merge, path);
        if (GTK_IS_MENU_ITEM(widget))
                widget = gtk_menu_item_get_submenu(GTK_MENU_ITEM(widget));
        if (GTK_IS_MENU_SHELL(widget))
        {
                kz_boommark_menu_remove_menuitems(GTK_MENU_SHELL(widget), kz);
                kz_boommark_menu_append_menuitems(GTK_MENU_SHELL(widget), kz,
                                                  kz_bookmark);
        }

-- 
Yoichi Imai <yoich****@silve*****>
http://y-imai.good-day.net/



Kazehakase-devel メーリングリストの案内
Zurück zum Archiv-Index