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)
|
if (dock)
|
||||||
{
|
{
|
||||||
/* Put the dock in the dock window */
|
/* Put the dock in the dock window */
|
||||||
gimp_dock_window_set_dock (GIMP_DOCK_WINDOW (dock_window),
|
gimp_dock_window_add_dock (GIMP_DOCK_WINDOW (dock_window),
|
||||||
GIMP_DOCK (dock));
|
GIMP_DOCK (dock),
|
||||||
|
-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return dock;
|
return dock;
|
||||||
|
|
|
@ -39,6 +39,7 @@
|
||||||
#include "gimpdialogfactory.h"
|
#include "gimpdialogfactory.h"
|
||||||
#include "gimpdock.h"
|
#include "gimpdock.h"
|
||||||
#include "gimpdockbook.h"
|
#include "gimpdockbook.h"
|
||||||
|
#include "gimpdockcolumns.h"
|
||||||
#include "gimpdockwindow.h"
|
#include "gimpdockwindow.h"
|
||||||
#include "gimpmenufactory.h"
|
#include "gimpmenufactory.h"
|
||||||
#include "gimpsessioninfo.h"
|
#include "gimpsessioninfo.h"
|
||||||
|
@ -73,6 +74,8 @@ struct _GimpDockWindowPrivate
|
||||||
GimpUIManager *ui_manager;
|
GimpUIManager *ui_manager;
|
||||||
GQuark image_flush_handler_id;
|
GQuark image_flush_handler_id;
|
||||||
|
|
||||||
|
GimpDockColumns *dock_columns;
|
||||||
|
|
||||||
gboolean allow_dockbook_absence;
|
gboolean allow_dockbook_absence;
|
||||||
|
|
||||||
guint update_title_idle_id;
|
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->image_flush_handler_id = 0;
|
||||||
dock_window->p->ID = dock_ID++;
|
dock_window->p->ID = dock_ID++;
|
||||||
dock_window->p->update_title_idle_id = 0;
|
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 */
|
/* 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_resizable (GTK_WINDOW (dock_window), TRUE);
|
||||||
gtk_window_set_focus_on_map (GTK_WINDOW (dock_window), FALSE);
|
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
|
void
|
||||||
gimp_dock_window_set_dock (GimpDockWindow *dock_window,
|
gimp_dock_window_add_dock (GimpDockWindow *dock_window,
|
||||||
GimpDock *dock)
|
GimpDock *dock,
|
||||||
|
gint index)
|
||||||
{
|
{
|
||||||
g_return_if_fail (GIMP_IS_DOCK_WINDOW (dock_window));
|
g_return_if_fail (GIMP_IS_DOCK_WINDOW (dock_window));
|
||||||
g_return_if_fail (GIMP_IS_DOCK (dock));
|
g_return_if_fail (GIMP_IS_DOCK (dock));
|
||||||
|
|
||||||
/* FIXME: Handle more than one call to this function */
|
gimp_dock_columns_add_dock (dock_window->p->dock_columns,
|
||||||
gtk_container_add (GTK_CONTAINER (dock_window), GTK_WIDGET (dock));
|
GIMP_DOCK (dock),
|
||||||
|
index);
|
||||||
|
|
||||||
/* Update window title now and when docks title is invalidated */
|
/* Update window title now and when docks title is invalidated */
|
||||||
gimp_dock_window_update_title (dock_window);
|
gimp_dock_window_update_title (dock_window);
|
||||||
|
@ -557,6 +567,24 @@ gimp_dock_window_set_dock (GimpDockWindow *dock_window,
|
||||||
G_CONNECT_SWAPPED);
|
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
|
gint
|
||||||
gimp_dock_window_get_id (GimpDockWindow *dock_window)
|
gimp_dock_window_get_id (GimpDockWindow *dock_window)
|
||||||
{
|
{
|
||||||
|
@ -608,5 +636,7 @@ gimp_dock_window_from_dock (GimpDock *dock)
|
||||||
GimpDock *
|
GimpDock *
|
||||||
gimp_dock_window_get_dock (GimpDockWindow *dock_window)
|
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;
|
GType gimp_dock_window_get_type (void) G_GNUC_CONST;
|
||||||
gint gimp_dock_window_get_id (GimpDockWindow *dock_window);
|
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);
|
GimpDock *dock);
|
||||||
GimpUIManager * gimp_dock_window_get_ui_manager (GimpDockWindow *dock_window);
|
GimpUIManager * gimp_dock_window_get_ui_manager (GimpDockWindow *dock_window);
|
||||||
GimpDockWindow * gimp_dock_window_from_dock (GimpDock *dock);
|
GimpDockWindow * gimp_dock_window_from_dock (GimpDock *dock);
|
||||||
|
|
Loading…
Reference in New Issue