[gtk/BUG_double_popover_focus_filechooser_GTK3] filechooser: set default widget early for 'Rename' popover
- From: Nelson Benítez León <nbenitez src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/BUG_double_popover_focus_filechooser_GTK3] filechooser: set default widget early for 'Rename' popover
- Date: Tue, 31 Mar 2020 18:42:54 +0000 (UTC)
commit 6d98edf89ff8269c3d8f95333264e3505d9c87a2
Author: Nelson Benítez León <nbenitezl gmail com>
Date: Tue Mar 31 14:32:03 2020 -0400
filechooser: set default widget early for 'Rename' popover
because otherwise this second[1] popover will not be
able to save the filechooser default widget (the 'save'
button) because the first popover has not yet restablish
it (as will be done on popover's unmap handler).
[1] second because 'Rename' popover is launched from inside
the 'file properties' popover.
Fixes #2555
gtk/gtkfilechooserwidget.c | 12 +++++++++++-
gtk/gtkpopover.c | 9 +++++++++
gtk/gtkpopoverprivate.h | 1 +
3 files changed, 21 insertions(+), 1 deletion(-)
---
diff --git a/gtk/gtkfilechooserwidget.c b/gtk/gtkfilechooserwidget.c
index 562b2f7f5a..b4ff62da78 100644
--- a/gtk/gtkfilechooserwidget.c
+++ b/gtk/gtkfilechooserwidget.c
@@ -73,6 +73,7 @@
#include "gtkmain.h"
#include "gtkscrollable.h"
#include "gtkpopover.h"
+#include "gtkpopoverprivate.h"
#include "gtkrevealer.h"
#include "gtkspinner.h"
#include "gtkseparator.h"
@@ -1680,7 +1681,16 @@ rename_file_cb (GSimpleAction *action,
GtkFileChooserWidget *impl = data;
GtkFileChooserWidgetPrivate *priv = impl->priv;
GtkTreeSelection *selection;
-
+ GtkWidget *prev_default;
+ GtkWindow *window;
+
+ prev_default = gtk_popover_get_prev_default (GTK_POPOVER (priv->browse_files_popover));
+ if (prev_default) {
+ /* set 'default' early so rename popover can get it */
+ window = GTK_WINDOW (gtk_widget_get_ancestor (priv->browse_files_popover, GTK_TYPE_WINDOW));
+ if (window)
+ gtk_window_set_default (window, prev_default);
+ }
/* insensitive until we change the name */
gtk_widget_set_sensitive (priv->rename_file_rename_button, FALSE);
diff --git a/gtk/gtkpopover.c b/gtk/gtkpopover.c
index a2d47b6281..2f2a304085 100644
--- a/gtk/gtkpopover.c
+++ b/gtk/gtkpopover.c
@@ -674,6 +674,15 @@ gtk_popover_set_state (GtkPopover *popover,
}
}
+GtkWidget *
+gtk_popover_get_prev_default (GtkPopover *popover)
+{
+ g_return_val_if_fail (GTK_IS_POPOVER (popover), NULL);
+
+ return popover->priv->prev_default;
+}
+
+
static void
gtk_popover_map (GtkWidget *widget)
{
diff --git a/gtk/gtkpopoverprivate.h b/gtk/gtkpopoverprivate.h
index ab61eb993e..2064fa6753 100644
--- a/gtk/gtkpopoverprivate.h
+++ b/gtk/gtkpopoverprivate.h
@@ -23,6 +23,7 @@
G_BEGIN_DECLS
void gtk_popover_update_position (GtkPopover *popover);
+GtkWidget *gtk_popover_get_prev_default (GtkPopover *popover);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]