A new version of Morphic was added to project The Inbox:
http://source.squeak.org/inbox/Morphic-kfr.1064.mcz ==================== Summary ==================== Name: Morphic-kfr.1064 Author: kfr Time: 6 January 2016, 6:38:01.020914 pm UUID: b190605b-c0ac-4b6d-8239-650c69aed317 Ancestors: Morphic-eem.1063 Add preference backgroundColor to SystemWindows. Add preference to a a few places that where hardcoded to color white. =============== Diff against Morphic-eem.1063 =============== Item was changed: ----- Method: PluggableListMorph>>indicateUnfiltered (in category 'filtering') ----- indicateUnfiltered + self color: SystemWindow backgroundColor! - self color: Color white! Item was changed: ----- Method: ScrollPane>>defaultColor (in category 'initialization') ----- defaultColor + ^ SystemWindow backgroundColor! - ^ Color white ! Item was changed: MorphicModel subclass: #SystemWindow instanceVariableNames: 'labelString stripes label closeBox collapseBox activeOnlyOnTop paneMorphs paneRects collapsedFrame fullFrame isCollapsed menuBox mustNotClose labelWidgetAllowance updatablePanes allowReframeHandles labelArea expandBox' + classVariableNames: 'BackgroundColor ClickOnLabelToEdit CloseBoxFrame CloseBoxImageFlat CloseBoxImageGradient CollapseBoxImageFlat CollapseBoxImageGradient DoubleClickOnLabelToExpand ExpandBoxFrame ExpandBoxImageFlat ExpandBoxImageGradient FocusFollowsMouse GradientWindow HideExpandButton MenuBoxFrame MenuBoxImageFlat MenuBoxImageGradient ResizeAlongEdges ReuseWindows TopWindow WindowsRaiseOnClick' - classVariableNames: 'ClickOnLabelToEdit CloseBoxFrame CloseBoxImageFlat CloseBoxImageGradient CollapseBoxImageFlat CollapseBoxImageGradient DoubleClickOnLabelToExpand ExpandBoxFrame ExpandBoxImageFlat ExpandBoxImageGradient FocusFollowsMouse GradientWindow HideExpandButton MenuBoxFrame MenuBoxImageFlat MenuBoxImageGradient ResizeAlongEdges ReuseWindows TopWindow WindowsRaiseOnClick' poolDictionaries: '' category: 'Morphic-Windows'! !SystemWindow commentStamp: '<historical>' prior: 0! SystemWindow is the Morphic equivalent of StandardSystemView -- a labelled container for rectangular views, with iconic facilities for close, collapse/expand, and resizing. The attribute onlyActiveOnTop, if set to true (and any call to activate will set this), determines that only the top member of a collection of such windows on the screen shall be active. To be not active means that a mouse click in any region will only result in bringing the window to the top and then making it active.! Item was added: + ----- Method: SystemWindow class>>backgroundColor (in category 'preferences') ----- + backgroundColor + + <preference: 'backgroundColor' + category: 'windows' + description: 'set the backgound color of window' + type: #Color> + ^ BackgroundColor ifNil: [Color white] + ! Item was added: + ----- Method: SystemWindow class>>backgroundColor: (in category 'preferences') ----- + backgroundColor: aColor + + BackgroundColor := aColor + ! |
Why is this method send all the time ? Do we need to filter all lists in all browsers all the time? PluggableListMorph>>indicateUnfiltered (in category 'filtering') ----indicateUnfiltered self color: Color white! On Sun, Jan 10, 2016 at 6:38 PM, <[hidden email]> wrote: A new version of Morphic was added to project The Inbox: |
I'm not sure what you mean by "all the time"..? You seem to be saying
its sent when it doesn't need to be. When is that? On Mon, Jan 11, 2016 at 3:40 PM, karl ramberg <[hidden email]> wrote: > Why is this method send all the time ? > Do we need to filter all lists in all browsers all the time? > > PluggableListMorph>>indicateUnfiltered (in category 'filtering') > ----indicateUnfiltered > self color: Color white! > > On Sun, Jan 10, 2016 at 6:38 PM, <[hidden email]> wrote: >> >> A new version of Morphic was added to project The Inbox: >> http://source.squeak.org/inbox/Morphic-kfr.1064.mcz >> >> ==================== Summary ==================== >> >> Name: Morphic-kfr.1064 >> Author: kfr >> Time: 6 January 2016, 6:38:01.020914 pm >> UUID: b190605b-c0ac-4b6d-8239-650c69aed317 >> Ancestors: Morphic-eem.1063 >> >> Add preference backgroundColor to SystemWindows. Add preference to a a few >> places that where hardcoded to color white. >> >> =============== Diff against Morphic-eem.1063 =============== >> >> Item was changed: >> ----- Method: PluggableListMorph>>indicateUnfiltered (in category >> 'filtering') ----- >> indicateUnfiltered >> + self color: SystemWindow backgroundColor! >> - self color: Color white! >> >> Item was changed: >> ----- Method: ScrollPane>>defaultColor (in category 'initialization') >> ----- >> defaultColor >> >> + ^ SystemWindow backgroundColor! >> - ^ Color white ! >> >> Item was changed: >> MorphicModel subclass: #SystemWindow >> instanceVariableNames: 'labelString stripes label closeBox >> collapseBox activeOnlyOnTop paneMorphs paneRects collapsedFrame fullFrame >> isCollapsed menuBox mustNotClose labelWidgetAllowance updatablePanes >> allowReframeHandles labelArea expandBox' >> + classVariableNames: 'BackgroundColor ClickOnLabelToEdit >> CloseBoxFrame CloseBoxImageFlat CloseBoxImageGradient CollapseBoxImageFlat >> CollapseBoxImageGradient DoubleClickOnLabelToExpand ExpandBoxFrame >> ExpandBoxImageFlat ExpandBoxImageGradient FocusFollowsMouse GradientWindow >> HideExpandButton MenuBoxFrame MenuBoxImageFlat MenuBoxImageGradient >> ResizeAlongEdges ReuseWindows TopWindow WindowsRaiseOnClick' >> - classVariableNames: 'ClickOnLabelToEdit CloseBoxFrame >> CloseBoxImageFlat CloseBoxImageGradient CollapseBoxImageFlat >> CollapseBoxImageGradient DoubleClickOnLabelToExpand ExpandBoxFrame >> ExpandBoxImageFlat ExpandBoxImageGradient FocusFollowsMouse GradientWindow >> HideExpandButton MenuBoxFrame MenuBoxImageFlat MenuBoxImageGradient >> ResizeAlongEdges ReuseWindows TopWindow WindowsRaiseOnClick' >> poolDictionaries: '' >> category: 'Morphic-Windows'! >> >> !SystemWindow commentStamp: '<historical>' prior: 0! >> SystemWindow is the Morphic equivalent of StandardSystemView -- a >> labelled container for rectangular views, with iconic facilities for close, >> collapse/expand, and resizing. >> >> The attribute onlyActiveOnTop, if set to true (and any call to activate >> will set this), determines that only the top member of a collection of such >> windows on the screen shall be active. To be not active means that a mouse >> click in any region will only result in bringing the window to the top and >> then making it active.! >> >> Item was added: >> + ----- Method: SystemWindow class>>backgroundColor (in category >> 'preferences') ----- >> + backgroundColor >> + >> + <preference: 'backgroundColor' >> + category: 'windows' >> + description: 'set the backgound color of window' >> + type: #Color> >> + ^ BackgroundColor ifNil: [Color white] >> + ! >> >> Item was added: >> + ----- Method: SystemWindow class>>backgroundColor: (in category >> 'preferences') ----- >> + backgroundColor: aColor >> + >> + BackgroundColor := aColor >> + ! >> >> > > > > |
If you try changing Color white to something else, you will see it changes in all lists in all browsers. Some update process is running on all lists in the background. Best, Karl On Mon, Jan 11, 2016 at 11:24 PM, Chris Muller <[hidden email]> wrote: I'm not sure what you mean by "all the time"..? You seem to be saying |
Just add "thisContext longStack" to a global Set at the top of the
method. I did that it found about 13 unique paths to that method, they all looked valid. >From what I remember doing that Invertebrite package, there were a LOT of different places that needed to be tweaked to access some preferred: color instead of a hard-coded color. For example, after thinking I had successful white-on-black everywhere, then there were the "Ok" and "Cancel" buttons of UI Dialog, black-on-black. New cases kept popping up even months later. It ended up being a lot of different preferences all scattered about. Colors have to coordinate with other colors (adjacent), so we have reason to recognize some kind of "coordinated set of colors" object for this purpose. I suggest a first-class ColorScheme object simply held by Preferences for now, which wraps a Dictionary, so it can grow organically to include colors of new widgets as we discover them. On Mon, Jan 11, 2016 at 4:33 PM, karl ramberg <[hidden email]> wrote: > If you try changing Color white to something else, you will see it changes > in all lists in all browsers. Some update process is running on all lists in > the background. > > Best, > Karl > > On Mon, Jan 11, 2016 at 11:24 PM, Chris Muller <[hidden email]> wrote: >> >> I'm not sure what you mean by "all the time"..? You seem to be saying >> its sent when it doesn't need to be. When is that? >> >> On Mon, Jan 11, 2016 at 3:40 PM, karl ramberg <[hidden email]> >> wrote: >> > Why is this method send all the time ? >> > Do we need to filter all lists in all browsers all the time? >> > >> > PluggableListMorph>>indicateUnfiltered (in category 'filtering') >> > ----indicateUnfiltered >> > self color: Color white! >> > >> > On Sun, Jan 10, 2016 at 6:38 PM, <[hidden email]> wrote: >> >> >> >> A new version of Morphic was added to project The Inbox: >> >> http://source.squeak.org/inbox/Morphic-kfr.1064.mcz >> >> >> >> ==================== Summary ==================== >> >> >> >> Name: Morphic-kfr.1064 >> >> Author: kfr >> >> Time: 6 January 2016, 6:38:01.020914 pm >> >> UUID: b190605b-c0ac-4b6d-8239-650c69aed317 >> >> Ancestors: Morphic-eem.1063 >> >> >> >> Add preference backgroundColor to SystemWindows. Add preference to a a >> >> few >> >> places that where hardcoded to color white. >> >> >> >> =============== Diff against Morphic-eem.1063 =============== >> >> >> >> Item was changed: >> >> ----- Method: PluggableListMorph>>indicateUnfiltered (in category >> >> 'filtering') ----- >> >> indicateUnfiltered >> >> + self color: SystemWindow backgroundColor! >> >> - self color: Color white! >> >> >> >> Item was changed: >> >> ----- Method: ScrollPane>>defaultColor (in category 'initialization') >> >> ----- >> >> defaultColor >> >> >> >> + ^ SystemWindow backgroundColor! >> >> - ^ Color white ! >> >> >> >> Item was changed: >> >> MorphicModel subclass: #SystemWindow >> >> instanceVariableNames: 'labelString stripes label closeBox >> >> collapseBox activeOnlyOnTop paneMorphs paneRects collapsedFrame >> >> fullFrame >> >> isCollapsed menuBox mustNotClose labelWidgetAllowance updatablePanes >> >> allowReframeHandles labelArea expandBox' >> >> + classVariableNames: 'BackgroundColor ClickOnLabelToEdit >> >> CloseBoxFrame CloseBoxImageFlat CloseBoxImageGradient >> >> CollapseBoxImageFlat >> >> CollapseBoxImageGradient DoubleClickOnLabelToExpand ExpandBoxFrame >> >> ExpandBoxImageFlat ExpandBoxImageGradient FocusFollowsMouse >> >> GradientWindow >> >> HideExpandButton MenuBoxFrame MenuBoxImageFlat MenuBoxImageGradient >> >> ResizeAlongEdges ReuseWindows TopWindow WindowsRaiseOnClick' >> >> - classVariableNames: 'ClickOnLabelToEdit CloseBoxFrame >> >> CloseBoxImageFlat CloseBoxImageGradient CollapseBoxImageFlat >> >> CollapseBoxImageGradient DoubleClickOnLabelToExpand ExpandBoxFrame >> >> ExpandBoxImageFlat ExpandBoxImageGradient FocusFollowsMouse >> >> GradientWindow >> >> HideExpandButton MenuBoxFrame MenuBoxImageFlat MenuBoxImageGradient >> >> ResizeAlongEdges ReuseWindows TopWindow WindowsRaiseOnClick' >> >> poolDictionaries: '' >> >> category: 'Morphic-Windows'! >> >> >> >> !SystemWindow commentStamp: '<historical>' prior: 0! >> >> SystemWindow is the Morphic equivalent of StandardSystemView -- a >> >> labelled container for rectangular views, with iconic facilities for >> >> close, >> >> collapse/expand, and resizing. >> >> >> >> The attribute onlyActiveOnTop, if set to true (and any call to >> >> activate >> >> will set this), determines that only the top member of a collection of >> >> such >> >> windows on the screen shall be active. To be not active means that a >> >> mouse >> >> click in any region will only result in bringing the window to the top >> >> and >> >> then making it active.! >> >> >> >> Item was added: >> >> + ----- Method: SystemWindow class>>backgroundColor (in category >> >> 'preferences') ----- >> >> + backgroundColor >> >> + >> >> + <preference: 'backgroundColor' >> >> + category: 'windows' >> >> + description: 'set the backgound color of window' >> >> + type: #Color> >> >> + ^ BackgroundColor ifNil: [Color white] >> >> + ! >> >> >> >> Item was added: >> >> + ----- Method: SystemWindow class>>backgroundColor: (in category >> >> 'preferences') ----- >> >> + backgroundColor: aColor >> >> + >> >> + BackgroundColor := aColor >> >> + ! >> >> >> >> >> > >> > >> > >> > >> > > > > |
So for example for this one, instead of introducing a new class var
and preference on SystemWindow, just have the class-side method on SystemWindow do this: SystemWindow class>>#preferredBackgroundColor ^ Preferences colorScheme colorFor: {SystemWindow. #preferredBackgroundColor} ifNone: [ Color white] ColorScheme colorFor: would just look up that tuple in its internal Dictionary. Now, entire color-coordinated ColorSchemes can be independent of larger Themes (which include the colorScheme as well as other non-color related preferences too). On Mon, Jan 11, 2016 at 8:29 PM, Chris Muller <[hidden email]> wrote: > Just add "thisContext longStack" to a global Set at the top of the > method. I did that it found about 13 unique paths to that method, > they all looked valid. > > From what I remember doing that Invertebrite package, there were a LOT > of different places that needed to be tweaked to access some > preferred: color instead of a hard-coded color. For example, after > thinking I had successful white-on-black everywhere, then there were > the "Ok" and "Cancel" buttons of UI Dialog, black-on-black. New cases > kept popping up even months later. It ended up being a lot of > different preferences all scattered about. > > Colors have to coordinate with other colors (adjacent), so we have > reason to recognize some kind of "coordinated set of colors" object > for this purpose. I suggest a first-class ColorScheme object simply > held by Preferences for now, which wraps a Dictionary, so it can grow > organically to include colors of new widgets as we discover them. > > > > On Mon, Jan 11, 2016 at 4:33 PM, karl ramberg <[hidden email]> wrote: >> If you try changing Color white to something else, you will see it changes >> in all lists in all browsers. Some update process is running on all lists in >> the background. >> >> Best, >> Karl >> >> On Mon, Jan 11, 2016 at 11:24 PM, Chris Muller <[hidden email]> wrote: >>> >>> I'm not sure what you mean by "all the time"..? You seem to be saying >>> its sent when it doesn't need to be. When is that? >>> >>> On Mon, Jan 11, 2016 at 3:40 PM, karl ramberg <[hidden email]> >>> wrote: >>> > Why is this method send all the time ? >>> > Do we need to filter all lists in all browsers all the time? >>> > >>> > PluggableListMorph>>indicateUnfiltered (in category 'filtering') >>> > ----indicateUnfiltered >>> > self color: Color white! >>> > >>> > On Sun, Jan 10, 2016 at 6:38 PM, <[hidden email]> wrote: >>> >> >>> >> A new version of Morphic was added to project The Inbox: >>> >> http://source.squeak.org/inbox/Morphic-kfr.1064.mcz >>> >> >>> >> ==================== Summary ==================== >>> >> >>> >> Name: Morphic-kfr.1064 >>> >> Author: kfr >>> >> Time: 6 January 2016, 6:38:01.020914 pm >>> >> UUID: b190605b-c0ac-4b6d-8239-650c69aed317 >>> >> Ancestors: Morphic-eem.1063 >>> >> >>> >> Add preference backgroundColor to SystemWindows. Add preference to a a >>> >> few >>> >> places that where hardcoded to color white. >>> >> >>> >> =============== Diff against Morphic-eem.1063 =============== >>> >> >>> >> Item was changed: >>> >> ----- Method: PluggableListMorph>>indicateUnfiltered (in category >>> >> 'filtering') ----- >>> >> indicateUnfiltered >>> >> + self color: SystemWindow backgroundColor! >>> >> - self color: Color white! >>> >> >>> >> Item was changed: >>> >> ----- Method: ScrollPane>>defaultColor (in category 'initialization') >>> >> ----- >>> >> defaultColor >>> >> >>> >> + ^ SystemWindow backgroundColor! >>> >> - ^ Color white ! >>> >> >>> >> Item was changed: >>> >> MorphicModel subclass: #SystemWindow >>> >> instanceVariableNames: 'labelString stripes label closeBox >>> >> collapseBox activeOnlyOnTop paneMorphs paneRects collapsedFrame >>> >> fullFrame >>> >> isCollapsed menuBox mustNotClose labelWidgetAllowance updatablePanes >>> >> allowReframeHandles labelArea expandBox' >>> >> + classVariableNames: 'BackgroundColor ClickOnLabelToEdit >>> >> CloseBoxFrame CloseBoxImageFlat CloseBoxImageGradient >>> >> CollapseBoxImageFlat >>> >> CollapseBoxImageGradient DoubleClickOnLabelToExpand ExpandBoxFrame >>> >> ExpandBoxImageFlat ExpandBoxImageGradient FocusFollowsMouse >>> >> GradientWindow >>> >> HideExpandButton MenuBoxFrame MenuBoxImageFlat MenuBoxImageGradient >>> >> ResizeAlongEdges ReuseWindows TopWindow WindowsRaiseOnClick' >>> >> - classVariableNames: 'ClickOnLabelToEdit CloseBoxFrame >>> >> CloseBoxImageFlat CloseBoxImageGradient CollapseBoxImageFlat >>> >> CollapseBoxImageGradient DoubleClickOnLabelToExpand ExpandBoxFrame >>> >> ExpandBoxImageFlat ExpandBoxImageGradient FocusFollowsMouse >>> >> GradientWindow >>> >> HideExpandButton MenuBoxFrame MenuBoxImageFlat MenuBoxImageGradient >>> >> ResizeAlongEdges ReuseWindows TopWindow WindowsRaiseOnClick' >>> >> poolDictionaries: '' >>> >> category: 'Morphic-Windows'! >>> >> >>> >> !SystemWindow commentStamp: '<historical>' prior: 0! >>> >> SystemWindow is the Morphic equivalent of StandardSystemView -- a >>> >> labelled container for rectangular views, with iconic facilities for >>> >> close, >>> >> collapse/expand, and resizing. >>> >> >>> >> The attribute onlyActiveOnTop, if set to true (and any call to >>> >> activate >>> >> will set this), determines that only the top member of a collection of >>> >> such >>> >> windows on the screen shall be active. To be not active means that a >>> >> mouse >>> >> click in any region will only result in bringing the window to the top >>> >> and >>> >> then making it active.! >>> >> >>> >> Item was added: >>> >> + ----- Method: SystemWindow class>>backgroundColor (in category >>> >> 'preferences') ----- >>> >> + backgroundColor >>> >> + >>> >> + <preference: 'backgroundColor' >>> >> + category: 'windows' >>> >> + description: 'set the backgound color of window' >>> >> + type: #Color> >>> >> + ^ BackgroundColor ifNil: [Color white] >>> >> + ! >>> >> >>> >> Item was added: >>> >> + ----- Method: SystemWindow class>>backgroundColor: (in category >>> >> 'preferences') ----- >>> >> + backgroundColor: aColor >>> >> + >>> >> + BackgroundColor := aColor >>> >> + ! >>> >> >>> >> >>> > >>> > >>> > >>> > >>> >> >> >> >> |
In reply to this post by commits-2
ScrollPanes should not have any knowlegde about SystemWindow. So storing the preference in SystemWindow >> #backgroundColor is not an option.
It would make sense, however, to attach individual preference to those major widgets. So that ScrollPane has its own #backgroundColor. Best, Marcel |
Free forum by Nabble | Edit this page |