void cb_index_row_activated(GtkTreeView* tree_view, GtkTreePath* path, GtkTreeViewColumn* UNUSED(column), void* data) { zathura_t* zathura = data; if (tree_view == NULL || zathura == NULL || zathura->ui.session == NULL) { return; } GtkTreeModel *model; GtkTreeIter iter; g_object_get(G_OBJECT(tree_view), "model", &model, NULL); if(gtk_tree_model_get_iter(model, &iter, path)) { zathura_index_element_t* index_element; gtk_tree_model_get(model, &iter, 2, &index_element, -1); if (index_element == NULL) { return; } sc_toggle_index(zathura->ui.session, NULL, NULL, 0); zathura_link_evaluate(zathura, index_element->link); } g_object_unref(model); }
bool cb_sc_follow(GtkEntry* entry, girara_session_t* session) { g_return_val_if_fail(session != NULL, FALSE); g_return_val_if_fail(session->global.data != NULL, FALSE); zathura_t* zathura = session->global.data; bool eval = true; char* input = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1); if (input == NULL || strlen(input) == 0) { eval = false; } int index = 0; if (eval == true) { index = atoi(input); if (index == 0 && g_strcmp0(input, "0") != 0) { girara_notify(session, GIRARA_WARNING, _("Invalid input '%s' given."), input); eval = false; } index = index - 1; } /* set pages to draw links */ bool invalid_index = true; unsigned int number_of_pages = zathura_document_get_number_of_pages(zathura->document); for (unsigned int page_id = 0; page_id < number_of_pages; page_id++) { zathura_page_t* page = zathura_document_get_page(zathura->document, page_id); if (page == NULL || zathura_page_get_visibility(page) == false) { continue; } GtkWidget* page_widget = zathura_page_get_widget(zathura, page); g_object_set(page_widget, "draw-links", FALSE, NULL); if (eval == true) { zathura_link_t* link = zathura_page_widget_link_get(ZATHURA_PAGE(page_widget), index); if (link != NULL) { zathura_link_evaluate(zathura, link); invalid_index = false; } } } if (eval == true && invalid_index == true) { girara_notify(session, GIRARA_WARNING, _("Invalid index '%s' given."), input); } g_free(input); return (eval == TRUE) ? TRUE : FALSE; }