File 090-db1b2fbc-Use-GtkFileChooserNative.patch of Package virt-manager.37148
Subject: Use GtkFileChooserNative
From: Michael Weghorn m.weghorn@posteo.de Wed Mar 20 07:41:29 2024 +0100
Date: Sun Apr 7 15:54:47 2024 -0400:
Git: db1b2fbce3c287e8127b3c744b2f8d49ad8ed2bc
Use GtkFileChooserNative [1] instead of GtkFileChooserDialog [2]
to integrate better with the platform (e.g. use the portal
implementation when run with GTK_USE_PORTAL=1, resulting in
the KDE Frameworks implementation being used when
xdg-desktop-portal-kde is in use). Quoting from
the GtkFileChooserDialog doc [2]:
> If you want to integrate well with the platform you should use the
> GtkFileChooserNative API, which will use a platform-specific dialog if
> available and fall back to GtkFileChooserDialog otherwise.
Also replace the use of GTK_STOCK_CANCEL [3] and GTK_STOCK_OPEN [4]
which were deprecated in GTK 3.10:
Both, the `accept_label` and `cancel_label` params of
`Gtk.FileChooserNative.new` can be `None` to use the default
text ("Open", "Cancel"). [5]
Adjust the only caller (in `vmmVMWindow#_takeScreenshot`)
that was passing an explicit label/icon name for the
accept button to pass `_("_Save")` as label, rather than
the also deprecated Gtk.STOCK_SAVE [6].
(GtkFileChooserDialog has special handling for Gtk.STOCK_SAVE
etc., but that's not generally the case for native dialogs).
Rename the method param from `choose_button` to `choose_label`
to make clearer that this is a label.
[1] https://docs.gtk.org/gtk3/class.FileChooserNative.html
[2] https://docs.gtk.org/gtk3/class.FileChooserDialog.html
[3] https://docs.gtk.org/gtk3/const.STOCK_CANCEL.html
[4] https://docs.gtk.org/gtk3/const.STOCK_OPEN.html
[5] http://pygobject-doc.gitee.io/pgi-docs/Gtk-3.0/classes/FileChooserNative.html#Gtk.FileChooserNative.new
[6] https://docs.gtk.org/gtk3/const.STOCK_SAVE.html
Fixes #315
diff --git a/virtManager/error.py b/virtManager/error.py
index 593c89ca..2b3a99f5 100644
--- a/virtManager/error.py
+++ b/virtManager/error.py
@@ -234,7 +234,7 @@ class vmmErrorDialog(vmmGObject):
def browse_local(self, dialog_name, start_folder=None,
_type=None, dialog_type=None,
- choose_button=None, default_name=None,
+ choose_label=None, default_name=None,
confirm_overwrite=False):
"""
Helper function for launching a filechooser
@@ -246,19 +246,11 @@ class vmmErrorDialog(vmmGObject):
"""
if dialog_type is None:
dialog_type = Gtk.FileChooserAction.OPEN
- if choose_button is None:
- choose_button = Gtk.STOCK_OPEN
-
- buttons = (Gtk.STOCK_CANCEL,
- Gtk.ResponseType.CANCEL,
- choose_button,
- Gtk.ResponseType.ACCEPT)
-
- fcdialog = Gtk.FileChooserDialog(title=dialog_name,
- parent=self.get_parent(),
- action=dialog_type,
- buttons=buttons)
- fcdialog.set_default_response(Gtk.ResponseType.ACCEPT)
+
+ fcdialog = Gtk.FileChooserNative.new(title=dialog_name,
+ parent=self.get_parent(),
+ action=dialog_type,
+ accept_label=choose_label)
if default_name:
fcdialog.set_current_name(default_name)
diff --git a/virtManager/vmwindow.py b/virtManager/vmwindow.py
index d5549454..4a4d2842 100644
--- a/virtManager/vmwindow.py
+++ b/virtManager/vmwindow.py
@@ -558,7 +558,7 @@ class vmmVMWindow(vmmGObjectUI):
_("Save Virtual Machine Screenshot"),
_type=("png", _("PNG files")),
dialog_type=Gtk.FileChooserAction.SAVE,
- choose_button=Gtk.STOCK_SAVE,
+ choose_label=_("_Save"),
start_folder=start_folder,
default_name=default,
confirm_overwrite=True)