window: port to GTK 4

This commit is contained in:
Christian Hergert
2021-10-01 11:15:54 -07:00
parent dfe44cc724
commit fff24d95c6

View File

@ -133,7 +133,7 @@ close_tab_cb (GSimpleAction *action,
if (SYSPROF_IS_DISPLAY (child) && if (SYSPROF_IS_DISPLAY (child) &&
sysprof_display_is_empty (SYSPROF_DISPLAY (child))) sysprof_display_is_empty (SYSPROF_DISPLAY (child)))
{ {
gtk_widget_destroy (GTK_WIDGET (self)); gtk_window_destroy (GTK_WINDOW (self));
return; return;
} }
} }
@ -276,12 +276,30 @@ sysprof_window_open (SysprofWindow *self,
sysprof_notebook_open (self->notebook, file); sysprof_notebook_open (self->notebook, file);
} }
static void
sysprof_window_open_from_dialog_cb (SysprofWindow *self,
int response,
GtkFileChooserNative *dialog)
{
g_assert (SYSPROF_IS_WINDOW (self));
g_assert (GTK_IS_FILE_CHOOSER_NATIVE (dialog));
if (response == GTK_RESPONSE_ACCEPT)
{
g_autoptr(GFile) file = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (dialog));
if (g_file_is_native (file))
sysprof_window_open (self, file);
}
gtk_native_dialog_destroy (GTK_NATIVE_DIALOG (dialog));
}
void void
sysprof_window_open_from_dialog (SysprofWindow *self) sysprof_window_open_from_dialog (SysprofWindow *self)
{ {
GtkFileChooserNative *dialog; GtkFileChooserNative *dialog;
GtkFileFilter *filter; GtkFileFilter *filter;
gint response;
g_return_if_fail (SYSPROF_IS_WINDOW (self)); g_return_if_fail (SYSPROF_IS_WINDOW (self));
@ -294,8 +312,6 @@ sysprof_window_open_from_dialog (SysprofWindow *self)
/* Translators: This is a button. */ /* Translators: This is a button. */
_("Cancel")); _("Cancel"));
gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (dialog), TRUE);
filter = gtk_file_filter_new (); filter = gtk_file_filter_new ();
gtk_file_filter_set_name (filter, _("Sysprof Captures")); gtk_file_filter_set_name (filter, _("Sysprof Captures"));
gtk_file_filter_add_pattern (filter, "*.syscap"); gtk_file_filter_add_pattern (filter, "*.syscap");
@ -306,17 +322,13 @@ sysprof_window_open_from_dialog (SysprofWindow *self)
gtk_file_filter_add_pattern (filter, "*"); gtk_file_filter_add_pattern (filter, "*");
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
response = gtk_native_dialog_run (GTK_NATIVE_DIALOG (dialog)); g_signal_connect_object (dialog,
"response",
G_CALLBACK (sysprof_window_open_from_dialog_cb),
self,
G_CONNECT_SWAPPED);
if (response == GTK_RESPONSE_ACCEPT) gtk_native_dialog_show (GTK_NATIVE_DIALOG (dialog));
{
g_autoptr(GFile) file = NULL;
file = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (dialog));
sysprof_window_open (self, file);
}
gtk_native_dialog_destroy (GTK_NATIVE_DIALOG (dialog));
} }
void void