drawing area and button press event



Hi,

my callback on the button press event seems not to be called... in
fact I am not sure if a button press event occurs. Find below a simple
program (using glade/libglade) that makes a drawing area and a 2
callbacks... The expose event and the button press event callback.

Any clues?

Cheers.

----------------------------------------------------------------------------------------------------

<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd";>

<glade-interface>

<widget class="GtkWindow" id="window1">
  <property name="visible">True</property>
  <property name="title" translatable="yes">window1</property>
  <property name="type">GTK_WINDOW_TOPLEVEL</property>
  <property name="window_position">GTK_WIN_POS_NONE</property>
  <property name="modal">False</property>
  <property name="resizable">True</property>
  <property name="destroy_with_parent">False</property>
  <property name="decorated">True</property>
  <property name="skip_taskbar_hint">False</property>
  <property name="skip_pager_hint">False</property>
  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
  <property name="focus_on_map">True</property>

  <child>
    <widget class="GtkDrawingArea" id="drawingarea1">
      <property name="visible">True</property>
      <signal name="button_press_event"
handler="on_drawingarea1_button_press_event"
last_modification_time="Fri, 12 Aug 2005 13:45:43 GMT"/>
      <signal name="expose_event"
handler="on_drawingarea1_expose_event" last_modification_time="Fri, 12
Aug 2005 13:45:53 GMT"/>
    </widget>
  </child>
</widget>

</glade-interface>


----------------------------------------------------------------------------------------------------------------


#include <stdlib.h>
#include <gtk/gtk.h>
#include <glade/glade.h>

GladeXML *Xml;

void
on_drawingarea1_expose_event(GtkWidget *widget, GdkEventExpose *event,
gpointer data);

void
button_press_event(GtkWidget *widget, GdkEventButton *event, gpointer data);

void
on_drawingarea1_expose_event(GtkWidget *widget, GdkEventExpose *event,
gpointer data)
{
    g_print("expose event\n");
}

void
on_drawingarea1_button_press_event(GtkWidget *widget, GdkEventButton
*event, gpointer data)
{
    g_print("button press event %d %d\n", event->x, event->y);
}


gint
main(int argc, char *argv[])
{ 
    GtkWidget *drawing_area;
    
    gtk_init(&argc, &argv);
    glade_init();
    
    /* load the interface */
    Xml = glade_xml_new("test_button_press.glade", NULL, NULL);
    
    /*
    drawing_area = glade_xml_get_widget(Xml, "drawingarea1");
    gtk_signal_connect (GTK_OBJECT (drawing_area), "expose_event",
                        (GtkSignalFunc) on_drawingarea1_expose_event, NULL);
    gtk_signal_connect (GTK_OBJECT (drawing_area), "button_press_event",
                        (GtkSignalFunc) on_drawingarea1_button_press_event, NULL);
    */

    /* connect the signals in the interface */
    glade_xml_signal_autoconnect(Xml);
    
    /* start the event loop */
    gtk_main();
    
    return 0;
}






-- 
-- Yiannis



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]