summaryrefslogtreecommitdiff
path: root/gtk/gtkfilechooserdefault.c
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@ximian.com>2004-03-08 22:21:47 +0000
committerFederico Mena Quintero <federico@src.gnome.org>2004-03-08 22:21:47 +0000
commit2247fc6659fc9ffeb7d169f01d7e9c11e68f239c (patch)
tree45e5e2200eac443ec63bf8835324fdc52695e858 /gtk/gtkfilechooserdefault.c
parentbe4fd08c0aab27b8bc02f1328805ba0997e4b706 (diff)
downloadgtk+-2247fc6659fc9ffeb7d169f01d7e9c11e68f239c.tar.gz
Fixes #136105.
2004-03-08 Federico Mena Quintero <federico@ximian.com> Fixes #136105. * gtk/gtkfilechooserembed.h (struct _GtkFileChooserEmbedIface): Added an ::initial_focus() method. * gtk/gtkfilechooserembed.c (_gtk_file_chooser_embed_delegate_iface_init): Set the initial_focus method. (delegate_initial_focus): Implement. (_gtk_file_chooser_embed_initial_focus): New function. * gtk/gtkfilechooserdialog.c (gtk_file_chooser_dialog_constructor): Call _gtk_file_chooser_embed_initial_focus(). * gtk/gtkfilechooserdefault.c (gtk_file_chooser_default_init): Install the ::initial_focus() handler. (gtk_file_chooser_default_initial_focus): Implement.
Diffstat (limited to 'gtk/gtkfilechooserdefault.c')
-rw-r--r--gtk/gtkfilechooserdefault.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/gtk/gtkfilechooserdefault.c b/gtk/gtkfilechooserdefault.c
index 84f6d86048..e24d3edd8a 100644
--- a/gtk/gtkfilechooserdefault.c
+++ b/gtk/gtkfilechooserdefault.c
@@ -274,6 +274,7 @@ static void gtk_file_chooser_default_get_resizable_hints (GtkFileCh
gboolean *resize_horizontally,
gboolean *resize_vertically);
static gboolean gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed);
+static void gtk_file_chooser_default_initial_focus (GtkFileChooserEmbed *chooser_embed);
static void location_popup_handler (GtkFileChooserDefault *impl);
static void up_folder_handler (GtkFileChooserDefault *impl);
@@ -496,6 +497,7 @@ gtk_file_chooser_embed_default_iface_init (GtkFileChooserEmbedIface *iface)
iface->get_default_size = gtk_file_chooser_default_get_default_size;
iface->get_resizable_hints = gtk_file_chooser_default_get_resizable_hints;
iface->should_respond = gtk_file_chooser_default_should_respond;
+ iface->initial_focus = gtk_file_chooser_default_initial_focus;
}
static void
gtk_file_chooser_default_init (GtkFileChooserDefault *impl)
@@ -3561,6 +3563,30 @@ gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed)
return FALSE;
}
+/* Implementation for GtkFileChooserEmbed::initial_focus() */
+static void
+gtk_file_chooser_default_initial_focus (GtkFileChooserEmbed *chooser_embed)
+{
+ GtkFileChooserDefault *impl;
+ GtkWidget *widget;
+
+ impl = GTK_FILE_CHOOSER_DEFAULT (chooser_embed);
+
+ if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN
+ || impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+ widget = impl->browse_files_tree_view;
+ else if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE
+ || impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+ widget = impl->save_file_name_entry;
+ else
+ {
+ g_assert_not_reached ();
+ widget = NULL;
+ }
+
+ gtk_widget_grab_focus (widget);
+}
+
static void
set_current_filter (GtkFileChooserDefault *impl,
GtkFileFilter *filter)