gtk2/gtk/gtkfilechoosersettings.h
Federico Mena Quintero cfb09e5654 GtkFileChooserButton: return correct selection for SELECT_FOLDER mode
The old code to load the last_folder_uri state from the settings was not actually
ensuring that the settings were read from disk.  The result was this:

1. user chooses a folder in SELECT_FOLDER mode
2. user dismisses the file chooser dialog inside a GtkFileChooserButton
3. The dialog unmaps itself and saves the last_folder_uri with the user's selection
4. The file chooser button gets queried for the selection
5. GtkFileChooserDefault sees that it is unmapped, and falls back to the last_folder_uri
6. But since that key is not ensured as read by the temporary instance of GtkFileChooserSettings,
   it returns nothing.
7. The file chooser falls back to returning the user's home directory.

However, *we don't use the last_folder_uri* anymore, for anything!  So, removed
that code and now everything falls back to ->current_folder correctly.  This
is the correct selection value for SELECT_FOLDER mode anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=674556
Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2013-01-24 17:57:03 -06:00

119 lines
4.0 KiB
C

/* GTK - The GIMP Toolkit
* gtkfilechoosersettings.h: Internal settings for the GtkFileChooser widget
* Copyright (C) 2006, Novell, Inc.
*
* Authors: Federico Mena-Quintero <federico@novell.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#ifndef __GTK_FILE_CHOOSER_SETTINGS_H__
#define __GTK_FILE_CHOOSER_SETTINGS_H__
#include "gtkfilechooserprivate.h"
G_BEGIN_DECLS
#define GTK_FILE_CHOOSER_SETTINGS_TYPE (_gtk_file_chooser_settings_get_type ())
/* Column numbers for the file list */
enum {
FILE_LIST_COL_NAME,
FILE_LIST_COL_SIZE,
FILE_LIST_COL_MTIME,
FILE_LIST_COL_NUM_COLUMNS
};
typedef struct _GtkFileChooserSettings GtkFileChooserSettings;
typedef struct _GtkFileChooserSettingsClass GtkFileChooserSettingsClass;
struct _GtkFileChooserSettings
{
GObject object;
LocationMode location_mode;
GtkSortType sort_order;
gint sort_column;
StartupMode startup_mode;
int geometry_x;
int geometry_y;
int geometry_width;
int geometry_height;
guint settings_read : 1;
guint show_hidden : 1;
guint show_size_column : 1;
};
struct _GtkFileChooserSettingsClass
{
GObjectClass parent_class;
};
GType _gtk_file_chooser_settings_get_type (void) G_GNUC_CONST;
GtkFileChooserSettings *_gtk_file_chooser_settings_new (void);
LocationMode _gtk_file_chooser_settings_get_location_mode (GtkFileChooserSettings *settings);
void _gtk_file_chooser_settings_set_location_mode (GtkFileChooserSettings *settings,
LocationMode location_mode);
gboolean _gtk_file_chooser_settings_get_show_hidden (GtkFileChooserSettings *settings);
void _gtk_file_chooser_settings_set_show_hidden (GtkFileChooserSettings *settings,
gboolean show_hidden);
gboolean _gtk_file_chooser_settings_get_show_size_column (GtkFileChooserSettings *settings);
void _gtk_file_chooser_settings_set_show_size_column (GtkFileChooserSettings *settings,
gboolean show_column);
gint _gtk_file_chooser_settings_get_sort_column (GtkFileChooserSettings *settings);
void _gtk_file_chooser_settings_set_sort_column (GtkFileChooserSettings *settings,
gint sort_column);
GtkSortType _gtk_file_chooser_settings_get_sort_order (GtkFileChooserSettings *settings);
void _gtk_file_chooser_settings_set_sort_order (GtkFileChooserSettings *settings,
GtkSortType sort_order);
void _gtk_file_chooser_settings_get_geometry (GtkFileChooserSettings *settings,
int *out_x,
int *out_y,
int *out_width,
int *out_heigth);
void _gtk_file_chooser_settings_set_geometry (GtkFileChooserSettings *settings,
int x,
int y,
int width,
int heigth);
void _gtk_file_chooser_settings_set_startup_mode (GtkFileChooserSettings *settings,
StartupMode startup_mode);
StartupMode _gtk_file_chooser_settings_get_startup_mode (GtkFileChooserSettings *settings);
gboolean _gtk_file_chooser_settings_save (GtkFileChooserSettings *settings,
GError **error);
/* FIXME: persist these options:
*
* - paned width
* - show_hidden
*/
G_END_DECLS
#endif