RSS/Atom feed Twitter
Site is read-only, email is disabled

[Patch] Less cluttered UI, on-demand showing of docking bars

This discussion is connected to the gimp-developer-list.gnome.org mailing list which is provided by the GIMP developers and not related to gimpusers.com.

This is a read-only list on gimpusers.com so this discussion thread is read-only, too.

8 of 8 messages available
Toggle history

Please log in to manage your subscriptions.

[Patch] Less cluttered UI, on-demand showing of docking bars Martin Nordholts 04 Jan 12:38
  [Patch] Less cluttered UI, on-demand showing of docking bars Rolf Steinort 04 Jan 15:39
   [Patch] Less cluttered UI, on-demand showing of docking bars Martin Nordholts 04 Jan 16:35
    [Patch] Less cluttered UI, on-demand showing of docking bars Martin Nordholts 04 Jan 16:39
    [Patch] Less cluttered UI, on-demand showing of docking bars Alexia Death 04 Jan 16:52
     [Patch] Less cluttered UI, on-demand showing of docking bars vabijou2 04 Jan 18:00
    [Patch] Less cluttered UI, on-demand showing of docking bars Andreas Nilsson 05 Jan 02:14
  [Patch] Less cluttered UI, on-demand showing of docking bars Martin Nordholts 10 Jan 02:38
Martin Nordholts
2009-01-04 12:38:28 UTC (almost 16 years ago)

[Patch] Less cluttered UI, on-demand showing of docking bars

Hi

In current GIMP the docking bars are always visible even though they are only useful when rearranging the GIMP UI. I have attached a fairly simple patch (you need latest trunk) that hides these by default and only shows them when a dockable-drag is started. They are hidden again when the dockable-drag is completed.

For better understanding, look at this before- and after-patch-applied screenshot that shows a dock when GIMP has started: http://www.chromecode.com/temp/gimp-on-demand-docking-2009-01-03.png

This is not a trivial UI change so I want to probe for comments on this list before possibly applying. Any objections to me applying it? Any suggestions for improvement?

- Martin

Index: app/widgets/gimpdock.c =================================================================== --- app/widgets/gimpdock.c (revision 27881) +++ app/widgets/gimpdock.c (working copy) @@ -76,6 +76,9 @@ struct _GimpDockPriv GList *dockbooks;

gint ID; /* for themeing */ +
+ GtkWidget *north_separator; + GtkWidget *south_separator; };


@@ -102,6 +105,8 @@ static void gimp_dock_real_book_add GimpDockbook *dockbook); static void gimp_dock_real_book_removed (GimpDock *dock, GimpDockbook *dockbook); +static void gimp_dock_show_dockers (GimpDock *dock, + gboolean show);

