Update of /cvsroot/htoolkit/port/src/cbits/GTK
In directory sc8-pr-cvs1:/tmp/cvs-serv22881/src/cbits/GTK
Modified Files:
Menu.c
Log Message:
Simplified implementation for MenuRadioItems for GNOME
Index: Menu.c
===================================================================
RCS file: /cvsroot/htoolkit/port/src/cbits/GTK/Menu.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** Menu.c 5 Jul 2003 06:42:38 -0000 1.8
--- Menu.c 16 Aug 2003 08:01:14 -0000 1.9
***************
*** 26,30 ****
static int recalcPos(GtkWidget *menu, int pos)
{
- BOOL b;
int new_pos;
GList *children;
--- 26,29 ----
***************
*** 34,50 ****
if (pos >= 0)
{
- b = TRUE;
new_pos = 0;
while (children && pos > 0)
{
! if (GTK_WIDGET_VISIBLE((GtkWidget*) children->data))
! {
! if (b) pos--;
! }
! else
! {
! b = !b;
! }
!
new_pos++;
children = children->next;
--- 33,40 ----
if (pos >= 0)
{
new_pos = 0;
while (children && pos > 0)
{
! pos--;
new_pos++;
children = children->next;
***************
*** 70,74 ****
{
menuItem = (GtkWidget *) child->data;
!
if (GTK_IS_IMAGE_MENU_ITEM(menuItem) ||
GTK_IS_CHECK_MENU_ITEM(menuItem) ||
--- 60,64 ----
{
menuItem = (GtkWidget *) child->data;
!
if (GTK_IS_IMAGE_MENU_ITEM(menuItem) ||
GTK_IS_CHECK_MENU_ITEM(menuItem) ||
***************
*** 173,246 ****
{
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)))
! handleMenuCommand(menuitem) ;
}
- MenuHandle osInsertMenuRadioGroup(MenuHandle parent, int pos)
- {
- GtkWidget *menu;
- GtkWidget *item1, *item2;
-
- menu = getMenu(parent);
- pos = recalcPos(menu, pos);
-
- item1 = gtk_separator_menu_item_new();
- gtk_menu_shell_insert(GTK_MENU_SHELL(menu), item1, pos);
-
- item2 = gtk_separator_menu_item_new();
- gtk_menu_shell_insert(GTK_MENU_SHELL(menu), item2, pos);
-
- gtk_signal_connect (GTK_OBJECT(item1), "destroy",
- GTK_SIGNAL_FUNC(handleMenuDestroy),
- parent);
-
- return item1;
- };
-
MenuHandle osInsertMenuRadioItem(MenuHandle parent, int pos)
{
! int new_pos;
! GList *children;
! GtkWidget *menu, *menuItem, *label;
! GSList *group;
!
! new_pos = 0;
! menu = gtk_widget_get_parent(parent);
! children = GTK_MENU_SHELL(menu)->children;
!
!
! while (children && children->data != parent)
! {
! new_pos++;
! children = children->next;
! }
!
! if (!children || !children->next)
! return NULL;
!
! new_pos++;
! children = children->next;
! group = NULL;
!
! if (pos < 0)
! {
! while (children && GTK_WIDGET_VISIBLE((GtkWidget *) children->data))
! {
! new_pos++;
! group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM((GtkWidget *) children->data));
! children = children->next;
! }
! }
! else
! {
! while (children && GTK_WIDGET_VISIBLE((GtkWidget *) children->data) && pos > 0)
! {
! pos--;
! new_pos++;
! group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM((GtkWidget *) children->data));
! children = children->next;
! }
! }
! menuItem = gtk_radio_menu_item_new (group);
label = gtk_accel_label_new("");
gtk_container_add(GTK_CONTAINER(menuItem), label);
--- 163,176 ----
{
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)))
! handleMenuCommand(menuitem);
}
MenuHandle osInsertMenuRadioItem(MenuHandle parent, int pos)
{
! GtkWidget *menu;
! GtkWidget *menuItem, *label;
! menuItem = gtk_radio_menu_item_new(NULL);
! GTK_CHECK_MENU_ITEM (menuItem)->active = FALSE;
label = gtk_accel_label_new("");
gtk_container_add(GTK_CONTAINER(menuItem), label);
***************
*** 254,261 ****
NULL);
! gtk_menu_shell_insert(GTK_MENU_SHELL(menu), menuItem, new_pos);
! gtk_widget_show_all(menuItem);
return menuItem;
}
--- 184,205 ----
NULL);
! menu = getMenu(parent);
! pos = recalcPos(menu, pos);
+ gtk_menu_shell_insert(GTK_MENU_SHELL(menu), menuItem, pos);
+ gtk_widget_show_all(menuItem);
return menuItem;
+ }
+
+ void osSetMenuRadioGroup(MenuHandle *handles)
+ {
+ MenuHandle *phandle;
+ GSList *group = NULL;
+
+ for (phandle = handles; *phandle; phandle++)
+ {
+ gtk_radio_menu_item_set_group(GTK_RADIO_MENU_ITEM(*phandle), group);
+ group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM(*phandle));
+ }
}
|