Browse Source

Updated the ChangeBroadcaster class - sendChangeMessage() now has no parameters, and ChangeListener::changeListenerCallback() no longer provides a void*, it provides the ChangeBroadcaster* that triggered the callback. Also deleted the ChangeListenerList class, as it didn't offer anything that ChangeBroadcaster doesn't do. Changed the new jucer to expand preprocessor tokens in the header search path string.

tags/2021-05-28
Julian Storer 15 years ago
parent
commit
4cfdcb69fd
100 changed files with 1139 additions and 1439 deletions
  1. +0
    -6
      Builds/Linux/Makefile
  2. +0
    -6
      Builds/MacOSX/Juce.xcodeproj/project.pbxproj
  3. +0
    -2
      Builds/VisualStudio2005/Juce.vcproj
  4. +0
    -2
      Builds/VisualStudio2008/Juce.vcproj
  5. +0
    -2
      Builds/VisualStudio2008_DLL/Juce.vcproj
  6. +0
    -2
      Builds/VisualStudio2010/Juce.vcxproj
  7. +0
    -6
      Builds/VisualStudio2010/Juce.vcxproj.filters
  8. +0
    -6
      Builds/iPhone/Juce.xcodeproj/project.pbxproj
  9. +0
    -4
      Juce.jucer
  10. +0
    -1
      amalgamation/juce_amalgamated_template.cpp
  11. +1
    -1
      extras/Jucer (experimental)/Source/Project/jucer_ProjectContentComponent.cpp
  12. +1
    -1
      extras/Jucer (experimental)/Source/Project/jucer_ProjectContentComponent.h
  13. +2
    -2
      extras/Jucer (experimental)/Source/Project/jucer_ProjectExport_MSVC.h
  14. +1
    -1
      extras/Jucer (experimental)/Source/Project/jucer_ProjectExport_Make.h
  15. +1
    -1
      extras/Jucer (experimental)/Source/Project/jucer_ProjectExport_XCode.h
  16. +2
    -2
      extras/Jucer (experimental)/Source/Project/jucer_ProjectInformationComponent.cpp
  17. +1
    -1
      extras/Jucer (experimental)/Source/Project/jucer_ProjectInformationComponent.h
  18. +1
    -1
      extras/audio plugin host/Source/FilterGraph.h
  19. +1
    -1
      extras/audio plugin host/Source/GraphEditorPanel.cpp
  20. +1
    -1
      extras/audio plugin host/Source/GraphEditorPanel.h
  21. +1
    -1
      extras/audio plugin host/Source/MainHostWindow.cpp
  22. +1
    -1
      extras/audio plugin host/Source/MainHostWindow.h
  23. BIN
      extras/juce demo/Builds/MacOSX/Icon.icns
  24. BIN
      extras/juce demo/Builds/VisualStudio2005/icon.ico
  25. BIN
      extras/juce demo/Builds/VisualStudio2008/icon.ico
  26. BIN
      extras/juce demo/Builds/VisualStudio2010/icon.ico
  27. BIN
      extras/juce demo/Builds/iPhone/Icon.icns
  28. +1
    -1
      extras/juce demo/Source/demos/AudioDemoPlaybackPage.cpp
  29. +3
    -6
      extras/juce demo/Source/demos/WidgetsDemo.cpp
  30. +1
    -1
      extras/the jucer/src/model/components/jucer_GroupComponentHandler.h
  31. +1
    -1
      extras/the jucer/src/model/components/jucer_ImageButtonHandler.h
  32. +1
    -1
      extras/the jucer/src/model/components/jucer_JucerComponentHandler.h
  33. +4
    -4
      extras/the jucer/src/model/components/jucer_LabelHandler.h
  34. +3
    -3
      extras/the jucer/src/model/components/jucer_TabbedComponentHandler.h
  35. +2
    -2
      extras/the jucer/src/model/components/jucer_ViewportHandler.h
  36. +1
    -1
      extras/the jucer/src/model/documents/jucer_ButtonDocument.cpp
  37. +7
    -7
      extras/the jucer/src/model/paintelements/jucer_ColouredElement.cpp
  38. +1
    -1
      extras/the jucer/src/model/paintelements/jucer_ElementSiblingComponent.h
  39. +1
    -1
      extras/the jucer/src/model/paintelements/jucer_ImageResourceProperty.h
  40. +2
    -2
      extras/the jucer/src/model/paintelements/jucer_PaintElement.cpp
  41. +2
    -2
      extras/the jucer/src/model/paintelements/jucer_PaintElement.h
  42. +2
    -2
      extras/the jucer/src/model/paintelements/jucer_PaintElementImage.h
  43. +4
    -4
      extras/the jucer/src/model/paintelements/jucer_PaintElementPath.cpp
  44. +1
    -1
      extras/the jucer/src/model/paintelements/jucer_PaintElementPath.h
  45. +1
    -1
      extras/the jucer/src/model/paintelements/jucer_PaintElementRoundedRectangle.h
  46. +5
    -5
      extras/the jucer/src/model/paintelements/jucer_PaintElementText.h
  47. +1
    -1
      extras/the jucer/src/properties/jucer_ComponentBooleanProperty.h
  48. +1
    -1
      extras/the jucer/src/properties/jucer_ComponentChoiceProperty.h
  49. +1
    -1
      extras/the jucer/src/properties/jucer_ComponentColourProperty.h
  50. +1
    -1
      extras/the jucer/src/properties/jucer_ComponentTextProperty.h
  51. +1
    -1
      extras/the jucer/src/properties/jucer_PositionPropertyBase.h
  52. +1
    -1
      extras/the jucer/src/ui/jucer_ComponentLayoutEditor.cpp
  53. +1
    -1
      extras/the jucer/src/ui/jucer_ComponentLayoutEditor.h
  54. +1
    -1
      extras/the jucer/src/ui/jucer_ComponentLayoutPanel.cpp
  55. +1
    -1
      extras/the jucer/src/ui/jucer_ComponentOverlayComponent.cpp
  56. +1
    -1
      extras/the jucer/src/ui/jucer_ComponentOverlayComponent.h
  57. +3
    -3
      extras/the jucer/src/ui/jucer_JucerDocumentHolder.cpp
  58. +1
    -1
      extras/the jucer/src/ui/jucer_JucerDocumentHolder.h
  59. +1
    -1
      extras/the jucer/src/ui/jucer_PaintRoutineEditor.cpp
  60. +1
    -1
      extras/the jucer/src/ui/jucer_PaintRoutineEditor.h
  61. +2
    -2
      extras/the jucer/src/ui/jucer_PaintRoutinePanel.cpp
  62. +1
    -1
      extras/the jucer/src/ui/jucer_ResourceEditorPanel.cpp
  63. +1
    -1
      extras/the jucer/src/ui/jucer_ResourceEditorPanel.h
  64. +1
    -1
      extras/the jucer/src/utility/jucer_ColourEditorComponent.h
  65. +449
    -487
      juce_amalgamated.cpp
  66. +229
    -285
      juce_amalgamated.h
  67. +3
    -1
      src/application/juce_ApplicationCommandManager.h
  68. +2
    -2
      src/audio/audio_file_formats/juce_AudioThumbnail.cpp
  69. +3
    -3
      src/audio/audio_sources/juce_AudioTransportSource.cpp
  70. +6
    -6
      src/audio/devices/juce_AudioDeviceManager.cpp
  71. +4
    -4
      src/audio/plugins/juce_KnownPluginList.cpp
  72. +1
    -1
      src/audio/plugins/juce_PluginListComponent.cpp
  73. +1
    -1
      src/audio/plugins/juce_PluginListComponent.h
  74. +3
    -1
      src/audio/synthesisers/juce_Synthesiser.h
  75. +7
    -1
      src/core/juce_StandardHeader.h
  76. +54
    -10
      src/events/juce_ChangeBroadcaster.cpp
  77. +30
    -24
      src/events/juce_ChangeBroadcaster.h
  78. +16
    -10
      src/events/juce_ChangeListener.h
  79. +0
    -107
      src/events/juce_ChangeListenerList.cpp
  80. +0
    -119
      src/events/juce_ChangeListenerList.h
  81. +6
    -0
      src/events/juce_ListenerList.h
  82. +1
    -0
      src/gui/components/controls/juce_ListBox.cpp
  83. +2
    -1
      src/gui/components/filebrowser/juce_DirectoryContentsList.cpp
  84. +1
    -1
      src/gui/components/filebrowser/juce_FileListComponent.cpp
  85. +1
    -1
      src/gui/components/filebrowser/juce_FileListComponent.h
  86. +1
    -1
      src/gui/components/filebrowser/juce_FileTreeComponent.cpp
  87. +195
    -211
      src/gui/components/juce_Component.cpp
  88. +16
    -18
      src/gui/components/juce_Component.h
  89. +1
    -1
      src/gui/components/keyboard/juce_KeyMappingEditorComponent.cpp
  90. +7
    -7
      src/gui/components/keyboard/juce_KeyPressMappingSet.cpp
  91. +4
    -4
      src/gui/components/layout/juce_ComponentAnimator.cpp
  92. +1
    -1
      src/gui/components/layout/juce_TabbedButtonBar.cpp
  93. +2
    -2
      src/gui/components/lookandfeel/juce_LookAndFeel.cpp
  94. +0
    -2
      src/gui/components/properties/juce_SliderPropertyComponent.h
  95. +2
    -2
      src/gui/components/special/juce_AudioDeviceSelectorComponent.cpp
  96. +1
    -1
      src/gui/components/special/juce_AudioDeviceSelectorComponent.h
  97. +1
    -1
      src/gui/components/special/juce_ColourSelector.cpp
  98. +3
    -2
      src/gui/components/special/juce_ColourSelector.h
  99. +3
    -3
      src/gui/components/special/juce_MidiKeyboardComponent.cpp
  100. +5
    -0
      src/gui/graphics/contexts/juce_Graphics.cpp

+ 0
- 6
Builds/Linux/Makefile View File

@@ -122,7 +122,6 @@ OBJECTS := \
$(OBJDIR)/juce_ActionListenerList_9e099ae4.o \
$(OBJDIR)/juce_AsyncUpdater_a7e1cb89.o \
$(OBJDIR)/juce_ChangeBroadcaster_3eb8fecc.o \
$(OBJDIR)/juce_ChangeListenerList_c2dafc5e.o \
$(OBJDIR)/juce_InterprocessConnection_13086b6d.o \
$(OBJDIR)/juce_InterprocessConnectionServer_a4d7b350.o \
$(OBJDIR)/juce_Message_ac79f635.o \
@@ -779,11 +778,6 @@ $(OBJDIR)/juce_ChangeBroadcaster_3eb8fecc.o: ../../src/events/juce_ChangeBroadca
@echo "Compiling juce_ChangeBroadcaster.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
$(OBJDIR)/juce_ChangeListenerList_c2dafc5e.o: ../../src/events/juce_ChangeListenerList.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling juce_ChangeListenerList.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
$(OBJDIR)/juce_InterprocessConnection_13086b6d.o: ../../src/events/juce_InterprocessConnection.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling juce_InterprocessConnection.cpp"


+ 0
- 6
Builds/MacOSX/Juce.xcodeproj/project.pbxproj View File

@@ -91,7 +91,6 @@
5BE4BAA99FDC6F1B3177096F = { isa = PBXBuildFile; fileRef = 5A46476E16BA4F9DA95E9E6A; };
55737E2F1817DE642AA7DA05 = { isa = PBXBuildFile; fileRef = 1617348BBF5D103619D76911; };
6D2C50B0A69855A7F8C062E7 = { isa = PBXBuildFile; fileRef = B80F8CD026033ACCCE11A1A4; };
769227C780221EE89081BDFF = { isa = PBXBuildFile; fileRef = F978BD0E708FA56FD1EAE238; };
70EE7A1273945B62B013DB43 = { isa = PBXBuildFile; fileRef = AE68ECB6E063BD8D4984C0B3; };
9DF800566462E24A14246EAE = { isa = PBXBuildFile; fileRef = 843A7B398E9411F0AF28D65D; };
89F0DA39878F8A41E60B8C67 = { isa = PBXBuildFile; fileRef = 9CF077D3ED7B7B56F351AAF6; };
@@ -563,8 +562,6 @@
B80F8CD026033ACCCE11A1A4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ChangeBroadcaster.cpp; path = ../../src/events/juce_ChangeBroadcaster.cpp; sourceTree = SOURCE_ROOT; };
5F454A6B5A82ECE2396C5716 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ChangeBroadcaster.h; path = ../../src/events/juce_ChangeBroadcaster.h; sourceTree = SOURCE_ROOT; };
B2D08C8EEE3E22026533D2EA = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ChangeListener.h; path = ../../src/events/juce_ChangeListener.h; sourceTree = SOURCE_ROOT; };
F978BD0E708FA56FD1EAE238 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ChangeListenerList.cpp; path = ../../src/events/juce_ChangeListenerList.cpp; sourceTree = SOURCE_ROOT; };
4D15D2E39EAC0DDFCFC2FCE6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ChangeListenerList.h; path = ../../src/events/juce_ChangeListenerList.h; sourceTree = SOURCE_ROOT; };
AE68ECB6E063BD8D4984C0B3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_InterprocessConnection.cpp; path = ../../src/events/juce_InterprocessConnection.cpp; sourceTree = SOURCE_ROOT; };
4B935D7360C9F166C80A158D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_InterprocessConnection.h; path = ../../src/events/juce_InterprocessConnection.h; sourceTree = SOURCE_ROOT; };
843A7B398E9411F0AF28D65D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_InterprocessConnectionServer.cpp; path = ../../src/events/juce_InterprocessConnectionServer.cpp; sourceTree = SOURCE_ROOT; };
@@ -1293,8 +1290,6 @@
B80F8CD026033ACCCE11A1A4,
5F454A6B5A82ECE2396C5716,
B2D08C8EEE3E22026533D2EA,
F978BD0E708FA56FD1EAE238,
4D15D2E39EAC0DDFCFC2FCE6,
AE68ECB6E063BD8D4984C0B3,
4B935D7360C9F166C80A158D,
843A7B398E9411F0AF28D65D,
@@ -2016,7 +2011,6 @@
5BE4BAA99FDC6F1B3177096F,
55737E2F1817DE642AA7DA05,
6D2C50B0A69855A7F8C062E7,
769227C780221EE89081BDFF,
70EE7A1273945B62B013DB43,
9DF800566462E24A14246EAE,
89F0DA39878F8A41E60B8C67,


+ 0
- 2
Builds/VisualStudio2005/Juce.vcproj View File

@@ -430,8 +430,6 @@
<File RelativePath="..\..\src\events\juce_ChangeBroadcaster.cpp"/>
<File RelativePath="..\..\src\events\juce_ChangeBroadcaster.h"/>
<File RelativePath="..\..\src\events\juce_ChangeListener.h"/>
<File RelativePath="..\..\src\events\juce_ChangeListenerList.cpp"/>
<File RelativePath="..\..\src\events\juce_ChangeListenerList.h"/>
<File RelativePath="..\..\src\events\juce_InterprocessConnection.cpp"/>
<File RelativePath="..\..\src\events\juce_InterprocessConnection.h"/>
<File RelativePath="..\..\src\events\juce_InterprocessConnectionServer.cpp"/>


