forked from AuroraMiddleware/gtk
Make GtkDragIcon public
This is needed if we want to use gdk_drag_begin for one-off drags, without a GtkDragSource.
This commit is contained in:
parent
e8b830a3dd
commit
78832c65b5
@ -91,6 +91,7 @@
|
||||
#include <gtk/gtkdebug.h>
|
||||
#include <gtk/gtkdialog.h>
|
||||
#include <gtk/gtkdragdest.h>
|
||||
#include <gtk/gtkdragicon.h>
|
||||
#include <gtk/gtkdragsource.h>
|
||||
#include <gtk/gtkdrawingarea.h>
|
||||
#include <gtk/gtkeditable.h>
|
||||
|
@ -23,6 +23,8 @@
|
||||
#include "gtkintl.h"
|
||||
#include "gtkwidgetprivate.h"
|
||||
#include "gtkcssnodeprivate.h"
|
||||
#include "gtknativeprivate.h"
|
||||
#include "gtkpicture.h"
|
||||
|
||||
|
||||
struct _GtkDragIcon
|
||||
@ -374,6 +376,44 @@ gtk_drag_icon_new (void)
|
||||
return g_object_new (GTK_TYPE_DRAG_ICON, NULL);
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
gtk_drag_icon_new_for_drag (GdkDrag *drag)
|
||||
{
|
||||
GtkWidget *icon;
|
||||
|
||||
g_return_val_if_fail (GDK_IS_DRAG (drag), NULL);
|
||||
|
||||
icon = g_object_new (GTK_TYPE_DRAG_ICON, NULL);
|
||||
|
||||
gtk_drag_icon_set_surface (GTK_DRAG_ICON (icon), gdk_drag_get_drag_surface (drag));
|
||||
|
||||
return icon;
|
||||
}
|
||||
|
||||
void
|
||||
gtk_drag_icon_set_from_paintable (GdkDrag *drag,
|
||||
GdkPaintable *paintable,
|
||||
int hot_x,
|
||||
int hot_y)
|
||||
{
|
||||
GtkWidget *icon;
|
||||
GtkWidget *picture;
|
||||
|
||||
gdk_drag_set_hotspot (drag, hot_x, hot_y);
|
||||
|
||||
icon = gtk_drag_icon_new_for_drag (drag);
|
||||
|
||||
picture = gtk_picture_new_for_paintable (paintable);
|
||||
gtk_picture_set_can_shrink (GTK_PICTURE (picture), FALSE);
|
||||
gtk_container_add (GTK_CONTAINER (icon), picture);
|
||||
|
||||
g_object_set_data_full (G_OBJECT (drag),
|
||||
"icon",
|
||||
g_object_ref_sink (icon),
|
||||
(GDestroyNotify)gtk_widget_destroy);
|
||||
gtk_widget_show (icon);
|
||||
}
|
||||
|
||||
void
|
||||
gtk_drag_icon_set_surface (GtkDragIcon *icon,
|
||||
GdkSurface *surface)
|
||||
|
50
gtk/gtkdragicon.h
Normal file
50
gtk/gtkdragicon.h
Normal file
@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Copyright © 2020 Matthias Clasen
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Authors: Benjamin Otte <otte@gnome.org>
|
||||
*/
|
||||
|
||||
#ifndef __GTK_DRAG_ICON_H__
|
||||
#define __GTK_DRAG_ICON_H__
|
||||
|
||||
|
||||
#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
|
||||
#error "Only <gtk/gtk.h> can be included directly."
|
||||
#endif
|
||||
|
||||
#include <gio/gio.h>
|
||||
#include <gtk/gtkwidget.h>
|
||||
#include <gtk/gtkcontainer.h>
|
||||
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define GTK_TYPE_DRAG_ICON (gtk_drag_icon_get_type ())
|
||||
|
||||
G_DECLARE_FINAL_TYPE (GtkDragIcon, gtk_drag_icon, GTK, DRAG_ICON, GtkContainer)
|
||||
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
GtkWidget * gtk_drag_icon_new_for_drag (GdkDrag *drag);
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
void gtk_drag_icon_set_from_paintable (GdkDrag *drag,
|
||||
GdkPaintable *paintable,
|
||||
int hot_x,
|
||||
int hot_y);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
||||
#endif /* __GTK_DRAG_ICON_H__ */
|
@ -26,14 +26,10 @@
|
||||
#define __GTK_DRAG_ICON_PRIVATE_H__
|
||||
|
||||
#include <gio/gio.h>
|
||||
#include <gtk/gtk.h>
|
||||
#include <gtk/gtkdragicon.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define GTK_TYPE_DRAG_ICON (gtk_drag_icon_get_type ())
|
||||
|
||||
G_DECLARE_FINAL_TYPE (GtkDragIcon, gtk_drag_icon, GTK, DRAG_ICON, GtkContainer)
|
||||
|
||||
GtkWidget * gtk_drag_icon_new (void);
|
||||
|
||||
void gtk_drag_icon_set_surface (GtkDragIcon *icon,
|
||||
|
Loading…
Reference in New Issue
Block a user