From 96b7ba7a9df48b9829adeb1c6bf2a6e814604fe4 Mon Sep 17 00:00:00 2001 From: neil Date: Mon, 9 Feb 2015 20:57:33 +0000 Subject: [PATCH] Only toggle MUIA_Listview_SelectChange if selections are (probably) changing. git-svn-id: https://svn.aros.org/svn/aros/trunk/AROS@50059 fb15a70f-31f2-0310-bbcc-cdcc74a49acc --- workbench/libs/muimaster/classes/listview.c | 15 +++++++++++---- workbench/libs/muimaster/muimaster.conf | 2 +- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/workbench/libs/muimaster/classes/listview.c b/workbench/libs/muimaster/classes/listview.c index b1d173beb1..34f1e88a7b 100644 --- a/workbench/libs/muimaster/classes/listview.c +++ b/workbench/libs/muimaster/classes/listview.c @@ -1,5 +1,5 @@ /* - Copyright © 2002-2014, The AROS Development Team. All rights reserved. + Copyright © 2002-2015, The AROS Development Team. All rights reserved. $Id$ */ @@ -378,7 +378,7 @@ IPTR Listview__MUIM_HandleEvent(struct IClass *cl, Object *obj, struct MUI_List_TestPos_Result pos; LONG seltype, old_active, new_active, visible, first, last, i; IPTR result = 0; - BOOL select = FALSE, clear = FALSE, range_select = FALSE; + BOOL select = FALSE, clear = FALSE, range_select = FALSE, changing; WORD delta; typeof(msg->muikey) muikey = msg->muikey; @@ -605,8 +605,13 @@ IPTR Listview__MUIM_HandleEvent(struct IClass *cl, Object *obj, } } + /* Decide in advance if any selections may change */ + changing = clear || muikey == MUIKEY_TOGGLE || select; + /* Change selected and active entries */ - set(obj, MUIA_Listview_SelectChange, TRUE); + if (changing) + set(obj, MUIA_Listview_SelectChange, TRUE); + if (clear) { DoMethod(list, MUIM_List_Select, MUIV_List_Select_All, @@ -639,7 +644,9 @@ IPTR Listview__MUIM_HandleEvent(struct IClass *cl, Object *obj, DoMethod(list, MUIM_List_Select, MUIV_List_Select_Active, seltype, NULL); } - set(obj, MUIA_Listview_SelectChange, FALSE); + + if (changing) + set(obj, MUIA_Listview_SelectChange, FALSE); return result; } diff --git a/workbench/libs/muimaster/muimaster.conf b/workbench/libs/muimaster/muimaster.conf index f715e19139..8913fef286 100644 --- a/workbench/libs/muimaster/muimaster.conf +++ b/workbench/libs/muimaster/muimaster.conf @@ -2,7 +2,7 @@ basename MUIMaster libbase MUIMasterBase libbasetype struct MUIMasterBase_intern -version 19.47 +version 19.48 ##end config ##begin cdef -- 2.11.4.GIT