For GTK to properly z-order the dialog, i.e. so that it gets put on top,
the correct parent window must be specified.

By default this is the root window, but for some settings we open an
additional dialog window, in which these must be used as parent.

Signed-off-by: Christoph Heiss <[email protected]>
---
Changes v1 -> v2:
  * new patch

 Proxmox/UI.pm      | 12 ++++++------
 Proxmox/UI/Gtk3.pm | 12 ++++++------
 2 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/Proxmox/UI.pm b/Proxmox/UI.pm
index 99988ab..55a78e4 100644
--- a/Proxmox/UI.pm
+++ b/Proxmox/UI.pm
@@ -48,13 +48,13 @@ my sub get_env {
 }
 
 sub message {
-    my ($msg) = @_;
-    get_ui()->message($msg);
+    my ($msg, $parentwindow) = @_;
+    get_ui()->message($msg, $parentwindow);
 }
 
 sub error {
-    my ($msg) = @_;
-    get_ui()->error($msg);
+    my ($msg, $parentwindow) = @_;
+    get_ui()->error($msg, $parentwindow);
 }
 
 sub finished {
@@ -63,8 +63,8 @@ sub finished {
 }
 
 sub prompt {
-    my ($query) = @_;
-    return get_ui()->prompt($query);
+    my ($query, $parentwindow) = @_;
+    return get_ui()->prompt($query, $parentwindow);
 }
 
 sub display_html {
diff --git a/Proxmox/UI/Gtk3.pm b/Proxmox/UI/Gtk3.pm
index 9af3d6a..82a4623 100644
--- a/Proxmox/UI/Gtk3.pm
+++ b/Proxmox/UI/Gtk3.pm
@@ -8,18 +8,18 @@ use Gtk3;
 use base qw(Proxmox::UI::Base);
 
 sub message {
-    my ($self, $msg) = @_;
+    my ($self, $msg, $parentwindow) = @_;
 
-    my $window = $self->{state}->{window};
+    my $window = $parentwindow // $self->{state}->{window};
     my $dialog = Gtk3::MessageDialog->new($window, 'modal', 'info', 'ok', 
$msg);
     $dialog->run();
     $dialog->destroy();
 }
 
 sub error {
-    my ($self, $msg) = @_;
+    my ($self, $msg, $parentwindow) = @_;
 
-    my $window = $self->{state}->{window};
+    my $window = $parentwindow // $self->{state}->{window};
     my $dialog = Gtk3::MessageDialog->new($window, 'modal', 'error', 'ok', 
$msg);
     $dialog->run();
     $dialog->destroy();
@@ -31,9 +31,9 @@ sub finished {
 }
 
 sub prompt {
-    my ($self, $query) = @_;
+    my ($self, $query, $parentwindow) = @_;
 
-    my $window = $self->{state}->{window};
+    my $window = $parentwindow // $self->{state}->{window};
     my $dialog = Gtk3::MessageDialog->new($window, 'modal', 'question', 
'ok-cancel', $query);
     my $response = $dialog->run();
     $dialog->destroy();
-- 
2.51.0



_______________________________________________
pve-devel mailing list
[email protected]
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to