私のアプリケーションには、単一選択モードの GtkIconView があります。選択したアイテムのテキストを取得したい(そして、それをさらに下に進めたい)。現在、動作するコードがいくつかありますが、実際に GtkTreePath を取得するとプログラムがクラッシュします (segfault)。
Program received signal SIGSEGV, Segmentation fault.
0x0804d350 in minkovsky_ufilter_ufilter_window_on_filter_selected (
e=0x8172010, self=0x8354d80)
at /home/filip/ufilter/src/UfilterWindow.vala:281
281 TreePath item = filterchooser.get_selected_items().data;
どうしてそうなったのか(と、どうすれば治るのか)教えてください。
ありがとう。
編集:さらにいくつかのテストを行いましたが、まだ決定的ではありません. つまり、get_selected_items()
返された null (問題の原因) を確認したかったのですが、新しい場所で再びセグメンテーション違反が発生しました。これはコードです:
[CCode (instance_pos = -1)]
public void on_filter_selected (Event e) {
if(filterchooser.get_selected_items() == null){ // <-- Now happens here
stderr.printf("Null!");
return;
}
TreePath item = filterchooser.get_selected_items().data; // <-- Used to happen here
TreeIter iter;
string selection;
filterchooser_liststore.get_iter(out iter, item);
filterchooser_liststore.get(iter, 0, out selection);
stderr.printf("Selected filter: %s\n", selection);
}
編集 2: これは簡略化されたバージョンです。2 つのソース ファイル、1 つのグレード ファイル、サンプル イメージ、および compile コマンドを含む readme ファイルが含まれています。Valac v0.16、GTK+ 3.0、および GModule 2.0 が必要です (さらに削除することもできますが、要点が抜けているだけです。これらは製品コードで必要になります)。まだセグメンテーション違反。