gtk2/docs/reference/gtk/tmpl/gtkdrawingarea.sgml
Havoc Pennington e7153de001 move README.linux-fb in here
2002-01-01  Havoc Pennington  <hp@pobox.com>

	* gtk/framebuffer.sgml: move README.linux-fb in here

	* gtk/tmpl/gtkpreview.sgml: explain what to use instead

	* gtk/tmpl/gtkseparator.sgml: typo fix

	* gtk/tmpl/gtkstock.sgml: add some overview docs

	* gtk/Makefile.am (content_files): add new files

	* gtk/changes-1.2.sgml: move Changes-1.2.txt in here

	* gtk/changes-2.0.sgml: move Changes-2.0.txt in here

	* gdk/tmpl/threads.sgml: mention gdk_threads_init() in the
	overview docs, copy in the examples from the FAQ

	* gtk/gtk-docs.sgml: change DTD to 3.1, and add
	question_index.sgml and changes-1.2, changes-2.0

	* gtk/tmpl/gtkdrawingarea.sgml: fixups to reflect 2.0 changes

	* gtk/question_index.sgml: new section with question-based
	index of the manual

	* gtk/text_widget.sgml: fix some cross-references

2002-01-01  Havoc Pennington  <hp@pobox.com>

	* docs/README.linux-fb: note that this file is obsolete

	* docs/Changes-2.0.txt, docs/Changes-1.2.txt: Add notes to these
	files that they should not be edited and look in the reference
	manual instead. Probably these files should just be replaced by
	the note, and their main contents deleted.

	* gtk/gtktextview.c: docs

	* gtk/gtktextmark.c: docs

	* gtk/gtktextchild.c: docs

	* gtk/gtktextbuffer.c: docs stuff

	* gtk/gtkclipboard.c (gtk_clipboard_get): fool with docs to maybe
	give people more leads in sorting out PRIMARY vs. CLIPBOARD
2002-01-01 23:51:00 +00:00

116 lines
3.2 KiB
Plaintext

<!-- ##### SECTION Title ##### -->
GtkDrawingArea
<!-- ##### SECTION Short_Description ##### -->
a widget for custom user interface elements.
<!-- ##### SECTION Long_Description ##### -->
<para>
The #GtkDrawingArea widget is used for creating custom user interface
elements. It's essentially a blank widget; you can draw on
<literal>widget-&gt;window</literal>. After creating a drawing area,
the application may want to connect to:
<itemizedlist>
<listitem>
<para>
Mouse and button press signals to respond to input from
the user.
</para>
</listitem>
<listitem>
<para>
The "realize" signal to take any necessary actions
when the widget is instantiated on a particular display.
(Create GDK resources in response to this signal.)
</para>
</listitem>
<listitem>
<para>
The "configure_event" signal to take any necessary actions
when the widget changes size.
</para>
</listitem>
<listitem>
<para>
The "expose_event" signal to handle redrawing the
contents of the widget.
</para>
</listitem>
</itemizedlist>
</para>
<para>
The following code portion demonstrates using a drawing
area to display a circle in the normal widget foreground
color.
Note that GDK automatically clears the exposed area
to the background color before sending the expose event, and
that drawing is implicitly clipped to the exposed area.
</para>
<example>
<title>Simple <structname>GtkDrawingArea</structname> usage.</title>
<programlisting>
gboolean
expose_event_callback (GdkWidget *widget, GdkEventExpose *event, gpointer data)
{
gdk_draw_arc (widget->window,
widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
TRUE,
0, 0, widget->allocation.width, widget->allocation.height,
0, 64 * 360);
return TRUE;
}
[...]
GtkWidget *drawing_area = gtk_drawing_area_new (<!>);
gtk_widget_set_size_request (drawing_area, 100, 100);
g_signal_connect (G_OBJECT (drawing_area), "expose_event",
G_CALLBACK (expose_event_callback), NULL);
</programlisting>
</example>
<para>
Expose events are normally delivered when a drawing area first comes
onscreen, or when it's covered by another window and then uncovered
(exposed). You can also force an expose event by adding to the "damage
region" of the drawing area's window; gtk_widget_queue_draw_area() and
gdk_window_invalidate_rect() are equally good ways to do this. You'll
then get an expose event for the invalid region.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### STRUCT GtkDrawingArea ##### -->
<para>
The #GtkDrawingArea struct contains private data only, and
should be accessed using the functions below.
</para>
<!-- ##### FUNCTION gtk_drawing_area_new ##### -->
<para>
Creates a new drawing area.
</para>
@Returns: a new #GtkDrawingArea
<!-- ##### FUNCTION gtk_drawing_area_size ##### -->
<para>
Sets the size that the drawing area will request
in response to a "size_request" signal. The
drawing area may actually be allocated a size
larger than this depending on how it is packed
within the enclosing containers.
</para>
@darea: a #GtkDrawingArea.
@width: the width to request.
@height: the height to request.