rendered paste body/* gcc -Wall -g `pkg-config --cflags --libs gtk+-2.0` -o X pre.c */#include <gtk/gtk.h>#include <unistd.h>gboolean on_mouse_hover(GtkWidget *widget, GdkEventCrossing *event, gpointer data){ GtkAllocation alloc; gtk_widget_get_allocation(widget,&alloc); if(event->type == GDK_LEAVE_NOTIFY){ printf("Leave Notify\n"); gtk_paint_box(widget->style,widget->window,GTK_STATE_NORMAL, GTK_SHADOW_NONE,NULL,widget,NULL,0,0,alloc.width,alloc.height); return TRUE; }else { printf("Enter notify\n"); gtk_paint_box(widget->style,widget->window,GTK_STATE_PRELIGHT, GTK_SHADOW_OUT,NULL,widget,NULL,0,0,alloc.width,alloc.height); return TRUE; }}int main(int argc, char **argv){ gtk_init(&argc, &argv); GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); GdkGeometry gdkGeometry; gdkGeometry.min_width= 640; gdkGeometry.min_height = 480; gtk_window_set_geometry_hints(GTK_WINDOW(window), window, &gdkGeometry, GDK_HINT_MIN_SIZE); GtkLabel *label = gtk_label_new("blah"); GtkFrame *frame = gtk_frame_new(NULL); GtkEventBox *frame_event = gtk_event_box_new(); GtkAlignment *frame_align = gtk_alignment_new(0.5,0.5,0.5,0.5); gtk_widget_set_size_request (frame,200,200); gtk_container_add(GTK_CONTAINER(frame), label); gtk_container_add(GTK_CONTAINER(frame_event), frame); gtk_container_add(GTK_CONTAINER(frame_align), frame_event); gtk_container_add(GTK_CONTAINER(window), frame_align); g_signal_connect(frame_event,"leave-notify-event",on_mouse_hover,NULL); g_signal_connect(frame_event,"enter-notify-event",on_mouse_hover,NULL); g_signal_connect(G_OBJECT(window), "destroy", gtk_main_quit, NULL); gtk_widget_show_all(window); gtk_main(); return 0;}