DevWorkst.st
changeset 2324 a50065345df3
parent 2308 3f4c19d81b4b
child 2332 c025bb452cd9
equal deleted inserted replaced
2323:bf88727c4dee 2324:a50065345df3
  1725     info at:#bitsPerPixel put:1.
  1725     info at:#bitsPerPixel put:1.
  1726     info at:#padding put:32.
  1726     info at:#padding put:32.
  1727     ^ Array with:info
  1727     ^ Array with:info
  1728 !
  1728 !
  1729 
  1729 
  1730 supportsViewBackgroundPixmaps
       
  1731     "return true, if the device allows pixmaps as
       
  1732      viewBackground. False returned here - redefined in some
       
  1733      device classes."
       
  1734 
       
  1735     ^ false
       
  1736 !
       
  1737 
       
  1738 supportsDeepIcons
  1730 supportsDeepIcons
  1739     "return true, if this device supports non b&w (i.e. greyScale
  1731     "return true, if this device supports non b&w (i.e. greyScale
  1740      or colored icons). Many Xservers (and/or windowManagers) crash,
  1732      or colored icons). Many Xservers (and/or windowManagers) crash,
  1741      if you pass them a deep form as icon; therefore, the default is false.
  1733      if you pass them a deep form as icon; therefore, the default is false.
  1742      It may be a good idea to check for the server vendor/release and
  1734      It may be a good idea to check for the server vendor/release and
  1793     "
  1785     "
  1794      Display supportsIconViews 
  1786      Display supportsIconViews 
  1795     "
  1787     "
  1796 
  1788 
  1797     "Modified: 10.6.1996 / 21:08:04 / cg"
  1789     "Modified: 10.6.1996 / 21:08:04 / cg"
       
  1790 !
       
  1791 
       
  1792 supportsViewBackgroundPixmaps
       
  1793     "return true, if the device allows pixmaps as
       
  1794      viewBackground. False returned here - redefined in some
       
  1795      device classes."
       
  1796 
       
  1797     ^ false
  1798 !
  1798 !
  1799 
  1799 
  1800 supportsViewGravity
  1800 supportsViewGravity
  1801     "return true, if this device supports gravity attributes.
  1801     "return true, if this device supports gravity attributes.
  1802      We do not depend on the being implemented, but some resizing operations
  1802      We do not depend on the being implemented, but some resizing operations
  4671 
  4671 
  4672     "let user specify a rectangle on the screen, return the rectangle.
  4672     "let user specify a rectangle on the screen, return the rectangle.
  4673      Start with initialRectangle. 
  4673      Start with initialRectangle. 
  4674      A helper for rectangleFromUser; can also be used for resizing operations."
  4674      A helper for rectangleFromUser; can also be used for resizing operations."
  4675 
  4675 
  4676     |curs1 origin corner root rect|
  4676     |curs1 origin corner root rect doRegrab|
       
  4677 
       
  4678     "/ regrabbing leads to horrible flicker and
       
  4679     "/ events being sent to applications under the mouse.
       
  4680     "/ on windows displays.
       
  4681     doRegrab := self class ~~ WinWorkstation.
  4677 
  4682 
  4678     keepExtent ifTrue:[
  4683     keepExtent ifTrue:[
  4679 	curs1 := Cursor origin 
  4684         curs1 := Cursor origin 
  4680     ] ifFalse:[    
  4685     ] ifFalse:[    
  4681 	curs1 := Cursor corner
  4686         curs1 := Cursor corner
  4682     ].
  4687     ].
  4683     curs1 := curs1 onDevice:self.
  4688     curs1 := curs1 onDevice:self.
  4684     root := self rootView.
  4689     root := self rootView.
  4685 
  4690 
  4686     "
  4691     "
  4690 
  4695 
  4691     root clippedByChildren:false.
  4696     root clippedByChildren:false.
  4692     root foreground:blackColor background:whiteColor.
  4697     root foreground:blackColor background:whiteColor.
  4693 
  4698 
  4694     root xoring:[
  4699     root xoring:[
  4695 	|left right top bottom newOrigin newCorner p curs|
  4700         |left right top bottom newOrigin newCorner p curs|
  4696 
  4701 
  4697 	keepExtent ifFalse:[
  4702         keepExtent ifFalse:[
  4698 	    corner := origin.
  4703             corner := origin.
  4699 	    rect := origin corner:corner.
  4704             rect := origin corner:corner.
  4700 	    root displayRectangle:rect.
  4705             root displayRectangle:rect.
  4701 	].
  4706         ].
  4702 
  4707 
  4703 	self 
  4708         self 
  4704 	    grabPointerIn:root id 
  4709             grabPointerIn:root id 
  4705 	    withCursor:curs1 id
  4710             withCursor:curs1 id
  4706 	    pointerMode:#async 
  4711             pointerMode:#async 
  4707 	    keyboardMode:#sync 
  4712             keyboardMode:#sync 
  4708 	    confineTo:nil.
  4713             confineTo:nil.
  4709 
  4714 
  4710 	"
  4715         "
  4711 	 just in case; wait for button to be down ...
  4716          just in case; wait for button to be down ...
  4712 	"
  4717         "
  4713 	[self leftButtonPressed] whileFalse:[Delay waitForSeconds:0.05].
  4718         [self leftButtonPressed] whileFalse:[Delay waitForSeconds:0.05].
  4714 
  4719 
  4715 	keepExtent ifTrue:[
  4720         keepExtent ifTrue:[
  4716 	    p := self pointerPosition.
  4721             p := self pointerPosition.
  4717 	    origin := p.
  4722             origin := p.
  4718 	    corner := origin + initialRectangle extent.
  4723             corner := origin + initialRectangle extent.
  4719 	    rect := origin corner:corner.
  4724             rect := origin corner:corner.
  4720 	    root displayRectangle:rect.
  4725             root displayRectangle:rect.
  4721 	].
  4726         ].
  4722 
  4727 
  4723 	[self leftButtonPressed] whileTrue:[
  4728         [self leftButtonPressed] whileTrue:[
  4724 	    left := initialRectangle origin x.
  4729             left := initialRectangle origin x.
  4725 	    top := initialRectangle origin y.
  4730             top := initialRectangle origin y.
  4726 	    right := initialRectangle corner x.
  4731             right := initialRectangle corner x.
  4727 	    bottom := initialRectangle corner y.
  4732             bottom := initialRectangle corner y.
  4728 
  4733 
  4729 	    p := self pointerPosition.
  4734             p := self pointerPosition.
  4730 	    keepExtent ifTrue:[
  4735             keepExtent ifTrue:[
  4731 		newOrigin := p.
  4736                 newOrigin := p.
  4732 		newCorner := newOrigin + initialRectangle extent.
  4737                 newCorner := newOrigin + initialRectangle extent.
  4733 		curs := curs1.
  4738                 curs := curs1.
  4734 	    ] ifFalse:[
  4739             ] ifFalse:[
  4735 		p x < initialRectangle left ifTrue:[
  4740                 p x < initialRectangle left ifTrue:[
  4736 		    p y < initialRectangle top ifTrue:[
  4741                     p y < initialRectangle top ifTrue:[
  4737 			curs := Cursor topLeft.
  4742                         curs := Cursor topLeft.
  4738 			left := p x.
  4743                         left := p x.
  4739 			top := p y.
  4744                         top := p y.
  4740 		    ] ifFalse:[
  4745                     ] ifFalse:[
  4741 			curs := Cursor bottomLeft.
  4746                         curs := Cursor bottomLeft.
  4742 			left := p x.
  4747                         left := p x.
  4743 			bottom := p y
  4748                         bottom := p y
  4744 		    ]
  4749                     ]
  4745 		] ifFalse:[
  4750                 ] ifFalse:[
  4746 		    p y < initialRectangle top ifTrue:[
  4751                     p y < initialRectangle top ifTrue:[
  4747 			curs := Cursor topRight.
  4752                         curs := Cursor topRight.
  4748 			right := p x.
  4753                         right := p x.
  4749 			top := p y
  4754                         top := p y
  4750 		    ] ifFalse:[
  4755                     ] ifFalse:[
  4751 			curs := Cursor bottomRight.
  4756                         curs := Cursor bottomRight.
  4752 			right := p x.
  4757                         right := p x.
  4753 			bottom := p y
  4758                         bottom := p y
  4754 		    ]
  4759                     ]
  4755 		].
  4760                 ].
  4756 
  4761 
  4757 		newOrigin := left @ top.
  4762                 newOrigin := left @ top.
  4758 		newCorner := right @ bottom.
  4763                 newCorner := right @ bottom.
  4759 	    ].
  4764             ].
  4760 
  4765 
  4761 	    ((newOrigin ~= origin) or:[newCorner ~= corner]) ifTrue:[
  4766             ((newOrigin ~= origin) or:[newCorner ~= corner]) ifTrue:[
  4762 		root displayRectangle:rect.
  4767                 root displayRectangle:rect.
  4763 
  4768                 doRegrab ifTrue:[
  4764 		self grabPointerIn:root id 
  4769                     self grabPointerIn:root id 
  4765 			withCursor:curs id
  4770                             withCursor:curs id
  4766 		       pointerMode:#async 
  4771                            pointerMode:#async 
  4767 		      keyboardMode:#sync 
  4772                           keyboardMode:#sync 
  4768 			 confineTo:nil.
  4773                              confineTo:nil.
  4769 
  4774                 ].
  4770 		origin :=  newOrigin.
  4775 
  4771 		corner :=  newCorner.
  4776                 origin :=  newOrigin.
  4772 		rect := origin corner:corner.
  4777                 corner :=  newCorner.
  4773 		root displayRectangle:rect.
  4778                 rect := origin corner:corner.
  4774 		self disposeButtonEventsFor:nil.
  4779                 root displayRectangle:rect.
  4775 		self flush.
  4780                 self disposeButtonEventsFor:nil.
  4776 	    ] ifFalse:[
  4781                 self flush.
  4777 		Delay waitForSeconds:0.05
  4782             ] ifFalse:[
  4778 	    ]
  4783                 Delay waitForSeconds:0.05
  4779 	].
  4784             ]
  4780 	root displayRectangle:rect.
  4785         ].
  4781 	self ungrabPointer.
  4786         root displayRectangle:rect.
       
  4787         self ungrabPointer.
  4782     ].
  4788     ].
  4783 
  4789 
  4784     self ungrabPointer.
  4790     self ungrabPointer.
  4785 
  4791 
  4786     "flush all events pending on my display"
  4792     "flush all events pending on my display"
  4797      Display rectangleFromUser:(100@100 corner:300@300)
  4803      Display rectangleFromUser:(100@100 corner:300@300)
  4798      Display rectangleFromUser:(100@100 corner:300@300) keepExtent:true
  4804      Display rectangleFromUser:(100@100 corner:300@300) keepExtent:true
  4799     "
  4805     "
  4800 
  4806 
  4801     "Created: / 24.7.1997 / 15:26:47 / cg"
  4807     "Created: / 24.7.1997 / 15:26:47 / cg"
  4802     "Modified: / 18.8.1998 / 15:00:29 / cg"
  4808     "Modified: / 10.9.1998 / 17:38:41 / cg"
  4803 !
  4809 !
  4804 
  4810 
  4805 topviewFromUser
  4811 topviewFromUser
  4806     "{ Pragma: +optSpace }"
  4812     "{ Pragma: +optSpace }"
  4807 
  4813 
  6098 ! !
  6104 ! !
  6099 
  6105 
  6100 !DeviceWorkstation class methodsFor:'documentation'!
  6106 !DeviceWorkstation class methodsFor:'documentation'!
  6101 
  6107 
  6102 version
  6108 version
  6103     ^ '$Header: /cvs/stx/stx/libview/Attic/DevWorkst.st,v 1.266 1998-09-08 10:06:09 cg Exp $'
  6109     ^ '$Header: /cvs/stx/stx/libview/Attic/DevWorkst.st,v 1.267 1998-09-10 16:23:49 cg Exp $'
  6104 ! !
  6110 ! !
  6105 DeviceWorkstation initialize!
  6111 DeviceWorkstation initialize!