Dear All,

I am trying to use xlib function XDrawArc() to draw on a GTK drawing  
area but it doesn't work, while the GDK function gdk_draw_arc() works  
perfect. Does anyone know why? Below are my code:

#include <string.h>
#include <X11/Xlib.h>
#include <X11/keysym.h>
#include <gtk/gtk.h>
#include <gdk/gdkx.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>

void destroy (GtkWidget *widget, gpointer *data)
{
     printf("in destory\n");
     gtk_main_quit ();
}

gboolean expose_event_callback (GtkWidget *widget, GdkEventExpose  
*event, gpointer data)
{
    //this function works fine
    /*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);*/

     /*below xlib drawing function doesn't work*/
     GdkGC *gc = widget->style->fg_gc[GTK_WIDGET_STATE (widget)];
     XDrawArc(GDK_DRAWABLE_XDISPLAY(widget->window),  
GDK_DRAWABLE_XID(widget->window), GDK_GC_XGC(gc), 0, 0, widget- 
 >allocation.width, widget->allocation.height,0, 64 * 360);

   return TRUE;
}


int main(int argc, char* argv[])
{
     GtkWidget *gtkWin;
     GtkWidget *drawArea;
     GtkWidget *button;
     GtkWidget *mybox;

     XEvent e;
     pid_t pid;
     Bool child = FALSE;


     gtk_init (&argc, &argv);

     //initialize
     gtkWin = gtk_window_new(GTK_WINDOW_TOPLEVEL);
     drawArea = gtk_drawing_area_new();
     button = gtk_button_new_with_label("Button");
     mybox = gtk_hbox_new(FALSE,10);

     //attributes setup
     gtk_widget_set_size_request(drawArea,100,100);


     //layout
     gtk_box_pack_start(GTK_BOX(mybox),button,TRUE,FALSE,0);
     gtk_box_pack_start(GTK_BOX(mybox),drawArea,TRUE,FALSE,0);
     gtk_container_add (GTK_CONTAINER (gtkWin), mybox);


     /*Events and Signals connect*/
     gtk_signal_connect (GTK_OBJECT (button), "clicked",
                        GTK_SIGNAL_FUNC (destroy),NULL);

     g_signal_connect (G_OBJECT (drawArea), "expose_event",
                     G_CALLBACK (expose_event_callback),NULL);



     /*show widgets*/

     gtk_widget_show(button);
     gtk_widget_show(drawArea);
     gtk_widget_show(mybox);
     gtk_widget_show(gtkWin);

     gtk_main();

     return 0;
}
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to