Bug 766628 - Preferences window is too tall
Add gimp_prefs_box_set_page_scrollable() which does what it says, and make the tallest pages of the prefs dialog scrollable. This method allows the dialog's smaller pages to still enforce a minimum height for the window.
This commit is contained in:
parent
981a1b9c2e
commit
9b8009d8c7
3 changed files with 59 additions and 19 deletions
|
|
@ -1325,6 +1325,8 @@ prefs_dialog_new (Gimp *gimp,
|
|||
NULL,
|
||||
&top_iter);
|
||||
|
||||
gimp_prefs_box_set_page_scrollable (GIMP_PREFS_BOX (prefs_box), vbox, TRUE);
|
||||
|
||||
{
|
||||
GObject *color_config;
|
||||
GtkListStore *store;
|
||||
|
|
@ -1608,6 +1610,8 @@ prefs_dialog_new (Gimp *gimp,
|
|||
NULL,
|
||||
&top_iter);
|
||||
|
||||
gimp_prefs_box_set_page_scrollable (GIMP_PREFS_BOX (prefs_box), vbox, TRUE);
|
||||
|
||||
table = prefs_table_new (1, GTK_CONTAINER (vbox));
|
||||
|
||||
{
|
||||
|
|
@ -2018,6 +2022,8 @@ prefs_dialog_new (Gimp *gimp,
|
|||
&top_iter,
|
||||
&child_iter);
|
||||
|
||||
gimp_prefs_box_set_page_scrollable (GIMP_PREFS_BOX (prefs_box), vbox, TRUE);
|
||||
|
||||
size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
|
||||
|
||||
/* Color profile import dialog */
|
||||
|
|
|
|||
|
|
@ -316,24 +316,30 @@ gimp_prefs_box_add_page (GimpPrefsBox *box,
|
|||
GtkTreeIter *iter)
|
||||
{
|
||||
GimpPrefsBoxPrivate *private;
|
||||
GtkWidget *event_box;
|
||||
GtkWidget *scrolled_win;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *viewport;
|
||||
|
||||
g_return_val_if_fail (GIMP_IS_PREFS_BOX (box), NULL);
|
||||
|
||||
private = GET_PRIVATE (box);
|
||||
|
||||
event_box = gtk_event_box_new ();
|
||||
gtk_event_box_set_visible_window (GTK_EVENT_BOX (event_box), FALSE);
|
||||
gtk_notebook_append_page (GTK_NOTEBOOK (private->notebook), event_box, NULL);
|
||||
gtk_widget_show (event_box);
|
||||
scrolled_win = gtk_scrolled_window_new (NULL, NULL);
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
|
||||
GTK_POLICY_NEVER, GTK_POLICY_NEVER);
|
||||
gtk_notebook_append_page (GTK_NOTEBOOK (private->notebook), scrolled_win, NULL);
|
||||
gtk_widget_show (scrolled_win);
|
||||
|
||||
gimp_help_set_help_data (event_box, NULL, help_id);
|
||||
gimp_help_set_help_data (scrolled_win, NULL, help_id);
|
||||
|
||||
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
|
||||
gtk_container_add (GTK_CONTAINER (event_box), vbox);
|
||||
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_win),
|
||||
vbox);
|
||||
gtk_widget_show (vbox);
|
||||
|
||||
viewport = gtk_bin_get_child (GTK_BIN (scrolled_win));
|
||||
gtk_viewport_set_shadow_type (GTK_VIEWPORT (viewport), GTK_SHADOW_NONE);
|
||||
|
||||
gtk_tree_store_append (private->store, iter, parent);
|
||||
gtk_tree_store_set (private->store, iter,
|
||||
COLUMN_TREE_ICON_NAME, icon_name,
|
||||
|
|
@ -348,6 +354,30 @@ gimp_prefs_box_add_page (GimpPrefsBox *box,
|
|||
return vbox;
|
||||
}
|
||||
|
||||
void
|
||||
gimp_prefs_box_set_page_scrollable (GimpPrefsBox *box,
|
||||
GtkWidget *page,
|
||||
gboolean scrollable)
|
||||
{
|
||||
GimpPrefsBoxPrivate *private;
|
||||
GtkWidget *scrolled_win;
|
||||
|
||||
g_return_if_fail (GIMP_IS_PREFS_BOX (box));
|
||||
g_return_if_fail (GTK_IS_BOX (page));
|
||||
g_return_if_fail (gtk_widget_is_ancestor (page, GTK_WIDGET (box)));
|
||||
|
||||
private = GET_PRIVATE (box);
|
||||
|
||||
scrolled_win = gtk_widget_get_ancestor (page, GTK_TYPE_SCROLLED_WINDOW);
|
||||
|
||||
g_return_if_fail (gtk_widget_get_parent (scrolled_win) == private->notebook);
|
||||
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
|
||||
GTK_POLICY_NEVER,
|
||||
scrollable ?
|
||||
GTK_POLICY_AUTOMATIC : GTK_POLICY_NEVER);
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
gimp_prefs_box_get_tree_view (GimpPrefsBox *box)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -43,21 +43,25 @@ struct _GimpPrefsBoxClass
|
|||
};
|
||||
|
||||
|
||||
GType gimp_prefs_box_get_type (void) G_GNUC_CONST;
|
||||
GType gimp_prefs_box_get_type (void) G_GNUC_CONST;
|
||||
|
||||
GtkWidget * gimp_prefs_box_new (void);
|
||||
GtkWidget * gimp_prefs_box_new (void);
|
||||
|
||||
GtkWidget * gimp_prefs_box_add_page (GimpPrefsBox *box,
|
||||
const gchar *icon_name,
|
||||
const gchar *notebook_label,
|
||||
const gchar *tree_label,
|
||||
const gchar *help_id,
|
||||
GtkTreeIter *parent,
|
||||
GtkTreeIter *iter);
|
||||
GtkWidget * gimp_prefs_box_add_page (GimpPrefsBox *box,
|
||||
const gchar *icon_name,
|
||||
const gchar *notebook_label,
|
||||
const gchar *tree_label,
|
||||
const gchar *help_id,
|
||||
GtkTreeIter *parent,
|
||||
GtkTreeIter *iter);
|
||||
|
||||
GtkWidget * gimp_prefs_box_get_tree_view (GimpPrefsBox *box);
|
||||
GtkWidget * gimp_prefs_box_get_notebook (GimpPrefsBox *box);
|
||||
GtkWidget * gimp_prefs_box_get_image (GimpPrefsBox *box);
|
||||
void gimp_prefs_box_set_page_scrollable (GimpPrefsBox *box,
|
||||
GtkWidget *page,
|
||||
gboolean scrollable);
|
||||
|
||||
GtkWidget * gimp_prefs_box_get_tree_view (GimpPrefsBox *box);
|
||||
GtkWidget * gimp_prefs_box_get_notebook (GimpPrefsBox *box);
|
||||
GtkWidget * gimp_prefs_box_get_image (GimpPrefsBox *box);
|
||||
|
||||
|
||||
#endif /* __GIMP_PREFS_BOX_H__ */
|
||||
|
|
|
|||
Loading…
Reference in a new issue