X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Ftooltip%2Ftooltip.c;h=d7d4f2e1dc92f9f1196e4b82f878bb37ef6e39b7;hb=30db8ea2ffb03b482043ce1f95c60470ea0b8597;hp=85ab223f2fa11f70277ef0c1c31151447ce42dd9;hpb=1833c8e7e22505fcf47435fe9f28fa51313311b5;p=chaz%2Ftint2 diff --git a/src/tooltip/tooltip.c b/src/tooltip/tooltip.c index 85ab223..d7d4f2e 100644 --- a/src/tooltip/tooltip.c +++ b/src/tooltip/tooltip.c @@ -59,6 +59,26 @@ void init_tooltip() } +void cleanup_tooltip() +{ + alarm(0); + tooltip_hide(); + g_tooltip.enabled = False; + g_tooltip.current_state = TOOLTIP_ABOUT_TO_HIDE; + if (g_tooltip.task) { + g_tooltip.task = 0; + } + if (g_tooltip.window) { + XDestroyWindow(server.dsp, g_tooltip.window); + g_tooltip.window = 0; + } + if (g_tooltip.font_desc) { + pango_font_description_free(g_tooltip.font_desc); + g_tooltip.font_desc = 0; + } +} + + void tooltip_sighandler(int sig) { if (g_tooltip.current_state == TOOLTIP_ABOUT_TO_SHOW) @@ -97,7 +117,7 @@ void tooltip_show() if (!g_tooltip.mapped) { g_tooltip.mapped = True; XMapWindow(server.dsp, g_tooltip.window); - tooltip_update(); + //tooltip_update(); alarm(0); } } @@ -126,7 +146,8 @@ void tooltip_update_geometry() else if (panel_position & LEFT) x = panel->posx + panel->area.width; else - x = panel->posx - width; + x = panel->posx - width; + g_object_unref(layout); cairo_destroy(c); cairo_surface_destroy(cs); @@ -140,8 +161,8 @@ void tooltip_adjust_geometry() int min_x, min_y, max_width, max_height; Panel* panel = g_tooltip.task->area.panel; - int screen_width = server.monitor[panel->monitor].width; - int screen_height = server.monitor[panel->monitor].height; + int screen_width = server.monitor[panel->monitor].x + server.monitor[panel->monitor].width; + int screen_height = server.monitor[panel->monitor].y + server.monitor[panel->monitor].height; if ( x+width <= screen_width && y+height <= screen_height && x>=0 && y>=0) return; // no adjustment needed @@ -164,10 +185,10 @@ void tooltip_adjust_geometry() min_x=0; } - if (x+width > server.monitor[panel->monitor].width) - x = server.monitor[panel->monitor].width-width; - if ( y+height>server.monitor[panel->monitor].height) - y = server.monitor[panel->monitor].height-height; + if (x+width > server.monitor[panel->monitor].x + server.monitor[panel->monitor].width) + x = server.monitor[panel->monitor].x + server.monitor[panel->monitor].width - width; + if ( y+height > server.monitor[panel->monitor].y + server.monitor[panel->monitor].height) + y = server.monitor[panel->monitor].y + server.monitor[panel->monitor].height - height; if (x