4499 |
4499 |
4500 root clippedByChildren:false. |
4500 root clippedByChildren:false. |
4501 root foreground:blackColor background:whiteColor. |
4501 root foreground:blackColor background:whiteColor. |
4502 |
4502 |
4503 root xoring:[ |
4503 root xoring:[ |
4504 |left right top bottom newOrigin newCorner p| |
4504 |left right top bottom newOrigin newCorner p| |
4505 |
4505 |
4506 rect := origin extent:extent. |
4506 rect := origin extent:extent. |
4507 root displayRectangle:rect. |
4507 root displayRectangle:rect. |
4508 |
4508 |
4509 self |
4509 self |
4510 grabPointerIn:root id |
4510 grabPointerIn:root id |
4511 withCursor:curs id |
4511 withCursor:curs id |
4512 pointerMode:#async |
4512 pointerMode:#async |
4513 keyboardMode:#sync |
4513 keyboardMode:#sync |
4514 confineTo:nil. |
4514 confineTo:nil. |
4515 |
4515 |
4516 [self leftButtonPressed] whileTrue:[ |
4516 [self leftButtonPressed] whileTrue:[ |
4517 newOrigin := self pointerPosition. |
4517 newOrigin := self pointerPosition. |
4518 |
4518 |
4519 (newOrigin ~= origin) ifTrue:[ |
4519 (newOrigin ~= origin) ifTrue:[ |
4520 root displayRectangle:rect. |
4520 root displayRectangle:rect. |
4521 |
4521 |
4522 self |
4522 self |
4523 grabPointerIn:root id |
4523 grabPointerIn:root id |
4524 withCursor:curs id |
4524 withCursor:curs id |
4525 pointerMode:#async |
4525 pointerMode:#async |
4526 keyboardMode:#sync |
4526 keyboardMode:#sync |
4527 confineTo:nil. |
4527 confineTo:nil. |
4528 |
4528 |
4529 rect := newOrigin extent:extent. |
4529 rect := newOrigin extent:extent. |
4530 root displayRectangle:rect. |
4530 root displayRectangle:rect. |
4531 self disposeButtonEventsFor:nil. |
4531 self disposeButtonEventsFor:nil. |
4532 self flush. |
4532 self flush. |
4533 origin := newOrigin. |
4533 origin := newOrigin. |
4534 ] ifFalse:[ |
4534 ] ifFalse:[ |
4535 Processor yield |
4535 Delay waitForSeconds:0.05 |
4536 ] |
4536 ] |
4537 ]. |
4537 ]. |
4538 root displayRectangle:rect. |
4538 root displayRectangle:rect. |
4539 self ungrabPointer. |
4539 self ungrabPointer. |
4540 ]. |
4540 ]. |
4541 |
4541 |
4542 self ungrabPointer. |
4542 self ungrabPointer. |
4543 |
4543 |
4544 "flush all events pending on my display" |
4544 "flush all events pending on my display" |
4671 |
4671 |
4672 root clippedByChildren:false. |
4672 root clippedByChildren:false. |
4673 root foreground:blackColor background:whiteColor. |
4673 root foreground:blackColor background:whiteColor. |
4674 |
4674 |
4675 root xoring:[ |
4675 root xoring:[ |
4676 |left right top bottom newOrigin newCorner p curs| |
4676 |left right top bottom newOrigin newCorner p curs| |
4677 |
4677 |
4678 keepExtent ifFalse:[ |
4678 keepExtent ifFalse:[ |
4679 corner := origin. |
4679 corner := origin. |
4680 rect := origin corner:corner. |
4680 rect := origin corner:corner. |
4681 root displayRectangle:rect. |
4681 root displayRectangle:rect. |
4682 ]. |
4682 ]. |
4683 |
4683 |
4684 self |
4684 self |
4685 grabPointerIn:root id |
4685 grabPointerIn:root id |
4686 withCursor:curs1 id |
4686 withCursor:curs1 id |
4687 pointerMode:#async |
4687 pointerMode:#async |
4688 keyboardMode:#sync |
4688 keyboardMode:#sync |
4689 confineTo:nil. |
4689 confineTo:nil. |
4690 |
4690 |
4691 " |
4691 " |
4692 just in case; wait for button to be down ... |
4692 just in case; wait for button to be down ... |
4693 " |
4693 " |
4694 [self leftButtonPressed] whileFalse:[Processor yield]. |
4694 [self leftButtonPressed] whileFalse:[Delay waitForSeconds:0.05]. |
4695 |
4695 |
4696 keepExtent ifTrue:[ |
4696 keepExtent ifTrue:[ |
4697 p := self pointerPosition. |
4697 p := self pointerPosition. |
4698 origin := p. |
4698 origin := p. |
4699 corner := origin + initialRectangle extent. |
4699 corner := origin + initialRectangle extent. |
4700 rect := origin corner:corner. |
4700 rect := origin corner:corner. |
4701 root displayRectangle:rect. |
4701 root displayRectangle:rect. |
4702 ]. |
4702 ]. |
4703 |
4703 |
4704 [self leftButtonPressed] whileTrue:[ |
4704 [self leftButtonPressed] whileTrue:[ |
4705 left := initialRectangle origin x. |
4705 left := initialRectangle origin x. |
4706 top := initialRectangle origin y. |
4706 top := initialRectangle origin y. |
4707 right := initialRectangle corner x. |
4707 right := initialRectangle corner x. |
4708 bottom := initialRectangle corner y. |
4708 bottom := initialRectangle corner y. |
4709 |
4709 |
4710 p := self pointerPosition. |
4710 p := self pointerPosition. |
4711 keepExtent ifTrue:[ |
4711 keepExtent ifTrue:[ |
4712 newOrigin := p. |
4712 newOrigin := p. |
4713 newCorner := newOrigin + initialRectangle extent. |
4713 newCorner := newOrigin + initialRectangle extent. |
4714 curs := curs1. |
4714 curs := curs1. |
4715 ] ifFalse:[ |
4715 ] ifFalse:[ |
4716 p x < initialRectangle left ifTrue:[ |
4716 p x < initialRectangle left ifTrue:[ |
4717 p y < initialRectangle top ifTrue:[ |
4717 p y < initialRectangle top ifTrue:[ |
4718 curs := Cursor topLeft. |
4718 curs := Cursor topLeft. |
4719 left := p x. |
4719 left := p x. |
4720 top := p y. |
4720 top := p y. |
4721 ] ifFalse:[ |
4721 ] ifFalse:[ |
4722 curs := Cursor bottomLeft. |
4722 curs := Cursor bottomLeft. |
4723 left := p x. |
4723 left := p x. |
4724 bottom := p y |
4724 bottom := p y |
4725 ] |
4725 ] |
4726 ] ifFalse:[ |
4726 ] ifFalse:[ |
4727 p y < initialRectangle top ifTrue:[ |
4727 p y < initialRectangle top ifTrue:[ |
4728 curs := Cursor topRight. |
4728 curs := Cursor topRight. |
4729 right := p x. |
4729 right := p x. |
4730 top := p y |
4730 top := p y |
4731 ] ifFalse:[ |
4731 ] ifFalse:[ |
4732 curs := Cursor bottomRight. |
4732 curs := Cursor bottomRight. |
4733 right := p x. |
4733 right := p x. |
4734 bottom := p y |
4734 bottom := p y |
4735 ] |
4735 ] |
4736 ]. |
4736 ]. |
4737 |
4737 |
4738 newOrigin := left @ top. |
4738 newOrigin := left @ top. |
4739 newCorner := right @ bottom. |
4739 newCorner := right @ bottom. |
4740 ]. |
4740 ]. |
4741 |
4741 |
4742 ((newOrigin ~= origin) or:[newCorner ~= corner]) ifTrue:[ |
4742 ((newOrigin ~= origin) or:[newCorner ~= corner]) ifTrue:[ |
4743 root displayRectangle:rect. |
4743 root displayRectangle:rect. |
4744 |
4744 |
4745 self grabPointerIn:root id |
4745 self grabPointerIn:root id |
4746 withCursor:curs id |
4746 withCursor:curs id |
4747 pointerMode:#async |
4747 pointerMode:#async |
4748 keyboardMode:#sync |
4748 keyboardMode:#sync |
4749 confineTo:nil. |
4749 confineTo:nil. |
4750 |
4750 |
4751 origin := newOrigin. |
4751 origin := newOrigin. |
4752 corner := newCorner. |
4752 corner := newCorner. |
4753 rect := origin corner:corner. |
4753 rect := origin corner:corner. |
4754 root displayRectangle:rect. |
4754 root displayRectangle:rect. |
4755 self disposeButtonEventsFor:nil. |
4755 self disposeButtonEventsFor:nil. |
4756 self flush. |
4756 self flush. |
4757 ] ifFalse:[ |
4757 ] ifFalse:[ |
4758 Processor yield |
4758 Delay waitForSeconds:0.05 |
4759 ] |
4759 ] |
4760 ]. |
4760 ]. |
4761 root displayRectangle:rect. |
4761 root displayRectangle:rect. |
4762 self ungrabPointer. |
4762 self ungrabPointer. |
4763 ]. |
4763 ]. |
4764 |
4764 |
4765 self ungrabPointer. |
4765 self ungrabPointer. |
4766 |
4766 |
4767 "flush all events pending on my display" |
4767 "flush all events pending on my display" |