mirror of https://github.com/GNOME/gimp.git
app: Allow more than one dock inside a dock window
Put a GimpDockColumns inside GimpDockWindow so that there can be more than one dock inside a dock window. For now, gimp_dock_window_get_dock() returns the first dock. Eventually need to return all docks and refactor the other code as needed.
This commit is contained in:
parent
ff6a787757
commit
e81c4f44de
|
@ -795,8 +795,9 @@ gimp_dialog_factory_dock_new (GimpDialogFactory *factory,
|
|||
if (dock)
|
||||
{
|
||||
/* Put the dock in the dock window */
|
||||
gimp_dock_window_set_dock (GIMP_DOCK_WINDOW (dock_window),
|
||||
GIMP_DOCK (dock));
|
||||
gimp_dock_window_add_dock (GIMP_DOCK_WINDOW (dock_window),
|
||||
GIMP_DOCK (dock),
|
||||
-1);
|
||||
}
|
||||
|
||||
return dock;
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
#include "gimpdialogfactory.h"
|
||||
#include "gimpdock.h"
|
||||
#include "gimpdockbook.h"
|
||||
#include "gimpdockcolumns.h"
|
||||
#include "gimpdockwindow.h"
|
||||
#include "gimpmenufactory.h"
|
||||
#include "gimpsessioninfo.h"
|
||||
|
@ -73,6 +74,8 @@ struct _GimpDockWindowPrivate
|
|||
GimpUIManager *ui_manager;
|
||||
GQuark image_flush_handler_id;
|
||||
|
||||
GimpDockColumns *dock_columns;
|
||||
|
||||
gboolean allow_dockbook_absence;
|
||||
|
||||
guint update_title_idle_id;
|
||||
|
@ -191,8 +194,13 @@ gimp_dock_window_init (GimpDockWindow *dock_window)
|
|||
dock_window->p->image_flush_handler_id = 0;
|
||||
dock_window->p->ID = dock_ID++;
|
||||
dock_window->p->update_title_idle_id = 0;
|
||||
dock_window->p->dock_columns = g_object_new (GIMP_TYPE_DOCK_COLUMNS,
|
||||
NULL);
|
||||
|
||||
/* Some common initialization for all dock windows */
|
||||
gtk_container_add (GTK_CONTAINER (dock_window),
|
||||
GTK_WIDGET (dock_window->p->dock_columns));
|
||||
gtk_widget_show (GTK_WIDGET (dock_window->p->dock_columns));
|
||||
gtk_window_set_resizable (GTK_WINDOW (dock_window), TRUE);
|
||||
gtk_window_set_focus_on_map (GTK_WINDOW (dock_window), FALSE);
|
||||
|
||||
|
@ -526,14 +534,16 @@ gimp_dock_window_dock_book_removed (GimpDockWindow *dock_window,
|
|||
}
|
||||
|
||||
void
|
||||
gimp_dock_window_set_dock (GimpDockWindow *dock_window,
|
||||
GimpDock *dock)
|
||||
gimp_dock_window_add_dock (GimpDockWindow *dock_window,
|
||||
GimpDock *dock,
|
||||
gint index)
|
||||
{
|
||||
g_return_if_fail (GIMP_IS_DOCK_WINDOW (dock_window));
|
||||
g_return_if_fail (GIMP_IS_DOCK (dock));
|
||||
|
||||
/* FIXME: Handle more than one call to this function */
|
||||
gtk_container_add (GTK_CONTAINER (dock_window), GTK_WIDGET (dock));
|
||||
gimp_dock_columns_add_dock (dock_window->p->dock_columns,
|
||||
GIMP_DOCK (dock),
|
||||
index);
|
||||
|
||||
/* Update window title now and when docks title is invalidated */
|
||||
gimp_dock_window_update_title (dock_window);
|
||||
|
@ -557,6 +567,24 @@ gimp_dock_window_set_dock (GimpDockWindow *dock_window,
|
|||
G_CONNECT_SWAPPED);
|
||||
}
|
||||
|
||||
void
|
||||
gimp_dock_window_remove_dock (GimpDockWindow *dock_window,
|
||||
GimpDock *dock)
|
||||
{
|
||||
gimp_dock_columns_remove_dock (dock_window->p->dock_columns,
|
||||
GIMP_DOCK (dock));
|
||||
|
||||
g_signal_handlers_disconnect_by_func (dock,
|
||||
gimp_dock_window_update_title,
|
||||
dock_window);
|
||||
g_signal_handlers_disconnect_by_func (dock,
|
||||
gimp_dock_set_host_geometry_hints,
|
||||
dock_window);
|
||||
g_signal_handlers_disconnect_by_func (dock,
|
||||
gimp_dock_window_dock_book_removed,
|
||||
dock_window);
|
||||
}
|
||||
|
||||
gint
|
||||
gimp_dock_window_get_id (GimpDockWindow *dock_window)
|
||||
{
|
||||
|
@ -608,5 +636,7 @@ gimp_dock_window_from_dock (GimpDock *dock)
|
|||
GimpDock *
|
||||
gimp_dock_window_get_dock (GimpDockWindow *dock_window)
|
||||
{
|
||||
return GIMP_DOCK (gtk_bin_get_child (GTK_BIN (dock_window)));
|
||||
GList *docks = gimp_dock_columns_get_docks (dock_window->p->dock_columns);
|
||||
|
||||
return g_list_length (docks) > 0 ? GIMP_DOCK (docks->data) : NULL;
|
||||
}
|
||||
|
|
|
@ -57,7 +57,10 @@ struct _GimpDockWindowClass
|
|||
|
||||
GType gimp_dock_window_get_type (void) G_GNUC_CONST;
|
||||
gint gimp_dock_window_get_id (GimpDockWindow *dock_window);
|
||||
void gimp_dock_window_set_dock (GimpDockWindow *dock_window,
|
||||
void gimp_dock_window_add_dock (GimpDockWindow *dock_window,
|
||||
GimpDock *dock,
|
||||
gint index);
|
||||
void gimp_dock_window_remove_dock (GimpDockWindow *dock_window,
|
||||
GimpDock *dock);
|
||||
GimpUIManager * gimp_dock_window_get_ui_manager (GimpDockWindow *dock_window);
|
||||
GimpDockWindow * gimp_dock_window_from_dock (GimpDock *dock);
|
||||
|
|
Loading…
Reference in New Issue