@@ -15,6 +15,8 @@ def __init__(self, model, data):
1515 self ._gui_lock = Lock ()
1616 self ._button_left_pressed = False
1717 self ._button_right_pressed = False
18+ self ._left_double_click_pressed = False
19+ self ._right_double_click_pressed = False
1820 self ._last_mouse_x = 0
1921 self ._last_mouse_y = 0
2022 self ._paused = False
@@ -48,6 +50,8 @@ def __init__(self, model, data):
4850 self .window , self ._mouse_button_callback )
4951 glfw .set_scroll_callback (self .window , self ._scroll_callback )
5052 glfw .set_key_callback (self .window , self ._key_callback )
53+ self ._last_left_click_time = None
54+ self ._last_right_click_time = None
5155
5256 # create options, camera, scene, context
5357 self .vopt = mujoco .MjvOption ()
@@ -158,6 +162,7 @@ def _cursor_pos_callback(self, window, xpos, ypos):
158162 self ._last_mouse_y = int (self ._scale * ypos )
159163
160164 def _mouse_button_callback (self , window , button , act , mods ):
165+ time_now = glfw .get_time ()
161166 self ._button_left_pressed = (glfw .get_mouse_button (
162167 window , glfw .MOUSE_BUTTON_LEFT ) == glfw .PRESS )
163168 self ._button_right_pressed = (glfw .get_mouse_button (
@@ -167,6 +172,30 @@ def _mouse_button_callback(self, window, button, act, mods):
167172 self ._last_mouse_x = int (self ._scale * x )
168173 self ._last_mouse_y = int (self ._scale * y )
169174
175+ # detect a left- or right- doubleclick
176+ self ._left_double_click_pressed = False
177+ self ._right_double_click_pressed = False
178+
179+ if self ._button_left_pressed :
180+ if self ._last_left_click_time is None :
181+ self ._last_left_click_time = glfw .get_time ()
182+ return
183+
184+ time_diff = (time_now - self ._last_left_click_time )
185+ if time_diff > 0.01 and time_diff < 0.3 :
186+ self ._left_double_click_pressed = True
187+ self ._last_left_click_time = time_now
188+
189+ if self ._button_right_pressed :
190+ if self ._last_right_click_time is None :
191+ self ._last_right_click_time = glfw .get_time ()
192+ return
193+
194+ time_diff = (time_now - self ._last_right_click_time )
195+ if time_diff > 0.01 and time_diff < 0.2 :
196+ self ._right_double_click_pressed = True
197+ self ._last_right_click_time = time_now
198+
170199 def _scroll_callback (self , window , x_offset , y_offset ):
171200 with self ._gui_lock :
172201 mujoco .mjv_moveCamera (
0 commit comments