+ 0
- 2
Builds/VisualStudio2008/Juce.vcproj View File

@@ -430,8 +430,6 @@
<File RelativePath="..\..\src\events\juce_ChangeBroadcaster.cpp"/>
<File RelativePath="..\..\src\events\juce_ChangeBroadcaster.h"/>
<File RelativePath="..\..\src\events\juce_ChangeListener.h"/>
<File RelativePath="..\..\src\events\juce_ChangeListenerList.cpp"/>
<File RelativePath="..\..\src\events\juce_ChangeListenerList.h"/>
<File RelativePath="..\..\src\events\juce_InterprocessConnection.cpp"/>
<File RelativePath="..\..\src\events\juce_InterprocessConnection.h"/>
<File RelativePath="..\..\src\events\juce_InterprocessConnectionServer.cpp"/>


+ 0
- 2
Builds/VisualStudio2008_DLL/Juce.vcproj View File

@@ -432,8 +432,6 @@
<File RelativePath="..\..\src\events\juce_ChangeBroadcaster.cpp"/>
<File RelativePath="..\..\src\events\juce_ChangeBroadcaster.h"/>
<File RelativePath="..\..\src\events\juce_ChangeListener.h"/>
<File RelativePath="..\..\src\events\juce_ChangeListenerList.cpp"/>
<File RelativePath="..\..\src\events\juce_ChangeListenerList.h"/>
<File RelativePath="..\..\src\events\juce_InterprocessConnection.cpp"/>
<File RelativePath="..\..\src\events\juce_InterprocessConnection.h"/>
<File RelativePath="..\..\src\events\juce_InterprocessConnectionServer.cpp"/>


+ 0
- 2
Builds/VisualStudio2010/Juce.vcxproj View File

@@ -205,7 +205,6 @@
<ClCompile Include="..\..\src\events\juce_ActionListenerList.cpp"/>
<ClCompile Include="..\..\src\events\juce_AsyncUpdater.cpp"/>
<ClCompile Include="..\..\src\events\juce_ChangeBroadcaster.cpp"/>
<ClCompile Include="..\..\src\events\juce_ChangeListenerList.cpp"/>
<ClCompile Include="..\..\src\events\juce_InterprocessConnection.cpp"/>
<ClCompile Include="..\..\src\events\juce_InterprocessConnectionServer.cpp"/>
<ClCompile Include="..\..\src\events\juce_Message.cpp"/>
@@ -556,7 +555,6 @@
<ClInclude Include="..\..\src\events\juce_CallbackMessage.h"/>
<ClInclude Include="..\..\src\events\juce_ChangeBroadcaster.h"/>
<ClInclude Include="..\..\src\events\juce_ChangeListener.h"/>
<ClInclude Include="..\..\src\events\juce_ChangeListenerList.h"/>
<ClInclude Include="..\..\src\events\juce_InterprocessConnection.h"/>
<ClInclude Include="..\..\src\events\juce_InterprocessConnectionServer.h"/>
<ClInclude Include="..\..\src\events\juce_ListenerList.h"/>


+ 0
- 6
Builds/VisualStudio2010/Juce.vcxproj.filters View File

@@ -463,9 +463,6 @@
<ClCompile Include="..\..\src\events\juce_ChangeBroadcaster.cpp">
<Filter>Juce\Source\events</Filter>
</ClCompile>
<ClCompile Include="..\..\src\events\juce_ChangeListenerList.cpp">
<Filter>Juce\Source\events</Filter>
</ClCompile>
<ClCompile Include="..\..\src\events\juce_InterprocessConnection.cpp">
<Filter>Juce\Source\events</Filter>
</ClCompile>
@@ -1590,9 +1587,6 @@
<ClInclude Include="..\..\src\events\juce_ChangeListener.h">
<Filter>Juce\Source\events</Filter>
</ClInclude>
<ClInclude Include="..\..\src\events\juce_ChangeListenerList.h">
<Filter>Juce\Source\events</Filter>
</ClInclude>
<ClInclude Include="..\..\src\events\juce_InterprocessConnection.h">
<Filter>Juce\Source\events</Filter>
</ClInclude>


+ 0
- 6
Builds/iPhone/Juce.xcodeproj/project.pbxproj View File

@@ -91,7 +91,6 @@
5BE4BAA99FDC6F1B3177096F = { isa = PBXBuildFile; fileRef = 5A46476E16BA4F9DA95E9E6A; };
55737E2F1817DE642AA7DA05 = { isa = PBXBuildFile; fileRef = 1617348BBF5D103619D76911; };
6D2C50B0A69855A7F8C062E7 = { isa = PBXBuildFile; fileRef = B80F8CD026033ACCCE11A1A4; };
769227C780221EE89081BDFF = { isa = PBXBuildFile; fileRef = F978BD0E708FA56FD1EAE238; };
70EE7A1273945B62B013DB43 = { isa = PBXBuildFile; fileRef = AE68ECB6E063BD8D4984C0B3; };
9DF800566462E24A14246EAE = { isa = PBXBuildFile; fileRef = 843A7B398E9411F0AF28D65D; };
89F0DA39878F8A41E60B8C67 = { isa = PBXBuildFile; fileRef = 9CF077D3ED7B7B56F351AAF6; };
@@ -563,8 +562,6 @@
B80F8CD026033ACCCE11A1A4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ChangeBroadcaster.cpp; path = ../../src/events/juce_ChangeBroadcaster.cpp; sourceTree = SOURCE_ROOT; };
5F454A6B5A82ECE2396C5716 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ChangeBroadcaster.h; path = ../../src/events/juce_ChangeBroadcaster.h; sourceTree = SOURCE_ROOT; };
B2D08C8EEE3E22026533D2EA = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ChangeListener.h; path = ../../src/events/juce_ChangeListener.h; sourceTree = SOURCE_ROOT; };
F978BD0E708FA56FD1EAE238 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ChangeListenerList.cpp; path = ../../src/events/juce_ChangeListenerList.cpp; sourceTree = SOURCE_ROOT; };
4D15D2E39EAC0DDFCFC2FCE6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ChangeListenerList.h; path = ../../src/events/juce_ChangeListenerList.h; sourceTree = SOURCE_ROOT; };
AE68ECB6E063BD8D4984C0B3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_InterprocessConnection.cpp; path = ../../src/events/juce_InterprocessConnection.cpp; sourceTree = SOURCE_ROOT; };
4B935D7360C9F166C80A158D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_InterprocessConnection.h; path = ../../src/events/juce_InterprocessConnection.h; sourceTree = SOURCE_ROOT; };
843A7B398E9411F0AF28D65D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_InterprocessConnectionServer.cpp; path = ../../src/events/juce_InterprocessConnectionServer.cpp; sourceTree = SOURCE_ROOT; };
@@ -1293,8 +1290,6 @@
B80F8CD026033ACCCE11A1A4,
5F454A6B5A82ECE2396C5716,
B2D08C8EEE3E22026533D2EA,
F978BD0E708FA56FD1EAE238,
4D15D2E39EAC0DDFCFC2FCE6,
AE68ECB6E063BD8D4984C0B3,
4B935D7360C9F166C80A158D,
843A7B398E9411F0AF28D65D,
@@ -2016,7 +2011,6 @@
5BE4BAA99FDC6F1B3177096F,
55737E2F1817DE642AA7DA05,
6D2C50B0A69855A7F8C062E7,
769227C780221EE89081BDFF,
70EE7A1273945B62B013DB43,
9DF800566462E24A14246EAE,
89F0DA39878F8A41E60B8C67,


+ 0
- 4
Juce.jucer View File

@@ -507,10 +507,6 @@
file="src/events/juce_ChangeBroadcaster.h"/>
<FILE id="NAVM1VUrE" name="juce_ChangeListener.h" compile="0" resource="0"
file="src/events/juce_ChangeListener.h"/>
<FILE id="i5XTQIbi" name="juce_ChangeListenerList.cpp" compile="1"
resource="0" file="src/events/juce_ChangeListenerList.cpp"/>
<FILE id="8NN9Zgr8a" name="juce_ChangeListenerList.h" compile="0" resource="0"
file="src/events/juce_ChangeListenerList.h"/>
<FILE id="RxIz7qEOV" name="juce_InterprocessConnection.cpp" compile="1"
resource="0" file="src/events/juce_InterprocessConnection.cpp"/>
<FILE id="qOQS6siYg" name="juce_InterprocessConnection.h" compile="0"


+ 0
- 1
amalgamation/juce_amalgamated_template.cpp View File

@@ -217,7 +217,6 @@
#include "../src/events/juce_ActionListenerList.cpp"
#include "../src/events/juce_AsyncUpdater.cpp"
#include "../src/events/juce_ChangeBroadcaster.cpp"
#include "../src/events/juce_ChangeListenerList.cpp"
#include "../src/events/juce_InterprocessConnection.cpp"
#include "../src/events/juce_InterprocessConnectionServer.cpp"
#include "../src/events/juce_Message.cpp"


+ 1
- 1
extras/Jucer (experimental)/Source/Project/jucer_ProjectContentComponent.cpp View File

@@ -109,7 +109,7 @@ void ProjectContentComponent::setProject (Project* newProject)
}
}
void ProjectContentComponent::changeListenerCallback (void*)
void ProjectContentComponent::changeListenerCallback (ChangeBroadcaster*)
{
updateMissingFileStatuses();
}


+ 1
- 1
extras/Jucer (experimental)/Source/Project/jucer_ProjectContentComponent.h View File

@@ -55,7 +55,7 @@ public:
void updateMissingFileStatuses();
void changeListenerCallback (void*);
void changeListenerCallback (ChangeBroadcaster*);
void hasBeenMoved();
//==============================================================================


+ 2
- 2
extras/Jucer (experimental)/Source/Project/jucer_ProjectExport_MSVC.h View File

@@ -699,7 +699,7 @@ protected:
compiler->setAttribute ("StringPooling", "true");
}
compiler->setAttribute ("AdditionalIncludeDirectories", getHeaderSearchPaths (config).joinIntoString (";"));
compiler->setAttribute ("AdditionalIncludeDirectories", replacePreprocessorTokens (config, getHeaderSearchPaths (config).joinIntoString (";")));
compiler->setAttribute ("PreprocessorDefinitions", getPreprocessorDefs (config, ";"));
compiler->setAttribute ("RuntimeLibrary", isRTAS() ? (isDebug ? 3 : 2) // MT DLL
: (isDebug ? 1 : 0)); // MT static
@@ -988,7 +988,7 @@ private:
<< "# ADD BASE CPP /nologo /W3 /GX /" << optimisationFlag << " /D " << defines
<< " /YX /FD /c " << extraDebugFlags << " /Zm1024" << newLine
<< "# ADD CPP /nologo " << (isDebug ? "/MTd" : "/MT") << " /W3 /GR /GX /" << optimisationFlag
<< " /I " << getHeaderSearchPaths (config).joinIntoString (" /I ")
<< " /I " << replacePreprocessorTokens (config, getHeaderSearchPaths (config).joinIntoString (" /I "))
<< " /D " << defines << " /D \"_UNICODE\" /D \"UNICODE\" /FD /c /Zm1024 " << extraDebugFlags
<< " " << replacePreprocessorTokens (config, getExtraCompilerFlags().toString()).trim() << newLine;


+ 1
- 1
extras/Jucer (experimental)/Source/Project/jucer_ProjectExport_Make.h View File

@@ -167,7 +167,7 @@ private:
headerPaths.insert (0, juceWrapperFolder.toUnixStyle());
for (int i = 0; i < headerPaths.size(); ++i)
out << " -I " << FileHelpers::unixStylePath (headerPaths[i]).quoted();
out << " -I " << FileHelpers::unixStylePath (replacePreprocessorTokens (config, headerPaths[i])).quoted();
}
void writeCppFlags (OutputStream& out, const Project::BuildConfiguration& config)


+ 1
- 1
extras/Jucer (experimental)/Source/Project/jucer_ProjectExport_XCode.h View File

@@ -518,7 +518,7 @@ private:
StringArray s;
s.add ("ARCHS = \"$(ARCHS_STANDARD_32_BIT)\"");
s.add ("PREBINDING = NO");
s.add ("HEADER_SEARCH_PATHS = \"" + getHeaderSearchPaths (config).joinIntoString (" ") + " $(inherited)\"");
s.add ("HEADER_SEARCH_PATHS = \"" + replacePreprocessorTokens (config, getHeaderSearchPaths (config).joinIntoString (" ")) + " $(inherited)\"");
s.add ("GCC_OPTIMIZATION_LEVEL = " + config.getGCCOptimisationFlag());
s.add ("INFOPLIST_FILE = " + infoPlistFile.getFileName());


+ 2
- 2
extras/Jucer (experimental)/Source/Project/jucer_ProjectInformationComponent.cpp View File

@@ -127,7 +127,7 @@ ProjectInformationComponent::ProjectInformationComponent (Project& project_)
#if JUCE_MAC || JUCE_WINDOWS
openProjectButton.setCommandToTrigger (commandManager, CommandIDs::openInIDE, true);
openProjectButton.setButtonText (commandManager->getNameOfCommand (CommandIDs::openInIDE));
saveAndOpenButton.setCommandToTrigger (commandManager, CommandIDs::saveAndOpenInIDE, true);
saveAndOpenButton.setButtonText (commandManager->getNameOfCommand (CommandIDs::saveAndOpenInIDE));
#else
@@ -341,7 +341,7 @@ void ProjectInformationComponent::showExporterMenu()
project.addNewExporter (r - 10000);
}
void ProjectInformationComponent::changeListenerCallback (void*)
void ProjectInformationComponent::changeListenerCallback (ChangeBroadcaster*)
{
updateConfigTabs();
}


+ 1
- 1
extras/Jucer (experimental)/Source/Project/jucer_ProjectInformationComponent.h View File

@@ -42,7 +42,7 @@ public:
//==============================================================================
//[UserMethods] -- You can add your own custom methods in this section.
void changeListenerCallback (void*);
void changeListenerCallback (ChangeBroadcaster*);
void rebuildConfigTabs();
//[/UserMethods]


+ 1
- 1
extras/audio plugin host/Source/FilterGraph.h View File

@@ -235,7 +235,7 @@ public:
void handleIncomingMidiMessage (MidiInput* source, const MidiMessage& message);
void changeListenerCallback (void*);
void changeListenerCallback (ChangeBroadcaster*);
//==============================================================================
static int compareElements (FilterInGraph* const first, FilterInGraph* const second) throw();


+ 1
- 1
extras/audio plugin host/Source/GraphEditorPanel.cpp View File

@@ -811,7 +811,7 @@ void GraphEditorPanel::resized()
updateComponents();
}
void GraphEditorPanel::changeListenerCallback (void*)
void GraphEditorPanel::changeListenerCallback (ChangeBroadcaster*)
{
updateComponents();
}


+ 1
- 1
extras/audio plugin host/Source/GraphEditorPanel.h View File

