@@ -139,25 +139,26 @@ impl ClickTracker {
139139
140140 let prev_time = record. time ;
141141 let prev_position = record. position ;
142+ let prev_count: ClickCount = record. down_count ;
142143
143144 let now = Instant :: now ( ) ;
144145 record. time = now;
145146 record. position = position;
146147
147148 match state {
148- ElementState :: Pressed if record. down_count == ClickCount :: Double => {
149+ ElementState :: Pressed if record. down_count == ClickCount :: Triple => {
149150 * record = ClickRecord {
150- down_count : ClickCount :: Single ,
151+ down_count : ClickCount :: Double ,
151152 ..* record
152153 } ;
153- return ClickCount :: Single ;
154+ return ClickCount :: Double ;
154155 }
155- ElementState :: Released if record. up_count == ClickCount :: Double => {
156+ ElementState :: Released if record. up_count == ClickCount :: Triple => {
156157 * record = ClickRecord {
157- up_count : ClickCount :: Single ,
158+ up_count : ClickCount :: Double ,
158159 ..* record
159160 } ;
160- return ClickCount :: Single ;
161+ return ClickCount :: Double ;
161162 }
162163 _ => { }
163164 }
@@ -167,7 +168,11 @@ impl ClickTracker {
167168 let within_dist = dx <= MULTICLICK_ALLOWED_TRAVEL && dy <= MULTICLICK_ALLOWED_TRAVEL ;
168169 let within_time = now. saturating_duration_since ( prev_time) <= MULTICLICK_TIMEOUT ;
169170
170- let count = if within_time && within_dist { ClickCount :: Double } else { ClickCount :: Single } ;
171+ let count = match ( prev_count, within_time, within_dist) {
172+ ( ClickCount :: Double , true , true ) => ClickCount :: Triple ,
173+ ( _, true , true ) => ClickCount :: Double ,
174+ _ => ClickCount :: Single ,
175+ } ;
171176
172177 * record = match state {
173178 ElementState :: Pressed => ClickRecord { down_count : count, ..* record } ,
@@ -182,12 +187,14 @@ pub(crate) enum ClickCount {
182187 #[ default]
183188 Single ,
184189 Double ,
190+ Triple ,
185191}
186192impl From < ClickCount > for i32 {
187193 fn from ( count : ClickCount ) -> i32 {
188194 match count {
189195 ClickCount :: Single => 1 ,
190196 ClickCount :: Double => 2 ,
197+ ClickCount :: Triple => 3 ,
191198 }
192199 }
193200}
0 commit comments