From: Denis M. <de...@li...> - 2000-10-15 18:44:00
|
Here the patch for filer.c : *** roxnew/ROX-Filer/src/filer.c Sun Oct 15 19:56:41 2000 --- rox/ROX-Filer/src/filer.c Sun Oct 15 18:52:56 2000 *************** *** 57,76 **** #define PANEL_BORDER 2 - - typedef struct { - DirItem *item; - GtkWidget *label; - GtkWidget *win; - gint timeout; - } FilerTooltip; - - FilerWindow *window_with_focus = NULL; GList *all_filer_windows = NULL; static FilerWindow *window_with_selection = NULL; - static FilerTooltip leafpopup = { NULL, NULL, NULL, 0 }; /* Options bits */ static GtkWidget *create_options(); --- 57,66 ---- *************** *** 509,595 **** } } - static gint filer_tooltip_draw(FilerTooltip *popup) - - { - GtkWidget *w = popup->win; - - gdk_draw_rectangle(w->window, w->style->fg_gc[w->state], FALSE, 0, 0, - w->allocation.width - 1, w->allocation.height - 1); - - return (FALSE); - } - static gint filer_tooltip_activate(FilerTooltip *popup) - - { - gint x, y; - gint width, height; - - gtk_timeout_remove(popup->timeout); - if (popup->win == NULL) { - popup->win = gtk_window_new(GTK_WINDOW_POPUP); - gtk_container_set_border_width(GTK_CONTAINER(popup->win), 2); - gtk_widget_set_app_paintable(popup->win, TRUE); - gtk_signal_connect_object(GTK_OBJECT(popup->win), "expose_event", - GTK_SIGNAL_FUNC(filer_tooltip_draw), - (gpointer) popup); - gtk_signal_connect_object(GTK_OBJECT(popup->win), "draw", - GTK_SIGNAL_FUNC(filer_tooltip_draw), - (gpointer) popup); - popup->label = gtk_label_new(popup->item->leafname); - gtk_container_add(GTK_CONTAINER(popup->win), popup->label); - gtk_widget_show(popup->label); - } else - gtk_label_set_text(GTK_LABEL(popup->label), popup->item->leafname); - gtk_widget_realize(popup->win); - gdk_window_get_pointer(NULL, &x, &y, NULL); - x -= popup->win->allocation.width / 2; - y += 12; - width = gdk_screen_width(); - height = gdk_screen_height(); - if (x + popup->win->allocation.width > width) - x = width - popup->win->allocation.width; - if (y + popup->win->allocation.height > height) - y = height - popup->win->allocation.height; - if (x < 0) x = 0; - if (y < 0) y = 0; - gtk_widget_popup(popup->win, x, y); - - return (FALSE); - } - static void filer_tooltip_disable(void) - - { - if (leafpopup.win) gtk_widget_hide(leafpopup.win); - if (leafpopup.timeout) { - gtk_timeout_remove(leafpopup.timeout); - leafpopup.timeout = 0; - } - leafpopup.item = NULL; - } - - - - static void filer_tooltip_enable(DirItem *item) - - { - if (item != leafpopup.item) { - filer_tooltip_disable(); - leafpopup.item = item; - leafpopup.timeout = gtk_timeout_add(1000, - (GtkFunction) filer_tooltip_activate, - &leafpopup); - } - } - - static gint pointer_out(GtkWidget *widget, - GdkEventCrossing *event, - FilerWindow *filer_window) - { - filer_tooltip_disable(); - return FALSE; - } - static gint pointer_in(GtkWidget *widget, GdkEventCrossing *event, FilerWindow *filer_window) --- 499,504 ---- *************** *** 1067,1075 **** gtk_signal_connect(GTK_OBJECT(filer_window->window), "enter-notify-event", GTK_SIGNAL_FUNC(pointer_in), filer_window); - gtk_signal_connect(GTK_OBJECT(filer_window->window), - "leave-notify-event", - GTK_SIGNAL_FUNC(pointer_out), filer_window); gtk_signal_connect(GTK_OBJECT(filer_window->window), "focus_in_event", GTK_SIGNAL_FUNC(focus_in), filer_window); gtk_signal_connect(GTK_OBJECT(filer_window->window), "destroy", --- 976,981 ---- *************** *** 1078,1084 **** /* Events on the collection widget */ gtk_widget_set_events(GTK_WIDGET(collection), GDK_BUTTON1_MOTION_MASK | GDK_BUTTON2_MOTION_MASK | ! GDK_BUTTON3_MOTION_MASK | GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK); gtk_signal_connect(collection, "gain_selection", --- 984,990 ---- /* Events on the collection widget */ gtk_widget_set_events(GTK_WIDGET(collection), GDK_BUTTON1_MOTION_MASK | GDK_BUTTON2_MOTION_MASK | ! GDK_BUTTON3_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK); gtk_signal_connect(collection, "gain_selection", *************** *** 1482,1498 **** { Collection *collection = filer_window->collection; int i; - DirItem *di; - - i = collection_get_item(collection, event->x, event->y); - if (i != -1) { - di = (DirItem *) (collection->items[i].data); - if (di->name_width > collection->item_width) - filer_tooltip_enable(di); - else - filer_tooltip_disable(); - } else - filer_tooltip_disable(); if (motion_state != MOTION_READY_FOR_DND) return TRUE; --- 1388,1393 ---- |