G_DEFINE_TYPE (GimpDock, gimp_dock, GIMP_TYPE_WINDOW) @@ -110,6 +115,8 @@ G_DEFINE_TYPE (GimpDock, gimp_dock, GIMP
static guint dock_signals[LAST_SIGNAL] = { 0 };
+static GList *dock_instances = NULL; +

static void
gimp_dock_class_init (GimpDockClass *klass) @@ -185,7 +192,6 @@ static void
gimp_dock_init (GimpDock *dock)
{
static gint dock_ID = 1;
- GtkWidget *separator;
gchar *name;

dock->priv = G_TYPE_INSTANCE_GET_PRIVATE (dock, @@ -212,9 +218,8 @@ gimp_dock_init (GimpDock *dock) gtk_container_add (GTK_CONTAINER (dock->priv->main_vbox), dock->priv->vbox); gtk_widget_show (dock->priv->vbox);
- separator = gimp_dock_separator_new (dock, GTK_ANCHOR_NORTH); - gtk_box_pack_start (GTK_BOX (dock->priv->vbox), separator, FALSE, FALSE, 0); - gtk_widget_show (separator);
+ dock->priv->north_separator = gimp_dock_separator_new (dock, GTK_ANCHOR_NORTH); + gtk_box_pack_start (GTK_BOX (dock->priv->vbox), dock->priv->north_separator, FALSE, FALSE, 0); }

static GObject *
@@ -236,6 +241,8 @@ gimp_dock_constructor (GType config = GIMP_GUI_CONFIG (dock->priv->context->gimp->config);
gimp_window_set_hint (GTK_WINDOW (dock), config->dock_window_hint); +
+ dock_instances = g_list_prepend (dock_instances, dock);
return object;
}
@@ -293,6 +300,8 @@ gimp_dock_destroy (GtkObject *object) {
GimpDock *dock = GIMP_DOCK (object);
+ dock_instances = g_list_remove (dock_instances, dock); +
while (dock->priv->dockbooks)
gimp_dock_remove_book (dock, GIMP_DOCKBOOK (dock->priv->dockbooks->data));
@@ -401,6 +410,21 @@ gimp_dock_real_book_removed (GimpDock gtk_widget_destroy (GTK_WIDGET (dock)); }

+static void
+gimp_dock_show_dockers (GimpDock *dock, + gboolean show) +{
+ if (dock->priv->north_separator)
+ g_object_set (dock->priv->north_separator, + "visible", show,
+ NULL);
+
+ if (dock->priv->south_separator)
+ g_object_set (dock->priv->south_separator, + "visible", show,
+ NULL);
+}
+

/* public functions */

@@ -534,14 +558,11 @@ gimp_dock_add_book (GimpDock *dock,
if (old_length == 0)
{
- GtkWidget *separator;
-
gtk_box_pack_start (GTK_BOX (dock->priv->vbox), GTK_WIDGET (dockbook), TRUE, TRUE, 0);
- separator = gimp_dock_separator_new (dock, GTK_ANCHOR_SOUTH); - gtk_box_pack_end (GTK_BOX (dock->priv->vbox), separator, FALSE, FALSE, 0); - gtk_widget_show (separator);
+ dock->priv->south_separator = gimp_dock_separator_new (dock, GTK_ANCHOR_SOUTH); + gtk_box_pack_end (GTK_BOX (dock->priv->vbox), dock->priv->south_separator, FALSE,FALSE, 0); }
else
{
@@ -669,3 +690,19 @@ gimp_dock_remove_book (GimpDock *doc
g_object_unref (dockbook);
}
+
+void
+gimp_dock_class_show_separators (GimpDockClass *klass, + gboolean show) +{
+ GList *list;
+
+ g_return_if_fail (GIMP_IS_DOCK_CLASS (klass)); +
+ for (list = dock_instances; list != NULL; list = list->next) + {
+ GimpDock *dock = GIMP_DOCK (list->data); +
+ gimp_dock_show_dockers (dock, show); + }
+}
Index: app/widgets/gimpdock.h
=================================================================== --- app/widgets/gimpdock.h (revision 27882) +++ app/widgets/gimpdock.h (working copy) @@ -63,32 +63,36 @@ struct _GimpDockClass };


-GType gimp_dock_get_type (void) G_GNUC_CONST; +GType gimp_dock_get_type (void) G_GNUC_CONST;
-void gimp_dock_setup (GimpDock *dock, - const GimpDock *template); -void gimp_dock_set_aux_info (GimpDock *dock, - GList *aux_info); -GList * gimp_dock_get_aux_info (GimpDock *dock); -GimpContext * gimp_dock_get_context (GimpDock *dock); -GimpDialogFactory * gimp_dock_get_dialog_factory (GimpDock *dock); -GList * gimp_dock_get_dockbooks (GimpDock *dock); -GtkWidget * gimp_dock_get_main_vbox (GimpDock *dock); -GtkWidget * gimp_dock_get_vbox (GimpDock *dock); -gint gimp_dock_get_id (GimpDock *dock); -
-void gimp_dock_add (GimpDock *dock, - GimpDockable *dockable, - gint book, - gint index); -void gimp_dock_remove (GimpDock *dock, - GimpDockable *dockable); -
-void gimp_dock_add_book (GimpDock *dock, - GimpDockbook *dockbook, - gint index); -void gimp_dock_remove_book (GimpDock *dock, - GimpDockbook *dockbook); +void gimp_dock_setup (GimpDock *dock, + const GimpDock *template); +void gimp_dock_set_aux_info (GimpDock *dock, + GList *aux_info); +GList * gimp_dock_get_aux_info (GimpDock *dock); +GimpContext * gimp_dock_get_context (GimpDock *dock); +GimpDialogFactory * gimp_dock_get_dialog_factory (GimpDock *dock); +GList * gimp_dock_get_dockbooks (GimpDock *dock); +GtkWidget * gimp_dock_get_main_vbox (GimpDock *dock); +GtkWidget * gimp_dock_get_vbox (GimpDock *dock); +gint gimp_dock_get_id (GimpDock *dock); +
+void gimp_dock_add (GimpDock *dock, + GimpDockable *dockable, + gint book, + gint index); +void gimp_dock_remove (GimpDock *dock, + GimpDockable *dockable); +
+void gimp_dock_add_book (GimpDock *dock, + GimpDockbook *dockbook, + gint index); +void gimp_dock_remove_book (GimpDock *dock, + GimpDockbook *dockbook); +
+
+void gimp_dock_class_show_separators (GimpDockClass *klass, + gboolean show);

#endif /* __GIMP_DOCK_H__ */
Index: app/widgets/gimpdockbook.c
=================================================================== --- app/widgets/gimpdockbook.c (revision 27881) +++ app/widgets/gimpdockbook.c (working copy) @@ -610,6 +610,7 @@ gimp_dockbook_tab_drag_begin (GtkWidget {
GtkWidget *window;
GtkWidget *view;
+ GimpDockClass *dock_class = GIMP_DOCK_GET_CLASS (dockable->dockbook->dock); GtkRequisition requisition;

window = gtk_window_new (GTK_WINDOW_POPUP); @@ -639,6 +640,8 @@ gimp_dockbook_tab_drag_begin (GtkWidget * it's the dockable that's being dragged around */
gtk_widget_set_sensitive (GTK_WIDGET (dockable), FALSE); +
+ gimp_dock_class_show_separators (dock_class, TRUE); }

static void
@@ -646,7 +649,8 @@ gimp_dockbook_tab_drag_end (GtkWidget GdkDragContext *context, GimpDockable *dockable) {
- GtkWidget *drag_widget = g_object_get_data (G_OBJECT (dockable), + GimpDockClass *dock_class = GIMP_DOCK_GET_CLASS (dockable->dockbook->dock); + GtkWidget *drag_widget = g_object_get_data (G_OBJECT (dockable), "gimp-dock-drag-widget");
/* finding the drag_widget means the drop was not successful, so @@ -661,6 +665,8 @@ gimp_dockbook_tab_drag_end (GtkWidget dockable->drag_x = GIMP_DOCKABLE_DRAG_OFFSET; dockable->drag_y = GIMP_DOCKABLE_DRAG_OFFSET; gtk_widget_set_sensitive (GTK_WIDGET (dockable), TRUE); +
+ gimp_dock_class_show_separators (dock_class, FALSE); }

Rolf Steinort
2009-01-04 15:39:07 UTC (almost 16 years ago)

[Patch] Less cluttered UI, on-demand showing of docking bars

On Sun, 2009-01-04 at 12:38 +0100, Martin Nordholts wrote:

In current GIMP the docking bars are always visible even though they are only useful when rearranging the GIMP UI. I have attached a fairly simple patch (you need latest trunk) that hides these by default and only shows them when a dockable-drag is started. They are hidden again when the dockable-drag is completed.

For better understanding, look at this before- and after-patch-applied screenshot that shows a dock when GIMP has started: http://www.chromecode.com/temp/gimp-on-demand-docking-2009-01-03.png

This is not a trivial UI change so I want to probe for comments on this list before possibly applying. Any objections to me applying it? Any suggestions for improvement?

I like this very much - it's much cleaner.

Now the "dockability" is advertised with a tool tip while hoovering over the docking bar. How will the new version do this? How important is this?

When a dockable-drag is started, the docking targets should be visible prominently, not only the bar in it's current version. Perhaps even as a bubbles floating on top of the targets.

Rolf Steinort

http://meetthegimp.org - Weekly videopodcast about GIMP

Martin Nordholts
2009-01-04 16:35:42 UTC (almost 16 years ago)

[Patch] Less cluttered UI, on-demand showing of docking bars

Rolf Steinort wrote:

On Sun, 2009-01-04 at 12:38 +0100, Martin Nordholts wrote:

In current GIMP the docking bars are always visible even though they are only useful when rearranging the GIMP UI. I have attached a fairly simple patch (you need latest trunk) that hides these by default and only shows them when a dockable-drag is started. They are hidden again when the dockable-drag is completed.

Now the "dockability" is advertised with a tool tip while hoovering over the docking bar. How will the new version do this? How important is this?

When a dockable-drag is started, the docking targets should be visible prominently, not only the bar in it's current version. Perhaps even as a bubbles floating on top of the targets.

The lost opportunity of the docking bar tooltip is good point but I think we and the users can live without that tooltip.

Another good point is that there is no point in having the docking bars microscopically small any longer so I have attached a new patch that makes them larger. You need to make install in $GIMP_SRC_ROOT/themes in order for the change in docking bar height to take effect. I also fixed another issue with trying to hide a destroyed docking bar.

Updated screenshot: http://www.chromecode.com/temp/gimp-on-demand-docking-2009-01-03-1627.png

- Martin

Martin Nordholts
2009-01-04 16:39:30 UTC (almost 16 years ago)

[Patch] Less cluttered UI, on-demand showing of docking bars

Martin Nordholts wrote:

I have attached a new patch

That was a lie, here is the patch.

- Martin

Index: app/widgets/gimpdock.c =================================================================== --- app/widgets/gimpdock.c (revision 27881) +++ app/widgets/gimpdock.c (working copy) @@ -76,6 +76,9 @@ struct _GimpDockPriv GList *dockbooks;

gint ID; /* for themeing */ +
+ GtkWidget *north_separator; + GtkWidget *south_separator; };


@@ -102,6 +105,8 @@ static void gimp_dock_real_book_add GimpDockbook *dockbook); static void gimp_dock_real_book_removed (GimpDock *dock, GimpDockbook *dockbook); +static void gimp_dock_show_separators (GimpDock *dock, + gboolean show);

G_DEFINE_TYPE (GimpDock, gimp_dock, GIMP_TYPE_WINDOW) @@ -110,6 +115,8 @@ G_DEFINE_TYPE (GimpDock, gimp_dock, GIMP
static guint dock_signals[LAST_SIGNAL] = { 0 };
+static GList *dock_instances = NULL; +

static void
gimp_dock_class_init (GimpDockClass *klass) @@ -185,7 +192,6 @@ static void
gimp_dock_init (GimpDock *dock)
{
static gint dock_ID = 1;
- GtkWidget *separator;
gchar *name;

dock->priv = G_TYPE_INSTANCE_GET_PRIVATE (dock, @@ -212,9 +218,9 @@ gimp_dock_init (GimpDock *dock) gtk_container_add (GTK_CONTAINER (dock->priv->main_vbox), dock->priv->vbox); gtk_widget_show (dock->priv->vbox);
- separator = gimp_dock_separator_new (dock, GTK_ANCHOR_NORTH); - gtk_box_pack_start (GTK_BOX (dock->priv->vbox), separator, FALSE, FALSE, 0); - gtk_widget_show (separator);
+ dock->priv->north_separator = gimp_dock_separator_new (dock, GTK_ANCHOR_NORTH); + gtk_box_pack_start (GTK_BOX (dock->priv->vbox), dock->priv->north_separator, FALSE, FALSE, 0); + gimp_dock_separator_set_show_label (GIMP_DOCK_SEPARATOR (dock->priv->north_separator), TRUE); }

static GObject *
@@ -236,6 +242,8 @@ gimp_dock_constructor (GType config = GIMP_GUI_CONFIG (dock->priv->context->gimp->config);
gimp_window_set_hint (GTK_WINDOW (dock), config->dock_window_hint); +
+ dock_instances = g_list_prepend (dock_instances, dock);
return object;
}
@@ -293,6 +301,8 @@ gimp_dock_destroy (GtkObject *object) {
GimpDock *dock = GIMP_DOCK (object);
+ dock_instances = g_list_remove (dock_instances, dock); +
while (dock->priv->dockbooks)
gimp_dock_remove_book (dock, GIMP_DOCKBOOK (dock->priv->dockbooks->data));
@@ -401,6 +411,21 @@ gimp_dock_real_book_removed (GimpDock gtk_widget_destroy (GTK_WIDGET (dock)); }

+static void
+gimp_dock_show_separators (GimpDock *dock, + gboolean show) +{
+ if (dock->priv->north_separator)
+ g_object_set (dock->priv->north_separator, + "visible", show,
+ NULL);
+
+ if (dock->priv->south_separator)
+ g_object_set (dock->priv->south_separator, + "visible", show,
+ NULL);
+}
+

/* public functions */

@@ -534,14 +559,12 @@ gimp_dock_add_book (GimpDock *dock,
if (old_length == 0)
{
- GtkWidget *separator;
-
gtk_box_pack_start (GTK_BOX (dock->priv->vbox), GTK_WIDGET (dockbook), TRUE, TRUE, 0);
- separator = gimp_dock_separator_new (dock, GTK_ANCHOR_SOUTH); - gtk_box_pack_end (GTK_BOX (dock->priv->vbox), separator, FALSE, FALSE, 0); - gtk_widget_show (separator);
+ dock->priv->south_separator = gimp_dock_separator_new (dock, GTK_ANCHOR_SOUTH); + gtk_box_pack_end (GTK_BOX (dock->priv->vbox), dock->priv->south_separator, FALSE,FALSE, 0); + gimp_dock_separator_set_show_label (GIMP_DOCK_SEPARATOR (dock->priv->south_separator), TRUE); }
else
{
@@ -624,15 +647,13 @@ gimp_dock_remove_book (GimpDock *doc
if (old_length == 1)
{
- GtkWidget *separator;
GList *children;

children = gtk_container_get_children (GTK_CONTAINER (dock->priv->vbox));
- separator = g_list_nth_data (children, 2); -
- gtk_container_remove (GTK_CONTAINER (dock->priv->vbox), separator); + gtk_container_remove (GTK_CONTAINER (dock->priv->vbox), dock->priv->south_separator); gtk_container_remove (GTK_CONTAINER (dock->priv->vbox), GTK_WIDGET (dockbook)); + dock->priv->south_separator = NULL;
g_list_free (children);
}
@@ -669,3 +690,19 @@ gimp_dock_remove_book (GimpDock *doc
g_object_unref (dockbook);
}
+
+void
+gimp_dock_class_show_separators (GimpDockClass *klass, + gboolean show) +{
+ GList *list;
+
+ g_return_if_fail (GIMP_IS_DOCK_CLASS (klass)); +
+ for (list = dock_instances; list != NULL; list = list->next) + {
+ GimpDock *dock = GIMP_DOCK (list->data); +
+ gimp_dock_show_separators (dock, show); + }
+}
Index: app/widgets/gimpdock.h
=================================================================== --- app/widgets/gimpdock.h (revision 27882) +++ app/widgets/gimpdock.h (working copy) @@ -63,32 +63,36 @@ struct _GimpDockClass };


-GType gimp_dock_get_type (void) G_GNUC_CONST; +GType gimp_dock_get_type (void) G_GNUC_CONST;
-void gimp_dock_setup (GimpDock *dock, - const GimpDock *template); -void gimp_dock_set_aux_info (GimpDock *dock, - GList *aux_info); -GList * gimp_dock_get_aux_info (GimpDock *dock); -GimpContext * gimp_dock_get_context (GimpDock *dock); -GimpDialogFactory * gimp_dock_get_dialog_factory (GimpDock *dock); -GList * gimp_dock_get_dockbooks (GimpDock *dock); -GtkWidget * gimp_dock_get_main_vbox (GimpDock *dock); -GtkWidget * gimp_dock_get_vbox (GimpDock *dock); -gint gimp_dock_get_id (GimpDock *dock); -
-void gimp_dock_add (GimpDock *dock, - GimpDockable *dockable, - gint book, - gint index); -void gimp_dock_remove (GimpDock *dock, - GimpDockable *dockable); -
-void gimp_dock_add_book (GimpDock *dock, - GimpDockbook *dockbook, - gint index); -void gimp_dock_remove_book (GimpDock *dock, - GimpDockbook *dockbook); +void gimp_dock_setup (GimpDock *dock, + const GimpDock *template); +void gimp_dock_set_aux_info (GimpDock *dock, + GList *aux_info); +GList * gimp_dock_get_aux_info (GimpDock *dock); +GimpContext * gimp_dock_get_context (GimpDock *dock); +GimpDialogFactory * gimp_dock_get_dialog_factory (GimpDock *dock); +GList * gimp_dock_get_dockbooks (GimpDock *dock); +GtkWidget * gimp_dock_get_main_vbox (GimpDock *dock); +GtkWidget * gimp_dock_get_vbox (GimpDock *dock); +gint gimp_dock_get_id (GimpDock *dock); +
+void gimp_dock_add (GimpDock *dock, + GimpDockable *dockable, + gint book, + gint index); +void gimp_dock_remove (GimpDock *dock, + GimpDockable *dockable); +
+void gimp_dock_add_book (GimpDock *dock, + GimpDockbook *dockbook, + gint index); +void gimp_dock_remove_book (GimpDock *dock, + GimpDockbook *dockbook); +
+
+void gimp_dock_class_show_separators (GimpDockClass *klass, + gboolean show);

#endif /* __GIMP_DOCK_H__ */
Index: app/widgets/gimpdockbook.c
=================================================================== --- app/widgets/gimpdockbook.c (revision 27881) +++ app/widgets/gimpdockbook.c (working copy) @@ -610,6 +610,7 @@ gimp_dockbook_tab_drag_begin (GtkWidget {
GtkWidget *window;
GtkWidget *view;
+ GimpDockClass *dock_class = GIMP_DOCK_GET_CLASS (dockable->dockbook->dock); GtkRequisition requisition;

window = gtk_window_new (GTK_WINDOW_POPUP); @@ -639,6 +640,8 @@ gimp_dockbook_tab_drag_begin (GtkWidget * it's the dockable that's being dragged around */
gtk_widget_set_sensitive (GTK_WIDGET (dockable), FALSE); +
+ gimp_dock_class_show_separators (dock_class, TRUE); }

static void
@@ -646,7 +649,8 @@ gimp_dockbook_tab_drag_end (GtkWidget GdkDragContext *context, GimpDockable *dockable) {
- GtkWidget *drag_widget = g_object_get_data (G_OBJECT (dockable), + GimpDockClass *dock_class = GIMP_DOCK_GET_CLASS (dockable->dockbook->dock); + GtkWidget *drag_widget = g_object_get_data (G_OBJECT (dockable), "gimp-dock-drag-widget");
/* finding the drag_widget means the drop was not successful, so @@ -661,6 +665,8 @@ gimp_dockbook_tab_drag_end (GtkWidget dockable->drag_x = GIMP_DOCKABLE_DRAG_OFFSET; dockable->drag_y = GIMP_DOCKABLE_DRAG_OFFSET; gtk_widget_set_sensitive (GTK_WIDGET (dockable), TRUE); +
+ gimp_dock_class_show_separators (dock_class, FALSE); }


Index: app/widgets/gimptoolbox.c
=================================================================== --- app/widgets/gimptoolbox.c (revision 27881) +++ app/widgets/gimptoolbox.c (working copy) @@ -651,7 +651,6 @@ toolbox_separator_expand (GimpToolbox *t
gtk_box_set_child_packing (GTK_BOX (gimp_dock_get_vbox (dock)), separator, TRUE, TRUE, 0, GTK_PACK_START); - gimp_dock_separator_set_show_label (GIMP_DOCK_SEPARATOR (separator), TRUE); }

static void
@@ -667,7 +666,6 @@ toolbox_separator_collapse (GimpToolbox
gtk_box_set_child_packing (GTK_BOX (gimp_dock_get_vbox (dock)), separator, FALSE, FALSE, 0, GTK_PACK_START); - gimp_dock_separator_set_show_label (GIMP_DOCK_SEPARATOR (separator), FALSE); }

static void
Index: themes/Default/gtkrc
=================================================================== --- themes/Default/gtkrc (revision 27879) +++ themes/Default/gtkrc (working copy) @@ -39,7 +39,7 @@ style "gimp-default-style" GtkPaned::handle-size = 6 GimpDock::default-height = 300 GimpDock::font-scale = 0.8333 - GimpDockSeparator::height = 6 + GimpDockSeparator::height = 40 GimpMenuDock::minimal-width = 200 GimpMenuDock::menu-preview-size = button GimpToolbox::tool-icon-size = button

Alexia Death
2009-01-04 16:52:12 UTC (almost 16 years ago)

[Patch] Less cluttered UI, on-demand showing of docking bars

On Sunday 04 January 2009 17:35:42 Martin Nordholts wrote:

Updated screenshot:
http://www.chromecode.com/temp/gimp-on-demand-docking-2009-01-03-1627.png

Now THAT I like. As a NOOB I had serous problems realizing that the thin bars indicate a drop site and their thinness made them hard to hit later. Now both of these are solved making that much easier for a noob to understand and use.

--Alexia

vabijou2
2009-01-04 18:00:28 UTC (almost 16 years ago)

[Patch] Less cluttered UI, on-demand showing of docking bars

Alexia Death-2 wrote:

Now THAT I like. As a NOOB I had serous problems realizing that the thin bars
indicate a drop site and their thinness made them hard to hit later. Now both
of these are solved making that much easier for a noob to understand and use.

--Alexia

I had the same problems. In fact, while it might be a bit tacky, making the docking bars (or the text inside them) blink while dragging would add even more emphasis. Without a tool tip, a noob might accidentally initiate a dockable drag, then realize that is not what he/she wants and just let go of the dialog, without ever noticing that the docking bars had appeared. Flashing would help draw their attention to this feature.

Andreas Nilsson
2009-01-05 02:14:34 UTC (almost 16 years ago)

[Patch] Less cluttered UI, on-demand showing of docking bars

Martin Nordholts wrote:

Rolf Steinort wrote:

On Sun, 2009-01-04 at 12:38 +0100, Martin Nordholts wrote:

In current GIMP the docking bars are always visible even though they are only useful when rearranging the GIMP UI. I have attached a fairly simple patch (you need latest trunk) that hides these by default and only shows them when a dockable-drag is started. They are hidden again when the dockable-drag is completed.

Now the "dockability" is advertised with a tool tip while hoovering over the docking bar. How will the new version do this? How important is this?

When a dockable-drag is started, the docking targets should be visible prominently, not only the bar in it's current version. Perhaps even as a bubbles floating on top of the targets.

The lost opportunity of the docking bar tooltip is good point but I think we and the users can live without that tooltip.

Another good point is that there is no point in having the docking bars microscopically small any longer so I have attached a new patch that makes them larger. You need to make install in $GIMP_SRC_ROOT/themes in order for the change in docking bar height to take effect. I also fixed another issue with trying to hide a destroyed docking bar.

Updated screenshot: http://www.chromecode.com/temp/gimp-on-demand-docking-2009-01-03-1627.png

Sorry for nitpicking here, but perhaps it would look nicer if the text was center-aligned in the drop-box.
Other than that, looks great!
- Andreas

Martin Nordholts
2009-01-10 02:38:04 UTC (almost 16 years ago)

[Patch] Less cluttered UI, on-demand showing of docking bars

Martin Nordholts wrote:

Hi

In current GIMP the docking bars are always visible even though they are only useful when rearranging the GIMP UI. I have attached a fairly simple patch (you need latest trunk) that hides these by default and only shows them when a dockable-drag is started. They are hidden again when the dockable-drag is completed.

As this turned out to be a quite complicated UI problem to solve in a good way (especialy after some conversation on IRC) I have decided to postpone further hacking on it and aim for getting this finalized some other time (currently the aim is GIMP 2.10).

I have filed a bug report to prevent the patch from getting lost:

Bug 567221 – Only show docking bars when needed, not all the time http://bugzilla.gnome.org/show_bug.cgi?id=567221

- Martin