@@ -54,7 +54,7 @@ public:
PinComponent* findPinAt (const int x, const int y) const;
void resized();
void changeListenerCallback (void*);
void changeListenerCallback (ChangeBroadcaster*);
void updateComponents();
//==============================================================================


+ 1
- 1
extras/audio plugin host/Source/MainHostWindow.cpp View File

@@ -158,7 +158,7 @@ bool MainHostWindow::tryToQuitApplication()
return false;
}
void MainHostWindow::changeListenerCallback (void*)
void MainHostWindow::changeListenerCallback (ChangeBroadcaster*)
{
menuItemsChanged();


+ 1
- 1
extras/audio plugin host/Source/MainHostWindow.h View File

@@ -60,7 +60,7 @@ public:
//==============================================================================
void closeButtonPressed();
void changeListenerCallback (void*);
void changeListenerCallback (ChangeBroadcaster*);
bool isInterestedInFileDrag (const StringArray& files);
void fileDragEnter (const StringArray& files, int, int);


BIN
extras/juce demo/Builds/MacOSX/Icon.icns View File


BIN
extras/juce demo/Builds/VisualStudio2005/icon.ico View File

Before After

BIN
extras/juce demo/Builds/VisualStudio2008/icon.ico View File

Before After

BIN
extras/juce demo/Builds/VisualStudio2010/icon.ico View File

Before After

BIN
extras/juce demo/Builds/iPhone/Icon.icns View File


+ 1
- 1
extras/juce demo/Source/demos/AudioDemoPlaybackPage.cpp View File

@@ -99,7 +99,7 @@ public:
}
}
void changeListenerCallback (void*)
void changeListenerCallback (ChangeBroadcaster*)
{
// this method is called by the thumbnail when it has changed, so we should repaint it..
repaint();


+ 3
- 6
extras/juce demo/Source/demos/WidgetsDemo.cpp View File

@@ -271,14 +271,11 @@ public:
callOut.runModalLoop();
}
void changeListenerCallback (void* source)
void changeListenerCallback (ChangeBroadcaster* source)
{
ColourSelector* cs = static_cast <ColourSelector*> (source);
ColourSelector* cs = dynamic_cast <ColourSelector*> (source);
if (cs->getName() == "text")
setColour (TextButton::textColourOffId, cs->getCurrentColour());
else
setColour (TextButton::buttonColourId, cs->getCurrentColour());
setColour (TextButton::buttonColourId, cs->getCurrentColour());
}
};


+ 1
- 1
extras/the jucer/src/model/components/jucer_GroupComponentHandler.h View File

@@ -201,7 +201,7 @@ private:
return group->getTextLabelPosition();
}
void changeListenerCallback (void*) { refresh(); }
void changeListenerCallback (ChangeBroadcaster*) { refresh(); }
private:
GroupComponent* const group;


+ 1
- 1
extras/the jucer/src/model/components/jucer_ImageButtonHandler.h View File

@@ -508,7 +508,7 @@ public:
void resetToDefault() {}
void changeListenerCallback (void*)
void changeListenerCallback (ChangeBroadcaster*)
{
refresh();
}


+ 1
- 1
extras/the jucer/src/model/components/jucer_JucerComponentHandler.h View File

@@ -192,7 +192,7 @@ private:
return component->findFile();
}
void changeListenerCallback (void*)
void changeListenerCallback (ChangeBroadcaster*)
{
refresh();
}


+ 4
- 4
extras/the jucer/src/model/components/jucer_LabelHandler.h View File

@@ -400,7 +400,7 @@ private:
return label->getJustificationType();
}
void changeListenerCallback (void*) { refresh(); }
void changeListenerCallback (ChangeBroadcaster*) { refresh(); }
private:
Label* const label;
@@ -466,7 +466,7 @@ private:
return label->getProperties().getWithDefault ("typefaceName", FontPropertyComponent::defaultFont);
}
void changeListenerCallback (void*) { refresh(); }
void changeListenerCallback (ChangeBroadcaster*) { refresh(); }
private:
Label* const label;
@@ -535,7 +535,7 @@ private:
return label->getFont().getHeight();
}
void changeListenerCallback (void*) { refresh(); }
void changeListenerCallback (ChangeBroadcaster*) { refresh(); }
private:
Label* const label;
@@ -621,7 +621,7 @@ private:
return 0;
}
void changeListenerCallback (void*) { refresh(); }
void changeListenerCallback (ChangeBroadcaster*) { refresh(); }
private:
Label* const label;


+ 3
- 3
extras/the jucer/src/model/components/jucer_TabbedComponentHandler.h View File

@@ -601,7 +601,7 @@ private:
return component->getTabBarDepth();
}
void changeListenerCallback (void*)
void changeListenerCallback (ChangeBroadcaster*)
{
refresh();
}
@@ -868,7 +868,7 @@ private:
jassertfalse // shouldn't get called
}
void changeListenerCallback (void*) { refresh(); }
void changeListenerCallback (ChangeBroadcaster*) { refresh(); }
private:
TabbedComponent* component;
@@ -1002,7 +1002,7 @@ private:
return document.getFile().getSiblingFile (getTabJucerFile (component, tabIndex));
}
void changeListenerCallback (void*) { refresh(); }
void changeListenerCallback (ChangeBroadcaster*) { refresh(); }
private:
TabbedComponent* const component;


+ 2
- 2
extras/the jucer/src/model/components/jucer_ViewportHandler.h View File

@@ -400,7 +400,7 @@ private:
return component->getScrollBarThickness();
}
void changeListenerCallback (void*)
void changeListenerCallback (ChangeBroadcaster*)
{
refresh();
}
@@ -533,7 +533,7 @@ private:
return document.getFile().getSiblingFile (filename);
}
void changeListenerCallback (void*)
void changeListenerCallback (ChangeBroadcaster*)
{
refresh();
}


+ 1
- 1
extras/the jucer/src/model/documents/jucer_ButtonDocument.cpp View File

@@ -270,7 +270,7 @@ public:
}
private:
void changeListenerCallback (void*)
void changeListenerCallback (ChangeBroadcaster*)
{
refresh();
}


+ 7
- 7
extras/the jucer/src/model/paintelements/jucer_ColouredElement.cpp View File

@@ -108,7 +108,7 @@ public:
return 0;
}
void changeListenerCallback (void*)
void changeListenerCallback (ChangeBroadcaster*)
{
refresh();
}
@@ -211,7 +211,7 @@ public:
jassertfalse // option shouldn't be visible
}
void changeListenerCallback (void*)
void changeListenerCallback (ChangeBroadcaster*)
{
refresh();
}
@@ -297,7 +297,7 @@ public:
void setState (bool newState) { owner->enableStroke (newState, true); }
bool getState() const { return owner->isStrokeEnabled(); }
void changeListenerCallback (void*) { refresh(); }
void changeListenerCallback (ChangeBroadcaster*) { refresh(); }
private:
ColouredElement* const owner;
@@ -332,7 +332,7 @@ public:
double getValue() const { return owner->getStrokeType().stroke.getStrokeThickness(); }
void changeListenerCallback (void*) { refresh(); }
void changeListenerCallback (ChangeBroadcaster*) { refresh(); }
private:
ColouredElement* const owner;
@@ -391,7 +391,7 @@ public:
return 0;
}
void changeListenerCallback (void*) { refresh(); }
void changeListenerCallback (ChangeBroadcaster*) { refresh(); }
private:
ColouredElement* const owner;
@@ -450,7 +450,7 @@ public:
return 0;
}
void changeListenerCallback (void*) { refresh(); }
void changeListenerCallback (ChangeBroadcaster*) { refresh(); }
private:
ColouredElement* const owner;
@@ -594,7 +594,7 @@ public:
return element->getFillType().imageOpacity;
}
void changeListenerCallback (void*)
void changeListenerCallback (ChangeBroadcaster*)
{
refresh();
}


+ 1
- 1
extras/the jucer/src/model/paintelements/jucer_ElementSiblingComponent.h View File

@@ -52,7 +52,7 @@ public:
//==============================================================================
void changeListenerCallback (void*)
void changeListenerCallback (ChangeBroadcaster*)
{
updatePosition();
}


+ 1
- 1
extras/the jucer/src/model/paintelements/jucer_ImageResourceProperty.h View File

@@ -114,7 +114,7 @@ public:
return choices.indexOf (getResource());
}
void changeListenerCallback (void*)
void changeListenerCallback (ChangeBroadcaster*)
{
refresh();
}


+ 2
- 2
extras/the jucer/src/model/paintelements/jucer_PaintElement.cpp View File

@@ -422,7 +422,7 @@ void PaintElement::getCurrentAbsoluteBoundsDouble (double& x, double& y, double&
position.getRectangleDouble (x, y, w, h, area, getDocument()->getComponentLayout());
}
void PaintElement::changeListenerCallback (void*)
void PaintElement::changeListenerCallback (ChangeBroadcaster*)
{
const bool nowSelected = owner != 0 && owner->getSelectedElements().isSelected (this);
@@ -449,7 +449,7 @@ void PaintElement::createSiblingComponents()
void PaintElement::siblingComponentsChanged()
{
siblingComponents.clear();
selfChangeListenerList.sendChangeMessage (0);
selfChangeListenerList.sendChangeMessage();
}
void PaintElement::updateSiblingComps()


+ 2
- 2
extras/the jucer/src/model/paintelements/jucer_PaintElement.h View File

@@ -90,7 +90,7 @@ public:
void mouseDown (const MouseEvent& e);
void mouseDrag (const MouseEvent& e);
void mouseUp (const MouseEvent& e);
void changeListenerCallback (void*);
void changeListenerCallback (ChangeBroadcaster*);
void parentHierarchyChanged();
int borderThickness;
@@ -130,7 +130,7 @@ private:
String typeName;
bool selected, dragging, mouseDownSelectStatus;
double originalAspectRatio;
ChangeListenerList selfChangeListenerList;
ChangeBroadcaster selfChangeListenerList;
};


+ 2
- 2
extras/the jucer/src/model/paintelements/jucer_PaintElementImage.h View File

@@ -455,7 +455,7 @@ private:
return element->getOpacity();
}
void changeListenerCallback (void*)
void changeListenerCallback (ChangeBroadcaster*)
{
refresh();
}
@@ -494,7 +494,7 @@ private:
return (int) element->getStretchMode();
}
void changeListenerCallback (void*)
void changeListenerCallback (ChangeBroadcaster*)
{
refresh();
}


+ 4
- 4
extras/the jucer/src/model/paintelements/jucer_PaintElementPath.cpp View File

@@ -120,7 +120,7 @@ public:
void setIndex (int newIndex) { owner->setNonZeroWinding (newIndex == 0, true); }
int getIndex() const { return owner->isNonZeroWinding() ? 0 : 1; }
void changeListenerCallback (void*) { refresh(); }
void changeListenerCallback (ChangeBroadcaster*) { refresh(); }
private:
PaintElementPath* const owner;
@@ -1276,7 +1276,7 @@ public:
return 0;
}
void changeListenerCallback (void*)
void changeListenerCallback (ChangeBroadcaster*)
{
refresh();
}
@@ -1345,7 +1345,7 @@ public:
owner->getDocument()->removeChangeListener (this);
}
void changeListenerCallback (void*)
void changeListenerCallback (ChangeBroadcaster*)
{
refresh();
}
@@ -1671,7 +1671,7 @@ void PathPointComponent::mouseUp (const MouseEvent& e)
mouseDownSelectStatus);
}
void PathPointComponent::changeListenerCallback (void* source)
void PathPointComponent::changeListenerCallback (ChangeBroadcaster* source)
{
ElementSiblingComponent::changeListenerCallback (source);


+ 1
- 1
extras/the jucer/src/model/paintelements/jucer_PaintElementPath.h View File

@@ -183,7 +183,7 @@ public:
void mouseDrag (const MouseEvent& e);
void mouseUp (const MouseEvent& e);
void changeListenerCallback (void*);
void changeListenerCallback (ChangeBroadcaster*);
//==============================================================================
juce_UseDebuggingNewOperator


+ 1
- 1
extras/the jucer/src/model/paintelements/jucer_PaintElementRoundedRectangle.h View File

@@ -229,7 +229,7 @@ private:
double getValue() const { return owner->getCornerSize(); }
void changeListenerCallback (void*) { refresh(); }
void changeListenerCallback (ChangeBroadcaster*) { refresh(); }
private:
PaintElementRoundedRectangle* const owner;


+ 5
- 5
extras/the jucer/src/model/paintelements/jucer_PaintElementText.h View File

@@ -387,7 +387,7 @@ private:
void setText (const String& newText) { element->setText (newText, true); }
const String getText() const { return element->getText(); }
void changeListenerCallback (void*) { refresh(); }
void changeListenerCallback (ChangeBroadcaster*) { refresh(); }
private:
PaintElementText* const element;
@@ -413,7 +413,7 @@ private:
void setTypefaceName (const String& newFontName) { element->setTypefaceName (newFontName, true); }
const String getTypefaceName() const { return element->getTypefaceName(); }
void changeListenerCallback (void*) { refresh(); }
void changeListenerCallback (ChangeBroadcaster*) { refresh(); }
private:
PaintElementText* const element;
@@ -463,7 +463,7 @@ private:
return 0;
}
void changeListenerCallback (void*) { refresh(); }
void changeListenerCallback (ChangeBroadcaster*) { refresh(); }
private:
PaintElementText* const element;
@@ -501,7 +501,7 @@ private:
return element->getFont().getHeight();
}
void changeListenerCallback (void*) { refresh(); }
void changeListenerCallback (ChangeBroadcaster*) { refresh(); }
private:
PaintElementText* const element;
@@ -534,7 +534,7 @@ private:
return element->getJustification();
}
void changeListenerCallback (void*) { refresh(); }
void changeListenerCallback (ChangeBroadcaster*) { refresh(); }
private:
PaintElementText* const element;


+ 1
- 1
extras/the jucer/src/properties/jucer_ComponentBooleanProperty.h View File

@@ -52,7 +52,7 @@ public:
document.removeChangeListener (this);
}
void changeListenerCallback (void*)
void changeListenerCallback (ChangeBroadcaster*)
{
refresh();
}


+ 1
- 1
extras/the jucer/src/properties/jucer_ComponentChoiceProperty.h View File

@@ -50,7 +50,7 @@ public:
document.removeChangeListener (this);
}
void changeListenerCallback (void*)
void changeListenerCallback (ChangeBroadcaster*)
{
refresh();
}


+ 1
- 1
extras/the jucer/src/properties/jucer_ComponentColourProperty.h View File

@@ -53,7 +53,7 @@ public:
document.removeChangeListener (this);
}
void changeListenerCallback (void*)
void changeListenerCallback (ChangeBroadcaster*)
{
refresh();
}


+ 1
- 1
extras/the jucer/src/properties/jucer_ComponentTextProperty.h View File

@@ -52,7 +52,7 @@ public:
document.removeChangeListener (this);
}
void changeListenerCallback (void*)
void changeListenerCallback (ChangeBroadcaster*)
{
refresh();
}


+ 1
- 1
extras/the jucer/src/properties/jucer_PositionPropertyBase.h View File

@@ -169,7 +169,7 @@ public:
}
}
void changeListenerCallback (void*)
void changeListenerCallback (ChangeBroadcaster*)
{
refresh();
}


