static void cb_view_adjustment_changed(GtkAdjustment* adjustment, zathura_t* zathura, bool width) { /* Do nothing in index mode */ if (girara_mode_get(zathura->ui.session) == zathura->modes.index) { return; } const zathura_adjust_mode_t adjust_mode = zathura_document_get_adjust_mode(zathura->document); /* Don't scroll, we're focusing the inputbar. */ if (adjust_mode == ZATHURA_ADJUST_INPUTBAR) { return; } /* Save the viewport size */ unsigned int size = (unsigned int)floor(gtk_adjustment_get_page_size(adjustment)); if (width == true) { zathura_document_set_viewport_width(zathura->document, size); } else { zathura_document_set_viewport_height(zathura->document, size); } /* reset the adjustment, in case bounds have changed */ const double ratio = width == true ? zathura_document_get_position_x(zathura->document) : zathura_document_get_position_y(zathura->document); zathura_adjustment_set_value_from_ratio(adjustment, ratio); }
bool sc_rotate(girara_session_t* session, girara_argument_t* argument, girara_event_t* UNUSED(event), unsigned int t) { g_return_val_if_fail(session != NULL, false); g_return_val_if_fail(session->global.data != NULL, false); zathura_t* zathura = session->global.data; g_return_val_if_fail(zathura->document != NULL, false); const unsigned int page_number = zathura_document_get_current_page_number(zathura->document); int angle = 90; if (argument != NULL && argument->n == ROTATE_CCW) { angle = 270; } /* update rotate value */ t = (t == 0) ? 1 : t; unsigned int rotation = zathura_document_get_rotation(zathura->document); zathura_document_set_rotation(zathura->document, (rotation + angle * t) % 360); /* update scale */ girara_argument_t new_argument = { zathura_document_get_adjust_mode(zathura->document), NULL }; sc_adjust_window(zathura->ui.session, &new_argument, NULL, 0); /* render all pages again */ render_all(zathura); page_set(zathura, page_number); return false; }
bool cb_view_resized(GtkWidget* UNUSED(widget), GtkAllocation* allocation, zathura_t* zathura) { if (zathura == NULL || zathura->document == NULL) { return false; } static int height = -1; static int width = -1; /* adjust only if the allocation changed */ if (width != allocation->width || height != allocation->height) { girara_argument_t argument = { zathura_document_get_adjust_mode(zathura->document), NULL }; sc_adjust_window(zathura->ui.session, &argument, NULL, 0); width = allocation->width; height = allocation->height; } return false; }