/* search text */ void on_toolbutton_search_clicked(GtkAction *action, gpointer user_data) { GeanyDocument *doc = document_get_current(); gboolean result; GtkWidget *entry = toolbar_get_widget_child_by_name("SearchEntry"); if (entry != NULL) { const gchar *text = gtk_entry_get_text(GTK_ENTRY(entry)); setup_find(text, FALSE); result = document_search_bar_find(doc, search_data.text, FALSE, FALSE); if (search_data.search_bar) ui_set_search_entry_background(entry, result); } else on_find1_activate(NULL, NULL); }
static gboolean on_treeview_key_press_event (GtkWidget *widget, GdkEventKey *event, gpointer user_data) { GtkTreeView *view = GTK_TREE_VIEW(widget); GtkTreeModel *model = gtk_tree_view_get_model(view); GtkTreeIter iter; GtkTreePath *path; GtkTreeViewColumn *column; gchar *str; gchar *row; gint row_idx, row_max; uint32_t min, max; gint n; GtkNotebook *nb = GTK_NOTEBOOK(notebook); gint page = gtk_notebook_get_current_page(nb); // get min address gtk_tree_model_get_iter_first(model, &iter); gtk_tree_model_get(model, &iter, COL_ADDR, &str, -1); sscanf(str, "%x", &min); // get max address n = gtk_tree_model_iter_n_children(model, NULL); gtk_tree_model_iter_nth_child(model, &iter, NULL, n-1); gtk_tree_model_get(model, &iter, COL_ADDR, &str, -1); sscanf(str, "%x", &max); // retrieve cursor gtk_tree_view_get_cursor(view, &path, &column); if(path == NULL) return FALSE; // get row row_idx = row_max = -1; row = gtk_tree_path_to_string(path); sscanf(row, "%i", &row_idx); g_free(row); row_max = gtk_tree_model_iter_n_children(model, NULL) - 1; //printf("row_idx = %i\n", row_idx); switch(event->keyval) { case GDK_Up: if(row_max == -1) break; if(row_idx > 0) break; refresh_page(page, -0x10); return FALSE; case GDK_Down: if(row_max == -1) break; if(row_idx < row_max) break; refresh_page(page, +0x10); str = g_strdup_printf("%i", row_max); path = gtk_tree_path_new_from_string(str); g_free(str); gtk_tree_view_set_cursor(view, path, NULL, FALSE); return FALSE; case GDK_Page_Up: if(row_max == -1) break; if(row_idx > 0) break; refresh_page(page, -DUMP_SIZE); path = gtk_tree_path_new_from_string("0"); gtk_tree_view_set_cursor(view, path, NULL, FALSE); return FALSE; case GDK_Page_Down: if(row_max == -1) break; if(row_idx < row_max) break; refresh_page(page, +DUMP_SIZE); str = g_strdup_printf("%i", row_max); path = gtk_tree_path_new_from_string(str); g_free(str); gtk_tree_view_set_cursor(view, path, NULL, FALSE); return FALSE; case GDK_n: search_next(); return TRUE; case GDK_a: case GDK_A: if(event->state & GDK_CONTROL_MASK) { on_go_to_address2_activate((GtkMenuItem *)widget, user_data); return TRUE; } case GDK_f: case GDK_F: if(event->state & GDK_CONTROL_MASK) { on_find1_activate((GtkMenuItem *)widget, user_data); return TRUE; } case GDK_plus: dbgmem_button1_clicked(NULL, NULL); return FALSE; case GDK_minus: dbgmem_button2_clicked(NULL, NULL); return FALSE; default: return FALSE; } return FALSE; }