[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Antiright-devel] antiright/gtkshell button.c guidl.lex guidl.y i...
From: |
Jeffrey Bedard |
Subject: |
[Antiright-devel] antiright/gtkshell button.c guidl.lex guidl.y i... |
Date: |
Fri, 27 Apr 2007 20:51:43 +0000 |
CVSROOT: /sources/antiright
Module name: antiright
Changes by: Jeffrey Bedard <jefbed> 07/04/27 20:51:42
Modified files:
gtkshell : button.c guidl.lex guidl.y image_button.c
menu.c row.c
Log message:
Fixed menu support on broken gtk implementations by using a
menubar as the base for the menu launcher button. This
eliminates the necessity for popup handler code. Readded
the button token to guidl. Added more tests for widget type
for menu support.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/button.c?cvsroot=antiright&r1=1.27&r2=1.28
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/guidl.lex?cvsroot=antiright&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/guidl.y?cvsroot=antiright&r1=1.18&r2=1.19
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/image_button.c?cvsroot=antiright&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/menu.c?cvsroot=antiright&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/row.c?cvsroot=antiright&r1=1.15&r2=1.16
Patches:
Index: button.c
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/button.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -b -r1.27 -r1.28
--- button.c 27 Apr 2007 02:02:06 -0000 1.27
+++ button.c 27 Apr 2007 20:51:42 -0000 1.28
@@ -51,20 +51,23 @@
struct GSH_CBData * cb;
cb = gsh_new_GSH_CBData(gsh, g_strdup(command));
- if(GTK_IS_MENU_ITEM(gsh->button)) /* menu item button */
+ if(!GSH_FLAG(GSH_MENU_BUTTON)
+ && GTK_IS_MENU_ITEM(gsh->button)) /* menu item button */
(void) g_signal_connect(G_OBJECT(gsh->button),
"activate", G_CALLBACK(gsh_system_cb), cb);
else if(!GSH_FLAG(GSH_MENU_BUTTON)) /* not a menu launcher button */
(void) g_signal_connect(G_OBJECT(gsh->button),
"clicked", G_CALLBACK(gsh_system_cb), cb);
- else /* Button is a menu launcher button. */
+
+ if(GSH_FLAG(GSH_MENU_BUTTON)) /* Button is a menu launcher button. */
GSH_UNSET(GSH_MENU_BUTTON);
}
static void
create_button(struct GSH * gsh)
{
- if(!GTK_IS_MENU(gsh->rows.v))
+ if(!GTK_IS_MENU(gsh->rows.v)
+ && !GTK_IS_MENU_BAR(gsh->rows.v))
gsh->button = gtk_button_new();
else
gsh->button = gtk_menu_item_new();
Index: guidl.lex
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/guidl.lex,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- guidl.lex 27 Apr 2007 02:02:06 -0000 1.10
+++ guidl.lex 27 Apr 2007 20:51:42 -0000 1.11
@@ -15,11 +15,10 @@
; return END;
option return OPTION;
add return ADD;
+button return BUTTON;
buttons return BUTTONS;
echo return TOKEN_ECHO;
dialog return DIALOG;
-
[ \t\n] /* ignore */;
"//".*$ /* comment */;
-
%%
Index: guidl.y
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/guidl.y,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- guidl.y 27 Apr 2007 02:02:06 -0000 1.18
+++ guidl.y 27 Apr 2007 20:51:42 -0000 1.19
@@ -55,9 +55,8 @@
gchar * string;
gint number;
}
-%token IFS SC COMMA OPTION
-%token END ADD BUTTONS
-%token DIALOG TOKEN_ECHO
+%token IFS SC COMMA OPTION DIALOG
+%token END ADD BUTTONS BUTTON TOKEN_ECHO
%token <string> STRING
%token <number> NUM
%%
@@ -125,6 +124,8 @@
}
|
ADD BUTTONS buttons
+|
+ADD BUTTON button
;
buttons:
Index: image_button.c
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/image_button.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- image_button.c 19 Mar 2007 09:33:07 -0000 1.8
+++ image_button.c 27 Apr 2007 20:51:42 -0000 1.9
@@ -27,7 +27,8 @@
GtkWidget * image)
{
gsh_command_button(gsh, command);
- if(!GTK_IS_MENU(gsh->rows.v))
+ if(!GTK_IS_MENU_BAR(gsh->rows.v) && !GTK_IS_MENU_ITEM(gsh->rows.v)
+ && !GTK_IS_MENU(gsh->rows.v))
{
gtk_button_set_image(GTK_BUTTON(gsh->button), image);
gtk_button_set_relief(GTK_BUTTON(gsh->button), GTK_RELIEF_NONE);
@@ -51,8 +52,8 @@
}
}
-void
-gsh_image_button(struct GSH * gsh, char *command, char *name)
+static GtkWidget *
+get_image(const gchar * name)
{
GtkWidget *image;
@@ -85,6 +86,12 @@
g_free(prefixed_name);
}
- generic_image_button(gsh, command, image);
+ return image;
+}
+
+void
+gsh_image_button(struct GSH * gsh, char *command, char *name)
+{
+ generic_image_button(gsh, command, get_image(name));
}
Index: menu.c
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/menu.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- menu.c 24 Apr 2007 21:54:21 -0000 1.2
+++ menu.c 27 Apr 2007 20:51:42 -0000 1.3
@@ -51,22 +51,6 @@
g_strfreev(pair);
}
-/* This is connected with g_signal_connect_swapped,
- * so WIDGET is the menu widget, rather than the button. */
-static gint
-popup_handler(GtkWidget * widget, GdkEvent * event)
-{
- GdkEventButton *event_button;
-
- event_button=(GdkEventButton *)event;
-
- gtk_menu_popup(GTK_MENU(widget),
- NULL, NULL, NULL, NULL,
- event_button->button, event_button->time);
-
- return TRUE;
-}
-
static void
add_menu_items(struct GSH * gsh, GtkWidget * menu, gchar **tokens)
{
@@ -89,16 +73,26 @@
void
menubutton_parse(struct GSH * gsh, gchar **tokens)
{
+ GtkWidget * menu_bar;
+ GtkWidget * menu_item;
GtkWidget * menu;
+ menu_bar = gtk_menu_bar_new();
+ gtk_widget_show(menu_bar);
+ gsh_manage(gsh, menu_bar);
+ {
+ GtkWidget * old_row;
+
+ old_row=gsh->rows.v;
+ gsh->rows.v=menu_bar;
GSH_SET(GSH_MENU_BUTTON);
- /* Add menu launcher button. */
- gsh_new_button(gsh, tokens[0]);
+ menu_item=gsh_add_button(gsh, tokens[0]);
+ gsh->rows.v=old_row;
+ }
menu=gtk_menu_new();
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item), menu);
+ gtk_widget_show(menu_item);
gtk_widget_show(menu);
- /*gtk_menu_attach_to_widget(GTK_MENU(menu), gsh->button, NULL);*/
- g_signal_connect_swapped(gsh->button, "clicked",
- G_CALLBACK(popup_handler), menu);
add_menu_items(gsh, menu, tokens);
}
Index: row.c
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/row.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- row.c 16 Apr 2007 01:19:51 -0000 1.15
+++ row.c 27 Apr 2007 20:51:42 -0000 1.16
@@ -32,7 +32,8 @@
void
gsh_manage(struct GSH * gsh, GtkWidget *widget)
{
- if(GTK_IS_MENU(gsh->rows.v))
+ if(GTK_IS_MENU(gsh->rows.v) || GTK_IS_MENU_BAR(gsh->rows.v)
+ || GTK_IS_MENU_ITEM(gsh->rows.v))
{
gtk_menu_shell_append(GTK_MENU_SHELL(gsh->rows.v), widget);
}
@@ -52,7 +53,10 @@
* Checking for a 1 row counter allows the ACE Deskbar to
* maintain a decent appearance.
*/
- if ((gsh->rows.rows != 1) && !GTK_IS_MENU(gsh->rows.v))
+ if ((gsh->rows.rows != 1)
+ && !GTK_IS_MENU(gsh->rows.v)
+ && !GTK_IS_MENU_BAR(gsh->rows.v)
+ && !GTK_IS_MENU_ITEM(gsh->rows.v))
{
gsh_check_row(gsh);
gtk_box_pack_start(GTK_BOX(gsh->rows.v), widget,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Antiright-devel] antiright/gtkshell button.c guidl.lex guidl.y i...,
Jeffrey Bedard <=