app: Keep GimpDocks in GtkPaneds in GimpDockColumns

Use the new GimpPanedBox to make the space for GimpDocks in
GimpDockColumns manually distributable by the use of GtkPaneds.
This commit is contained in:
Martin Nordholts
2009-10-24 20:08:58 +02:00
parent b700f219de
commit 6f95bc6888
3 changed files with 68 additions and 7 deletions

View File

@ -160,7 +160,7 @@ gimp_ui_configurer_move_docks_to_columns (GimpUIConfigurer *ui_configurer,
*/
g_object_ref (dock);
gtk_container_remove (GTK_CONTAINER (dock_window), GTK_WIDGET (dock));
gimp_dock_columns_add_dock (dock_columns, dock);
gimp_dock_columns_add_dock (dock_columns, dock, -1);
g_object_unref (dock);
/* Queue for removal from the dialog factory. (We can't remove

View File

@ -26,14 +26,22 @@
#include "gimpdock.h"
#include "gimpdockcolumns.h"
#include "gimppanedbox.h"
struct _GimpDockColumnsPrivate
{
int dummy;
GList *docks;
GtkWidget *paned_hbox;
};
static gboolean gimp_dock_columns_dropped_cb (GimpDockSeparator *separator,
GtkWidget *source,
gpointer data);
G_DEFINE_TYPE (GimpDockColumns, gimp_dock_columns, GTK_TYPE_HBOX)
#define parent_class gimp_dock_columns_parent_class
@ -49,17 +57,66 @@ static void
gimp_dock_columns_init (GimpDockColumns *dock_columns)
{
dock_columns->p = G_TYPE_INSTANCE_GET_PRIVATE (dock_columns,
GIMP_TYPE_DOCK_COLUMNS,
GimpDockColumnsPrivate);
GIMP_TYPE_DOCK_COLUMNS,
GimpDockColumnsPrivate);
dock_columns->p->paned_hbox = gimp_paned_box_new (FALSE, 0,
GTK_ORIENTATION_HORIZONTAL);
gimp_paned_box_set_dropped_cb (GIMP_PANED_BOX (dock_columns->p->paned_hbox),
gimp_dock_columns_dropped_cb,
dock_columns);
gtk_container_add (GTK_CONTAINER (dock_columns), dock_columns->p->paned_hbox);
gtk_widget_show (dock_columns->p->paned_hbox);
}
static gboolean
gimp_dock_columns_dropped_cb (GimpDockSeparator *separator,
GtkWidget *source,
gpointer data)
{
g_printerr ("%s: WiP: Will create a new column soon!\n", G_STRFUNC);
return FALSE;
}
/**
* gimp_dock_columns_add_dock:
* @dock_columns:
* @dock:
*
* Add a dock, added to a horizontal GimpPanedBox.
**/
void
gimp_dock_columns_add_dock (GimpDockColumns *dock_columns,
GimpDock *dock)
GimpDock *dock,
gint index)
{
g_return_if_fail (GIMP_IS_DOCK_COLUMNS (dock_columns));
g_return_if_fail (GIMP_IS_DOCK (dock));
gtk_box_pack_start (GTK_BOX (dock_columns), GTK_WIDGET (dock),
TRUE, TRUE, 0);
dock_columns->p->docks = g_list_prepend (dock_columns->p->docks, dock);
gimp_paned_box_add_widget (GIMP_PANED_BOX (dock_columns->p->paned_hbox),
GTK_WIDGET (dock),
index);
}
void
gimp_dock_columns_remove_dock (GimpDockColumns *dock_columns,
GimpDock *dock)
{
g_return_if_fail (GIMP_IS_DOCK_COLUMNS (dock_columns));
g_return_if_fail (GIMP_IS_DOCK (dock));
dock_columns->p->docks = g_list_remove (dock_columns->p->docks, dock);
gimp_paned_box_remove_widget (GIMP_PANED_BOX (dock_columns->p->paned_hbox),
GTK_WIDGET (dock));
}
GList *
gimp_dock_columns_get_docks (GimpDockColumns *dock_columns)
{
return g_list_copy (dock_columns->p->docks);
}

View File

@ -54,7 +54,11 @@ struct _GimpDockColumnsClass
GType gimp_dock_columns_get_type (void) G_GNUC_CONST;
void gimp_dock_columns_add_dock (GimpDockColumns *dock_columns,
GimpDock *dock,
gint index);
void gimp_dock_columns_remove_dock (GimpDockColumns *dock_columns,
GimpDock *dock);
GList * gimp_dock_columns_get_docks (GimpDockColumns *dock_columns);
#endif /* __GIMP_DOCK_COLUMNS_H__ */