]> git.sur5r.net Git - i3/i3/commitdiff
Only detect clicks within the statusline width. 1683/head
authorIngo Bürk <ingo.buerk@tngtech.com>
Sat, 25 Apr 2015 21:31:56 +0000 (23:31 +0200)
committerIngo Bürk <ingo.buerk@tngtech.com>
Sat, 25 Apr 2015 22:32:18 +0000 (00:32 +0200)
If the user clicks on the very top of i3bar above a tray icon, i3bar might
mistakenly trigger the click event for the last status block. This is due to
the fact that the click detection considers the separator width of the block
even though on the last block this is ignored, incorrectly spanning the block's
width partially (or entirely) across the tray area.

i3bar/src/xcb.c

index fd268e9189400a7353c0ab65093cc0e6b1fc7bf9..a2f1be9a1964e6ef1f66b482fb64dc914f8a0aff 100644 (file)
@@ -420,7 +420,7 @@ void handle_button(xcb_button_press_event_t *event) {
         int offset = walk->rect.w - statusline_width - tray_width - logical_px(sb_hoff_px);
 
         x = original_x - offset;
-        if (x >= 0) {
+        if (x >= 0 && (size_t)x < statusline_width) {
             struct status_block *block;
             int sep_offset_remainder = 0;