선택한 문장의 단어를 기반으로, 트리 뷰의 런타임에 rightclick으로 팝업 컨텍스트 메뉴를 만듭니다. 코드 :Gtk, user_data로 문자열 전달하기
//---- inpropper ------------
gboolean
menu_RELEASE(GtkWidget *menu, gpointer *user_data)
{
printf("released at %s\n", (char*)user_data);
return FALSE;
}
//---------------------------
//---- propper [SOLVED] -----
gboolean
menu_RELEASE(GtkWidget *widget, GdkEvent *event, gpointer user_data)
{
gtk_entry_set_text(GTK_ENTRY(entry1), (char*)user_data);
gtk_widget_grab_focus(entry1);
return FALSE;
}
//--------------------------
GtkWidget *create_art_menu(GtkWidget *button)
{
char *ntext;
treesel = gtk_tree_view_get_selection(GTK_TREE_VIEW(view));
if (gtk_tree_selection_get_selected(treesel, &model ,&iter))
{
gtk_tree_model_get(model, &iter, cNaziv, &ntext, -1);
GtkWidget *menu, *menu_item;
menu = gtk_menu_new();
char *sresult = NULL;
sresult = strtok(ntext, " ");
while(sresult != NULL)
{
if (strlen(sresult)>1)
{
menu_item = gtk_menu_item_new_with_label(sresult);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
g_signal_connect(G_OBJECT(menu_item), "button-release-event", G_CALLBACK(menu_RELEASE), (gpointer)sresult);
}
sresult = strtok(NULL, " ");
}
gtk_menu_attach_to_widget(GTK_MENU(menu), button, NULL);
gtk_widget_show_all(menu);
return menu;
}
return 0;
}
신호가 트리거하고 확인을 통과하지만 난 더 이상의 조치에 필요한 _ 데이터에서 menu_RELEASE 처리기에서 클릭 메뉴 항목의 문자열을 얻을 수있다.
Q : 표시된 코드를 기반으로 menu_RELEASE 처리기에서 해제 된 메뉴 항목의 문자열을 얻는 방법.
대단히 고마워요. 내가해야 할 일은 당신의 첫 조언에 대한 선언을 바꾸는 것 뿐이다. 이제는 내 코드가 예상대로 작동한다. 이제는 내 gtkentry에서 텍스트를 선택했습니다! –