+ 1
- 1
extras/the jucer/src/ui/jucer_ComponentLayoutEditor.cpp View File

@@ -146,7 +146,7 @@ void ComponentLayoutEditor::visibilityChanged()
}
}
void ComponentLayoutEditor::changeListenerCallback (void*)
void ComponentLayoutEditor::changeListenerCallback (ChangeBroadcaster*)
{
refreshAllComponents();
}


+ 1
- 1
extras/the jucer/src/ui/jucer_ComponentLayoutEditor.h View File

@@ -48,7 +48,7 @@ public:
void paint (Graphics& g);
void resized();
void visibilityChanged();
void changeListenerCallback (void*);
void changeListenerCallback (ChangeBroadcaster*);
void mouseDown (const MouseEvent& e);
void mouseDrag (const MouseEvent& e);


+ 1
- 1
extras/the jucer/src/ui/jucer_ComponentLayoutPanel.cpp View File

@@ -56,7 +56,7 @@ public:
propsPanel->setBounds (4, 4, getWidth() - 8, getHeight() - 8);
}
void changeListenerCallback (void*)
void changeListenerCallback (ChangeBroadcaster*)
{
updateList();
}


+ 1
- 1
extras/the jucer/src/ui/jucer_ComponentOverlayComponent.cpp View File

@@ -63,7 +63,7 @@ ComponentOverlayComponent::~ComponentOverlayComponent()
delete border;
}
void ComponentOverlayComponent::changeListenerCallback (void*)
void ComponentOverlayComponent::changeListenerCallback (ChangeBroadcaster*)
{
const bool nowSelected = layout.getSelectedSet().isSelected (target);


+ 1
- 1
extras/the jucer/src/ui/jucer_ComponentOverlayComponent.h View File

@@ -57,7 +57,7 @@ public:
void componentMovedOrResized (Component& component, bool wasMoved, bool wasResized);
void changeListenerCallback (void*);
void changeListenerCallback (ChangeBroadcaster*);
void resizeStart();
void resizeEnd();


+ 3
- 3
extras/the jucer/src/ui/jucer_JucerDocumentHolder.cpp View File

@@ -112,7 +112,7 @@ public:
listBox->repaint();
}
void changeListenerCallback (void*)
void changeListenerCallback (ChangeBroadcaster*)
{
refresh();
}
@@ -173,7 +173,7 @@ public:
panel2->setBounds (panel1->getRight() + 20, panel1->getY(), pw, panel1->getHeight());
}
void changeListenerCallback (void*)
void changeListenerCallback (ChangeBroadcaster*)
{
panel1->refreshAll();
panel2->refreshAll();
@@ -505,7 +505,7 @@ void JucerDocumentHolder::resized()
tabbedComponent->setBounds (0, 0, getWidth(), getHeight());
}
void JucerDocumentHolder::changeListenerCallback (void*)
void JucerDocumentHolder::changeListenerCallback (ChangeBroadcaster*)
{
setName (document->getClassName());
updateTabs();


+ 1
- 1
extras/the jucer/src/ui/jucer_JucerDocumentHolder.h View File

@@ -62,7 +62,7 @@ public:
//==============================================================================
void paint (Graphics& g);
void resized();
void changeListenerCallback (void*);
void changeListenerCallback (ChangeBroadcaster*);
//==============================================================================
ApplicationCommandTarget* getNextCommandTarget();


+ 1
- 1
extras/the jucer/src/ui/jucer_PaintRoutineEditor.cpp View File

@@ -213,7 +213,7 @@ void PaintRoutineEditor::refreshAllElements()
}
}
void PaintRoutineEditor::changeListenerCallback (void* source)
void PaintRoutineEditor::changeListenerCallback (ChangeBroadcaster* source)
{
refreshAllElements();
}


+ 1
- 1
extras/the jucer/src/ui/jucer_PaintRoutineEditor.h View File

@@ -51,7 +51,7 @@ public:
void paint (Graphics& g);
void paintOverChildren (Graphics& g);
void resized();
void changeListenerCallback (void*);
void changeListenerCallback (ChangeBroadcaster*);
void mouseDown (const MouseEvent& e);
void mouseDrag (const MouseEvent& e);


+ 2
- 2
extras/the jucer/src/ui/jucer_PaintRoutinePanel.cpp View File

@@ -48,7 +48,7 @@ public:
document.removeChangeListener (this);
}
void changeListenerCallback (void*)
void changeListenerCallback (ChangeBroadcaster*)
{
refresh();
}
@@ -99,7 +99,7 @@ public:
propsPanel->setBounds (4, 4, getWidth() - 8, getHeight() - 8);
}
void changeListenerCallback (void*)
void changeListenerCallback (ChangeBroadcaster*)
{
updateList();
}


+ 1
- 1
extras/the jucer/src/ui/jucer_ResourceEditorPanel.cpp View File

@@ -245,7 +245,7 @@ void ResourceEditorPanel::visibilityChanged()
listBox->updateContent();
}
void ResourceEditorPanel::changeListenerCallback (void*)
void ResourceEditorPanel::changeListenerCallback (ChangeBroadcaster*)
{
if (isVisible())
listBox->updateContent();


+ 1
- 1
extras/the jucer/src/ui/jucer_ResourceEditorPanel.h View File

@@ -45,7 +45,7 @@ public:
void resized();
void visibilityChanged();
void changeListenerCallback (void*);
void changeListenerCallback (ChangeBroadcaster*);
void buttonClicked (Button*);
int getNumRows();


+ 1
- 1
extras/the jucer/src/utility/jucer_ColourEditorComponent.h View File

@@ -85,7 +85,7 @@ public:
m.showAt (this);
}
void changeListenerCallback (void* source)
void changeListenerCallback (ChangeBroadcaster* source)
{
const ColourSelector* const cs = (const ColourSelector*) source;


+ 449
- 487
juce_amalgamated.cpp
File diff suppressed because it is too large
View File


+ 229
- 285
juce_amalgamated.h View File

@@ -64,7 +64,7 @@
*/
#define JUCE_MAJOR_VERSION 1
#define JUCE_MINOR_VERSION 52
#define JUCE_BUILDNUMBER 92
#define JUCE_BUILDNUMBER 93

/** Current Juce version number.

@@ -798,6 +798,13 @@
/** This macro is added to all juce public function declarations. */
#define JUCE_PUBLIC_FUNCTION JUCE_API JUCE_CALLTYPE

/** This turns on some non-essential bits of code that should prevent old code from compiling
in cases where method signatures have changed, etc.
*/
#if (! defined (JUCE_CATCH_DEPRECATED_CODE_MISUSE)) && JUCE_DEBUG && ! DOXYGEN
#define JUCE_CATCH_DEPRECATED_CODE_MISUSE 1
#endif

// Now include some basics that are needed by most of the Juce classes...
BEGIN_JUCE_NAMESPACE

@@ -12585,6 +12592,12 @@ public:
return listeners.size() == 0;
}

/** Clears the list. */
void clear()
{
listeners.clear();
}

