added virtual function GimpViewable::get_size() and public API

2005-05-25  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpviewable.[ch]: added virtual function
	GimpViewable::get_size() and public API gimp_viewable_get_size()
	which return width and height and a boolean indicating if the
	viewable has a size at all.
	Added default implementation of GimpViewable::get_popup_size()
	using the new get_size() API.

	* app/core/gimpbrush.c
	* app/core/gimpbuffer.c
	* app/core/gimpdrawable.c
	* app/core/gimpimage.c
	* app/core/gimppattern.c: implement GimpViewable::get_size().

	* app/core/gimpbrush.c
	* app/core/gimppattern.c: removed GimpViewable::get_popup_size()
	implementations, the default one is good enough.

	* app/core/gimpbrushpipe.c (gimp_brush_pipe_get_popup_size):
	redirect to gimp_viewable_get_size() instead of duplicating its
	return values.

	* app/widgets/gimpcontainertreeview.c
	* app/widgets/gimpview.c: allow pixbuf dragging out of any
	viewable that has a size.

	* app/widgets/gimpdrawabletreeview.c: removed pixbuf dragging code
	here.

	* app/widgets/gimpdnd.c: set gimp busy around encoding/decoding
	pixbufs into/from GtkSelectionData, because it can be a time
	consuming operation.
This commit is contained in:
Michael Natterer
2005-05-25 10:05:17 +00:00
committed by Michael Natterer
parent 4bbeec9640
commit 7abaab62e0
15 changed files with 276 additions and 180 deletions

View File

@ -41,6 +41,9 @@ static void gimp_buffer_finalize (GObject *object);
static gint64 gimp_buffer_get_memsize (GimpObject *object,
gint64 *gui_size);
static gboolean gimp_buffer_get_size (GimpViewable *viewable,
gint *width,
gint *height);
static void gimp_buffer_get_preview_size (GimpViewable *viewable,
gint size,
gboolean is_popup,
@ -105,6 +108,7 @@ gimp_buffer_class_init (GimpBufferClass *klass)
gimp_object_class->get_memsize = gimp_buffer_get_memsize;
viewable_class->default_stock_id = "gtk-paste";
viewable_class->get_size = gimp_buffer_get_size;
viewable_class->get_preview_size = gimp_buffer_get_preview_size;
viewable_class->get_popup_size = gimp_buffer_get_popup_size;
viewable_class->get_new_preview = gimp_buffer_get_new_preview;
@ -135,11 +139,9 @@ static gint64
gimp_buffer_get_memsize (GimpObject *object,
gint64 *gui_size)
{
GimpBuffer *buffer;
GimpBuffer *buffer = GIMP_BUFFER (object);
gint64 memsize = 0;
buffer = GIMP_BUFFER (object);
if (buffer->tiles)
memsize += tile_manager_get_memsize (buffer->tiles, FALSE);
@ -147,6 +149,19 @@ gimp_buffer_get_memsize (GimpObject *object,
gui_size);
}
static gboolean
gimp_buffer_get_size (GimpViewable *viewable,
gint *width,
gint *height)
{
GimpBuffer *buffer = GIMP_BUFFER (viewable);
*width = gimp_buffer_get_width (buffer);
*height = gimp_buffer_get_height (buffer);
return TRUE;
}
static void
gimp_buffer_get_preview_size (GimpViewable *viewable,
gint size,