Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
X11:Compiz:Compiz-0.9
compiz
compiz-gwd-fix-tooltips.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File compiz-gwd-fix-tooltips.patch of Package compiz
--- a/gtk/window-decorator/gtk-window-decorator.h +++ b/gtk/window-decorator/gtk-window-decorator.h @@ -284,7 +284,6 @@ extern gint double_click_timeout; /* tooltip */ extern GtkWidget *tip_window; extern GtkWidget *tip_label; -extern GTimeVal tooltip_last_popdown; extern gint tooltip_timer_tag; extern GSList *draw_list; --- a/gtk/window-decorator/tooltip.c +++ b/gtk/window-decorator/tooltip.c @@ -23,31 +23,23 @@ /* stolen from gtktooltip.c */ -#define DEFAULT_DELAY 500 /* Default delay in ms */ -#define STICKY_DELAY 0 /* Delay before popping up next tip - * if we're sticky - */ -#define STICKY_REVERT_DELAY 1000 /* Delay before sticky tooltips revert - * to normal - */ +#define DEFAULT_DELAY 400 /* Default delay in ms */ static void show_tooltip (const char *text) { GdkDeviceManager *device_manager; GdkDevice *pointer; - GtkRequisition requisition; gint x, y, w, h; GdkScreen *screen; gint monitor_num; GdkRectangle monitor; - gtk_label_set_text (GTK_LABEL (tip_label), text); + screen = gdk_screen_get_default (); - gtk_widget_get_preferred_size (tip_window, &requisition, NULL); + gtk_label_set_markup (GTK_LABEL (tip_label), text); - w = requisition.width; - h = requisition.height; + gtk_window_get_size (GTK_WINDOW (tip_window), &w, &h); device_manager = gdk_display_get_device_manager (gdk_display_get_default ()); pointer = gdk_device_manager_get_client_pointer (device_manager); @@ -76,9 +68,6 @@ show_tooltip (const char *text) static void hide_tooltip (void) { - if (gtk_widget_get_visible (tip_window)) - g_get_current_time (&tooltip_last_popdown); - gtk_widget_hide (tip_window); if (tooltip_timer_tag) @@ -88,23 +77,6 @@ hide_tooltip (void) } } -static gboolean -tooltip_recently_shown (void) -{ - GTimeVal now; - glong msec; - - g_get_current_time (&now); - - msec = now.tv_sec - tooltip_last_popdown.tv_sec; - if (msec > STICKY_REVERT_DELAY / 1000) - return FALSE; - - msec = msec * 1000 + (now.tv_usec - tooltip_last_popdown.tv_usec) / 1000; - - return (msec < STICKY_REVERT_DELAY); -} - static gint tooltip_timeout (gpointer data) { @@ -118,15 +90,10 @@ tooltip_timeout (gpointer data) static void tooltip_start_delay (const char *text) { - guint delay = DEFAULT_DELAY; - if (tooltip_timer_tag) return; - if (tooltip_recently_shown ()) - delay = STICKY_DELAY; - - tooltip_timer_tag = g_timeout_add (delay, + tooltip_timer_tag = g_timeout_add (DEFAULT_DELAY, tooltip_timeout, (gpointer) text); } @@ -137,9 +104,16 @@ tooltip_paint_window (GtkWidget *tooltip { GtkRequisition req; - gtk_widget_get_preferred_size (tip_window, &req, NULL); - gtk_render_background (gtk_widget_get_style_context (tip_window), + if (!tooltip) + return FALSE; + + req.width = gtk_widget_get_allocated_width (tooltip); + req.height = gtk_widget_get_allocated_height (tooltip); + + gtk_render_background (gtk_widget_get_style_context (tooltip), cr, 0, 0, req.width, req.height); + gtk_render_frame (gtk_widget_get_style_context (tooltip), + cr, 0, 0, req.width, req.height); return FALSE; } @@ -147,24 +121,37 @@ tooltip_paint_window (GtkWidget *tooltip gboolean create_tooltip_window (void) { + GdkScreen *screen; + GdkVisual *visual; + + screen = gdk_screen_get_default (); + tip_window = gtk_window_new (GTK_WINDOW_POPUP); gtk_widget_set_app_paintable (tip_window, TRUE); gtk_window_set_resizable (GTK_WINDOW (tip_window), FALSE); - gtk_widget_set_name (tip_window, "gtk-tooltips"); + gtk_style_context_add_class (gtk_widget_get_style_context (tip_window), + GTK_STYLE_CLASS_TOOLTIP); gtk_container_set_border_width (GTK_CONTAINER (tip_window), 4); gtk_window_set_type_hint (GTK_WINDOW (tip_window), GDK_WINDOW_TYPE_HINT_TOOLTIP); - g_signal_connect_swapped (tip_window, - "draw", - G_CALLBACK (tooltip_paint_window), - 0); + gtk_window_set_screen (GTK_WINDOW (tip_window), screen); + + visual = gdk_screen_get_rgba_visual (screen); + if (visual) + gtk_widget_set_visual (tip_window, visual); + + g_signal_connect (G_OBJECT (tip_window), + "draw", + G_CALLBACK (tooltip_paint_window), + NULL); tip_label = gtk_label_new (NULL); gtk_label_set_line_wrap (GTK_LABEL (tip_label), TRUE); - gtk_misc_set_alignment (GTK_MISC (tip_label), 0.5, 0.5); + gtk_widget_set_halign (tip_label, GTK_ALIGN_CENTER); + gtk_widget_set_valign (tip_label, GTK_ALIGN_CENTER); gtk_widget_show (tip_label); gtk_container_add (GTK_CONTAINER (tip_window), tip_label);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor