Mercurial > dwindows
diff gtk/dw.c @ 185:f55677513954
Updated the menu code.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Thu, 19 Dec 2002 04:16:32 +0000 |
parents | 0b3debaa9c6c |
children | efd4703450fa |
line wrap: on
line diff
--- a/gtk/dw.c Thu Dec 19 02:18:12 2002 +0000 +++ b/gtk/dw.c Thu Dec 19 04:16:32 2002 +0000 @@ -1705,18 +1705,15 @@ HMENUI dw_menu_new(unsigned long id) { int _locked_by_me = FALSE; - HMENUI tmp = malloc(sizeof(struct _hmenui)); GtkAccelGroup *accel_group; - - if(!tmp) - return NULL; - - DW_MUTEX_LOCK; - tmp->menu = gtk_menu_new(); - gtk_widget_show(tmp->menu); + HMENUI tmp; + + DW_MUTEX_LOCK; + tmp = gtk_menu_new(); + gtk_widget_show(tmp); accel_group = gtk_accel_group_new(); - gtk_object_set_data(GTK_OBJECT(tmp->menu), "id", (gpointer)id); - gtk_object_set_data(GTK_OBJECT(tmp->menu), "accel", (gpointer)accel_group); + gtk_object_set_data(GTK_OBJECT(tmp), "id", (gpointer)id); + gtk_object_set_data(GTK_OBJECT(tmp), "accel", (gpointer)accel_group); DW_MUTEX_UNLOCK; return tmp; } @@ -1730,21 +1727,18 @@ { GtkWidget *box; int _locked_by_me = FALSE; - HMENUI tmp = malloc(sizeof(struct _hmenui)); GtkAccelGroup *accel_group; - - if(!tmp) - return NULL; - - DW_MUTEX_LOCK; - tmp->menu = gtk_menu_bar_new(); + HMENUI tmp; + + DW_MUTEX_LOCK; + tmp = gtk_menu_bar_new(); box = (GtkWidget *)gtk_object_get_user_data(GTK_OBJECT(location)); - gtk_widget_show(tmp->menu); + gtk_widget_show(tmp); accel_group = gtk_accel_group_new(); - gtk_object_set_data(GTK_OBJECT(tmp->menu), "accel", (gpointer)accel_group); + gtk_object_set_data(GTK_OBJECT(tmp), "accel", (gpointer)accel_group); if(box) - gtk_box_pack_end(GTK_BOX(box), tmp->menu, FALSE, FALSE, 0); + gtk_box_pack_end(GTK_BOX(box), tmp, FALSE, FALSE, 0); DW_MUTEX_UNLOCK; return tmp; @@ -1762,8 +1756,7 @@ int _locked_by_me = FALSE; DW_MUTEX_LOCK; - gtk_widget_destroy((*menu)->menu); - free(*menu); + gtk_widget_destroy(*menu); *menu = NULL; DW_MUTEX_UNLOCK; } @@ -1811,7 +1804,7 @@ guint tmp_key; GtkAccelGroup *accel_group; - if(!menu || !menu->menu) + if(!menu) { free(tempbuf); return NULL; @@ -1820,8 +1813,8 @@ DW_MUTEX_LOCK; accel = _removetilde(tempbuf, title); - accel_group = (GtkAccelGroup *)gtk_object_get_data(GTK_OBJECT(menu->menu), "accel"); - submenucount = (int)gtk_object_get_data(GTK_OBJECT(menu->menu), "submenucount"); + accel_group = (GtkAccelGroup *)gtk_object_get_data(GTK_OBJECT(menu), "accel"); + submenucount = (int)gtk_object_get_data(GTK_OBJECT(menu), "submenucount"); if(strlen(tempbuf) == 0) tmphandle=gtk_menu_item_new(); @@ -1842,7 +1835,7 @@ tmphandle=gtk_check_menu_item_new_with_label(tempbuf); gtk_check_menu_item_set_show_toggle(GTK_CHECK_MENU_ITEM(tmphandle), TRUE); sprintf(numbuf, "%lu", id); - gtk_object_set_data(GTK_OBJECT(menu->menu), numbuf, (gpointer)tmphandle); + gtk_object_set_data(GTK_OBJECT(menu), numbuf, (gpointer)tmphandle); } else { @@ -1867,15 +1860,15 @@ sprintf(tempbuf, "submenu%d", submenucount); submenucount++; - gtk_menu_item_set_submenu(GTK_MENU_ITEM(tmphandle), submenu->menu); - gtk_object_set_data(GTK_OBJECT(menu->menu), tempbuf, (gpointer)submenu->menu); - gtk_object_set_data(GTK_OBJECT(menu->menu), "submenucount", (gpointer)submenucount); - } - - if(GTK_IS_MENU_BAR(menu->menu)) - gtk_menu_bar_append(GTK_MENU_BAR(menu->menu), tmphandle); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(tmphandle), submenu); + gtk_object_set_data(GTK_OBJECT(menu), tempbuf, (gpointer)submenu); + gtk_object_set_data(GTK_OBJECT(menu), "submenucount", (gpointer)submenucount); + } + + if(GTK_IS_MENU_BAR(menu)) + gtk_menu_bar_append(GTK_MENU_BAR(menu), tmphandle); else - gtk_menu_append(GTK_MENU(menu->menu), tmphandle); + gtk_menu_append(GTK_MENU(menu), tmphandle); gtk_object_set_data(GTK_OBJECT(tmphandle), "id", (gpointer)id); free(tempbuf); @@ -1920,12 +1913,12 @@ GtkWidget *tmphandle; int _locked_by_me = FALSE; - if(!menu || !menu->menu) + if(!menu) return; DW_MUTEX_LOCK; sprintf(numbuf, "%lu", id); - tmphandle = _find_submenu_id(menu->menu, numbuf); + tmphandle = _find_submenu_id(menu, numbuf); if(tmphandle) { @@ -1955,8 +1948,7 @@ popup = parent; DW_MUTEX_LOCK; - gtk_menu_popup(GTK_MENU((*menu)->menu), NULL, NULL, NULL, NULL, 1, GDK_CURRENT_TIME); - free(*menu); + gtk_menu_popup(GTK_MENU(*menu), NULL, NULL, NULL, NULL, 1, GDK_CURRENT_TIME); *menu = NULL; DW_MUTEX_UNLOCK; }