Fixed key_submit not properly working with multi-action entires

This commit is contained in:
Scoopta 2020-08-27 19:18:42 -07:00
parent 1a913782f4
commit 952ec178f0
2 changed files with 14 additions and 3 deletions

View File

@ -5,3 +5,4 @@
^build$ ^build$
^debug$ ^debug$
^Debug$ ^Debug$
^noasan$

View File

@ -1291,9 +1291,19 @@ static gboolean key_press(GtkWidget* widget, GdkEvent* event, gpointer data) {
GList* children = gtk_flow_box_get_selected_children(GTK_FLOW_BOX(inner_box)); GList* children = gtk_flow_box_get_selected_children(GTK_FLOW_BOX(inner_box));
if(gtk_widget_has_focus(entry)) { if(gtk_widget_has_focus(entry)) {
g_signal_emit_by_name(entry, "activate", entry, NULL); g_signal_emit_by_name(entry, "activate", entry, NULL);
} else if(gtk_widget_has_focus(inner_box) || (children->data != NULL && gtk_widget_has_focus(children->data))) { } else if(gtk_widget_has_focus(inner_box) || children->data != NULL) {
if(children->data != NULL) { gpointer obj = children->data;
g_signal_emit_by_name(children->data, "activate", children->data, NULL);
if(obj != NULL) {
GtkWidget* exp = gtk_bin_get_child(GTK_BIN(obj));
if(GTK_IS_EXPANDER(exp)) {
GtkWidget* box = gtk_bin_get_child(GTK_BIN(exp));
GtkListBoxRow* row = gtk_list_box_get_selected_row(GTK_LIST_BOX(box));
if(row != NULL) {
obj = row;
}
}
g_signal_emit_by_name(obj, "activate", obj, NULL);
} }
} }
g_list_free(children); g_list_free(children);