Extract shortcut actions to separate functions
To simplify event handling code, move all actions to separate functions.
@@ -238,6 +238,21 @@ static void switch_fullscreen(void) {
render(renderer, texture_empty ? NULL : texture);
}
+static void resize_to_fit(void) {
+ if (!fullscreen) {
+ struct size optimal_size = get_optimal_window_size(window, frame_size);
+ SDL_SetWindowSize(window, optimal_size.width, optimal_size.height);
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, "Resized to optimal size");
+ }
+}
+
+static void resize_to_pixel_perfect(void) {
+ if (!fullscreen) {
+ SDL_SetWindowSize(window, frame_size.width, frame_size.height);
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, "Resized to pixel-perfect");
+ }
+}
+
static int wait_for_success(process_t proc, const char *name) {
if (proc == PROCESS_NONE) {
SDL_LogError(SDL_LOG_CATEGORY_SYSTEM, "Could not execute \"%s\"", name);
@@ -342,22 +357,15 @@ static void handle_key(const SDL_KeyboardEvent *event) {
return;
}
- // Ctrl+x: optimal size
+ // Ctrl+x: optimal size (remove black borders)
if (keycode == SDLK_x && !shift) {
- if (!fullscreen) {
- struct size optimal_size = get_optimal_window_size(window, frame_size);
- SDL_SetWindowSize(window, optimal_size.width, optimal_size.height);
- SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, "Resized to optimal size");
- }
+ resize_to_fit();
return;
}
// Ctrl+g: pixel-perfect (ratio 1:1)
if (keycode == SDLK_g && !shift) {
- if (!fullscreen) {
- SDL_SetWindowSize(window, frame_size.width, frame_size.height);
- SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, "Resized to pixel-perfect");
- }
+ resize_to_pixel_perfect();
return;
}
