mirror of https://github.com/GNOME/gimp.git
app: Add and use gimp_dockbook_drag_source_to_dockable()
This commit is contained in:
parent
2b622f99cd
commit
d3bb3e7f99
|
@ -297,21 +297,13 @@ gimp_dock_dropped_cb (GimpDockSeparator *separator,
|
|||
gpointer data)
|
||||
{
|
||||
GimpDock *dock = GIMP_DOCK (data);
|
||||
GimpDockable *dockable = NULL;
|
||||
GimpDockable *dockable = gimp_dockbook_drag_source_to_dockable (source);
|
||||
GtkWidget *dockbook = NULL;
|
||||
gint index = gimp_dock_separator_get_insert_pos (separator);
|
||||
|
||||
if (GIMP_IS_DOCKABLE (source))
|
||||
dockable = GIMP_DOCKABLE (source);
|
||||
else
|
||||
dockable = g_object_get_data (G_OBJECT (source), "gimp-dockable");
|
||||
|
||||
if (!dockable )
|
||||
return FALSE;
|
||||
|
||||
g_object_set_data (G_OBJECT (dockable),
|
||||
"gimp-dock-drag-widget", NULL);
|
||||
|
||||
/* if dropping to the same dock, take care that we don't try
|
||||
* to reorder the *only* dockable in the dock
|
||||
*/
|
||||
|
|
|
@ -581,19 +581,11 @@ gimp_dockbook_drop_dockable (GimpDockbook *dockbook,
|
|||
|
||||
if (drag_source)
|
||||
{
|
||||
GimpDockable *dockable;
|
||||
|
||||
if (GIMP_IS_DOCKABLE (drag_source))
|
||||
dockable = GIMP_DOCKABLE (drag_source);
|
||||
else
|
||||
dockable = (GimpDockable *) g_object_get_data (G_OBJECT (drag_source),
|
||||
"gimp-dockable");
|
||||
GimpDockable *dockable =
|
||||
gimp_dockbook_drag_source_to_dockable (drag_source);
|
||||
|
||||
if (dockable)
|
||||
{
|
||||
g_object_set_data (G_OBJECT (dockable),
|
||||
"gimp-dock-drag-widget", NULL);
|
||||
|
||||
if (dockable->dockbook == dockbook)
|
||||
{
|
||||
gtk_notebook_reorder_child (GTK_NOTEBOOK (dockbook),
|
||||
|
@ -616,6 +608,31 @@ gimp_dockbook_drop_dockable (GimpDockbook *dockbook,
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* gimp_dockbook_drag_source_to_dockable:
|
||||
* @drag_source: A drag-and-drop source widget
|
||||
*
|
||||
* Gets the dockable associated with a drag-and-drop source. If
|
||||
* successfull, the function will also cleanup the dockable.
|
||||
*
|
||||
* Returns: The dockable
|
||||
**/
|
||||
GimpDockable *
|
||||
gimp_dockbook_drag_source_to_dockable (GtkWidget *drag_source)
|
||||
{
|
||||
GimpDockable *dockable = NULL;
|
||||
|
||||
if (GIMP_IS_DOCKABLE (drag_source))
|
||||
dockable = GIMP_DOCKABLE (drag_source);
|
||||
else
|
||||
dockable = g_object_get_data (G_OBJECT (drag_source),
|
||||
"gimp-dockable");
|
||||
if (dockable)
|
||||
g_object_set_data (G_OBJECT (dockable),
|
||||
"gimp-dock-drag-widget", NULL);
|
||||
|
||||
return dockable;
|
||||
}
|
||||
|
||||
/* tab DND source side */
|
||||
|
||||
|
@ -798,12 +815,8 @@ gimp_dockbook_tab_drag_drop (GtkWidget *widget,
|
|||
|
||||
if (dest_dockable && source)
|
||||
{
|
||||
GimpDockable *src_dockable;
|
||||
|
||||
if (GIMP_IS_DOCKABLE (source))
|
||||
src_dockable = GIMP_DOCKABLE (source);
|
||||
else
|
||||
src_dockable = g_object_get_data (G_OBJECT (source), "gimp-dockable");
|
||||
GimpDockable *src_dockable =
|
||||
gimp_dockbook_drag_source_to_dockable (source);
|
||||
|
||||
if (src_dockable)
|
||||
{
|
||||
|
@ -813,9 +826,6 @@ gimp_dockbook_tab_drag_drop (GtkWidget *widget,
|
|||
gtk_notebook_page_num (GTK_NOTEBOOK (dest_dockable->dockbook),
|
||||
GTK_WIDGET (dest_dockable));
|
||||
|
||||
g_object_set_data (G_OBJECT (src_dockable),
|
||||
"gimp-dock-drag-widget", NULL);
|
||||
|
||||
if (src_dockable->dockbook != dest_dockable->dockbook)
|
||||
{
|
||||
g_object_ref (src_dockable);
|
||||
|
|
|
@ -59,26 +59,22 @@ struct _GimpDockbookClass
|
|||
};
|
||||
|
||||
|
||||
GType gimp_dockbook_get_type (void) G_GNUC_CONST;
|
||||
|
||||
GtkWidget * gimp_dockbook_new (GimpMenuFactory *menu_factory);
|
||||
|
||||
GimpDock * gimp_dockbook_get_dock (GimpDockbook *dockbook);
|
||||
void gimp_dockbook_set_dock (GimpDockbook *dockbook,
|
||||
GimpDock *dock);
|
||||
GimpUIManager *
|
||||
gimp_dockbook_get_ui_manager (GimpDockbook *dockbook);
|
||||
|
||||
void gimp_dockbook_add (GimpDockbook *dockbook,
|
||||
GimpDockable *dockable,
|
||||
gint position);
|
||||
void gimp_dockbook_remove (GimpDockbook *dockbook,
|
||||
GimpDockable *dockable);
|
||||
|
||||
GtkWidget * gimp_dockbook_create_tab_widget (GimpDockbook *dockbook,
|
||||
GimpDockable *dockable);
|
||||
gboolean gimp_dockbook_drop_dockable (GimpDockbook *dockbook,
|
||||
GtkWidget *drag_source);
|
||||
GType gimp_dockbook_get_type (void) G_GNUC_CONST;
|
||||
GtkWidget * gimp_dockbook_new (GimpMenuFactory *menu_factory);
|
||||
GimpDock * gimp_dockbook_get_dock (GimpDockbook *dockbook);
|
||||
void gimp_dockbook_set_dock (GimpDockbook *dockbook,
|
||||
GimpDock *dock);
|
||||
GimpUIManager * gimp_dockbook_get_ui_manager (GimpDockbook *dockbook);
|
||||
void gimp_dockbook_add (GimpDockbook *dockbook,
|
||||
GimpDockable *dockable,
|
||||
gint position);
|
||||
void gimp_dockbook_remove (GimpDockbook *dockbook,
|
||||
GimpDockable *dockable);
|
||||
GtkWidget * gimp_dockbook_create_tab_widget (GimpDockbook *dockbook,
|
||||
GimpDockable *dockable);
|
||||
gboolean gimp_dockbook_drop_dockable (GimpDockbook *dockbook,
|
||||
GtkWidget *drag_source);
|
||||
GimpDockable * gimp_dockbook_drag_source_to_dockable (GtkWidget *drag_source);
|
||||
|
||||
|
||||
#endif /* __GIMP_DOCKBOOK_H__ */
|
||||
|
|
Loading…
Reference in New Issue