/** Returns true if the specified listener has been added to the list. */
bool contains (ListenerClass* const listener) const throw()
{
@@ -12993,27 +13006,24 @@ typedef Value::Listener ValueListener;
#define __JUCE_CHANGEBROADCASTER_JUCEHEADER__


/*** Start of inlined file: juce_ChangeListenerList.h ***/
#ifndef __JUCE_CHANGELISTENERLIST_JUCEHEADER__
#define __JUCE_CHANGELISTENERLIST_JUCEHEADER__


/*** Start of inlined file: juce_ChangeListener.h ***/
#ifndef __JUCE_CHANGELISTENER_JUCEHEADER__
#define __JUCE_CHANGELISTENER_JUCEHEADER__

class ChangeBroadcaster;

/**
Receives callbacks about changes to some kind of object.
Receives change event callbacks that are sent out by a ChangeBroadcaster.

Many objects use a ChangeListenerList to keep a set of listeners which they
will inform when something changes. A subclass of ChangeListener
is used to receive these callbacks.
A ChangeBroadcaster keeps a set of listeners to which it broadcasts a message when
the ChangeBroadcaster::sendChangeMessage() method is called. A subclass of
ChangeListener is used to receive these callbacks.

Note that the major difference between an ActionListener and a ChangeListener
is that for a ChangeListener, multiple changes will be coalesced into fewer
callbacks, but ActionListeners perform one callback for every event posted.

@see ChangeListenerList, ChangeBroadcaster, ActionListener
@see ChangeBroadcaster, ActionListener
*/
class JUCE_API ChangeListener
{
@@ -13021,238 +13031,24 @@ public:
/** Destructor. */
virtual ~ChangeListener() {}

/** Overridden by your subclass to receive the callback.

@param objectThatHasChanged the value that was passed to the
ChangeListenerList::sendChangeMessage() method
/** Your subclass should implement this method to receive the callback.
@param source the ChangeBroadcaster that triggered the callback.
*/
virtual void changeListenerCallback (void* objectThatHasChanged) = 0;
virtual void changeListenerCallback (ChangeBroadcaster* source) = 0;

#if JUCE_CATCH_DEPRECATED_CODE_MISUSE
// This method's signature has changed to take a ChangeBroadcaster parameter - please update your code!
private: virtual int changeListenerCallback (void*) { return 0; }
#endif
};

#endif // __JUCE_CHANGELISTENER_JUCEHEADER__
/*** End of inlined file: juce_ChangeListener.h ***/


/*** Start of inlined file: juce_ScopedLock.h ***/
#ifndef __JUCE_SCOPEDLOCK_JUCEHEADER__
#define __JUCE_SCOPEDLOCK_JUCEHEADER__

/**
Automatically locks and unlocks a CriticalSection object.

Use one of these as a local variable to control access to a CriticalSection.

e.g. @code

CriticalSection myCriticalSection;

for (;;)
{
const ScopedLock myScopedLock (myCriticalSection);
// myCriticalSection is now locked

...do some stuff...

// myCriticalSection gets unlocked here.
}
@endcode

@see CriticalSection, ScopedUnlock
*/
class JUCE_API ScopedLock
{
public:

/** Creates a ScopedLock.

As soon as it is created, this will lock the CriticalSection, and
when the ScopedLock object is deleted, the CriticalSection will
be unlocked.

Make sure this object is created and deleted by the same thread,
otherwise there are no guarantees what will happen! Best just to use it
as a local stack object, rather than creating one with the new() operator.
*/
inline explicit ScopedLock (const CriticalSection& lock) throw() : lock_ (lock) { lock.enter(); }

/** Destructor.

The CriticalSection will be unlocked when the destructor is called.

Make sure this object is created and deleted by the same thread,
otherwise there are no guarantees what will happen!
*/
inline ~ScopedLock() throw() { lock_.exit(); }

private:

const CriticalSection& lock_;

ScopedLock (const ScopedLock&);
ScopedLock& operator= (const ScopedLock&);
};

/**
Automatically unlocks and re-locks a CriticalSection object.

This is the reverse of a ScopedLock object - instead of locking the critical
section for the lifetime of this object, it unlocks it.

Make sure you don't try to unlock critical sections that aren't actually locked!

e.g. @code

CriticalSection myCriticalSection;

for (;;)
{
const ScopedLock myScopedLock (myCriticalSection);
// myCriticalSection is now locked

... do some stuff with it locked ..

while (xyz)
{
... do some stuff with it locked ..

const ScopedUnlock unlocker (myCriticalSection);

// myCriticalSection is now unlocked for the remainder of this block,
// and re-locked at the end.

...do some stuff with it unlocked ...
}

// myCriticalSection gets unlocked here.
}
@endcode

@see CriticalSection, ScopedLock
*/
class ScopedUnlock
{
public:

/** Creates a ScopedUnlock.

As soon as it is created, this will unlock the CriticalSection, and
when the ScopedLock object is deleted, the CriticalSection will
be re-locked.

Make sure this object is created and deleted by the same thread,
otherwise there are no guarantees what will happen! Best just to use it
as a local stack object, rather than creating one with the new() operator.
*/
inline explicit ScopedUnlock (const CriticalSection& lock) throw() : lock_ (lock) { lock.exit(); }

/** Destructor.

The CriticalSection will be unlocked when the destructor is called.

Make sure this object is created and deleted by the same thread,
otherwise there are no guarantees what will happen!
*/
inline ~ScopedUnlock() throw() { lock_.enter(); }

private:

const CriticalSection& lock_;

ScopedUnlock (const ScopedLock&);
ScopedUnlock& operator= (const ScopedUnlock&);
};

#endif // __JUCE_SCOPEDLOCK_JUCEHEADER__
/*** End of inlined file: juce_ScopedLock.h ***/

/**
A set of ChangeListeners.

Listeners can be added and removed from the list, and change messages can be
broadcast to all the listeners.
Holds a list of ChangeListeners, and sends messages to them when instructed.

@see ChangeListener, ChangeBroadcaster
*/
class JUCE_API ChangeListenerList : public MessageListener
{
public:

/** Creates an empty list. */
ChangeListenerList();

/** Destructor. */
~ChangeListenerList();

/** Adds a listener to the list.

(Trying to add a listener that's already on the list will have no effect).
*/
void addChangeListener (ChangeListener* listener);

/** Removes a listener from the list.

If the listener isn't on the list, this won't have any effect.
*/
void removeChangeListener (ChangeListener* listener);

/** Removes all listeners from the list. */
void removeAllChangeListeners();

/** Posts an asynchronous change message to all the listeners.

If a message has already been sent and hasn't yet been delivered, this
method won't send another - in this way it coalesces multiple frequent
changes into fewer actual callbacks to the ChangeListeners. Contrast this
with the ActionListener, which posts a new event for every call to its
sendActionMessage() method.

Only listeners which are on the list when the change event is delivered
will receive the event - and this may include listeners that weren't on
the list when the change message was sent.

@param objectThatHasChanged this pointer is passed to the
ChangeListener::changeListenerCallback() method,
and can be any value the application needs
@see sendSynchronousChangeMessage
*/
void sendChangeMessage (void* objectThatHasChanged);

/** This will synchronously callback all the ChangeListeners.

Use this if you need to synchronously force a call to all the
listeners' ChangeListener::changeListenerCallback() methods.
*/
void sendSynchronousChangeMessage (void* objectThatHasChanged);

/** If a change message has been sent but not yet dispatched, this will
use sendSynchronousChangeMessage() to make the callback immediately.
*/
void dispatchPendingMessages();

/** @internal */
void handleMessage (const Message&);

juce_UseDebuggingNewOperator

private:
SortedSet <void*> listeners;
CriticalSection lock;
void* lastChangedObject;
bool messagePending;

ChangeListenerList (const ChangeListenerList&);
ChangeListenerList& operator= (const ChangeListenerList&);
};

#endif // __JUCE_CHANGELISTENERLIST_JUCEHEADER__
/*** End of inlined file: juce_ChangeListenerList.h ***/

/** Manages a list of ChangeListeners, and can send them messages.

To quickly add methods to your class that can add/remove change
listeners and broadcast to them, you can derive from this.

@see ChangeListenerList, ChangeListener
@see ChangeListener
*/
class JUCE_API ChangeBroadcaster
{
@@ -13264,14 +13060,12 @@ public:
/** Destructor. */
virtual ~ChangeBroadcaster();

/** Adds a listener to the list.

(Trying to add a listener that's already on the list will have no effect).
/** Registers a listener to receive change callbacks from this broadcaster.
Trying to add a listener that's already on the list will have no effect.
*/
void addChangeListener (ChangeListener* listener);

/** Removes a listener from the list.

/** Unregisters a listener from the list.
If the listener isn't on the list, this won't have any effect.
*/
void removeChangeListener (ChangeListener* listener);
@@ -13279,30 +13073,39 @@ public:
/** Removes all listeners from the list. */
void removeAllChangeListeners();

/** Broadcasts a change message to all the registered listeners.

The message will be delivered asynchronously by the event thread, so this
method will not directly call any of the listeners. For a synchronous
message, use sendSynchronousChangeMessage().
/** Causes an asynchronous change message to be sent to all the registered listeners.

@see ChangeListenerList::sendActionMessage
The message will be delivered asynchronously by the main message thread, so this
method will return immediately. To call the listeners synchronously use
sendSynchronousChangeMessage().
*/
void sendChangeMessage (void* objectThatHasChanged);
void sendChangeMessage();

/** Sends a synchronous change message to all the registered listeners.

@see ChangeListenerList::sendSynchronousChangeMessage
This will immediately call all the listeners that are registered. For thread-safety
reasons, you must only call this method on the main message thread.

@see dispatchPendingMessages
*/
void sendSynchronousChangeMessage (void* objectThatHasChanged);
void sendSynchronousChangeMessage();

/** If a change message has been sent but not yet dispatched, this will call
sendSynchronousChangeMessage() to make the callback immediately.

/** If a change message has been sent but not yet dispatched, this will
use sendSynchronousChangeMessage() to make the callback immediately.
For thread-safety reasons, you must only call this method on the main message thread.
*/
void dispatchPendingMessages();

private:

ChangeListenerList changeListenerList;
class ChangeBroadcasterMessage;
friend class ChangeBroadcasterMessage;

Atomic<ChangeBroadcasterMessage*> pendingMessage;
ListenerList <ChangeListener> changeListeners;

void invalidatePendingMessage();

ChangeBroadcaster (const ChangeBroadcaster&);
ChangeBroadcaster& operator= (const ChangeBroadcaster&);
@@ -14833,6 +14636,139 @@ private:
#ifndef __JUCE_SINGLETON_JUCEHEADER__
#define __JUCE_SINGLETON_JUCEHEADER__


/*** Start of inlined file: juce_ScopedLock.h ***/
#ifndef __JUCE_SCOPEDLOCK_JUCEHEADER__
#define __JUCE_SCOPEDLOCK_JUCEHEADER__

/**
Automatically locks and unlocks a CriticalSection object.

Use one of these as a local variable to control access to a CriticalSection.

e.g. @code

CriticalSection myCriticalSection;

for (;;)
{
const ScopedLock myScopedLock (myCriticalSection);
// myCriticalSection is now locked

...do some stuff...

// myCriticalSection gets unlocked here.
}
@endcode

@see CriticalSection, ScopedUnlock
*/
class JUCE_API ScopedLock
{
public:

/** Creates a ScopedLock.

As soon as it is created, this will lock the CriticalSection, and
when the ScopedLock object is deleted, the CriticalSection will
be unlocked.

Make sure this object is created and deleted by the same thread,
otherwise there are no guarantees what will happen! Best just to use it
as a local stack object, rather than creating one with the new() operator.
*/
inline explicit ScopedLock (const CriticalSection& lock) throw() : lock_ (lock) { lock.enter(); }

/** Destructor.

The CriticalSection will be unlocked when the destructor is called.

Make sure this object is created and deleted by the same thread,
otherwise there are no guarantees what will happen!
*/
inline ~ScopedLock() throw() { lock_.exit(); }

private:

const CriticalSection& lock_;

ScopedLock (const ScopedLock&);
ScopedLock& operator= (const ScopedLock&);
};

/**
Automatically unlocks and re-locks a CriticalSection object.

This is the reverse of a ScopedLock object - instead of locking the critical
section for the lifetime of this object, it unlocks it.

Make sure you don't try to unlock critical sections that aren't actually locked!

e.g. @code

CriticalSection myCriticalSection;

for (;;)
{
const ScopedLock myScopedLock (myCriticalSection);
// myCriticalSection is now locked

... do some stuff with it locked ..

while (xyz)
{
... do some stuff with it locked ..

const ScopedUnlock unlocker (myCriticalSection);

// myCriticalSection is now unlocked for the remainder of this block,
// and re-locked at the end.

...do some stuff with it unlocked ...
}

// myCriticalSection gets unlocked here.
}
@endcode

@see CriticalSection, ScopedLock
*/
class ScopedUnlock
{
public:

/** Creates a ScopedUnlock.

As soon as it is created, this will unlock the CriticalSection, and
when the ScopedLock object is deleted, the CriticalSection will
be re-locked.

Make sure this object is created and deleted by the same thread,
otherwise there are no guarantees what will happen! Best just to use it
as a local stack object, rather than creating one with the new() operator.
*/
inline explicit ScopedUnlock (const CriticalSection& lock) throw() : lock_ (lock) { lock.exit(); }

/** Destructor.

The CriticalSection will be unlocked when the destructor is called.

Make sure this object is created and deleted by the same thread,
otherwise there are no guarantees what will happen!
*/
inline ~ScopedUnlock() throw() { lock_.enter(); }

private:

const CriticalSection& lock_;

ScopedUnlock (const ScopedLock&);
ScopedUnlock& operator= (const ScopedUnlock&);
};

#endif // __JUCE_SCOPEDLOCK_JUCEHEADER__
/*** End of inlined file: juce_ScopedLock.h ***/

/**
Macro to declare member variables and methods for a singleton class.

@@ -25137,10 +25073,20 @@ public:
So if you call setOrigin (100, 100), then the position that was previously
referred to as (100, 100) will subsequently be considered to be (0, 0).

@see reduceClipRegion
@see reduceClipRegion, addTransform
*/
void setOrigin (int newOriginX, int newOriginY);

/** Adds a transformation which will be performed on all the graphics operations that
the context subsequently performs.

After calling this, all the coordinates that are passed into the context will be
transformed by this matrix.

@see setOrigin
*/
void addTransform (const AffineTransform& transform);

/** Resets the current colour, brush, and font to default settings. */
void resetToDefaultState();

@@ -28003,16 +27949,13 @@ public:
};

#ifndef DOXYGEN
/** @internal
This method is deprecated - use localPointToGlobal instead. */
/** This method is deprecated - use localPointToGlobal instead. */
const Point<int> relativePositionToGlobal (const Point<int>& relativePosition) const;

/** @internal
This method is deprecated - use getLocalPoint instead. */
/** This method is deprecated - use getLocalPoint instead. */
const Point<int> globalPositionToRelative (const Point<int>& screenPosition) const;

/** @internal
This method is deprecated - use getLocalPoint instead. */
/** This method is deprecated - use getLocalPoint instead. */
const Point<int> relativePositionToOtherComponent (const Component* targetComponent,
const Point<int>& positionRelativeToThis) const;
#endif
@@ -28103,13 +28046,19 @@ private:
void grabFocusInternal (const FocusChangeType cause, bool canTryParent = true);
static void giveAwayFocus();
void sendEnablementChangeMessage();
void subtractObscuredRegions (RectangleList& result, const Point<int>& delta,
const Rectangle<int>& clipRect, const Component* const compToAvoid) const;
void clipObscuredRegions (Graphics& g, const Rectangle<int>& clipRect, int deltaX, int deltaY) const;

void sendVisibilityChangeMessage();
const Rectangle<int> getParentOrMainMonitorBounds() const;

class ComponentHelpers;
friend class ComponentHelpers;

/* Components aren't allowed to have copy constructors, as this would mess up parent hierarchies.
You might need to give your subclasses a private dummy constructor like this one to avoid
compiler warnings.
*/
Component (const Component&);
Component& operator= (const Component&);

#if JUCE_CATCH_DEPRECATED_CODE_MISUSE
// This is included here just to cause a compile error if your code is still handling
// drag-and-drop with this method. If so, just update it to use the new FileDragAndDropTarget
// class, which is easy (just make your class inherit from FileDragAndDropTarget, and
@@ -28119,15 +28068,10 @@ private:
// This is included here to cause an error if you use or overload it - it has been deprecated in
// favour of contains (const Point<int>&)
void contains (int, int);

/* Components aren't allowed to have copy constructors, as this would mess up parent hierarchies.
You might need to give your subclasses a private dummy constructor like this one to avoid
compiler warnings.
*/
Component (const Component&);
Component& operator= (const Component&);
#endif

protected:

/** @internal */
virtual void internalRepaint (int x, int y, int w, int h);
/** @internal */
@@ -29727,9 +29671,11 @@ private:
void handleAsyncUpdate();
void globalFocusChanged (Component*);

// xxx this is just here to cause a compile error in old code that hasn't been changed to use the new
#if JUCE_CATCH_DEPRECATED_CODE_MISUSE
// This is just here to cause a compile error in old code that hasn't been changed to use the new
// version of this method.
virtual short getFirstCommandTarget() { return 0; }
#endif

ApplicationCommandManager (const ApplicationCommandManager&);
ApplicationCommandManager& operator= (const ApplicationCommandManager&);
@@ -42087,7 +42033,7 @@ public:
/** @internal */
void buttonClicked (Button* b);
/** @internal */
void changeListenerCallback (void*);
void changeListenerCallback (ChangeBroadcaster*);
/** @internal */
void timerCallback();

@@ -43292,8 +43238,10 @@ protected:
int midiNoteNumber,
float velocity);

/** xxx Temporary method here to cause a compiler error - note the new parameters for this method. */
#if JUCE_CATCH_DEPRECATED_CODE_MISUSE
// Temporary method here to cause a compiler error - note the new parameters for this method.
int findFreeVoice (const bool) const { return 0; }
#endif

private:
double sampleRate;
@@ -43623,9 +43571,6 @@ private:
#endif
#ifndef __JUCE_CHANGELISTENER_JUCEHEADER__

#endif
#ifndef __JUCE_CHANGELISTENERLIST_JUCEHEADER__

#endif
#ifndef __JUCE_INTERPROCESSCONNECTION_JUCEHEADER__

@@ -51954,7 +51899,7 @@ public:
void scrollToTop();

/** @internal */
void changeListenerCallback (void*);
void changeListenerCallback (ChangeBroadcaster*);
/** @internal */
int getNumRows();
/** @internal */
@@ -56186,9 +56131,9 @@ public:
void changed (const bool synchronous = false)
{
if (synchronous)
sendSynchronousChangeMessage (this);
sendSynchronousChangeMessage();
else
sendChangeMessage (this);
sendChangeMessage();
}

juce_UseDebuggingNewOperator
@@ -56981,8 +56926,6 @@ public:
/** @internal */
void refresh();
/** @internal */
void changeListenerCallback (void*);
/** @internal */
void sliderValueChanged (Slider*);

juce_UseDebuggingNewOperator
@@ -57249,7 +57192,7 @@ public:
/** @internal */
void buttonClicked (Button*);
/** @internal */
void changeListenerCallback (void*);
void changeListenerCallback (ChangeBroadcaster*);
/** @internal */
void childBoundsChanged (Component*);

@@ -57659,10 +57602,11 @@ private:
ColourSelector (const ColourSelector&);
ColourSelector& operator= (const ColourSelector&);

// this constructor is here temporarily to prevent old code compiling, because the parameters
#if JUCE_CATCH_DEPRECATED_CODE_MISUSE
// This constructor is here temporarily to prevent old code compiling, because the parameters
// have changed - if you get an error here, update your code to use the new constructor instead..
// (xxx - note to self: remember to remove this at some point in the future)
ColourSelector (bool);
#endif
};

#endif // __JUCE_COLOURSELECTOR_JUCEHEADER__


+ 3
- 1
src/application/juce_ApplicationCommandManager.h View File

@@ -327,9 +327,11 @@ private:
void handleAsyncUpdate();
void globalFocusChanged (Component*);
// xxx this is just here to cause a compile error in old code that hasn't been changed to use the new
#if JUCE_CATCH_DEPRECATED_CODE_MISUSE
// This is just here to cause a compile error in old code that hasn't been changed to use the new
// version of this method.
virtual short getFirstCommandTarget() { return 0; }
#endif
ApplicationCommandManager (const ApplicationCommandManager&);
ApplicationCommandManager& operator= (const ApplicationCommandManager&);


+ 2
- 2
src/audio/audio_file_formats/juce_AudioThumbnail.cpp View File

@@ -81,7 +81,7 @@ void AudioThumbnail::setSource (InputSource* const newSource)
}
}
sendChangeMessage (this);
sendChangeMessage();
}
bool AudioThumbnail::useTimeSlice()
@@ -105,7 +105,7 @@ bool AudioThumbnail::useTimeSlice()
readNextBlockFromAudioFile (*reader);
stopTimer();
sendChangeMessage (this);
sendChangeMessage();
const bool justFinished = isFullyLoaded();


+ 3
- 3
src/audio/audio_sources/juce_AudioTransportSource.cpp View File

@@ -135,7 +135,7 @@ void AudioTransportSource::start()
inputStreamEOF = false;
}
sendChangeMessage (this);
sendChangeMessage();
}
}
@@ -152,7 +152,7 @@ void AudioTransportSource::stop()
while (--n >= 0 && ! stopped)
Thread::sleep (2);
sendChangeMessage (this);
sendChangeMessage();
}
}
@@ -272,7 +272,7 @@ void AudioTransportSource::getNextAudioBlock (const AudioSourceChannelInfo& info
{
playing = false;
inputStreamEOF = true;
sendChangeMessage (this);
sendChangeMessage();
}
stopped = ! playing;


+ 6
- 6
src/audio/devices/juce_AudioDeviceManager.cpp View File

@@ -339,7 +339,7 @@ void AudioDeviceManager::setCurrentAudioDeviceType (const String& type,
setAudioDeviceSetup (s, treatAsChosenDevice);
sendChangeMessage (this);
sendChangeMessage();
break;
}
}
@@ -363,7 +363,7 @@ const String AudioDeviceManager::setAudioDeviceSetup (const AudioDeviceSetup& ne
return String::empty;
if (! (newSetup == currentSetup))
sendChangeMessage (this);
sendChangeMessage();
stopDevice();
@@ -729,14 +729,14 @@ void AudioDeviceManager::audioDeviceAboutToStartInt (AudioIODevice* const device
callbacks.getUnchecked(i)->audioDeviceAboutToStart (device);
}
sendChangeMessage (this);
sendChangeMessage();
}
void AudioDeviceManager::audioDeviceStoppedInt()
{
cpuUsageMs = 0;
timeToCpuScale = 0;
sendChangeMessage (this);
sendChangeMessage();
const ScopedLock sl (audioCallbackLock);
for (int i = callbacks.size(); --i >= 0;)
@@ -777,7 +777,7 @@ void AudioDeviceManager::setMidiInputEnabled (const String& name,
}
updateXml();
sendChangeMessage (this);
sendChangeMessage();
}
}
@@ -887,7 +887,7 @@ void AudioDeviceManager::setDefaultMidiOutput (const String& deviceName)
}
updateXml();
sendChangeMessage (this);
sendChangeMessage();
}
}


