GPtrArray
- From: frederico schardong <frede sch gmail com>
- To: gtk-list gnome org, gtk-app-devel-list gnome org
- Subject: GPtrArray
- Date: Sat, 21 Mar 2009 16:41:39 -0300
Hi list,
I do a simples struct:
typedef struct
{
GtkWidget *window;
GtkWidget *drawingArea;
GPtrArray *parray;
gint a;
} GtkDesenho;
In main():
GtkDesenho *desenho;
desenho = g_slice_new(GtkDesenho);
desenho->window = glade_xml_get_widget(xml, "window2");
desenho->drawingArea= glade_xml_get_widget(xml, "drawing_area");
gtk_window_set_title(GTK_WINDOW(desenho->window), "Drawing Areas");
gtk_widget_set_size_request(desenho->window, 400, 300);
/* Create a pointer array to hold image data. Then, add event masks to the new
* drawing area widget. */
desenho->parray = g_ptr_array_sized_new(500);
g_print("\n tamanho do array: %d", desenho->parray->len);
GTK_WIDGET_SET_FLAGS (desenho->drawingArea, GTK_CAN_FOCUS);
gtk_widget_add_events (desenho->drawingArea, GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_MOTION_MASK |
GDK_KEY_PRESS_MASK);
gtk_container_add (GTK_CONTAINER (desenho->window), desenho->drawingArea);
// and call the events to the callbacks
g_signal_connect(G_OBJECT(desenho->drawingArea),
"button_press_event", G_CALLBACK(button_pressed), desenho);
g_signal_connect(G_OBJECT(desenho->drawingArea),
"motion_notify_event", G_CALLBACK(button_pressed), desenho);
g_signal_connect(G_OBJECT(desenho->drawingArea), "expose_event",
G_CALLBACK(expose_event), desenho);
//the button6 must clear the drawing area
g_signal_connect(G_OBJECT(button6), "clicked",
G_CALLBACK(limpaDrawingArea), desenho);
// out of main, here is my g_callback limpaDrawingArea
static gboolean limpaDrawingArea(GtkWidget *a, GdkEventButton *event,
GtkDesenho *desenho)
{
gdk_window_clear(desenho->drawingArea->window);
g_ptr_array_remove_range(desenho->parray, 0, desenho->parray->len);
return FALSE;
}
It must clear my drawing area, or not?
When I press the button6, this messages are showed:
(main:10566): Gdk-CRITICAL **: gdk_window_clear: assertion `window !=
NULL' failed
(main:10566): GLib-CRITICAL **: g_ptr_array_remove_range: assertion
`index_ < array->len' failed
What's happen? The callbacks button_press and expose_event are working
fine, and them use desenho->drawingArea->window, and
desenho->parray->len too, without showing anyone problem!
Thank you!
--
Abraço,
Frederico Schardong,
SOLIS - O lado livre da tecnologia
www.solis.coop.br
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]