@@ -1481,23 +1481,6 @@ def _forward_event(self, event: events.Event) -> None:
1481
1481
if isinstance (event , (events .Enter , events .Leave )):
1482
1482
self .post_message (event )
1483
1483
1484
- if isinstance (event , events .MouseDown ):
1485
- self ._mouse_down_offset = event .screen_offset
1486
- select_widget , select_offset = self .get_widget_and_offset_at (
1487
- event .screen_x , event .screen_y
1488
- )
1489
- if select_widget is not None and select_widget .allow_select :
1490
- self ._selecting = True
1491
- if select_widget is not None and select_offset is not None :
1492
- self ._select_start = (
1493
- select_widget ,
1494
- event .screen_offset ,
1495
- select_offset ,
1496
- )
1497
-
1498
- else :
1499
- self ._selecting = False
1500
-
1501
1484
elif isinstance (event , events .MouseUp ):
1502
1485
if (
1503
1486
self ._mouse_down_offset is not None
@@ -1522,7 +1505,23 @@ def _forward_event(self, event: events.Event) -> None:
1522
1505
):
1523
1506
self ._select_end = (select_widget , event .offset , select_offset )
1524
1507
1525
- if isinstance (event , events .MouseEvent ):
1508
+ elif isinstance (event , events .MouseEvent ):
1509
+ if isinstance (event , events .MouseDown ) and not self .app .mouse_captured :
1510
+ self ._mouse_down_offset = event .screen_offset
1511
+ select_widget , select_offset = self .get_widget_and_offset_at (
1512
+ event .screen_x , event .screen_y
1513
+ )
1514
+ if select_widget is not None and select_widget .allow_select :
1515
+ self ._selecting = True
1516
+ if select_widget is not None and select_offset is not None :
1517
+ self ._select_start = (
1518
+ select_widget ,
1519
+ event .screen_offset ,
1520
+ select_offset ,
1521
+ )
1522
+ else :
1523
+ self ._selecting = False
1524
+
1526
1525
try :
1527
1526
if self .app .mouse_captured :
1528
1527
widget = self .app .mouse_captured
0 commit comments