+ 4
- 4
src/audio/plugins/juce_KnownPluginList.cpp View File

@@ -45,7 +45,7 @@ void KnownPluginList::clear()
if (types.size() > 0)
{
types.clear();
sendChangeMessage (this);
sendChangeMessage();
}
}
@@ -83,14 +83,14 @@ bool KnownPluginList::addType (const PluginDescription& type)
}
types.add (new PluginDescription (type));
sendChangeMessage (this);
sendChangeMessage();
return true;
}
void KnownPluginList::removeType (const int index)
{
types.remove (index);
sendChangeMessage (this);
sendChangeMessage();
}
namespace
@@ -249,7 +249,7 @@ void KnownPluginList::sort (const SortMethod method)
sorter.method = method;
types.sort (sorter, true);
sendChangeMessage (this);
sendChangeMessage();
}
}


+ 1
- 1
src/audio/plugins/juce_PluginListComponent.cpp View File

@@ -70,7 +70,7 @@ void PluginListComponent::resized()
optionsButton.setTopLeftPosition (8, getHeight() - 28);
}
void PluginListComponent::changeListenerCallback (void*)
void PluginListComponent::changeListenerCallback (ChangeBroadcaster*)
{
listBox.updateContent();
listBox.repaint();


+ 1
- 1
src/audio/plugins/juce_PluginListComponent.h View File

@@ -76,7 +76,7 @@ public:
/** @internal */
void buttonClicked (Button* b);
/** @internal */
void changeListenerCallback (void*);
void changeListenerCallback (ChangeBroadcaster*);
/** @internal */
void timerCallback();


+ 3
- 1
src/audio/synthesisers/juce_Synthesiser.h View File

@@ -468,8 +468,10 @@ protected:
int midiNoteNumber,
float velocity);
/** xxx Temporary method here to cause a compiler error - note the new parameters for this method. */
#if JUCE_CATCH_DEPRECATED_CODE_MISUSE
// Temporary method here to cause a compiler error - note the new parameters for this method.
int findFreeVoice (const bool) const { return 0; }
#endif
private:
double sampleRate;


+ 7
- 1
src/core/juce_StandardHeader.h View File

@@ -33,7 +33,7 @@
*/
#define JUCE_MAJOR_VERSION 1
#define JUCE_MINOR_VERSION 52
#define JUCE_BUILDNUMBER 92
#define JUCE_BUILDNUMBER 93
/** Current Juce version number.
@@ -154,6 +154,12 @@
/** This macro is added to all juce public function declarations. */
#define JUCE_PUBLIC_FUNCTION JUCE_API JUCE_CALLTYPE
/** This turns on some non-essential bits of code that should prevent old code from compiling
in cases where method signatures have changed, etc.
*/
#if (! defined (JUCE_CATCH_DEPRECATED_CODE_MISUSE)) && JUCE_DEBUG && ! DOXYGEN
#define JUCE_CATCH_DEPRECATED_CODE_MISUSE 1
#endif
//==============================================================================
// Now include some basics that are needed by most of the Juce classes...


+ 54
- 10
src/events/juce_ChangeBroadcaster.cpp View File

