diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/gsr-config-page.c | 49 | ||||
| -rw-r--r-- | src/gsr-window.c | 43 | ||||
| -rw-r--r-- | src/main.c | 8 |
3 files changed, 48 insertions, 52 deletions
diff --git a/src/gsr-config-page.c b/src/gsr-config-page.c index b1c325c..9beb39d 100644 --- a/src/gsr-config-page.c +++ b/src/gsr-config-page.c @@ -200,21 +200,22 @@ build_capture_group(GsrConfigPage *self) const GsrInfo *info = self->info; - /* "Window" */ - if (info->system_info.display_server == GSR_DISPLAY_SERVER_WAYLAND) - gtk_string_list_append(self->record_area_model, "Window (Wayland N/A)"); - else +#ifdef HAVE_X11 + /* "Window" — X11 only */ + if (info->system_info.display_server == GSR_DISPLAY_SERVER_X11) { gtk_string_list_append(self->record_area_model, "Window"); - ids_array_append(&self->record_area_ids, &self->n_record_area_ids, &cap, "window"); + ids_array_append(&self->record_area_ids, &self->n_record_area_ids, &cap, "window"); + } - /* "Follow focused window" */ - if (info->system_info.display_server == GSR_DISPLAY_SERVER_WAYLAND) - gtk_string_list_append(self->record_area_model, "Focused window (Wayland N/A)"); - else + /* "Follow focused window" — X11 only */ + if (info->system_info.display_server == GSR_DISPLAY_SERVER_X11) { gtk_string_list_append(self->record_area_model, "Focused window"); - ids_array_append(&self->record_area_ids, &self->n_record_area_ids, &cap, "focused"); + ids_array_append(&self->record_area_ids, &self->n_record_area_ids, &cap, "focused"); + } +#endif /* Monitors */ + int first_monitor_idx = self->n_record_area_ids; for (int i = 0; i < info->supported_capture_options.n_monitors; i++) { const GsrMonitor *m = &info->supported_capture_options.monitors[i]; char *label; @@ -227,28 +228,24 @@ build_capture_group(GsrConfigPage *self) g_free(label); } - /* Desktop portal */ - if (info->system_info.display_server == GSR_DISPLAY_SERVER_WAYLAND) { - if (info->supported_capture_options.portal) - gtk_string_list_append(self->record_area_model, "Desktop portal (no HDR)"); - else - gtk_string_list_append(self->record_area_model, "Desktop portal (N/A)"); - } else { - gtk_string_list_append(self->record_area_model, "Desktop portal (X11 N/A)"); + /* Desktop portal — only on Wayland with portal support */ + if (info->system_info.display_server == GSR_DISPLAY_SERVER_WAYLAND + && info->supported_capture_options.portal) { + gtk_string_list_append(self->record_area_model, "Desktop portal (no HDR)"); + ids_array_append(&self->record_area_ids, &self->n_record_area_ids, &cap, "portal"); } - ids_array_append(&self->record_area_ids, &self->n_record_area_ids, &cap, "portal"); self->record_area_row = ADW_COMBO_ROW(adw_combo_row_new()); adw_preferences_row_set_title(ADW_PREFERENCES_ROW(self->record_area_row), "Record area"); + + /* Default selection: first monitor if available, else first entry */ + guint default_idx = (info->supported_capture_options.n_monitors > 0) + ? (guint)first_monitor_idx : 0; + adw_combo_row_set_selected(self->record_area_row, default_idx); + adw_combo_row_set_model(self->record_area_row, G_LIST_MODEL(self->record_area_model)); - adw_combo_row_set_use_subtitle(self->record_area_row, TRUE); - - /* Default selection: first monitor if available (index 2), else window (index 0) */ - if (info->supported_capture_options.n_monitors > 0) - adw_combo_row_set_selected(self->record_area_row, 2); - else - adw_combo_row_set_selected(self->record_area_row, 0); + adw_combo_row_set_selected(self->record_area_row, default_idx); g_signal_connect(self->record_area_row, "notify::selected", G_CALLBACK(on_record_area_changed), self); diff --git a/src/gsr-window.c b/src/gsr-window.c index d224aba..e2c1ab7 100644 --- a/src/gsr-window.c +++ b/src/gsr-window.c @@ -526,23 +526,22 @@ handle_child_death(GsrWindow *self, int exit_status) /* Canceled by user — silent */ } else if (exit_status == 0) { /* Success */ - gboolean notify = gsr_config_page_get_notify_stopped(self->config_page); - if (notify) { - if (mode == GSR_ACTIVE_MODE_RECORD && self->record_filename) { + if (mode == GSR_ACTIVE_MODE_RECORD && self->record_filename) { + if (gsr_config_page_get_notify_saved(self->config_page)) { char *msg = g_strdup_printf("Recording saved to %s", self->record_filename); send_notification(self, "GPU Screen Recorder", msg, G_NOTIFICATION_PRIORITY_NORMAL); g_free(msg); - } else { - const char *mode_str = - mode == GSR_ACTIVE_MODE_STREAM ? "streaming" : - mode == GSR_ACTIVE_MODE_REPLAY ? "replay" : "recording"; - char *msg = g_strdup_printf("Stopped %s", mode_str); - send_notification(self, "GPU Screen Recorder", msg, - G_NOTIFICATION_PRIORITY_NORMAL); - g_free(msg); } + } else if (gsr_config_page_get_notify_stopped(self->config_page)) { + const char *mode_str = + mode == GSR_ACTIVE_MODE_STREAM ? "streaming" : + mode == GSR_ACTIVE_MODE_REPLAY ? "replay" : "recording"; + char *msg = g_strdup_printf("Stopped %s", mode_str); + send_notification(self, "GPU Screen Recorder", msg, + G_NOTIFICATION_PRIORITY_NORMAL); + g_free(msg); } } else { /* Error — always notify regardless of user prefs */ @@ -1077,23 +1076,23 @@ gsr_window_stop_process(GsrWindow *self, gboolean *already_dead) self->active_mode = GSR_ACTIVE_MODE_NONE; /* Show stop notification (respecting user prefs) */ - if (gsr_config_page_get_notify_stopped(self->config_page)) { - if (success && mode == GSR_ACTIVE_MODE_RECORD && self->record_filename) { + if (success && mode == GSR_ACTIVE_MODE_RECORD && self->record_filename) { + if (gsr_config_page_get_notify_saved(self->config_page)) { char *msg = g_strdup_printf("Recording saved to %s", self->record_filename); send_notification(self, "GPU Screen Recorder", msg, G_NOTIFICATION_PRIORITY_NORMAL); g_free(msg); - } else { - const char *mode_str = - mode == GSR_ACTIVE_MODE_STREAM ? "streaming" : - mode == GSR_ACTIVE_MODE_RECORD ? "recording" : - mode == GSR_ACTIVE_MODE_REPLAY ? "replay" : "unknown"; - char *msg = g_strdup_printf("Stopped %s", mode_str); - send_notification(self, "GPU Screen Recorder", msg, - G_NOTIFICATION_PRIORITY_NORMAL); - g_free(msg); } + } else if (gsr_config_page_get_notify_stopped(self->config_page)) { + const char *mode_str = + mode == GSR_ACTIVE_MODE_STREAM ? "streaming" : + mode == GSR_ACTIVE_MODE_RECORD ? "recording" : + mode == GSR_ACTIVE_MODE_REPLAY ? "replay" : "unknown"; + char *msg = g_strdup_printf("Stopped %s", mode_str); + send_notification(self, "GPU Screen Recorder", msg, + G_NOTIFICATION_PRIORITY_NORMAL); + g_free(msg); } return success; @@ -17,7 +17,7 @@ on_about_action(GSimpleAction *action, AdwAboutDialog *about = ADW_ABOUT_DIALOG(adw_about_dialog_new()); adw_about_dialog_set_application_name(about, "GPU Screen Recorder"); adw_about_dialog_set_version(about, GSR_VERSION); - adw_about_dialog_set_developer_name(about, "Trung Lê"); + adw_about_dialog_set_developer_name(about, "dec05eba"); adw_about_dialog_set_application_icon(about, "com.dec05eba.gpu_screen_recorder"); adw_about_dialog_set_license_type(about, GTK_LICENSE_GPL_3_0); @@ -26,11 +26,11 @@ on_about_action(GSimpleAction *action, adw_about_dialog_set_issue_url(about, "https://github.com/runlevel5/gpu-screen-recorder-adwaita/issues"); - const char *developers[] = { "Trung Lê", NULL }; + const char *developers[] = { "dec05eba", NULL }; adw_about_dialog_set_developers(about, developers); - adw_about_dialog_add_credit_section(about, "Original GTK3 Version", - (const char *[]){ "dec05eba", NULL }); + adw_about_dialog_add_credit_section(about, "Adwaita Port", + (const char *[]){ "Trung Lê", NULL }); adw_dialog_present(ADW_DIALOG(about), GTK_WIDGET(win)); } |
