2016-09-24 20 views
0

私はステータスバーを持っており、GTK3(Debian/Sidでは3.21.5)を使ってLinux/Debian上でテキストを選択可能(コピー、貼り付け可能)にします。ステータスバーのラベルはプライベートデータのlabelフィールドであり、アクセスする直接APIはありません。GtkStatusbarのテキストを選択可能にする

は、私は(C99で)コードすることができた後、作業している:

mom_cmdstatusbar = // some global variable 
    gtk_statusbar_new(); 
{ 
    GtkWidget *statmsgarea = 
    gtk_statusbar_get_message_area (GTK_STATUSBAR (mom_cmdstatusbar)); 
    MOM_ASSERTPRINTF (GTK_IS_CONTAINER (statmsgarea), "bad [email protected]%p", 
        statmsgarea); 
    GList *lischs = gtk_container_get_children (GTK_CONTAINER (statmsgarea)); 
    for (GList * l = lischs; l != NULL; l = l->next) 
    { 
     GtkWidget *chwidg = l->data; 
     MOM_ASSERTPRINTF (GTK_IS_WIDGET (chwidg), "bad [email protected]%p", chwidg); 
     if (GTK_IS_LABEL (chwidg)) 
     gtk_label_set_selectable (GTK_LABEL(chwidg), true); 
    } 
    g_list_free (lischs), lischs = NULL; 
} 

これは機能しますが、はそれを行うには良いか簡単な方法はありますか?GtkStatusbarのメッセージエリアにある子どものリストを取得し、それぞれのテストに悪い匂いがします。 GTK3 APIにはGtkWidget* gtk_statusbar_get_label (GtkStatusbar*);の機能がないようです。

PS。 FWIWは、expjsブランチの58feb1d9473c34aca..コミット時にファイルのgithubにあるGPLv3 +です。もっと詳しく&そのソフトウェアプロジェクトに関する動機はthis & thatです。

答えて

0

内部の子供にアクセスするための直接的なAPIがない場合、それはおそらく意図的なものです。そのため、GTK開発者は、将来のバージョンでウィジェットの内部レイアウトを再編成するために、

関連する問題