Re: Problems with gtk_menu_popup



Hi

I'm trying to implement a gtk menu popup without using a button but i
can't..I compile my program and when i execute it, it doesn't show the
popup menu when i do a click on the window..

My idea is to show a popup menu by clicking on a window dialog
instead of using a button like in the GTK 2 Tutorial..
Any ideas?


Thanks

Oskar.

Code:
#include<gtk/gtk.h>
#include"unistd.h"
#include"sys/types.h"
#include"sys/wait.h"

int end_program(GtkWidget *widget,gpointer data)
{
    gtk_main_quit();
    return 0;
}

int startsw(GtkWidget *widget,gpointer data)
{
    pid_t pid;

    if((pid= fork()) < 0)
        printf("Fork Error!");
    else if(pid == 0)
    {
       if(execl("/usr/bin/gaim",NULL)==-1) {
           printf("child exec failed");
       }
       
       exit(127);
    }
    
    return 0;
}

static int menuitem_resp(GtkWidget *widget,GdkEvent *event)
{
     if (event->type == GDK_BUTTON_PRESS) {
                 GdkEventButton *bevent = (GdkEventButton *) event; 
                         gtk_menu_popup (GTK_MENU (widget), NULL, NULL, NULL, NULL,
bevent->button, bevent->time);
                return TRUE;
                                     }
         return FALSE;
}

static void resp(gchar *string)
{
    printf("%s\n",string);
}



int main(int argc,char *argv[])
{
   char buf[128];
   GtkWidget  *menu_items;
   GtkWidget  *window;
   GtkWidget  *button;
   GtkWidget  *vbox;
   GtkWidget  *menu;
   GtkWidget  *root_menu;
   
   int i=0;
   
   gtk_init(&argc,&argv);
   
   window =
g_object_new(GTK_TYPE_WINDOW,"default-height",100,"default-width",500,"border-width",12,"title","DashBoard",NULL);

   g_signal_connect(window,"destroy",G_CALLBACK(end_program),NULL);
   
   menu = gtk_menu_new();
    
   for(i=0;i<3; ++i)
   {
       sprintf (buf, "Test-undermenu - %d", i);
       menu_items = gtk_menu_item_new_with_label (buf);
       gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
       g_signal_connect_swapped (G_OBJECT (menu_items),
"activate",G_CALLBACK (resp),(gpointer) g_strdup(buf));

       gtk_widget_show (menu_items);
   }


   
      vbox = gtk_vbox_new (FALSE, 0);
      gtk_container_add (GTK_CONTAINER (window), vbox);
      gtk_widget_show (vbox);

   

g_signal_connect_swapped(G_OBJECT(vbox),"event",G_CALLBACK(menuitem_resp),G_OBJECT(menu));
   gtk_widget_show_all(GTK_WIDGET(window));

   gtk_main();
    
   return 0;
}






On Sat, 2005-03-26 at 16:59 +0530, Santhosh wrote:
Hi,


I'm sending my C file in the attachment

   I didn't get it... Why don't you include the code inline in the mail...

Santhosh.




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