]> Dogcows Code - chaz/tint2/commitdiff
*fix* issue 282
authorAndreas Fink <andreas.fink85@googlemail.com>
Sun, 12 Sep 2010 22:00:00 +0000 (22:00 +0000)
committerAndreas Fink <andreas.fink85@googlemail.com>
Sun, 12 Sep 2010 22:00:00 +0000 (22:00 +0000)
*fix* correct x/y coordinates for tooltip on multi-head setup
*fix* delete multitimer hashmap
*fix* cleanup_panel() needs to be called after cleanup_launcher()

src/panel.c
src/systray/systraybar.c
src/taskbar/task.c
src/tint.c
src/tooltip/tooltip.c
src/util/timer.c
src/util/window.c
src/util/window.h

index 49ae218e6422ffb02799e0f5a926211a31680c6b..61b4b2025a01a36be364a4abf90b257d79653b7c 100644 (file)
@@ -510,7 +510,7 @@ void set_panel_properties(Panel *p)
        XChangeProperty(server.dsp, p->main_win, server.atom._MOTIF_WM_HINTS, server.atom._MOTIF_WM_HINTS, 32, PropModeReplace, (unsigned char *) prop, 5);
 
        // XdndAware - Register for Xdnd events
-       long version=5;
+       Atom version=4;
        XChangeProperty(server.dsp, p->main_win, server.atom.XdndAware, XA_ATOM, 32, PropModeReplace, (unsigned char*)&version, 1);
 
        update_strut(p);
index 5a380c192302ebc3c7f5079d57374588f00eda52..9d460549cc50b8e6fe8b352d5cf41d6abd847ae5 100644 (file)
@@ -278,7 +278,7 @@ void start_net()
 
        // v0.3 trayer specification. tint2 always horizontal.
        // Vertical panel will draw the systray horizontal.
-       int orient = 0;
+       long orient = 0;
        XChangeProperty(server.dsp, net_sel_win, server.atom._NET_SYSTEM_TRAY_ORIENTATION, XA_CARDINAL, 32, PropModeReplace, (unsigned char *) &orient, 1);
        VisualID vid;
        if (server.visual32 && (systray.alpha != 100 || systray.brightness != 0 || systray.saturation != 0))
index af4c369396c87e19c53f7a12e11d2e91576e9ab8..5f92233647cd9167c19ed7e23c2f512eb1b296b6 100644 (file)
@@ -209,7 +209,7 @@ void get_icon (Task *tsk)
        int i;
        Imlib_Image img = NULL;
        XWMHints *hints = 0;
-       long *data = 0;
+       gulong *data = 0;
 
        int k;
        for (k=0; k<TASK_STATE_COUNT; ++k) {
@@ -224,10 +224,9 @@ void get_icon (Task *tsk)
        if (data) {
                // get ARGB icon
                int w, h;
-               long *tmp_data;
+               gulong *tmp_data;
 
                tmp_data = get_best_icon (data, get_icon_count (data, i), i, &w, &h, panel->g_task.icon_size1);
-
 #ifdef __x86_64__
                DATA32 icon_data[w * h];
                int length = w * h;
index a573ab1b231f9483b8c97247bad49e1274402b0d..0352aa891d9064545a087347c94635943eab7aee 100644 (file)
@@ -158,13 +158,13 @@ void cleanup()
 {
        cleanup_timeout();
        cleanup_systray();
-       cleanup_panel();
        cleanup_tooltip();
        cleanup_clock();
        cleanup_launcher();
 #ifdef ENABLE_BATTERY
        cleanup_battery();
 #endif
+       cleanup_panel();
        cleanup_config();
 
        if (default_icon) {
index dd7166eb0cc4b6b7098d4187bc459bea15c33e5c..cf62db392d68afcd605d6002398196448766bf3d 100644 (file)
@@ -151,22 +151,22 @@ void tooltip_adjust_geometry()
        Panel* panel = g_tooltip.panel;
        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)
+       if ( x+width <= screen_width && y+height <= screen_height && x>=server.monitor[panel->monitor].x && y>=server.monitor[panel->monitor].y )
                return;    // no adjustment needed
 
        if (panel_horizontal) {
                min_x=0;
-               max_width=screen_width;
-               max_height=screen_height-panel->area.height;
+               max_width=server.monitor[panel->monitor].width;
+               max_height=server.monitor[panel->monitor].height-panel->area.height;
                if (panel_position & BOTTOM)
                        min_y=0;
                else
                        min_y=panel->area.height;
        }
        else {
-               max_width=screen_width-panel->area.width;
+               max_width=server.monitor[panel->monitor].width-panel->area.width;
                min_y=0;
-               max_height=screen_height;
+               max_height=server.monitor[panel->monitor].height;
                if (panel_position & LEFT)
                        min_x=panel->area.width;
                else
index 8d22082f4d79b1321f73cb6288094887bf1094ad..01bd7686b972783b2bd324641fde78b9bf3eaa74 100644 (file)
@@ -77,6 +77,10 @@ void cleanup_timeout()
                free(t);
                timeout_list = g_slist_remove(timeout_list, t);
        }
+       if (multi_timeouts) {
+               g_hash_table_destroy(multi_timeouts);
+               multi_timeouts = 0;
+       }
 }
 
 /** Implementation notes for timeouts: The timeouts are kept in a GSList sorted by their
index dc38d24f3ef84c0e46f59070243c78cfbf3dd2f5..98e3075978f65ad2e322f3a1add96807e06f27f6 100644 (file)
@@ -221,17 +221,17 @@ int window_is_active (Window win)
 }
 
 
-int get_icon_count (long *data, int num)
+int get_icon_count (gulong *data, int num)
 {
        int count, pos, w, h;
 
        count = 0;
        pos = 0;
-       while (pos < num) {
+       while (pos+2 < num) {
                w = data[pos++];
                h = data[pos++];
                pos += w * h;
-               if (pos > num || w * h == 0) break;
+               if (pos > num || w <= 0 || h <= 0) break;
                count++;
        }
 
@@ -239,10 +239,10 @@ int get_icon_count (long *data, int num)
 }
 
 
-long *get_best_icon (long *data, int icon_count, int num, int *iw, int *ih, int best_icon_size)
+gulong *get_best_icon (gulong *data, int icon_count, int num, int *iw, int *ih, int best_icon_size)
 {
        int width[icon_count], height[icon_count], pos, i, w, h;
-       long *icon_data[icon_count];
+       gulong *icon_data[icon_count];
 
        /* List up icons */
        pos = 0;
index 47798cb8a5a1e788e2404e455e1ec2671ac517e8..074079eed9db6b3f301f7801e476301b67c92171 100644 (file)
@@ -22,8 +22,8 @@ int window_is_urgent (Window win);
 int window_is_hidden (Window win);
 int window_is_active (Window win);
 int window_is_skip_taskbar (Window win);
-int get_icon_count (long *data, int num);
-long *get_best_icon (long *data, int icon_count, int num, int *iw, int *ih, int best_icon_size);
+int get_icon_count (gulong *data, int num);
+gulong *get_best_icon (gulong *data, int icon_count, int num, int *iw, int *ih, int best_icon_size);
 void window_maximize_restore (Window win);
 void window_toggle_shade (Window win);
 int window_get_desktop (Window win);
This page took 0.028438 seconds and 4 git commands to generate.