}
#ifndef NOFIFO
-static void notify_fifo()
+static void notify_fifo(bool force)
{
if (fifofd == -1) {
fifofd = open(fifopath, O_WRONLY|O_NONBLOCK|O_CLOEXEC);
static struct entry lastentry;
- if (!memcmp(&lastentry, &dents[cur], sizeof(struct entry)))
+ if (!force && !memcmp(&lastentry, &dents[cur], sizeof(struct entry)))
return;
lastentry = dents[cur];
#ifndef NOFIFO
if (fifopath)
- notify_fifo();
+ notify_fifo(FALSE);
#endif
}
(event.bstate == BUTTON1_PRESSED ||
event.bstate == BUTTON3_PRESSED)) {
r = curscroll + (event.y - 2);
- move_cursor(r, 1);
-
+ if (r != cur)
+ move_cursor(r, 1);
+#ifndef NOFIFO
+ else
+ notify_fifo(TRUE);
+#endif
/* Handle right click selection */
if (event.bstate == BUTTON3_PRESSED) {
rightclicksel = 1;
#endif
#ifndef NOFIFO
- notify_fifo();
+ notify_fifo(FALSE);
if (fifofd != -1)
close(fifofd);
#endif