static void goto_file_line_cb(const gchar * filename, const gchar * line, const gchar * reason) { gint pos; gint page; GeanyDocument *doc; gint line_num = gdbio_atoi((gchar *) line) - 1; if (reason) { msgwin_compiler_add(COLOR_BLUE, "%s", reason); } doc = document_open_file(filename, FALSE, NULL, NULL); if (!(doc && doc->is_valid)) { return; } page = gtk_notebook_page_num(NOTEBOOK, GTK_WIDGET(doc->editor->sci)); gtk_notebook_set_current_page(NOTEBOOK, page); pos = sci_get_position_from_line(doc->editor->sci, line_num); sci_ensure_line_is_visible(doc->editor->sci, line_num); while (gtk_events_pending()) { gtk_main_iteration(); } sci_set_current_position(doc->editor->sci, pos, TRUE); gtk_widget_grab_focus(GTK_WIDGET(doc->editor->sci)); gtk_window_present(GTK_WINDOW(geany->main_widgets->window)); }
static PyObject * Scintilla_ensure_line_is_visible(Scintilla *self, PyObject *args, PyObject *kwargs) { gint line = -1; static gchar *kwlist[] = { "line", NULL }; SCI_RET_IF_FAIL(self); if (PyArg_ParseTupleAndKeywords(args, kwargs, "|i", kwlist, &line)) { if (line == -1) line = sci_get_current_line(self->sci); sci_ensure_line_is_visible(self->sci, line); } Py_RETURN_NONE; }