@@ -31,6 +31,24 @@ BEGIN_JUCE_NAMESPACE
#include "juce_MessageManager.h"
//==============================================================================
class ChangeBroadcaster::ChangeBroadcasterMessage : public CallbackMessage
{
public:
ChangeBroadcasterMessage (ChangeBroadcaster* const owner_)
: owner (owner_)
{
}
void messageCallback()
{
if (owner != 0 && owner->pendingMessage.value == this)
owner->sendSynchronousChangeMessage();
}
ChangeBroadcaster* owner;
};
//==============================================================================
ChangeBroadcaster::ChangeBroadcaster() throw()
{
@@ -42,39 +60,65 @@ ChangeBroadcaster::~ChangeBroadcaster()
{
// all event-based objects must be deleted BEFORE juce is shut down!
jassert (MessageManager::instance != 0);
invalidatePendingMessage();
}
void ChangeBroadcaster::addChangeListener (ChangeListener* const listener)
{
changeListenerList.addChangeListener (listener);
// Listeners can only be safely added when the event thread is locked...
jassert (MessageManager::getInstance()->currentThreadHasLockedMessageManager());
changeListeners.add (listener);
}
void ChangeBroadcaster::removeChangeListener (ChangeListener* const listener)
{
jassert (changeListenerList.isValidMessageListener());
// Listeners can only be safely added when the event thread is locked...
jassert (MessageManager::getInstance()->currentThreadHasLockedMessageManager());
if (changeListenerList.isValidMessageListener())
changeListenerList.removeChangeListener (listener);
changeListeners.remove (listener);
}
void ChangeBroadcaster::removeAllChangeListeners()
{
changeListenerList.removeAllChangeListeners();
// Listeners can only be safely added when the event thread is locked...
jassert (MessageManager::getInstance()->currentThreadHasLockedMessageManager());
changeListeners.clear();
}
void ChangeBroadcaster::invalidatePendingMessage()
{
ChangeBroadcasterMessage* const oldMessage = pendingMessage.exchange (0);
if (oldMessage != 0)
oldMessage->owner = 0;
}
void ChangeBroadcaster::sendChangeMessage (void* objectThatHasChanged)
void ChangeBroadcaster::sendChangeMessage()
{
changeListenerList.sendChangeMessage (objectThatHasChanged);
if (pendingMessage.value == 0 && changeListeners.size() > 0)
{
ScopedPointer<ChangeBroadcasterMessage> pending (new ChangeBroadcasterMessage (this));
if (pendingMessage.compareAndSetBool (pending, 0))
pending.release()->post();
}
}
void ChangeBroadcaster::sendSynchronousChangeMessage (void* objectThatHasChanged)
void ChangeBroadcaster::sendSynchronousChangeMessage()
{
changeListenerList.sendSynchronousChangeMessage (objectThatHasChanged);
// This can only be called by the event thread.
jassert (MessageManager::getInstance()->isThisTheMessageThread());
invalidatePendingMessage();
changeListeners.call (&ChangeListener::changeListenerCallback, this);
}
void ChangeBroadcaster::dispatchPendingMessages()
{
changeListenerList.dispatchPendingMessages();
if (pendingMessage.get() != 0)
sendSynchronousChangeMessage();
}


+ 30
- 24
src/events/juce_ChangeBroadcaster.h View File

@@ -26,16 +26,16 @@
#ifndef __JUCE_CHANGEBROADCASTER_JUCEHEADER__
#define __JUCE_CHANGEBROADCASTER_JUCEHEADER__
#include "juce_ChangeListenerList.h"
#include "juce_ChangeListener.h"
#include "juce_ListenerList.h"
#include "../core/juce_Atomic.h"
//==============================================================================
/** Manages a list of ChangeListeners, and can send them messages.
/**
Holds a list of ChangeListeners, and sends messages to them when instructed.
To quickly add methods to your class that can add/remove change
listeners and broadcast to them, you can derive from this.
@see ChangeListenerList, ChangeListener
@see ChangeListener
*/
class JUCE_API ChangeBroadcaster
{
@@ -48,14 +48,12 @@ public:
virtual ~ChangeBroadcaster();
//==============================================================================
/** Adds a listener to the list.
(Trying to add a listener that's already on the list will have no effect).
/** Registers a listener to receive change callbacks from this broadcaster.
Trying to add a listener that's already on the list will have no effect.
*/
void addChangeListener (ChangeListener* listener);
/** Removes a listener from the list.
/** Unregisters a listener from the list.
If the listener isn't on the list, this won't have any effect.
*/
void removeChangeListener (ChangeListener* listener);
@@ -64,31 +62,39 @@ public:
void removeAllChangeListeners();
//==============================================================================
/** Broadcasts a change message to all the registered listeners.
/** Causes an asynchronous change message to be sent to all the registered listeners.
The message will be delivered asynchronously by the event thread, so this
method will not directly call any of the listeners. For a synchronous
message, use sendSynchronousChangeMessage().
@see ChangeListenerList::sendActionMessage
The message will be delivered asynchronously by the main message thread, so this
method will return immediately. To call the listeners synchronously use
sendSynchronousChangeMessage().
*/
void sendChangeMessage (void* objectThatHasChanged);
void sendChangeMessage();
/** Sends a synchronous change message to all the registered listeners.
@see ChangeListenerList::sendSynchronousChangeMessage
This will immediately call all the listeners that are registered. For thread-safety
reasons, you must only call this method on the main message thread.
@see dispatchPendingMessages
*/
void sendSynchronousChangeMessage (void* objectThatHasChanged);
void sendSynchronousChangeMessage();
/** If a change message has been sent but not yet dispatched, this will
use sendSynchronousChangeMessage() to make the callback immediately.
/** If a change message has been sent but not yet dispatched, this will call
sendSynchronousChangeMessage() to make the callback immediately.
For thread-safety reasons, you must only call this method on the main message thread.
*/
void dispatchPendingMessages();
private:
//==============================================================================
ChangeListenerList changeListenerList;
class ChangeBroadcasterMessage;
friend class ChangeBroadcasterMessage;
Atomic<ChangeBroadcasterMessage*> pendingMessage;
ListenerList <ChangeListener> changeListeners;
void invalidatePendingMessage();
ChangeBroadcaster (const ChangeBroadcaster&);
ChangeBroadcaster& operator= (const ChangeBroadcaster&);


+ 16
- 10
src/events/juce_ChangeListener.h View File

@@ -26,20 +26,21 @@
#ifndef __JUCE_CHANGELISTENER_JUCEHEADER__
#define __JUCE_CHANGELISTENER_JUCEHEADER__
class ChangeBroadcaster;
//==============================================================================
/**
Receives callbacks about changes to some kind of object.
Receives change event callbacks that are sent out by a ChangeBroadcaster.
Many objects use a ChangeListenerList to keep a set of listeners which they
will inform when something changes. A subclass of ChangeListener
is used to receive these callbacks.
A ChangeBroadcaster keeps a set of listeners to which it broadcasts a message when
the ChangeBroadcaster::sendChangeMessage() method is called. A subclass of
ChangeListener is used to receive these callbacks.
Note that the major difference between an ActionListener and a ChangeListener
is that for a ChangeListener, multiple changes will be coalesced into fewer
callbacks, but ActionListeners perform one callback for every event posted.
@see ChangeListenerList, ChangeBroadcaster, ActionListener
@see ChangeBroadcaster, ActionListener
*/
class JUCE_API ChangeListener
{
@@ -47,12 +48,17 @@ public:
/** Destructor. */
virtual ~ChangeListener() {}
/** Overridden by your subclass to receive the callback.
@param objectThatHasChanged the value that was passed to the
ChangeListenerList::sendChangeMessage() method
/** Your subclass should implement this method to receive the callback.
@param source the ChangeBroadcaster that triggered the callback.
*/
virtual void changeListenerCallback (void* objectThatHasChanged) = 0;
virtual void changeListenerCallback (ChangeBroadcaster* source) = 0;
//==============================================================================
#if JUCE_CATCH_DEPRECATED_CODE_MISUSE
// This method's signature has changed to take a ChangeBroadcaster parameter - please update your code!
private: virtual int changeListenerCallback (void*) { return 0; }
#endif
};


+ 0
- 107
src/events/juce_ChangeListenerList.cpp View File

@@ -1,107 +0,0 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the GNU General
Public License (Version 2), as published by the Free Software Foundation.
A copy of the license is included in the JUCE distribution, or can be found
online at www.gnu.org/licenses.
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
------------------------------------------------------------------------------
To release a closed-source product which uses JUCE, commercial licenses are
available: visit www.rawmaterialsoftware.com/juce for more information.
==============================================================================
*/
#include "../core/juce_StandardHeader.h"
BEGIN_JUCE_NAMESPACE
#include "juce_ChangeListenerList.h"
//==============================================================================
ChangeListenerList::ChangeListenerList()
: lastChangedObject (0),
messagePending (false)
{
}
ChangeListenerList::~ChangeListenerList()
{
}
void ChangeListenerList::addChangeListener (ChangeListener* const listener)
{
const ScopedLock sl (lock);
jassert (listener != 0);
if (listener != 0)
listeners.add (listener);
}
void ChangeListenerList::removeChangeListener (ChangeListener* const listener)
{
const ScopedLock sl (lock);
listeners.removeValue (listener);
}
void ChangeListenerList::removeAllChangeListeners()
{
const ScopedLock sl (lock);
listeners.clear();
}
void ChangeListenerList::sendChangeMessage (void* const objectThatHasChanged)
{
const ScopedLock sl (lock);
if ((! messagePending) && (listeners.size() > 0))
{
lastChangedObject = objectThatHasChanged;
postMessage (new Message (0, 0, 0, objectThatHasChanged));
messagePending = true;
}
}
void ChangeListenerList::handleMessage (const Message& message)
{
sendSynchronousChangeMessage (message.pointerParameter);
}
void ChangeListenerList::sendSynchronousChangeMessage (void* const objectThatHasChanged)
{
const ScopedLock sl (lock);
messagePending = false;
for (int i = listeners.size(); --i >= 0;)
{
ChangeListener* const l = static_cast <ChangeListener*> (listeners.getUnchecked (i));
{
const ScopedUnlock tempUnlocker (lock);
l->changeListenerCallback (objectThatHasChanged);
}
i = jmin (i, listeners.size());
}
}
void ChangeListenerList::dispatchPendingMessages()
{
if (messagePending)
sendSynchronousChangeMessage (lastChangedObject);
}
END_JUCE_NAMESPACE

+ 0
- 119
src/events/juce_ChangeListenerList.h View File

@@ -1,119 +0,0 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the GNU General
Public License (Version 2), as published by the Free Software Foundation.
A copy of the license is included in the JUCE distribution, or can be found
online at www.gnu.org/licenses.
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
------------------------------------------------------------------------------
To release a closed-source product which uses JUCE, commercial licenses are
available: visit www.rawmaterialsoftware.com/juce for more information.
==============================================================================
*/
#ifndef __JUCE_CHANGELISTENERLIST_JUCEHEADER__
#define __JUCE_CHANGELISTENERLIST_JUCEHEADER__
#include "juce_ChangeListener.h"
#include "juce_MessageListener.h"
#include "../containers/juce_SortedSet.h"
#include "../threads/juce_ScopedLock.h"
//==============================================================================
/**
A set of ChangeListeners.
Listeners can be added and removed from the list, and change messages can be
broadcast to all the listeners.
@see ChangeListener, ChangeBroadcaster
*/
class JUCE_API ChangeListenerList : public MessageListener
{
public:
//==============================================================================
/** Creates an empty list. */
ChangeListenerList();
/** Destructor. */
~ChangeListenerList();
//==============================================================================
/** Adds a listener to the list.
(Trying to add a listener that's already on the list will have no effect).
*/
void addChangeListener (ChangeListener* listener);
/** Removes a listener from the list.
If the listener isn't on the list, this won't have any effect.
*/
void removeChangeListener (ChangeListener* listener);
/** Removes all listeners from the list. */
void removeAllChangeListeners();
//==============================================================================
/** Posts an asynchronous change message to all the listeners.
If a message has already been sent and hasn't yet been delivered, this
method won't send another - in this way it coalesces multiple frequent
changes into fewer actual callbacks to the ChangeListeners. Contrast this
with the ActionListener, which posts a new event for every call to its
sendActionMessage() method.
Only listeners which are on the list when the change event is delivered
will receive the event - and this may include listeners that weren't on
the list when the change message was sent.
@param objectThatHasChanged this pointer is passed to the
ChangeListener::changeListenerCallback() method,
and can be any value the application needs
@see sendSynchronousChangeMessage
*/
void sendChangeMessage (void* objectThatHasChanged);
/** This will synchronously callback all the ChangeListeners.
Use this if you need to synchronously force a call to all the
listeners' ChangeListener::changeListenerCallback() methods.
*/
void sendSynchronousChangeMessage (void* objectThatHasChanged);
/** If a change message has been sent but not yet dispatched, this will
use sendSynchronousChangeMessage() to make the callback immediately.
*/
void dispatchPendingMessages();
//==============================================================================
/** @internal */
void handleMessage (const Message&);
juce_UseDebuggingNewOperator
private:
SortedSet <void*> listeners;
CriticalSection lock;
void* lastChangedObject;
bool messagePending;
ChangeListenerList (const ChangeListenerList&);
ChangeListenerList& operator= (const ChangeListenerList&);
};
#endif // __JUCE_CHANGELISTENERLIST_JUCEHEADER__

+ 6
- 0
src/events/juce_ListenerList.h View File

@@ -130,6 +130,12 @@ public:
return listeners.size() == 0;
}
/** Clears the list. */
void clear()
{
listeners.clear();
}
/** Returns true if the specified listener has been added to the list. */
bool contains (ListenerClass* const listener) const throw()
{


+ 1
- 0
src/gui/components/controls/juce_ListBox.cpp View File

@@ -381,6 +381,7 @@ void ListBox::setModel (ListBoxModel* const newModel)
if (model != newModel)
{
model = newModel;
repaint();
updateContent();
}
}


+ 2
- 1
src/gui/components/filebrowser/juce_DirectoryContentsList.cpp View File

@@ -29,6 +29,7 @@ BEGIN_JUCE_NAMESPACE
#include "juce_DirectoryContentsList.h"
#include "../../graphics/imaging/juce_ImageCache.h"
#include "../../../threads/juce_ScopedLock.h"
//==============================================================================
@@ -160,7 +161,7 @@ bool DirectoryContentsList::isStillLoading() const
void DirectoryContentsList::changed()
{
sendChangeMessage (this);
sendChangeMessage();
}
//==============================================================================


+ 1
- 1
src/gui/components/filebrowser/juce_FileListComponent.cpp View File

@@ -70,7 +70,7 @@ void FileListComponent::scrollToTop()
}
//==============================================================================
void FileListComponent::changeListenerCallback (void*)
void FileListComponent::changeListenerCallback (ChangeBroadcaster*)
{
updateContent();


+ 1
- 1
src/gui/components/filebrowser/juce_FileListComponent.h View File

@@ -78,7 +78,7 @@ public:
//==============================================================================
/** @internal */
void changeListenerCallback (void*);
void changeListenerCallback (ChangeBroadcaster*);
/** @internal */
int getNumRows();
/** @internal */


+ 1
- 1
src/gui/components/filebrowser/juce_FileTreeComponent.cpp View File

@@ -122,7 +122,7 @@ public:
newList->addChangeListener (this);
}
void changeListenerCallback (void*)
void changeListenerCallback (ChangeBroadcaster*)
{
clearSubItems();


+ 195
- 211
src/gui/components/juce_Component.cpp View File

@@ -221,6 +221,181 @@ namespace
}
#endif
//==============================================================================
class Component::ComponentHelpers
{
public:
//==============================================================================
static void* runModalLoopCallback (void* userData)
{
return (void*) (pointer_sized_int) static_cast <Component*> (userData)->runModalLoop();
}
static const Identifier getColourPropertyId (const int colourId)
{
String s;
s.preallocateStorage (18);
s << "jcclr_" << String::toHexString (colourId);
return s;
}
//==============================================================================
static inline bool hitTest (Component& comp, const Point<int>& localPoint)
{
return ((unsigned int) localPoint.getX()) < (unsigned int) comp.getWidth()
&& ((unsigned int) localPoint.getY()) < (unsigned int) comp.getHeight()
&& comp.hitTest (localPoint.getX(), localPoint.getY());
}
static const Point<int> convertFromParentSpace (const Component& comp, const Point<int>& pointInParentSpace)
{
return pointInParentSpace - comp.getPosition();
}
static const Rectangle<int> convertFromParentSpace (const Component& comp, const Rectangle<int>& areaInParentSpace)
{
return areaInParentSpace - comp.getPosition();
}
static const Point<int> convertToParentSpace (const Component& comp, const Point<int>& pointInLocalSpace)
{
return pointInLocalSpace + comp.getPosition();
}
static const Rectangle<int> convertToParentSpace (const Component& comp, const Rectangle<int>& areaInLocalSpace)
{
return areaInLocalSpace + comp.getPosition();
}
template <typename Type>
static const Type convertFromDistantParentSpace (const Component* parent, const Component& target, Type coordInParent)
{
const Component* const directParent = target.getParentComponent();
jassert (directParent != 0);
if (directParent == parent)
return convertFromParentSpace (target, coordInParent);
return convertFromParentSpace (target, convertFromDistantParentSpace (parent, *directParent, coordInParent));
}
template <typename Type>
static const Type convertCoordinate (const Component* target, const Component* source, Type p)
{
while (source != 0)
{
if (source == target)
return p;
if (source->isParentOf (target))
return convertFromDistantParentSpace (source, *target, p);
if (source->isOnDesktop())
{
p = source->getPeer()->localToGlobal (p);
source = 0;
}
else
{
p = convertToParentSpace (*source, p);
source = source->getParentComponent();
}
}
jassert (source == 0);
if (target == 0)
return p;
const Component* const topLevelComp = target->getTopLevelComponent();
if (topLevelComp->isOnDesktop())
p = topLevelComp->getPeer()->globalToLocal (p);
else
p = convertFromParentSpace (*topLevelComp, p);
if (topLevelComp == target)
return p;
return convertFromDistantParentSpace (topLevelComp, *target, p);
}
static const Rectangle<int> getUnclippedArea (const Component& comp)
{
Rectangle<int> r (comp.getLocalBounds());
Component* const p = comp.getParentComponent();
if (p != 0)
r = r.getIntersection (convertFromParentSpace (comp, getUnclippedArea (*p)));
return r;
}
static void clipObscuredRegions (const Component& comp, Graphics& g, const Rectangle<int>& clipRect, const Point<int>& delta)
{
for (int i = comp.childComponentList_.size(); --i >= 0;)
{
const Component& child = *comp.childComponentList_.getUnchecked(i);
//xxx if (child.isVisible() && ! child.isTransformed())
if (child.isVisible())
{
const Rectangle<int> newClip (clipRect.getIntersection (child.bounds_));
if (! newClip.isEmpty())
{
if (child.isOpaque())
{
g.excludeClipRegion (newClip + delta);
}
else
{
const Point<int> childPos (child.getPosition());
clipObscuredRegions (child, g, newClip - childPos, childPos + delta);
}
}
}
}
}
static void subtractObscuredRegions (const Component& comp, RectangleList& result,
const Point<int>& delta,
const Rectangle<int>& clipRect,
const Component* const compToAvoid)
{
for (int i = comp.childComponentList_.size(); --i >= 0;)
{
const Component* const c = comp.childComponentList_.getUnchecked(i);
if (c != compToAvoid && c->isVisible())
{
if (c->isOpaque())
{
Rectangle<int> childBounds (c->bounds_.getIntersection (clipRect));
childBounds.translate (delta.getX(), delta.getY());
result.subtract (childBounds);
}
else
{
Rectangle<int> newClip (clipRect.getIntersection (c->bounds_));
newClip.translate (-c->getX(), -c->getY());
subtractObscuredRegions (*c, result, c->getPosition() + delta,
newClip, compToAvoid);
}
}
}
}
static const Rectangle<int> getParentOrMainMonitorBounds (const Component& comp)
{
return comp.getParentComponent() != 0 ? comp.getParentComponent()->getLocalBounds()
: Desktop::getInstance().getMainMonitorArea();
}
};
//==============================================================================
Component::Component()
: parentComponent_ (0),
@@ -766,138 +941,30 @@ int Component::getParentHeight() const throw()
: getParentMonitorArea().getHeight();
}
int Component::getScreenX() const
{
return getScreenPosition().getX();
}
int Component::getScreenY() const
{
return getScreenPosition().getY();
}
const Point<int> Component::getScreenPosition() const
{
return localPointToGlobal (Point<int>());
}
const Rectangle<int> Component::getScreenBounds() const
{
return bounds_.withPosition (getScreenPosition());
}
namespace CoordinateHelpers
{
inline bool hitTest (Component& comp, const Point<int>& localPoint)
{
return ((unsigned int) localPoint.getX()) < (unsigned int) comp.getWidth()
&& ((unsigned int) localPoint.getY()) < (unsigned int) comp.getHeight()
&& comp.hitTest (localPoint.getX(), localPoint.getY());
}
const Point<int> convertFromParentSpace (const Component& comp, const Point<int>& pointInParentSpace)
{
return pointInParentSpace - comp.getPosition();
}
const Rectangle<int> convertFromParentSpace (const Component& comp, const Rectangle<int>& areaInParentSpace)
{
return areaInParentSpace - comp.getPosition();
}
const Point<int> convertToParentSpace (const Component& comp, const Point<int>& pointInLocalSpace)
{
return pointInLocalSpace + comp.getPosition();
}
const Rectangle<int> convertToParentSpace (const Component& comp, const Rectangle<int>& areaInLocalSpace)
{
return areaInLocalSpace + comp.getPosition();
}
template <typename Type>
const Type convertFromDistantParentSpace (const Component* parent, const Component& target, Type coordInParent)
{
const Component* const directParent = target.getParentComponent();
jassert (directParent != 0);
if (directParent == parent)
return convertFromParentSpace (target, coordInParent);
return convertFromParentSpace (target, convertFromDistantParentSpace (parent, *directParent, coordInParent));
}
template <typename Type>
const Type convertCoordinate (const Component* target, const Component* source, Type p)
{
while (source != 0)
{
if (source == target)
return p;
if (source->isParentOf (target))
return convertFromDistantParentSpace (source, *target, p);
if (source->isOnDesktop())
{
p = source->getPeer()->localToGlobal (p);
source = 0;
}
else
{
p = convertToParentSpace (*source, p);
source = source->getParentComponent();
}
}
jassert (source == 0);
if (target == 0)
return p;
const Component* const topLevelComp = target->getTopLevelComponent();
if (topLevelComp->isOnDesktop())
p = topLevelComp->getPeer()->globalToLocal (p);
else
p = convertFromParentSpace (*topLevelComp, p);
if (topLevelComp == target)
return p;
return convertFromDistantParentSpace (topLevelComp, *target, p);
}
const Rectangle<int> getUnclippedArea (const Component& comp)
{
Rectangle<int> r (comp.getLocalBounds());
Component* const p = comp.getParentComponent();
int Component::getScreenX() const { return getScreenPosition().getX(); }
int Component::getScreenY() const { return getScreenPosition().getY(); }
if (p != 0)
r = r.getIntersection (convertFromParentSpace (comp, getUnclippedArea (*p)));
return r;
}
}
const Point<int> Component::getScreenPosition() const { return localPointToGlobal (Point<int>()); }
const Rectangle<int> Component::getScreenBounds() const { return localAreaToGlobal (getLocalBounds()); }
const Point<int> Component::getLocalPoint (const Component* source, const Point<int>& point) const
{
return CoordinateHelpers::convertCoordinate (this, source, point);
return ComponentHelpers::convertCoordinate (this, source, point);
}
const Rectangle<int> Component::getLocalArea (const Component* source, const Rectangle<int>& area) const
{
return CoordinateHelpers::convertCoordinate (this, source, area);
return ComponentHelpers::convertCoordinate (this, source, area);
}
const Point<int> Component::localPointToGlobal (const Point<int>& point) const
{
return CoordinateHelpers::convertCoordinate (0, this, point);
return ComponentHelpers::convertCoordinate (0, this, point);
}
const Rectangle<int> Component::localAreaToGlobal (const Rectangle<int>& area) const
{
return CoordinateHelpers::convertCoordinate (0, this, area);
return ComponentHelpers::convertCoordinate (0, this, area);
}
/* Deprecated methods... */
@@ -1053,7 +1120,7 @@ void Component::setCentreRelative (const float x, const float y)
void Component::centreWithSize (const int width, const int height)
{
const Rectangle<int> parentArea (getParentOrMainMonitorBounds());
const Rectangle<int> parentArea (ComponentHelpers::getParentOrMainMonitorBounds (*this));
setBounds (parentArea.getCentreX() - width / 2,
parentArea.getCentreY() - height / 2,
@@ -1062,7 +1129,7 @@ void Component::centreWithSize (const int width, const int height)
void Component::setBoundsInset (const BorderSize& borders)
{
setBounds (borders.subtractedFrom (getParentOrMainMonitorBounds()));
setBounds (borders.subtractedFrom (ComponentHelpers::getParentOrMainMonitorBounds (*this)));
}
void Component::setBoundsToFit (int x, int y, int width, int height,
@@ -1124,7 +1191,7 @@ bool Component::hitTest (int x, int y)
Component& child = *getChildComponent (i);
if (child.isVisible()
&& CoordinateHelpers::hitTest (child, CoordinateHelpers::convertFromParentSpace (child, Point<int> (x, y))))
&& ComponentHelpers::hitTest (child, ComponentHelpers::convertFromParentSpace (child, Point<int> (x, y))))
return true;
}
}
@@ -1148,11 +1215,11 @@ void Component::getInterceptsMouseClicks (bool& allowsClicksOnThisComponent,
bool Component::contains (const Point<int>& point)
{
if (CoordinateHelpers::hitTest (*this, point))
if (ComponentHelpers::hitTest (*this, point))
{
if (parentComponent_ != 0)
{
return parentComponent_->contains (CoordinateHelpers::convertToParentSpace (*this, point));
return parentComponent_->contains (ComponentHelpers::convertToParentSpace (*this, point));
}
else if (flags.hasHeavyweightPeerFlag)
{
@@ -1181,12 +1248,12 @@ bool Component::reallyContains (const int x, const int y, const bool returnTrueI
Component* Component::getComponentAt (const Point<int>& position)
{
if (flags.visibleFlag && CoordinateHelpers::hitTest (*this, position))
if (flags.visibleFlag && ComponentHelpers::hitTest (*this, position))
{
for (int i = childComponentList_.size(); --i >= 0;)
{
Component* child = childComponentList_.getUnchecked(i);
child = child->getComponentAt (CoordinateHelpers::convertFromParentSpace (*child, position));
child = child->getComponentAt (ComponentHelpers::convertFromParentSpace (*child, position));
if (child != 0)
return child;
@@ -1414,14 +1481,6 @@ void Component::internalHierarchyChanged()
}
//==============================================================================
namespace ComponentHelpers
{
void* runModalLoopCallback (void* userData)
{
return (void*) (pointer_sized_int) static_cast <Component*> (userData)->runModalLoop();
}
}
int Component::runModalLoop()
{
if (! MessageManager::getInstance()->isThisTheMessageThread())
@@ -1689,7 +1748,7 @@ void Component::paintComponentAndChildren (Graphics& g)
else
{
g.saveState();
clipObscuredRegions (g, clipBounds, 0, 0);
ComponentHelpers::clipObscuredRegions (*this, g, clipBounds, Point<int>());
if (! g.isClipEmpty())
paintComponent (g);
@@ -1878,17 +1937,6 @@ void Component::sendLookAndFeelChange()
}
}
namespace ComponentHelpers
{
const Identifier getColourPropertyId (const int colourId)
{
String s;
s.preallocateStorage (18);
s << "jcclr_" << String::toHexString (colourId);
return s;
}
}
const Colour Component::findColour (const int colourId, const bool inheritFromParent) const
{
var* const v = properties.getVarPointer (ComponentHelpers::getColourPropertyId (colourId));
@@ -1946,44 +1994,10 @@ const Rectangle<int> Component::getLocalBounds() const throw()
return Rectangle<int> (getWidth(), getHeight());
}
const Rectangle<int> Component::getParentOrMainMonitorBounds() const
{
return parentComponent_ != 0 ? parentComponent_->getLocalBounds()
: Desktop::getInstance().getMainMonitorArea();
}
void Component::clipObscuredRegions (Graphics& g, const Rectangle<int>& clipRect,
const int deltaX, const int deltaY) const
{
for (int i = childComponentList_.size(); --i >= 0;)
{
const Component* const c = childComponentList_.getUnchecked(i);
if (c->isVisible())
{
const Rectangle<int> newClip (clipRect.getIntersection (c->bounds_));
if (! newClip.isEmpty())
{
if (c->isOpaque())
{
g.excludeClipRegion (newClip.translated (deltaX, deltaY));
}
else
{
c->clipObscuredRegions (g, newClip.translated (-c->getX(), -c->getY()),
c->getX() + deltaX,
c->getY() + deltaY);
}
}
}
}
}
void Component::getVisibleArea (RectangleList& result, const bool includeSiblings) const
{
result.clear();
const Rectangle<int> unclipped (CoordinateHelpers::getUnclippedArea (*this));
const Rectangle<int> unclipped (ComponentHelpers::getUnclippedArea (*this));
if (! unclipped.isEmpty())
{
@@ -1993,45 +2007,15 @@ void Component::getVisibleArea (RectangleList& result, const bool includeSibling
{
const Component* const c = getTopLevelComponent();
c->subtractObscuredRegions (result, getLocalPoint (c, Point<int>()),
c->getLocalBounds(), this);
ComponentHelpers::subtractObscuredRegions (*c, result, getLocalPoint (c, Point<int>()),
c->getLocalBounds(), this);
}
subtractObscuredRegions (result, Point<int>(), unclipped, 0);
ComponentHelpers::subtractObscuredRegions (*this, result, Point<int>(), unclipped, 0);
result.consolidate();
}
}
void Component::subtractObscuredRegions (RectangleList& result,
const Point<int>& delta,
const Rectangle<int>& clipRect,
const Component* const compToAvoid) const
{
for (int i = childComponentList_.size(); --i >= 0;)
{
const Component* const c = childComponentList_.getUnchecked(i);
if (c != compToAvoid && c->isVisible())
{
if (c->isOpaque())
{
Rectangle<int> childBounds (c->bounds_.getIntersection (clipRect));
childBounds.translate (delta.getX(), delta.getY());
result.subtract (childBounds);
}
else
{
Rectangle<int> newClip (clipRect.getIntersection (c->bounds_));
newClip.translate (-c->getX(), -c->getY());
c->subtractObscuredRegions (result, c->getPosition() + delta,
newClip, compToAvoid);
}
}
}
}
//==============================================================================
void Component::mouseEnter (const MouseEvent&)
{


+ 16
- 18
src/gui/components/juce_Component.h View File

@@ -2006,16 +2006,13 @@ public:
//==============================================================================
#ifndef DOXYGEN
/** @internal
This method is deprecated - use localPointToGlobal instead. */
/** This method is deprecated - use localPointToGlobal instead. */
const Point<int> relativePositionToGlobal (const Point<int>& relativePosition) const;
/** @internal
This method is deprecated - use getLocalPoint instead. */
/** This method is deprecated - use getLocalPoint instead. */
const Point<int> globalPositionToRelative (const Point<int>& screenPosition) const;
/** @internal
This method is deprecated - use getLocalPoint instead. */
/** This method is deprecated - use getLocalPoint instead. */
const Point<int> relativePositionToOtherComponent (const Component* targetComponent,
const Point<int>& positionRelativeToThis) const;
#endif
@@ -2109,14 +2106,20 @@ private:
void grabFocusInternal (const FocusChangeType cause, bool canTryParent = true);
static void giveAwayFocus();
void sendEnablementChangeMessage();
void subtractObscuredRegions (RectangleList& result, const Point<int>& delta,
const Rectangle<int>& clipRect, const Component* const compToAvoid) const;
void clipObscuredRegions (Graphics& g, const Rectangle<int>& clipRect, int deltaX, int deltaY) const;
void sendVisibilityChangeMessage();
const Rectangle<int> getParentOrMainMonitorBounds() const;
class ComponentHelpers;
friend class ComponentHelpers;
/* Components aren't allowed to have copy constructors, as this would mess up parent hierarchies.
You might need to give your subclasses a private dummy constructor like this one to avoid
compiler warnings.
*/
Component (const Component&);
Component& operator= (const Component&);
//==============================================================================
#if JUCE_CATCH_DEPRECATED_CODE_MISUSE
// This is included here just to cause a compile error if your code is still handling
// drag-and-drop with this method. If so, just update it to use the new FileDragAndDropTarget
// class, which is easy (just make your class inherit from FileDragAndDropTarget, and
@@ -2126,15 +2129,10 @@ private:
// This is included here to cause an error if you use or overload it - it has been deprecated in
// favour of contains (const Point<int>&)
void contains (int, int);
/* Components aren't allowed to have copy constructors, as this would mess up parent hierarchies.
You might need to give your subclasses a private dummy constructor like this one to avoid
compiler warnings.
*/
Component (const Component&);
Component& operator= (const Component&);
#endif
protected:
//==============================================================================
/** @internal */
virtual void internalRepaint (int x, int y, int w, int h);
/** @internal */


+ 1
- 1
src/gui/components/keyboard/juce_KeyMappingEditorComponent.cpp View File

@@ -364,7 +364,7 @@ public:
bool mightContainSubItems() { return true; }
const String getUniqueName() const { return "keys"; }
void changeListenerCallback (void*)
void changeListenerCallback (ChangeBroadcaster*)
{
const ScopedPointer <XmlElement> oldOpenness (owner.tree.getOpennessState (true));


+ 7
- 7
src/gui/components/keyboard/juce_KeyPressMappingSet.cpp View File

@@ -86,7 +86,7 @@ void KeyPressMappingSet::addKeyPress (const CommandID commandID,
{
mappings.getUnchecked(i)->keypresses.insert (insertIndex, newKeyPress);
sendChangeMessage (this);
sendChangeMessage();
return;
}
}
@@ -101,7 +101,7 @@ void KeyPressMappingSet::addKeyPress (const CommandID commandID,
cm->wantsKeyUpDownCallbacks = (ci->flags & ApplicationCommandInfo::wantsKeyUpDownCallbacks) != 0;
mappings.add (cm);
sendChangeMessage (this);
sendChangeMessage();
}
}
}
@@ -122,7 +122,7 @@ void KeyPressMappingSet::resetToDefaultMappings()
}
}
sendChangeMessage (this);
sendChangeMessage();
}
void KeyPressMappingSet::resetToDefaultMapping (const CommandID commandID)
@@ -142,7 +142,7 @@ void KeyPressMappingSet::clearAllKeyPresses()
{
if (mappings.size() > 0)
{
sendChangeMessage (this);
sendChangeMessage();
mappings.clear();
}
}
@@ -154,7 +154,7 @@ void KeyPressMappingSet::clearAllKeyPresses (const CommandID commandID)
if (mappings.getUnchecked(i)->commandID == commandID)
{
mappings.remove (i);
sendChangeMessage (this);
sendChangeMessage();
}
}
}
@@ -172,7 +172,7 @@ void KeyPressMappingSet::removeKeyPress (const KeyPress& keypress)
if (keypress == cm->keypresses [j])
{
cm->keypresses.remove (j);
sendChangeMessage (this);
sendChangeMessage();
}
}
}
@@ -186,7 +186,7 @@ void KeyPressMappingSet::removeKeyPress (const CommandID commandID, const int ke
if (mappings.getUnchecked(i)->commandID == commandID)
{
mappings.getUnchecked(i)->keypresses.remove (keyPressIndex);
sendChangeMessage (this);
sendChangeMessage();
break;
}
}


+ 4
- 4
src/gui/components/layout/juce_ComponentAnimator.cpp View File

@@ -240,7 +240,7 @@ void ComponentAnimator::animateComponent (Component* const component,
{
at = new AnimationTask (component);
tasks.add (at);
sendChangeMessage (this);
sendChangeMessage();
}
at->reset (finalBounds, finalAlpha, millisecondsToSpendMoving,
@@ -284,7 +284,7 @@ void ComponentAnimator::cancelAllAnimations (const bool moveComponentsToTheirFin
tasks.getUnchecked(i)->moveToFinalDestination();
tasks.clear();
sendChangeMessage (this);
sendChangeMessage();
}
}
@@ -299,7 +299,7 @@ void ComponentAnimator::cancelAnimation (Component* const component,
at->moveToFinalDestination();
tasks.removeObject (at);
sendChangeMessage (this);
sendChangeMessage();
}
}
@@ -333,7 +333,7 @@ void ComponentAnimator::timerCallback()
if (! tasks.getUnchecked(i)->useTimeslice (elapsed))
{
tasks.remove (i);
sendChangeMessage (this);
sendChangeMessage();
}
}


