On Sun, May 01, 2005 at 04:48:20PM -0700, Ben Johnson wrote: > Hi. > > I'm working with a touch screen, which I'm learning makes mouse-over > types of events sort of meaningless. Yet, they still occur. > > I have a page full of toggle buttons and it can be difficult to > determine when one is down. The easiest way to tell is by looking at > the button's color. The problem is, if I push a button with the touch > screen the mouse doesn't move out of the button when I move my pointer > (finger) away from the button. The result is, the color doesn't change > and it's hard to if my intended action succeeded. > > I want the mouse-over color to go away so that I just have a "normal" > and an "active" color for the buttons. Is there an easy way to do this? > I'm thinking about programmatically moving the mouse pointer to some > neutral location after each toggle button selection. (don't know how to > do that (yet).) Is there another way? I have a found a quick and dirty way to disable the prelight (mouse-over) color where it causes me the most trouble. I connect the following signal handler to the "state-changed" GtkWidget signal. All it does it check to see what color the toggle button should be set to (based on my appliction specific heuristics) and then uses that color to set the GTK_STATE_PRELIGHT bg and fg widget color states. it's oh so simple and introduces no descernable delay. I'm choosing to use this method because themes appear to not be flexible or manageable enough for my needs in this case. Thanks for the help. - Ben static void on_menuitem_toggle_state_changed (GtkWidget *widget, GtkStateType state, gpointer user_data) { GtkStateType betterstate = GTK_STATE_NORMAL; GtkStyle * style = NULL; #if 0 if( state != GTK_STATE_PRELIGHT ) return; #endif g_return_if_fail( GTK_IS_TOGGLE_BUTTON(widget) ); if( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget ) ) ) betterstate = GTK_STATE_ACTIVE; else betterstate = GTK_STATE_NORMAL; style = gtk_widget_get_style (widget); if( style->bg[ GTK_STATE_PRELIGHT ].red != style->bg[ betterstate ].red || style->bg[ GTK_STATE_PRELIGHT ].green != style->bg[ betterstate ].green || style->bg[ GTK_STATE_PRELIGHT ].blue != style->bg[ betterstate ].blue ) { gtk_widget_modify_bg( widget, GTK_STATE_PRELIGHT, &(style->bg[ betterstate ]) ); gtk_widget_modify_fg( widget, GTK_STATE_PRELIGHT, &(style->fg[ betterstate ]) ); } } _______________________________________________ gtk-list@xxxxxxxxx http://mail.gnome.org/mailman/listinfo/gtk-list