+ 1
- 1
src/gui/components/layout/juce_TabbedButtonBar.cpp View File

@@ -307,7 +307,7 @@ void TabbedButtonBar::setCurrentTabIndex (int newIndex, const bool sendChangeMes
resized();
if (sendChangeMessage_)
sendChangeMessage (this);
sendChangeMessage();
currentTabChanged (newIndex, getCurrentTabName());
}


+ 2
- 2
src/gui/components/lookandfeel/juce_LookAndFeel.cpp View File

@@ -3097,8 +3097,8 @@ void LookAndFeel::drawGlassLozenge (Graphics& g,
}
{
const float leftIndent = flatOnLeft ? 0.0f : cs * 0.4f;
const float rightIndent = flatOnRight ? 0.0f : cs * 0.4f;
const float leftIndent = flatOnTop || flatOnLeft ? 0.0f : cs * 0.4f;
const float rightIndent = flatOnTop || flatOnRight ? 0.0f : cs * 0.4f;
Path highlight;
LookAndFeelHelpers::createRoundedPath (highlight,


+ 0
- 2
src/gui/components/properties/juce_SliderPropertyComponent.h View File

@@ -90,8 +90,6 @@ public:
/** @internal */
void refresh();
/** @internal */
void changeListenerCallback (void*);
/** @internal */
void sliderValueChanged (Slider*);
juce_UseDebuggingNewOperator


+ 2
- 2
src/gui/components/special/juce_AudioDeviceSelectorComponent.cpp View File

@@ -418,7 +418,7 @@ public:
resized();
}
void changeListenerCallback (void*)
void changeListenerCallback (ChangeBroadcaster*)
{
AudioIODevice* const currentDevice = setup.manager->getCurrentAudioDevice();
@@ -1059,7 +1059,7 @@ void AudioDeviceSelectorComponent::comboBoxChanged (ComboBox* comboBoxThatHasCha
}
}
void AudioDeviceSelectorComponent::changeListenerCallback (void*)
void AudioDeviceSelectorComponent::changeListenerCallback (ChangeBroadcaster*)
{
if (deviceTypeDropDown != 0)
{


+ 1
- 1
src/gui/components/special/juce_AudioDeviceSelectorComponent.h View File

@@ -86,7 +86,7 @@ public:
/** @internal */
void buttonClicked (Button*);
/** @internal */
void changeListenerCallback (void*);
void changeListenerCallback (ChangeBroadcaster*);
/** @internal */
void childBoundsChanged (Component*);


+ 1
- 1
src/gui/components/special/juce_ColourSelector.cpp View File

@@ -430,7 +430,7 @@ void ColourSelector::update()
if ((flags & showColourAtTop) != 0)
repaint (previewArea);
sendChangeMessage (this);
sendChangeMessage();
}
//==============================================================================


+ 3
- 2
src/gui/components/special/juce_ColourSelector.h View File

@@ -165,10 +165,11 @@ private:
ColourSelector (const ColourSelector&);
ColourSelector& operator= (const ColourSelector&);
// this constructor is here temporarily to prevent old code compiling, because the parameters
#if JUCE_CATCH_DEPRECATED_CODE_MISUSE
// This constructor is here temporarily to prevent old code compiling, because the parameters
// have changed - if you get an error here, update your code to use the new constructor instead..
// (xxx - note to self: remember to remove this at some point in the future)
ColourSelector (bool);
#endif
};


+ 3
- 3
src/gui/components/special/juce_MidiKeyboardComponent.cpp View File

@@ -151,7 +151,7 @@ void MidiKeyboardComponent::setLowestVisibleKey (int noteNumber)
if (noteNumber != firstKey)
{
firstKey = noteNumber;
sendChangeMessage (this);
sendChangeMessage();
resized();
}
}
@@ -598,7 +598,7 @@ void MidiKeyboardComponent::resized()
if (kx2 - kx1 <= w)
{
firstKey = rangeStart;
sendChangeMessage (this);
sendChangeMessage();
repaint();
}
}
@@ -641,7 +641,7 @@ void MidiKeyboardComponent::resized()
if (lastStartKey >= 0 && firstKey > lastStartKey)
{
firstKey = jlimit (rangeStart, rangeEnd, lastStartKey);
sendChangeMessage (this);
sendChangeMessage();
}
int newOffset = 0;


+ 5
- 0
src/gui/graphics/contexts/juce_Graphics.cpp View File

@@ -165,6 +165,11 @@ void Graphics::setOrigin (const int newOriginX, const int newOriginY)
context->setOrigin (newOriginX, newOriginY);
}
void Graphics::addTransform (const AffineTransform& transform)
{
context->addTransform (transform);
}
bool Graphics::clipRegionIntersects (const Rectangle<int>& area) const
{
return context->clipRegionIntersects (area);


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save