@@ -55211,8 +55211,6 @@ private: | |||||
TreeView::TreeView (const String& componentName) | TreeView::TreeView (const String& componentName) | ||||
: Component (componentName), | : Component (componentName), | ||||
rootItem (0), | rootItem (0), | ||||
dragInsertPointHighlight (0), | |||||
dragTargetGroupHighlight (0), | |||||
indentSize (24), | indentSize (24), | ||||
defaultOpenness (false), | defaultOpenness (false), | ||||
needsRecalculating (true), | needsRecalculating (true), | ||||
@@ -55230,8 +55228,6 @@ TreeView::~TreeView() | |||||
{ | { | ||||
if (rootItem != 0) | if (rootItem != 0) | ||||
rootItem->setOwnerView (0); | rootItem->setOwnerView (0); | ||||
deleteAllChildren(); | |||||
} | } | ||||
void TreeView::setRootItem (TreeViewItem* const newRootItem) | void TreeView::setRootItem (TreeViewItem* const newRootItem) | ||||
@@ -55691,8 +55687,8 @@ void TreeView::showDragHighlight (TreeViewItem* item, int insertIndex, int x, in | |||||
void TreeView::hideDragHighlight() throw() | void TreeView::hideDragHighlight() throw() | ||||
{ | { | ||||
deleteAndZero (dragInsertPointHighlight); | |||||
deleteAndZero (dragTargetGroupHighlight); | |||||
dragInsertPointHighlight = 0; | |||||
dragTargetGroupHighlight = 0; | |||||
} | } | ||||
TreeViewItem* TreeView::getInsertPosition (int& x, int& y, int& insertIndex, | TreeViewItem* TreeView::getInsertPosition (int& x, int& y, int& insertIndex, | ||||
@@ -57935,13 +57931,12 @@ FilenameComponent::FilenameComponent (const String& name, | |||||
wildcard (fileBrowserWildcard), | wildcard (fileBrowserWildcard), | ||||
enforcedSuffix (enforcedSuffix_) | enforcedSuffix (enforcedSuffix_) | ||||
{ | { | ||||
addAndMakeVisible (filenameBox = new ComboBox ("fn")); | |||||
filenameBox->setEditableText (canEditFilename); | |||||
filenameBox->addListener (this); | |||||
filenameBox->setTextWhenNothingSelected (textWhenNothingSelected); | |||||
filenameBox->setTextWhenNoChoicesAvailable (TRANS("(no recently seleced files)")); | |||||
addAndMakeVisible (&filenameBox); | |||||
filenameBox.setEditableText (canEditFilename); | |||||
filenameBox.addListener (this); | |||||
filenameBox.setTextWhenNothingSelected (textWhenNothingSelected); | |||||
filenameBox.setTextWhenNoChoicesAvailable (TRANS("(no recently seleced files)")); | |||||
browseButton = 0; | |||||
setBrowseButtonText ("..."); | setBrowseButtonText ("..."); | ||||
setCurrentFile (currentFile, true); | setCurrentFile (currentFile, true); | ||||
@@ -57949,7 +57944,6 @@ FilenameComponent::FilenameComponent (const String& name, | |||||
FilenameComponent::~FilenameComponent() | FilenameComponent::~FilenameComponent() | ||||
{ | { | ||||
deleteAllChildren(); | |||||
} | } | ||||
void FilenameComponent::paintOverChildren (Graphics& g) | void FilenameComponent::paintOverChildren (Graphics& g) | ||||
@@ -57963,7 +57957,7 @@ void FilenameComponent::paintOverChildren (Graphics& g) | |||||
void FilenameComponent::resized() | void FilenameComponent::resized() | ||||
{ | { | ||||
getLookAndFeel().layoutFilenameComponent (*this, filenameBox, browseButton); | |||||
getLookAndFeel().layoutFilenameComponent (*this, &filenameBox, browseButton); | |||||
} | } | ||||
void FilenameComponent::setBrowseButtonText (const String& newBrowseButtonText) | void FilenameComponent::setBrowseButtonText (const String& newBrowseButtonText) | ||||
@@ -57974,7 +57968,7 @@ void FilenameComponent::setBrowseButtonText (const String& newBrowseButtonText) | |||||
void FilenameComponent::lookAndFeelChanged() | void FilenameComponent::lookAndFeelChanged() | ||||
{ | { | ||||
deleteAndZero (browseButton); | |||||
browseButton = 0; | |||||
addAndMakeVisible (browseButton = getLookAndFeel().createFilenameComponentBrowseButton (browseButtonText)); | addAndMakeVisible (browseButton = getLookAndFeel().createFilenameComponentBrowseButton (browseButtonText)); | ||||
browseButton->setConnectedEdges (Button::ConnectedOnLeft); | browseButton->setConnectedEdges (Button::ConnectedOnLeft); | ||||
@@ -57986,7 +57980,7 @@ void FilenameComponent::lookAndFeelChanged() | |||||
void FilenameComponent::setTooltip (const String& newTooltip) | void FilenameComponent::setTooltip (const String& newTooltip) | ||||
{ | { | ||||
SettableTooltipClient::setTooltip (newTooltip); | SettableTooltipClient::setTooltip (newTooltip); | ||||
filenameBox->setTooltip (newTooltip); | |||||
filenameBox.setTooltip (newTooltip); | |||||
} | } | ||||
void FilenameComponent::setDefaultBrowseTarget (const File& newDefaultDirectory) | void FilenameComponent::setDefaultBrowseTarget (const File& newDefaultDirectory) | ||||
@@ -58044,7 +58038,7 @@ void FilenameComponent::fileDragExit (const StringArray&) | |||||
const File FilenameComponent::getCurrentFile() const | const File FilenameComponent::getCurrentFile() const | ||||
{ | { | ||||
File f (filenameBox->getText()); | |||||
File f (filenameBox.getText()); | |||||
if (enforcedSuffix.isNotEmpty()) | if (enforcedSuffix.isNotEmpty()) | ||||
f = f.withFileExtension (enforcedSuffix); | f = f.withFileExtension (enforcedSuffix); | ||||
@@ -58066,7 +58060,7 @@ void FilenameComponent::setCurrentFile (File newFile, | |||||
if (addToRecentlyUsedList) | if (addToRecentlyUsedList) | ||||
addRecentlyUsedFile (newFile); | addRecentlyUsedFile (newFile); | ||||
filenameBox->setText (lastFilename, true); | |||||
filenameBox.setText (lastFilename, true); | |||||
if (sendChangeNotification) | if (sendChangeNotification) | ||||
triggerAsyncUpdate(); | triggerAsyncUpdate(); | ||||
@@ -58075,15 +58069,15 @@ void FilenameComponent::setCurrentFile (File newFile, | |||||
void FilenameComponent::setFilenameIsEditable (const bool shouldBeEditable) | void FilenameComponent::setFilenameIsEditable (const bool shouldBeEditable) | ||||
{ | { | ||||
filenameBox->setEditableText (shouldBeEditable); | |||||
filenameBox.setEditableText (shouldBeEditable); | |||||
} | } | ||||
const StringArray FilenameComponent::getRecentlyUsedFilenames() const | const StringArray FilenameComponent::getRecentlyUsedFilenames() const | ||||
{ | { | ||||
StringArray names; | StringArray names; | ||||
for (int i = 0; i < filenameBox->getNumItems(); ++i) | |||||
names.add (filenameBox->getItemText (i)); | |||||
for (int i = 0; i < filenameBox.getNumItems(); ++i) | |||||
names.add (filenameBox.getItemText (i)); | |||||
return names; | return names; | ||||
} | } | ||||
@@ -58092,10 +58086,10 @@ void FilenameComponent::setRecentlyUsedFilenames (const StringArray& filenames) | |||||
{ | { | ||||
if (filenames != getRecentlyUsedFilenames()) | if (filenames != getRecentlyUsedFilenames()) | ||||
{ | { | ||||
filenameBox->clear(); | |||||
filenameBox.clear(); | |||||
for (int i = 0; i < jmin (filenames.size(), maxRecentFiles); ++i) | for (int i = 0; i < jmin (filenames.size(), maxRecentFiles); ++i) | ||||
filenameBox->addItem (filenames[i], i + 1); | |||||
filenameBox.addItem (filenames[i], i + 1); | |||||
} | } | ||||
} | } | ||||
@@ -61606,9 +61600,7 @@ ScrollBar::ScrollBar (const bool vertical_, | |||||
minimumDelayInMillisecs (10), | minimumDelayInMillisecs (10), | ||||
vertical (vertical_), | vertical (vertical_), | ||||
isDraggingThumb (false), | isDraggingThumb (false), | ||||
autohides (true), | |||||
upButton (0), | |||||
downButton (0) | |||||
autohides (true) | |||||
{ | { | ||||
setButtonVisibility (buttonsAreVisible); | setButtonVisibility (buttonsAreVisible); | ||||
@@ -61618,7 +61610,8 @@ ScrollBar::ScrollBar (const bool vertical_, | |||||
ScrollBar::~ScrollBar() | ScrollBar::~ScrollBar() | ||||
{ | { | ||||
deleteAllChildren(); | |||||
upButton = 0; | |||||
downButton = 0; | |||||
} | } | ||||
void ScrollBar::setRangeLimits (const Range<double>& newRangeLimit) | void ScrollBar::setRangeLimits (const Range<double>& newRangeLimit) | ||||
@@ -61768,9 +61761,7 @@ void ScrollBar::setOrientation (const bool shouldBeVertical) | |||||
void ScrollBar::setButtonVisibility (const bool buttonsAreVisible) | void ScrollBar::setButtonVisibility (const bool buttonsAreVisible) | ||||
{ | { | ||||
delete upButton; | |||||
upButton = 0; | upButton = 0; | ||||
delete downButton; | |||||
downButton = 0; | downButton = 0; | ||||
if (buttonsAreVisible) | if (buttonsAreVisible) | ||||
@@ -62605,8 +62596,7 @@ private: | |||||
TabbedButtonBar::TabbedButtonBar (const Orientation orientation_) | TabbedButtonBar::TabbedButtonBar (const Orientation orientation_) | ||||
: orientation (orientation_), | : orientation (orientation_), | ||||
currentTabIndex (-1), | |||||
extraTabsButton (0) | |||||
currentTabIndex (-1) | |||||
{ | { | ||||
setInterceptsMouseClicks (false, true); | setInterceptsMouseClicks (false, true); | ||||
addAndMakeVisible (behindFrontTab = new TabAreaBehindFrontButtonComponent (this)); | addAndMakeVisible (behindFrontTab = new TabAreaBehindFrontButtonComponent (this)); | ||||
@@ -62615,6 +62605,7 @@ TabbedButtonBar::TabbedButtonBar (const Orientation orientation_) | |||||
TabbedButtonBar::~TabbedButtonBar() | TabbedButtonBar::~TabbedButtonBar() | ||||
{ | { | ||||
extraTabsButton = 0; | |||||
deleteAllChildren(); | deleteAllChildren(); | ||||
} | } | ||||
@@ -62639,7 +62630,7 @@ void TabbedButtonBar::clearTabs() | |||||
tabColours.clear(); | tabColours.clear(); | ||||
currentTabIndex = -1; | currentTabIndex = -1; | ||||
deleteAndZero (extraTabsButton); | |||||
extraTabsButton = 0; | |||||
removeChildComponent (behindFrontTab); | removeChildComponent (behindFrontTab); | ||||
deleteAllChildren(); | deleteAllChildren(); | ||||
addChildComponent (behindFrontTab); | addChildComponent (behindFrontTab); | ||||
@@ -62784,7 +62775,7 @@ TabBarButton* TabbedButtonBar::getTabButton (const int index) const | |||||
void TabbedButtonBar::lookAndFeelChanged() | void TabbedButtonBar::lookAndFeelChanged() | ||||
{ | { | ||||
deleteAndZero (extraTabsButton); | |||||
extraTabsButton = 0; | |||||
resized(); | resized(); | ||||
} | } | ||||
@@ -62872,7 +62863,7 @@ void TabbedButtonBar::resized() | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
deleteAndZero (extraTabsButton); | |||||
extraTabsButton = 0; | |||||
} | } | ||||
int pos = 0; | int pos = 0; | ||||
@@ -62936,7 +62927,7 @@ void TabbedButtonBar::setTabBackgroundColour (const int tabIndex, const Colour& | |||||
void TabbedButtonBar::buttonClicked (Button* button) | void TabbedButtonBar::buttonClicked (Button* button) | ||||
{ | { | ||||
if (extraTabsButton == button) | |||||
if (button == extraTabsButton) | |||||
{ | { | ||||
PopupMenu m; | PopupMenu m; | ||||
@@ -70807,8 +70798,9 @@ BooleanPropertyComponent::BooleanPropertyComponent (const String& name, | |||||
onText (buttonTextWhenTrue), | onText (buttonTextWhenTrue), | ||||
offText (buttonTextWhenFalse) | offText (buttonTextWhenFalse) | ||||
{ | { | ||||
createButton(); | |||||
button->addButtonListener (this); | |||||
addAndMakeVisible (&button); | |||||
button.setClickingTogglesState (false); | |||||
button.addButtonListener (this); | |||||
} | } | ||||
BooleanPropertyComponent::BooleanPropertyComponent (const Value& valueToControl, | BooleanPropertyComponent::BooleanPropertyComponent (const Value& valueToControl, | ||||
@@ -70818,31 +70810,25 @@ BooleanPropertyComponent::BooleanPropertyComponent (const Value& valueToControl, | |||||
onText (buttonText), | onText (buttonText), | ||||
offText (buttonText) | offText (buttonText) | ||||
{ | { | ||||
createButton(); | |||||
button->setButtonText (buttonText); | |||||
button->getToggleStateValue().referTo (valueToControl); | |||||
button->setClickingTogglesState (true); | |||||
addAndMakeVisible (&button); | |||||
button.setClickingTogglesState (false); | |||||
button.setButtonText (buttonText); | |||||
button.getToggleStateValue().referTo (valueToControl); | |||||
button.setClickingTogglesState (true); | |||||
} | } | ||||
BooleanPropertyComponent::~BooleanPropertyComponent() | BooleanPropertyComponent::~BooleanPropertyComponent() | ||||
{ | { | ||||
deleteAllChildren(); | |||||
} | |||||
void BooleanPropertyComponent::createButton() | |||||
{ | |||||
addAndMakeVisible (button = new ToggleButton (String::empty)); | |||||
button->setClickingTogglesState (false); | |||||
} | } | ||||
void BooleanPropertyComponent::setState (const bool newState) | void BooleanPropertyComponent::setState (const bool newState) | ||||
{ | { | ||||
button->setToggleState (newState, true); | |||||
button.setToggleState (newState, true); | |||||
} | } | ||||
bool BooleanPropertyComponent::getState() const | bool BooleanPropertyComponent::getState() const | ||||
{ | { | ||||
return button->getToggleState(); | |||||
return button.getToggleState(); | |||||
} | } | ||||
void BooleanPropertyComponent::paint (Graphics& g) | void BooleanPropertyComponent::paint (Graphics& g) | ||||
@@ -70850,16 +70836,16 @@ void BooleanPropertyComponent::paint (Graphics& g) | |||||
PropertyComponent::paint (g); | PropertyComponent::paint (g); | ||||
g.setColour (Colours::white); | g.setColour (Colours::white); | ||||
g.fillRect (button->getBounds()); | |||||
g.fillRect (button.getBounds()); | |||||
g.setColour (findColour (ComboBox::outlineColourId)); | g.setColour (findColour (ComboBox::outlineColourId)); | ||||
g.drawRect (button->getBounds()); | |||||
g.drawRect (button.getBounds()); | |||||
} | } | ||||
void BooleanPropertyComponent::refresh() | void BooleanPropertyComponent::refresh() | ||||
{ | { | ||||
button->setToggleState (getState(), false); | |||||
button->setButtonText (button->getToggleState() ? onText : offText); | |||||
button.setToggleState (getState(), false); | |||||
button.setButtonText (button.getToggleState() ? onText : offText); | |||||
} | } | ||||
void BooleanPropertyComponent::buttonClicked (Button*) | void BooleanPropertyComponent::buttonClicked (Button*) | ||||
@@ -70878,19 +70864,18 @@ ButtonPropertyComponent::ButtonPropertyComponent (const String& name, | |||||
const bool triggerOnMouseDown) | const bool triggerOnMouseDown) | ||||
: PropertyComponent (name) | : PropertyComponent (name) | ||||
{ | { | ||||
addAndMakeVisible (button = new TextButton (String::empty)); | |||||
button->setTriggeredOnMouseDown (triggerOnMouseDown); | |||||
button->addButtonListener (this); | |||||
addAndMakeVisible (&button); | |||||
button.setTriggeredOnMouseDown (triggerOnMouseDown); | |||||
button.addButtonListener (this); | |||||
} | } | ||||
ButtonPropertyComponent::~ButtonPropertyComponent() | ButtonPropertyComponent::~ButtonPropertyComponent() | ||||
{ | { | ||||
deleteAllChildren(); | |||||
} | } | ||||
void ButtonPropertyComponent::refresh() | void ButtonPropertyComponent::refresh() | ||||
{ | { | ||||
button->setButtonText (getButtonText()); | |||||
button.setButtonText (getButtonText()); | |||||
} | } | ||||
void ButtonPropertyComponent::buttonClicked (Button*) | void ButtonPropertyComponent::buttonClicked (Button*) | ||||
@@ -70948,7 +70933,6 @@ protected: | |||||
ChoicePropertyComponent::ChoicePropertyComponent (const String& name) | ChoicePropertyComponent::ChoicePropertyComponent (const String& name) | ||||
: PropertyComponent (name), | : PropertyComponent (name), | ||||
comboBox (0), | |||||
isCustomClass (true) | isCustomClass (true) | ||||
{ | { | ||||
} | } | ||||
@@ -70959,7 +70943,6 @@ ChoicePropertyComponent::ChoicePropertyComponent (const Value& valueToControl, | |||||
const Array <var>& correspondingValues) | const Array <var>& correspondingValues) | ||||
: PropertyComponent (name), | : PropertyComponent (name), | ||||
choices (choices_), | choices (choices_), | ||||
comboBox (0), | |||||
isCustomClass (false) | isCustomClass (false) | ||||
{ | { | ||||
// The array of corresponding values must contain one value for each of the items in | // The array of corresponding values must contain one value for each of the items in | ||||
@@ -70968,27 +70951,26 @@ ChoicePropertyComponent::ChoicePropertyComponent (const Value& valueToControl, | |||||
createComboBox(); | createComboBox(); | ||||
comboBox->getSelectedIdAsValue().referTo (Value (new RemapperValueSource (valueToControl, correspondingValues))); | |||||
comboBox.getSelectedIdAsValue().referTo (Value (new RemapperValueSource (valueToControl, correspondingValues))); | |||||
} | } | ||||
ChoicePropertyComponent::~ChoicePropertyComponent() | ChoicePropertyComponent::~ChoicePropertyComponent() | ||||
{ | { | ||||
deleteAllChildren(); | |||||
} | } | ||||
void ChoicePropertyComponent::createComboBox() | void ChoicePropertyComponent::createComboBox() | ||||
{ | { | ||||
addAndMakeVisible (comboBox = new ComboBox()); | |||||
addAndMakeVisible (&comboBox); | |||||
for (int i = 0; i < choices.size(); ++i) | for (int i = 0; i < choices.size(); ++i) | ||||
{ | { | ||||
if (choices[i].isNotEmpty()) | if (choices[i].isNotEmpty()) | ||||
comboBox->addItem (choices[i], i + 1); | |||||
comboBox.addItem (choices[i], i + 1); | |||||
else | else | ||||
comboBox->addSeparator(); | |||||
comboBox.addSeparator(); | |||||
} | } | ||||
comboBox->setEditableText (false); | |||||
comboBox.setEditableText (false); | |||||
} | } | ||||
void ChoicePropertyComponent::setIndex (const int /*newIndex*/) | void ChoicePropertyComponent::setIndex (const int /*newIndex*/) | ||||
@@ -71011,13 +70993,13 @@ void ChoicePropertyComponent::refresh() | |||||
{ | { | ||||
if (isCustomClass) | if (isCustomClass) | ||||
{ | { | ||||
if (comboBox == 0) | |||||
if (! comboBox.isVisible()) | |||||
{ | { | ||||
createComboBox(); | createComboBox(); | ||||
comboBox->addListener (this); | |||||
comboBox.addListener (this); | |||||
} | } | ||||
comboBox->setSelectedId (getIndex() + 1, true); | |||||
comboBox.setSelectedId (getIndex() + 1, true); | |||||
} | } | ||||
} | } | ||||
@@ -71025,7 +71007,7 @@ void ChoicePropertyComponent::comboBoxChanged (ComboBox*) | |||||
{ | { | ||||
if (isCustomClass) | if (isCustomClass) | ||||
{ | { | ||||
const int newIndex = comboBox->getSelectedId() - 1; | |||||
const int newIndex = comboBox.getSelectedId() - 1; | |||||
if (newIndex != getIndex()) | if (newIndex != getIndex()) | ||||
setIndex (newIndex); | setIndex (newIndex); | ||||
@@ -71266,15 +71248,14 @@ PropertyPanel::PropertyPanel() | |||||
{ | { | ||||
messageWhenEmpty = TRANS("(nothing selected)"); | messageWhenEmpty = TRANS("(nothing selected)"); | ||||
addAndMakeVisible (viewport = new Viewport()); | |||||
viewport->setViewedComponent (propertyHolderComponent = new PropertyHolderComponent()); | |||||
viewport->setFocusContainer (true); | |||||
addAndMakeVisible (&viewport); | |||||
viewport.setViewedComponent (propertyHolderComponent = new PropertyHolderComponent()); | |||||
viewport.setFocusContainer (true); | |||||
} | } | ||||
PropertyPanel::~PropertyPanel() | PropertyPanel::~PropertyPanel() | ||||
{ | { | ||||
clear(); | clear(); | ||||
deleteAllChildren(); | |||||
} | } | ||||
void PropertyPanel::paint (Graphics& g) | void PropertyPanel::paint (Graphics& g) | ||||
@@ -71290,7 +71271,7 @@ void PropertyPanel::paint (Graphics& g) | |||||
void PropertyPanel::resized() | void PropertyPanel::resized() | ||||
{ | { | ||||
viewport->setBounds (0, 0, getWidth(), getHeight()); | |||||
viewport.setBounds (0, 0, getWidth(), getHeight()); | |||||
updatePropHolderLayout(); | updatePropHolderLayout(); | ||||
} | } | ||||
@@ -71332,10 +71313,10 @@ void PropertyPanel::addSection (const String& sectionTitle, | |||||
void PropertyPanel::updatePropHolderLayout() const | void PropertyPanel::updatePropHolderLayout() const | ||||
{ | { | ||||
const int maxWidth = viewport->getMaximumVisibleWidth(); | |||||
const int maxWidth = viewport.getMaximumVisibleWidth(); | |||||
propertyHolderComponent->updateLayout (maxWidth); | propertyHolderComponent->updateLayout (maxWidth); | ||||
const int newMaxWidth = viewport->getMaximumVisibleWidth(); | |||||
const int newMaxWidth = viewport.getMaximumVisibleWidth(); | |||||
if (maxWidth != newMaxWidth) | if (maxWidth != newMaxWidth) | ||||
{ | { | ||||
// need to do this twice because of scrollbars changing the size, etc. | // need to do this twice because of scrollbars changing the size, etc. | ||||
@@ -71429,7 +71410,7 @@ XmlElement* PropertyPanel::getOpennessState() const | |||||
{ | { | ||||
XmlElement* const xml = new XmlElement ("PROPERTYPANELSTATE"); | XmlElement* const xml = new XmlElement ("PROPERTYPANELSTATE"); | ||||
xml->setAttribute ("scrollPos", viewport->getViewPositionY()); | |||||
xml->setAttribute ("scrollPos", viewport.getViewPositionY()); | |||||
const StringArray sections (getSectionNames()); | const StringArray sections (getSectionNames()); | ||||
@@ -71458,8 +71439,8 @@ void PropertyPanel::restoreOpennessState (const XmlElement& xml) | |||||
e->getBoolAttribute ("open")); | e->getBoolAttribute ("open")); | ||||
} | } | ||||
viewport->setViewPosition (viewport->getViewPositionX(), | |||||
xml.getIntAttribute ("scrollPos", viewport->getViewPositionY())); | |||||
viewport.setViewPosition (viewport.getViewPositionX(), | |||||
xml.getIntAttribute ("scrollPos", viewport.getViewPositionY())); | |||||
} | } | ||||
} | } | ||||
@@ -71491,13 +71472,13 @@ SliderPropertyComponent::SliderPropertyComponent (const String& name, | |||||
const double skewFactor) | const double skewFactor) | ||||
: PropertyComponent (name) | : PropertyComponent (name) | ||||
{ | { | ||||
addAndMakeVisible (slider = new Slider (name)); | |||||
addAndMakeVisible (&slider); | |||||
slider->setRange (rangeMin, rangeMax, interval); | |||||
slider->setSkewFactor (skewFactor); | |||||
slider->setSliderStyle (Slider::LinearBar); | |||||
slider.setRange (rangeMin, rangeMax, interval); | |||||
slider.setSkewFactor (skewFactor); | |||||
slider.setSliderStyle (Slider::LinearBar); | |||||
slider->addListener (this); | |||||
slider.addListener (this); | |||||
} | } | ||||
SliderPropertyComponent::SliderPropertyComponent (const Value& valueToControl, | SliderPropertyComponent::SliderPropertyComponent (const Value& valueToControl, | ||||
@@ -71508,18 +71489,17 @@ SliderPropertyComponent::SliderPropertyComponent (const Value& valueToControl, | |||||
const double skewFactor) | const double skewFactor) | ||||
: PropertyComponent (name) | : PropertyComponent (name) | ||||
{ | { | ||||
addAndMakeVisible (slider = new Slider (name)); | |||||
addAndMakeVisible (&slider); | |||||
slider->setRange (rangeMin, rangeMax, interval); | |||||
slider->setSkewFactor (skewFactor); | |||||
slider->setSliderStyle (Slider::LinearBar); | |||||
slider.setRange (rangeMin, rangeMax, interval); | |||||
slider.setSkewFactor (skewFactor); | |||||
slider.setSliderStyle (Slider::LinearBar); | |||||
slider->getValueObject().referTo (valueToControl); | |||||
slider.getValueObject().referTo (valueToControl); | |||||
} | } | ||||
SliderPropertyComponent::~SliderPropertyComponent() | SliderPropertyComponent::~SliderPropertyComponent() | ||||
{ | { | ||||
deleteAllChildren(); | |||||
} | } | ||||
void SliderPropertyComponent::setValue (const double /*newValue*/) | void SliderPropertyComponent::setValue (const double /*newValue*/) | ||||
@@ -71528,18 +71508,18 @@ void SliderPropertyComponent::setValue (const double /*newValue*/) | |||||
double SliderPropertyComponent::getValue() const | double SliderPropertyComponent::getValue() const | ||||
{ | { | ||||
return slider->getValue(); | |||||
return slider.getValue(); | |||||
} | } | ||||
void SliderPropertyComponent::refresh() | void SliderPropertyComponent::refresh() | ||||
{ | { | ||||
slider->setValue (getValue(), false); | |||||
slider.setValue (getValue(), false); | |||||
} | } | ||||
void SliderPropertyComponent::sliderValueChanged (Slider*) | void SliderPropertyComponent::sliderValueChanged (Slider*) | ||||
{ | { | ||||
if (getValue() != slider->getValue()) | |||||
setValue (slider->getValue()); | |||||
if (getValue() != slider.getValue()) | |||||
setValue (slider.getValue()); | |||||
} | } | ||||
END_JUCE_NAMESPACE | END_JUCE_NAMESPACE | ||||
@@ -71836,23 +71816,6 @@ public: | |||||
: type (type_), | : type (type_), | ||||
setup (setup_) | setup (setup_) | ||||
{ | { | ||||
sampleRateDropDown = 0; | |||||
sampleRateLabel = 0; | |||||
bufferSizeDropDown = 0; | |||||
bufferSizeLabel = 0; | |||||
outputDeviceDropDown = 0; | |||||
outputDeviceLabel = 0; | |||||
inputDeviceDropDown = 0; | |||||
inputDeviceLabel = 0; | |||||
testButton = 0; | |||||
inputLevelMeter = 0; | |||||
showUIButton = 0; | |||||
inputChanList = 0; | |||||
outputChanList = 0; | |||||
inputChanLabel = 0; | |||||
outputChanLabel = 0; | |||||
showAdvancedSettingsButton = 0; | |||||
if (hideAdvancedOptionsWithButton) | if (hideAdvancedOptionsWithButton) | ||||
{ | { | ||||
addAndMakeVisible (showAdvancedSettingsButton = new TextButton (TRANS("Show advanced settings..."))); | addAndMakeVisible (showAdvancedSettingsButton = new TextButton (TRANS("Show advanced settings..."))); | ||||
@@ -71868,17 +71831,6 @@ public: | |||||
~AudioDeviceSettingsPanel() | ~AudioDeviceSettingsPanel() | ||||
{ | { | ||||
setup.manager->removeChangeListener (this); | setup.manager->removeChangeListener (this); | ||||
deleteAndZero (outputDeviceLabel); | |||||
deleteAndZero (inputDeviceLabel); | |||||
deleteAndZero (sampleRateLabel); | |||||
deleteAndZero (bufferSizeLabel); | |||||
deleteAndZero (showUIButton); | |||||
deleteAndZero (inputChanLabel); | |||||
deleteAndZero (outputChanLabel); | |||||
deleteAndZero (showAdvancedSettingsButton); | |||||
deleteAllChildren(); | |||||
} | } | ||||
void resized() | void resized() | ||||
@@ -72052,7 +72004,7 @@ public: | |||||
{ | { | ||||
AudioIODevice* const currentDevice = setup.manager->getCurrentAudioDevice(); | AudioIODevice* const currentDevice = setup.manager->getCurrentAudioDevice(); | ||||
deleteAndZero (showUIButton); | |||||
showUIButton = 0; | |||||
if (currentDevice != 0 && currentDevice->hasControlPanel()) | if (currentDevice != 0 && currentDevice->hasControlPanel()) | ||||
{ | { | ||||
@@ -72131,8 +72083,8 @@ public: | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
deleteAndZero (outputChanLabel); | |||||
deleteAndZero (outputChanList); | |||||
outputChanLabel = 0; | |||||
outputChanList = 0; | |||||
} | } | ||||
if (setup.maxNumInputChannels > 0 | if (setup.maxNumInputChannels > 0 | ||||
@@ -72151,8 +72103,8 @@ public: | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
deleteAndZero (inputChanLabel); | |||||
deleteAndZero (inputChanList); | |||||
inputChanLabel = 0; | |||||
inputChanList = 0; | |||||
} | } | ||||
// sample rate.. | // sample rate.. | ||||
@@ -72162,7 +72114,6 @@ public: | |||||
addAndMakeVisible (sampleRateDropDown = new ComboBox (String::empty)); | addAndMakeVisible (sampleRateDropDown = new ComboBox (String::empty)); | ||||
sampleRateDropDown->addListener (this); | sampleRateDropDown->addListener (this); | ||||
delete sampleRateLabel; | |||||
sampleRateLabel = new Label (String::empty, TRANS ("sample rate:")); | sampleRateLabel = new Label (String::empty, TRANS ("sample rate:")); | ||||
sampleRateLabel->attachToComponent (sampleRateDropDown, true); | sampleRateLabel->attachToComponent (sampleRateDropDown, true); | ||||
} | } | ||||
@@ -72191,7 +72142,6 @@ public: | |||||
addAndMakeVisible (bufferSizeDropDown = new ComboBox (String::empty)); | addAndMakeVisible (bufferSizeDropDown = new ComboBox (String::empty)); | ||||
bufferSizeDropDown->addListener (this); | bufferSizeDropDown->addListener (this); | ||||
delete bufferSizeLabel; | |||||
bufferSizeLabel = new Label (String::empty, TRANS ("audio buffer size:")); | bufferSizeLabel = new Label (String::empty, TRANS ("audio buffer size:")); | ||||
bufferSizeLabel->attachToComponent (bufferSizeDropDown, true); | bufferSizeLabel->attachToComponent (bufferSizeDropDown, true); | ||||
} | } | ||||
@@ -72222,10 +72172,10 @@ public: | |||||
{ | { | ||||
jassert (setup.manager->getCurrentAudioDevice() == 0); // not the correct device type! | jassert (setup.manager->getCurrentAudioDevice() == 0); // not the correct device type! | ||||
deleteAndZero (sampleRateLabel); | |||||
deleteAndZero (bufferSizeLabel); | |||||
deleteAndZero (sampleRateDropDown); | |||||
deleteAndZero (bufferSizeDropDown); | |||||
sampleRateLabel = 0; | |||||
bufferSizeLabel = 0; | |||||
sampleRateDropDown = 0; | |||||
bufferSizeDropDown = 0; | |||||
if (outputDeviceDropDown != 0) | if (outputDeviceDropDown != 0) | ||||
outputDeviceDropDown->setSelectedId (-1, true); | outputDeviceDropDown->setSelectedId (-1, true); | ||||
@@ -72242,20 +72192,11 @@ private: | |||||
AudioIODeviceType* const type; | AudioIODeviceType* const type; | ||||
const AudioIODeviceType::DeviceSetupDetails setup; | const AudioIODeviceType::DeviceSetupDetails setup; | ||||
ComboBox* outputDeviceDropDown; | |||||
ComboBox* inputDeviceDropDown; | |||||
ComboBox* sampleRateDropDown; | |||||
ComboBox* bufferSizeDropDown; | |||||
Label* outputDeviceLabel; | |||||
Label* inputDeviceLabel; | |||||
Label* sampleRateLabel; | |||||
Label* bufferSizeLabel; | |||||
Label* inputChanLabel; | |||||
Label* outputChanLabel; | |||||
TextButton* testButton; | |||||
Component* inputLevelMeter; | |||||
TextButton* showUIButton; | |||||
TextButton* showAdvancedSettingsButton; | |||||
ScopedPointer<ComboBox> outputDeviceDropDown, inputDeviceDropDown, sampleRateDropDown, bufferSizeDropDown; | |||||
ScopedPointer<Label> outputDeviceLabel, inputDeviceLabel, sampleRateLabel, bufferSizeLabel, inputChanLabel, outputChanLabel; | |||||
ScopedPointer<TextButton> testButton; | |||||
ScopedPointer<Component> inputLevelMeter; | |||||
ScopedPointer<TextButton> showUIButton, showAdvancedSettingsButton; | |||||
void showCorrectDeviceName (ComboBox* const box, const bool isInput) | void showCorrectDeviceName (ComboBox* const box, const bool isInput) | ||||
{ | { | ||||
@@ -72553,8 +72494,7 @@ public: | |||||
}; | }; | ||||
private: | private: | ||||
ChannelSelectorListBox* inputChanList; | |||||
ChannelSelectorListBox* outputChanList; | |||||
ScopedPointer<ChannelSelectorListBox> inputChanList, outputChanList; | |||||
AudioDeviceSettingsPanel (const AudioDeviceSettingsPanel&); | AudioDeviceSettingsPanel (const AudioDeviceSettingsPanel&); | ||||
AudioDeviceSettingsPanel& operator= (const AudioDeviceSettingsPanel&); | AudioDeviceSettingsPanel& operator= (const AudioDeviceSettingsPanel&); | ||||
@@ -72572,7 +72512,6 @@ AudioDeviceSelectorComponent::AudioDeviceSelectorComponent (AudioDeviceManager& | |||||
: deviceManager (deviceManager_), | : deviceManager (deviceManager_), | ||||
deviceTypeDropDown (0), | deviceTypeDropDown (0), | ||||
deviceTypeDropDownLabel (0), | deviceTypeDropDownLabel (0), | ||||
audioDeviceSettingsComp (0), | |||||
minOutputChannels (minOutputChannels_), | minOutputChannels (minOutputChannels_), | ||||
maxOutputChannels (maxOutputChannels_), | maxOutputChannels (maxOutputChannels_), | ||||
minInputChannels (minInputChannels_), | minInputChannels (minInputChannels_), | ||||
@@ -72640,7 +72579,6 @@ AudioDeviceSelectorComponent::AudioDeviceSelectorComponent (AudioDeviceManager& | |||||
AudioDeviceSelectorComponent::~AudioDeviceSelectorComponent() | AudioDeviceSelectorComponent::~AudioDeviceSelectorComponent() | ||||
{ | { | ||||
deviceManager.removeChangeListener (this); | deviceManager.removeChangeListener (this); | ||||
deleteAllChildren(); | |||||
} | } | ||||
void AudioDeviceSelectorComponent::resized() | void AudioDeviceSelectorComponent::resized() | ||||
@@ -72702,7 +72640,7 @@ void AudioDeviceSelectorComponent::comboBoxChanged (ComboBox* comboBoxThatHasCha | |||||
if (type != 0) | if (type != 0) | ||||
{ | { | ||||
deleteAndZero (audioDeviceSettingsComp); | |||||
audioDeviceSettingsComp = 0; | |||||
deviceManager.setCurrentAudioDeviceType (type->getTypeName(), true); | deviceManager.setCurrentAudioDeviceType (type->getTypeName(), true); | ||||
@@ -72726,8 +72664,7 @@ void AudioDeviceSelectorComponent::changeListenerCallback (void*) | |||||
|| audioDeviceSettingsCompType != deviceManager.getCurrentAudioDeviceType()) | || audioDeviceSettingsCompType != deviceManager.getCurrentAudioDeviceType()) | ||||
{ | { | ||||
audioDeviceSettingsCompType = deviceManager.getCurrentAudioDeviceType(); | audioDeviceSettingsCompType = deviceManager.getCurrentAudioDeviceType(); | ||||
deleteAndZero (audioDeviceSettingsComp); | |||||
audioDeviceSettingsComp = 0; | |||||
AudioIODeviceType* const type | AudioIODeviceType* const type | ||||
= deviceManager.getAvailableDeviceTypes() [deviceTypeDropDown == 0 | = deviceManager.getAvailableDeviceTypes() [deviceTypeDropDown == 0 | ||||
@@ -250281,7 +250218,7 @@ const String DSoundAudioIODevice::openDevice (const BigInteger& inputChannels, | |||||
enabledInputs.getHighestBit() + 1 - inChannels.size(), | enabledInputs.getHighestBit() + 1 - inChannels.size(), | ||||
false); | false); | ||||
inputBuffers.setSize (enabledInputs.countNumberOfSetBits(), bufferSizeSamples); | |||||
inputBuffers.setSize (jmax (1, enabledInputs.countNumberOfSetBits()), bufferSizeSamples); | |||||
int i, numIns = 0; | int i, numIns = 0; | ||||
for (i = 0; i <= enabledInputs.getHighestBit(); i += 2) | for (i = 0; i <= enabledInputs.getHighestBit(); i += 2) | ||||
@@ -250306,7 +250243,7 @@ const String DSoundAudioIODevice::openDevice (const BigInteger& inputChannels, | |||||
enabledOutputs.getHighestBit() + 1 - outChannels.size(), | enabledOutputs.getHighestBit() + 1 - outChannels.size(), | ||||
false); | false); | ||||
outputBuffers.setSize (enabledOutputs.countNumberOfSetBits(), bufferSizeSamples); | |||||
outputBuffers.setSize (jmax (1, enabledOutputs.countNumberOfSetBits()), bufferSizeSamples); | |||||
int numOuts = 0; | int numOuts = 0; | ||||
for (i = 0; i <= enabledOutputs.getHighestBit(); i += 2) | for (i = 0; i <= enabledOutputs.getHighestBit(); i += 2) | ||||
@@ -274893,7 +274830,6 @@ public: | |||||
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 | #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 | ||||
audioProcID (0), | audioProcID (0), | ||||
#endif | #endif | ||||
inputDevice (0), | |||||
isSlaveDevice (false), | isSlaveDevice (false), | ||||
deviceID (id), | deviceID (id), | ||||
started (false), | started (false), | ||||
@@ -274927,7 +274863,6 @@ public: | |||||
AudioObjectRemovePropertyListener (deviceID, &pa, deviceListenerProc, this); | AudioObjectRemovePropertyListener (deviceID, &pa, deviceListenerProc, this); | ||||
stop (false); | stop (false); | ||||
delete inputDevice; | |||||
} | } | ||||
void allocateTempBuffers() | void allocateTempBuffers() | ||||
@@ -275589,7 +275524,7 @@ public: | |||||
AudioDeviceIOProcID audioProcID; | AudioDeviceIOProcID audioProcID; | ||||
#endif | #endif | ||||
CoreAudioInternal* inputDevice; | |||||
ScopedPointer<CoreAudioInternal> inputDevice; | |||||
bool isSlaveDevice; | bool isSlaveDevice; | ||||
private: | private: | ||||
@@ -275689,7 +275624,6 @@ public: | |||||
isOpen_ (false), | isOpen_ (false), | ||||
isStarted (false) | isStarted (false) | ||||
{ | { | ||||
internal = 0; | |||||
CoreAudioInternal* device = 0; | CoreAudioInternal* device = 0; | ||||
if (outputDeviceId == 0 || outputDeviceId == inputDeviceId) | if (outputDeviceId == 0 || outputDeviceId == inputDeviceId) | ||||
@@ -275729,8 +275663,6 @@ public: | |||||
pa.mElement = kAudioObjectPropertyElementWildcard; | pa.mElement = kAudioObjectPropertyElementWildcard; | ||||
AudioObjectRemovePropertyListener (kAudioObjectSystemObject, &pa, hardwareListenerProc, internal); | AudioObjectRemovePropertyListener (kAudioObjectSystemObject, &pa, hardwareListenerProc, internal); | ||||
delete internal; | |||||
} | } | ||||
const StringArray getOutputChannelNames() | const StringArray getOutputChannelNames() | ||||
@@ -275899,7 +275831,7 @@ public: | |||||
juce_UseDebuggingNewOperator | juce_UseDebuggingNewOperator | ||||
private: | private: | ||||
CoreAudioInternal* internal; | |||||
ScopedPointer<CoreAudioInternal> internal; | |||||
bool isOpen_, isStarted; | bool isOpen_, isStarted; | ||||
String lastError; | String lastError; | ||||
@@ -64,7 +64,7 @@ | |||||
*/ | */ | ||||
#define JUCE_MAJOR_VERSION 1 | #define JUCE_MAJOR_VERSION 1 | ||||
#define JUCE_MINOR_VERSION 52 | #define JUCE_MINOR_VERSION 52 | ||||
#define JUCE_BUILDNUMBER 15 | |||||
#define JUCE_BUILDNUMBER 16 | |||||
/** Current Juce version number. | /** Current Juce version number. | ||||
@@ -34478,8 +34478,8 @@ private: | |||||
int initialDelayInMillisecs, repeatDelayInMillisecs, minimumDelayInMillisecs; | int initialDelayInMillisecs, repeatDelayInMillisecs, minimumDelayInMillisecs; | ||||
bool vertical, isDraggingThumb, autohides; | bool vertical, isDraggingThumb, autohides; | ||||
class ScrollbarButton; | class ScrollbarButton; | ||||
ScrollbarButton* upButton; | |||||
ScrollbarButton* downButton; | |||||
friend class ScopedPointer<ScrollbarButton>; | |||||
ScopedPointer<ScrollbarButton> upButton, downButton; | |||||
ListenerList <ScrollBarListener> listeners; | ListenerList <ScrollBarListener> listeners; | ||||
void updateThumbPosition(); | void updateThumbPosition(); | ||||
@@ -40731,7 +40731,7 @@ public: | |||||
juce_UseDebuggingNewOperator | juce_UseDebuggingNewOperator | ||||
private: | private: | ||||
Viewport* viewport; | |||||
Viewport viewport; | |||||
class PropertyHolderComponent; | class PropertyHolderComponent; | ||||
PropertyHolderComponent* propertyHolderComponent; | PropertyHolderComponent* propertyHolderComponent; | ||||
String messageWhenEmpty; | String messageWhenEmpty; | ||||
@@ -47821,13 +47821,16 @@ private: | |||||
friend class TreeViewItem; | friend class TreeViewItem; | ||||
friend class TreeViewContentComponent; | friend class TreeViewContentComponent; | ||||
class TreeViewport; | class TreeViewport; | ||||
TreeViewport* viewport; | |||||
CriticalSection nodeAlterationLock; | |||||
TreeViewItem* rootItem; | |||||
class InsertPointHighlight; | class InsertPointHighlight; | ||||
class TargetGroupHighlight; | class TargetGroupHighlight; | ||||
InsertPointHighlight* dragInsertPointHighlight; | |||||
TargetGroupHighlight* dragTargetGroupHighlight; | |||||
friend class ScopedPointer<TreeViewport>; | |||||
friend class ScopedPointer<InsertPointHighlight>; | |||||
friend class ScopedPointer<TargetGroupHighlight>; | |||||
ScopedPointer<TreeViewport> viewport; | |||||
CriticalSection nodeAlterationLock; | |||||
TreeViewItem* rootItem; | |||||
ScopedPointer<InsertPointHighlight> dragInsertPointHighlight; | |||||
ScopedPointer<TargetGroupHighlight> dragTargetGroupHighlight; | |||||
int indentSize; | int indentSize; | ||||
bool defaultOpenness : 1; | bool defaultOpenness : 1; | ||||
bool needsRecalculating : 1; | bool needsRecalculating : 1; | ||||
@@ -50282,9 +50285,9 @@ public: | |||||
private: | private: | ||||
ComboBox* filenameBox; | |||||
ComboBox filenameBox; | |||||
String lastFilename; | String lastFilename; | ||||
Button* browseButton; | |||||
ScopedPointer<Button> browseButton; | |||||
int maxRecentFiles; | int maxRecentFiles; | ||||
bool isDir, isSaving, isFileDragOver; | bool isDir, isSaving, isFileDragOver; | ||||
String wildcard, enforcedSuffix, browseButtonText; | String wildcard, enforcedSuffix, browseButtonText; | ||||
@@ -51366,7 +51369,7 @@ private: | |||||
Array <Colour> tabColours; | Array <Colour> tabColours; | ||||
int currentTabIndex; | int currentTabIndex; | ||||
Component* behindFrontTab; | Component* behindFrontTab; | ||||
Button* extraTabsButton; | |||||
ScopedPointer<Button> extraTabsButton; | |||||
TabbedButtonBar (const TabbedButtonBar&); | TabbedButtonBar (const TabbedButtonBar&); | ||||
TabbedButtonBar& operator= (const TabbedButtonBar&); | TabbedButtonBar& operator= (const TabbedButtonBar&); | ||||
@@ -54836,11 +54839,9 @@ public: | |||||
juce_UseDebuggingNewOperator | juce_UseDebuggingNewOperator | ||||
private: | private: | ||||
ToggleButton* button; | |||||
ToggleButton button; | |||||
String onText, offText; | String onText, offText; | ||||
void createButton(); | |||||
BooleanPropertyComponent (const BooleanPropertyComponent&); | BooleanPropertyComponent (const BooleanPropertyComponent&); | ||||
BooleanPropertyComponent& operator= (const BooleanPropertyComponent&); | BooleanPropertyComponent& operator= (const BooleanPropertyComponent&); | ||||
}; | }; | ||||
@@ -54898,7 +54899,7 @@ public: | |||||
juce_UseDebuggingNewOperator | juce_UseDebuggingNewOperator | ||||
private: | private: | ||||
TextButton* button; | |||||
TextButton button; | |||||
ButtonPropertyComponent (const ButtonPropertyComponent&); | ButtonPropertyComponent (const ButtonPropertyComponent&); | ||||
ButtonPropertyComponent& operator= (const ButtonPropertyComponent&); | ButtonPropertyComponent& operator= (const ButtonPropertyComponent&); | ||||
@@ -54998,7 +54999,7 @@ protected: | |||||
StringArray choices; | StringArray choices; | ||||
private: | private: | ||||
ComboBox* comboBox; | |||||
ComboBox comboBox; | |||||
bool isCustomClass; | bool isCustomClass; | ||||
class RemapperValueSource; | class RemapperValueSource; | ||||
@@ -55092,7 +55093,7 @@ protected: | |||||
Your subclass has access to this in case it needs to customise it in some way. | Your subclass has access to this in case it needs to customise it in some way. | ||||
*/ | */ | ||||
Slider* slider; | |||||
Slider slider; | |||||
SliderPropertyComponent (const SliderPropertyComponent&); | SliderPropertyComponent (const SliderPropertyComponent&); | ||||
SliderPropertyComponent& operator= (const SliderPropertyComponent&); | SliderPropertyComponent& operator= (const SliderPropertyComponent&); | ||||
@@ -55356,19 +55357,19 @@ public: | |||||
private: | private: | ||||
AudioDeviceManager& deviceManager; | AudioDeviceManager& deviceManager; | ||||
ComboBox* deviceTypeDropDown; | |||||
Label* deviceTypeDropDownLabel; | |||||
Component* audioDeviceSettingsComp; | |||||
ScopedPointer<ComboBox> deviceTypeDropDown; | |||||
ScopedPointer<Label> deviceTypeDropDownLabel; | |||||
ScopedPointer<Component> audioDeviceSettingsComp; | |||||
String audioDeviceSettingsCompType; | String audioDeviceSettingsCompType; | ||||
const int minOutputChannels, maxOutputChannels, minInputChannels, maxInputChannels; | const int minOutputChannels, maxOutputChannels, minInputChannels, maxInputChannels; | ||||
const bool showChannelsAsStereoPairs; | const bool showChannelsAsStereoPairs; | ||||
const bool hideAdvancedOptionsWithButton; | const bool hideAdvancedOptionsWithButton; | ||||
class MidiInputSelectorComponentListBox; | class MidiInputSelectorComponentListBox; | ||||
MidiInputSelectorComponentListBox* midiInputsList; | |||||
Label* midiInputsLabel; | |||||
ComboBox* midiOutputSelector; | |||||
Label* midiOutputLabel; | |||||
friend class ScopedPointer<MidiInputSelectorComponentListBox>; | |||||
ScopedPointer<MidiInputSelectorComponentListBox> midiInputsList; | |||||
ScopedPointer<ComboBox> midiOutputSelector; | |||||
ScopedPointer<Label> midiInputsLabel, midiOutputLabel; | |||||
AudioDeviceSelectorComponent (const AudioDeviceSelectorComponent&); | AudioDeviceSelectorComponent (const AudioDeviceSelectorComponent&); | ||||
AudioDeviceSelectorComponent& operator= (const AudioDeviceSelectorComponent&); | AudioDeviceSelectorComponent& operator= (const AudioDeviceSelectorComponent&); | ||||
@@ -33,7 +33,7 @@ | |||||
*/ | */ | ||||
#define JUCE_MAJOR_VERSION 1 | #define JUCE_MAJOR_VERSION 1 | ||||
#define JUCE_MINOR_VERSION 52 | #define JUCE_MINOR_VERSION 52 | ||||
#define JUCE_BUILDNUMBER 15 | |||||
#define JUCE_BUILDNUMBER 16 | |||||
/** Current Juce version number. | /** Current Juce version number. | ||||
@@ -451,8 +451,6 @@ private: | |||||
TreeView::TreeView (const String& componentName) | TreeView::TreeView (const String& componentName) | ||||
: Component (componentName), | : Component (componentName), | ||||
rootItem (0), | rootItem (0), | ||||
dragInsertPointHighlight (0), | |||||
dragTargetGroupHighlight (0), | |||||
indentSize (24), | indentSize (24), | ||||
defaultOpenness (false), | defaultOpenness (false), | ||||
needsRecalculating (true), | needsRecalculating (true), | ||||
@@ -470,8 +468,6 @@ TreeView::~TreeView() | |||||
{ | { | ||||
if (rootItem != 0) | if (rootItem != 0) | ||||
rootItem->setOwnerView (0); | rootItem->setOwnerView (0); | ||||
deleteAllChildren(); | |||||
} | } | ||||
void TreeView::setRootItem (TreeViewItem* const newRootItem) | void TreeView::setRootItem (TreeViewItem* const newRootItem) | ||||
@@ -937,8 +933,8 @@ void TreeView::showDragHighlight (TreeViewItem* item, int insertIndex, int x, in | |||||
void TreeView::hideDragHighlight() throw() | void TreeView::hideDragHighlight() throw() | ||||
{ | { | ||||
deleteAndZero (dragInsertPointHighlight); | |||||
deleteAndZero (dragTargetGroupHighlight); | |||||
dragInsertPointHighlight = 0; | |||||
dragTargetGroupHighlight = 0; | |||||
} | } | ||||
TreeViewItem* TreeView::getInsertPosition (int& x, int& y, int& insertIndex, | TreeViewItem* TreeView::getInsertPosition (int& x, int& y, int& insertIndex, | ||||
@@ -752,13 +752,16 @@ private: | |||||
friend class TreeViewItem; | friend class TreeViewItem; | ||||
friend class TreeViewContentComponent; | friend class TreeViewContentComponent; | ||||
class TreeViewport; | class TreeViewport; | ||||
TreeViewport* viewport; | |||||
CriticalSection nodeAlterationLock; | |||||
TreeViewItem* rootItem; | |||||
class InsertPointHighlight; | class InsertPointHighlight; | ||||
class TargetGroupHighlight; | class TargetGroupHighlight; | ||||
InsertPointHighlight* dragInsertPointHighlight; | |||||
TargetGroupHighlight* dragTargetGroupHighlight; | |||||
friend class ScopedPointer<TreeViewport>; | |||||
friend class ScopedPointer<InsertPointHighlight>; | |||||
friend class ScopedPointer<TargetGroupHighlight>; | |||||
ScopedPointer<TreeViewport> viewport; | |||||
CriticalSection nodeAlterationLock; | |||||
TreeViewItem* rootItem; | |||||
ScopedPointer<InsertPointHighlight> dragInsertPointHighlight; | |||||
ScopedPointer<TargetGroupHighlight> dragTargetGroupHighlight; | |||||
int indentSize; | int indentSize; | ||||
bool defaultOpenness : 1; | bool defaultOpenness : 1; | ||||
bool needsRecalculating : 1; | bool needsRecalculating : 1; | ||||
@@ -50,13 +50,12 @@ FilenameComponent::FilenameComponent (const String& name, | |||||
wildcard (fileBrowserWildcard), | wildcard (fileBrowserWildcard), | ||||
enforcedSuffix (enforcedSuffix_) | enforcedSuffix (enforcedSuffix_) | ||||
{ | { | ||||
addAndMakeVisible (filenameBox = new ComboBox ("fn")); | |||||
filenameBox->setEditableText (canEditFilename); | |||||
filenameBox->addListener (this); | |||||
filenameBox->setTextWhenNothingSelected (textWhenNothingSelected); | |||||
filenameBox->setTextWhenNoChoicesAvailable (TRANS("(no recently seleced files)")); | |||||
addAndMakeVisible (&filenameBox); | |||||
filenameBox.setEditableText (canEditFilename); | |||||
filenameBox.addListener (this); | |||||
filenameBox.setTextWhenNothingSelected (textWhenNothingSelected); | |||||
filenameBox.setTextWhenNoChoicesAvailable (TRANS("(no recently seleced files)")); | |||||
browseButton = 0; | |||||
setBrowseButtonText ("..."); | setBrowseButtonText ("..."); | ||||
setCurrentFile (currentFile, true); | setCurrentFile (currentFile, true); | ||||
@@ -64,7 +63,6 @@ FilenameComponent::FilenameComponent (const String& name, | |||||
FilenameComponent::~FilenameComponent() | FilenameComponent::~FilenameComponent() | ||||
{ | { | ||||
deleteAllChildren(); | |||||
} | } | ||||
//============================================================================== | //============================================================================== | ||||
@@ -79,7 +77,7 @@ void FilenameComponent::paintOverChildren (Graphics& g) | |||||
void FilenameComponent::resized() | void FilenameComponent::resized() | ||||
{ | { | ||||
getLookAndFeel().layoutFilenameComponent (*this, filenameBox, browseButton); | |||||
getLookAndFeel().layoutFilenameComponent (*this, &filenameBox, browseButton); | |||||
} | } | ||||
void FilenameComponent::setBrowseButtonText (const String& newBrowseButtonText) | void FilenameComponent::setBrowseButtonText (const String& newBrowseButtonText) | ||||
@@ -90,7 +88,7 @@ void FilenameComponent::setBrowseButtonText (const String& newBrowseButtonText) | |||||
void FilenameComponent::lookAndFeelChanged() | void FilenameComponent::lookAndFeelChanged() | ||||
{ | { | ||||
deleteAndZero (browseButton); | |||||
browseButton = 0; | |||||
addAndMakeVisible (browseButton = getLookAndFeel().createFilenameComponentBrowseButton (browseButtonText)); | addAndMakeVisible (browseButton = getLookAndFeel().createFilenameComponentBrowseButton (browseButtonText)); | ||||
browseButton->setConnectedEdges (Button::ConnectedOnLeft); | browseButton->setConnectedEdges (Button::ConnectedOnLeft); | ||||
@@ -102,7 +100,7 @@ void FilenameComponent::lookAndFeelChanged() | |||||
void FilenameComponent::setTooltip (const String& newTooltip) | void FilenameComponent::setTooltip (const String& newTooltip) | ||||
{ | { | ||||
SettableTooltipClient::setTooltip (newTooltip); | SettableTooltipClient::setTooltip (newTooltip); | ||||
filenameBox->setTooltip (newTooltip); | |||||
filenameBox.setTooltip (newTooltip); | |||||
} | } | ||||
void FilenameComponent::setDefaultBrowseTarget (const File& newDefaultDirectory) | void FilenameComponent::setDefaultBrowseTarget (const File& newDefaultDirectory) | ||||
@@ -161,7 +159,7 @@ void FilenameComponent::fileDragExit (const StringArray&) | |||||
//============================================================================== | //============================================================================== | ||||
const File FilenameComponent::getCurrentFile() const | const File FilenameComponent::getCurrentFile() const | ||||
{ | { | ||||
File f (filenameBox->getText()); | |||||
File f (filenameBox.getText()); | |||||
if (enforcedSuffix.isNotEmpty()) | if (enforcedSuffix.isNotEmpty()) | ||||
f = f.withFileExtension (enforcedSuffix); | f = f.withFileExtension (enforcedSuffix); | ||||
@@ -183,7 +181,7 @@ void FilenameComponent::setCurrentFile (File newFile, | |||||
if (addToRecentlyUsedList) | if (addToRecentlyUsedList) | ||||
addRecentlyUsedFile (newFile); | addRecentlyUsedFile (newFile); | ||||
filenameBox->setText (lastFilename, true); | |||||
filenameBox.setText (lastFilename, true); | |||||
if (sendChangeNotification) | if (sendChangeNotification) | ||||
triggerAsyncUpdate(); | triggerAsyncUpdate(); | ||||
@@ -192,15 +190,15 @@ void FilenameComponent::setCurrentFile (File newFile, | |||||
void FilenameComponent::setFilenameIsEditable (const bool shouldBeEditable) | void FilenameComponent::setFilenameIsEditable (const bool shouldBeEditable) | ||||
{ | { | ||||
filenameBox->setEditableText (shouldBeEditable); | |||||
filenameBox.setEditableText (shouldBeEditable); | |||||
} | } | ||||
const StringArray FilenameComponent::getRecentlyUsedFilenames() const | const StringArray FilenameComponent::getRecentlyUsedFilenames() const | ||||
{ | { | ||||
StringArray names; | StringArray names; | ||||
for (int i = 0; i < filenameBox->getNumItems(); ++i) | |||||
names.add (filenameBox->getItemText (i)); | |||||
for (int i = 0; i < filenameBox.getNumItems(); ++i) | |||||
names.add (filenameBox.getItemText (i)); | |||||
return names; | return names; | ||||
} | } | ||||
@@ -209,10 +207,10 @@ void FilenameComponent::setRecentlyUsedFilenames (const StringArray& filenames) | |||||
{ | { | ||||
if (filenames != getRecentlyUsedFilenames()) | if (filenames != getRecentlyUsedFilenames()) | ||||
{ | { | ||||
filenameBox->clear(); | |||||
filenameBox.clear(); | |||||
for (int i = 0; i < jmin (filenames.size(), maxRecentFiles); ++i) | for (int i = 0; i < jmin (filenames.size(), maxRecentFiles); ++i) | ||||
filenameBox->addItem (filenames[i], i + 1); | |||||
filenameBox.addItem (filenames[i], i + 1); | |||||
} | } | ||||
} | } | ||||
@@ -203,9 +203,9 @@ public: | |||||
private: | private: | ||||
//============================================================================== | //============================================================================== | ||||
ComboBox* filenameBox; | |||||
ComboBox filenameBox; | |||||
String lastFilename; | String lastFilename; | ||||
Button* browseButton; | |||||
ScopedPointer<Button> browseButton; | |||||
int maxRecentFiles; | int maxRecentFiles; | ||||
bool isDir, isSaving, isFileDragOver; | bool isDir, isSaving, isFileDragOver; | ||||
String wildcard, enforcedSuffix, browseButtonText; | String wildcard, enforcedSuffix, browseButtonText; | ||||
@@ -91,9 +91,7 @@ ScrollBar::ScrollBar (const bool vertical_, | |||||
minimumDelayInMillisecs (10), | minimumDelayInMillisecs (10), | ||||
vertical (vertical_), | vertical (vertical_), | ||||
isDraggingThumb (false), | isDraggingThumb (false), | ||||
autohides (true), | |||||
upButton (0), | |||||
downButton (0) | |||||
autohides (true) | |||||
{ | { | ||||
setButtonVisibility (buttonsAreVisible); | setButtonVisibility (buttonsAreVisible); | ||||
@@ -103,7 +101,8 @@ ScrollBar::ScrollBar (const bool vertical_, | |||||
ScrollBar::~ScrollBar() | ScrollBar::~ScrollBar() | ||||
{ | { | ||||
deleteAllChildren(); | |||||
upButton = 0; | |||||
downButton = 0; | |||||
} | } | ||||
//============================================================================== | //============================================================================== | ||||
@@ -256,9 +255,7 @@ void ScrollBar::setOrientation (const bool shouldBeVertical) | |||||
void ScrollBar::setButtonVisibility (const bool buttonsAreVisible) | void ScrollBar::setButtonVisibility (const bool buttonsAreVisible) | ||||
{ | { | ||||
delete upButton; | |||||
upButton = 0; | upButton = 0; | ||||
delete downButton; | |||||
downButton = 0; | downButton = 0; | ||||
if (buttonsAreVisible) | if (buttonsAreVisible) | ||||
@@ -324,8 +324,8 @@ private: | |||||
int initialDelayInMillisecs, repeatDelayInMillisecs, minimumDelayInMillisecs; | int initialDelayInMillisecs, repeatDelayInMillisecs, minimumDelayInMillisecs; | ||||
bool vertical, isDraggingThumb, autohides; | bool vertical, isDraggingThumb, autohides; | ||||
class ScrollbarButton; | class ScrollbarButton; | ||||
ScrollbarButton* upButton; | |||||
ScrollbarButton* downButton; | |||||
friend class ScopedPointer<ScrollbarButton>; | |||||
ScopedPointer<ScrollbarButton> upButton, downButton; | |||||
ListenerList <ScrollBarListener> listeners; | ListenerList <ScrollBarListener> listeners; | ||||
void updateThumbPosition(); | void updateThumbPosition(); | ||||
@@ -176,8 +176,7 @@ private: | |||||
//============================================================================== | //============================================================================== | ||||
TabbedButtonBar::TabbedButtonBar (const Orientation orientation_) | TabbedButtonBar::TabbedButtonBar (const Orientation orientation_) | ||||
: orientation (orientation_), | : orientation (orientation_), | ||||
currentTabIndex (-1), | |||||
extraTabsButton (0) | |||||
currentTabIndex (-1) | |||||
{ | { | ||||
setInterceptsMouseClicks (false, true); | setInterceptsMouseClicks (false, true); | ||||
addAndMakeVisible (behindFrontTab = new TabAreaBehindFrontButtonComponent (this)); | addAndMakeVisible (behindFrontTab = new TabAreaBehindFrontButtonComponent (this)); | ||||
@@ -186,6 +185,7 @@ TabbedButtonBar::TabbedButtonBar (const Orientation orientation_) | |||||
TabbedButtonBar::~TabbedButtonBar() | TabbedButtonBar::~TabbedButtonBar() | ||||
{ | { | ||||
extraTabsButton = 0; | |||||
deleteAllChildren(); | deleteAllChildren(); | ||||
} | } | ||||
@@ -212,7 +212,7 @@ void TabbedButtonBar::clearTabs() | |||||
tabColours.clear(); | tabColours.clear(); | ||||
currentTabIndex = -1; | currentTabIndex = -1; | ||||
deleteAndZero (extraTabsButton); | |||||
extraTabsButton = 0; | |||||
removeChildComponent (behindFrontTab); | removeChildComponent (behindFrontTab); | ||||
deleteAllChildren(); | deleteAllChildren(); | ||||
addChildComponent (behindFrontTab); | addChildComponent (behindFrontTab); | ||||
@@ -357,7 +357,7 @@ TabBarButton* TabbedButtonBar::getTabButton (const int index) const | |||||
void TabbedButtonBar::lookAndFeelChanged() | void TabbedButtonBar::lookAndFeelChanged() | ||||
{ | { | ||||
deleteAndZero (extraTabsButton); | |||||
extraTabsButton = 0; | |||||
resized(); | resized(); | ||||
} | } | ||||
@@ -445,7 +445,7 @@ void TabbedButtonBar::resized() | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
deleteAndZero (extraTabsButton); | |||||
extraTabsButton = 0; | |||||
} | } | ||||
int pos = 0; | int pos = 0; | ||||
@@ -510,7 +510,7 @@ void TabbedButtonBar::setTabBackgroundColour (const int tabIndex, const Colour& | |||||
void TabbedButtonBar::buttonClicked (Button* button) | void TabbedButtonBar::buttonClicked (Button* button) | ||||
{ | { | ||||
if (extraTabsButton == button) | |||||
if (button == extraTabsButton) | |||||
{ | { | ||||
PopupMenu m; | PopupMenu m; | ||||
@@ -283,7 +283,7 @@ private: | |||||
Array <Colour> tabColours; | Array <Colour> tabColours; | ||||
int currentTabIndex; | int currentTabIndex; | ||||
Component* behindFrontTab; | Component* behindFrontTab; | ||||
Button* extraTabsButton; | |||||
ScopedPointer<Button> extraTabsButton; | |||||
TabbedButtonBar (const TabbedButtonBar&); | TabbedButtonBar (const TabbedButtonBar&); | ||||
TabbedButtonBar& operator= (const TabbedButtonBar&); | TabbedButtonBar& operator= (const TabbedButtonBar&); | ||||
@@ -39,8 +39,9 @@ BooleanPropertyComponent::BooleanPropertyComponent (const String& name, | |||||
onText (buttonTextWhenTrue), | onText (buttonTextWhenTrue), | ||||
offText (buttonTextWhenFalse) | offText (buttonTextWhenFalse) | ||||
{ | { | ||||
createButton(); | |||||
button->addButtonListener (this); | |||||
addAndMakeVisible (&button); | |||||
button.setClickingTogglesState (false); | |||||
button.addButtonListener (this); | |||||
} | } | ||||
BooleanPropertyComponent::BooleanPropertyComponent (const Value& valueToControl, | BooleanPropertyComponent::BooleanPropertyComponent (const Value& valueToControl, | ||||
@@ -50,31 +51,25 @@ BooleanPropertyComponent::BooleanPropertyComponent (const Value& valueToControl, | |||||
onText (buttonText), | onText (buttonText), | ||||
offText (buttonText) | offText (buttonText) | ||||
{ | { | ||||
createButton(); | |||||
button->setButtonText (buttonText); | |||||
button->getToggleStateValue().referTo (valueToControl); | |||||
button->setClickingTogglesState (true); | |||||
addAndMakeVisible (&button); | |||||
button.setClickingTogglesState (false); | |||||
button.setButtonText (buttonText); | |||||
button.getToggleStateValue().referTo (valueToControl); | |||||
button.setClickingTogglesState (true); | |||||
} | } | ||||
BooleanPropertyComponent::~BooleanPropertyComponent() | BooleanPropertyComponent::~BooleanPropertyComponent() | ||||
{ | { | ||||
deleteAllChildren(); | |||||
} | |||||
void BooleanPropertyComponent::createButton() | |||||
{ | |||||
addAndMakeVisible (button = new ToggleButton (String::empty)); | |||||
button->setClickingTogglesState (false); | |||||
} | } | ||||
void BooleanPropertyComponent::setState (const bool newState) | void BooleanPropertyComponent::setState (const bool newState) | ||||
{ | { | ||||
button->setToggleState (newState, true); | |||||
button.setToggleState (newState, true); | |||||
} | } | ||||
bool BooleanPropertyComponent::getState() const | bool BooleanPropertyComponent::getState() const | ||||
{ | { | ||||
return button->getToggleState(); | |||||
return button.getToggleState(); | |||||
} | } | ||||
void BooleanPropertyComponent::paint (Graphics& g) | void BooleanPropertyComponent::paint (Graphics& g) | ||||
@@ -82,16 +77,16 @@ void BooleanPropertyComponent::paint (Graphics& g) | |||||
PropertyComponent::paint (g); | PropertyComponent::paint (g); | ||||
g.setColour (Colours::white); | g.setColour (Colours::white); | ||||
g.fillRect (button->getBounds()); | |||||
g.fillRect (button.getBounds()); | |||||
g.setColour (findColour (ComboBox::outlineColourId)); | g.setColour (findColour (ComboBox::outlineColourId)); | ||||
g.drawRect (button->getBounds()); | |||||
g.drawRect (button.getBounds()); | |||||
} | } | ||||
void BooleanPropertyComponent::refresh() | void BooleanPropertyComponent::refresh() | ||||
{ | { | ||||
button->setToggleState (getState(), false); | |||||
button->setButtonText (button->getToggleState() ? onText : offText); | |||||
button.setToggleState (getState(), false); | |||||
button.setButtonText (button.getToggleState() ? onText : offText); | |||||
} | } | ||||
void BooleanPropertyComponent::buttonClicked (Button*) | void BooleanPropertyComponent::buttonClicked (Button*) | ||||
@@ -89,11 +89,9 @@ public: | |||||
juce_UseDebuggingNewOperator | juce_UseDebuggingNewOperator | ||||
private: | private: | ||||
ToggleButton* button; | |||||
ToggleButton button; | |||||
String onText, offText; | String onText, offText; | ||||
void createButton(); | |||||
BooleanPropertyComponent (const BooleanPropertyComponent&); | BooleanPropertyComponent (const BooleanPropertyComponent&); | ||||
BooleanPropertyComponent& operator= (const BooleanPropertyComponent&); | BooleanPropertyComponent& operator= (const BooleanPropertyComponent&); | ||||
}; | }; | ||||
@@ -35,19 +35,18 @@ ButtonPropertyComponent::ButtonPropertyComponent (const String& name, | |||||
const bool triggerOnMouseDown) | const bool triggerOnMouseDown) | ||||
: PropertyComponent (name) | : PropertyComponent (name) | ||||
{ | { | ||||
addAndMakeVisible (button = new TextButton (String::empty)); | |||||
button->setTriggeredOnMouseDown (triggerOnMouseDown); | |||||
button->addButtonListener (this); | |||||
addAndMakeVisible (&button); | |||||
button.setTriggeredOnMouseDown (triggerOnMouseDown); | |||||
button.addButtonListener (this); | |||||
} | } | ||||
ButtonPropertyComponent::~ButtonPropertyComponent() | ButtonPropertyComponent::~ButtonPropertyComponent() | ||||
{ | { | ||||
deleteAllChildren(); | |||||
} | } | ||||
void ButtonPropertyComponent::refresh() | void ButtonPropertyComponent::refresh() | ||||
{ | { | ||||
button->setButtonText (getButtonText()); | |||||
button.setButtonText (getButtonText()); | |||||
} | } | ||||
void ButtonPropertyComponent::buttonClicked (Button*) | void ButtonPropertyComponent::buttonClicked (Button*) | ||||
@@ -75,7 +75,7 @@ public: | |||||
juce_UseDebuggingNewOperator | juce_UseDebuggingNewOperator | ||||
private: | private: | ||||
TextButton* button; | |||||
TextButton button; | |||||
ButtonPropertyComponent (const ButtonPropertyComponent&); | ButtonPropertyComponent (const ButtonPropertyComponent&); | ||||
ButtonPropertyComponent& operator= (const ButtonPropertyComponent&); | ButtonPropertyComponent& operator= (const ButtonPropertyComponent&); | ||||
@@ -77,7 +77,6 @@ protected: | |||||
//============================================================================== | //============================================================================== | ||||
ChoicePropertyComponent::ChoicePropertyComponent (const String& name) | ChoicePropertyComponent::ChoicePropertyComponent (const String& name) | ||||
: PropertyComponent (name), | : PropertyComponent (name), | ||||
comboBox (0), | |||||
isCustomClass (true) | isCustomClass (true) | ||||
{ | { | ||||
} | } | ||||
@@ -88,7 +87,6 @@ ChoicePropertyComponent::ChoicePropertyComponent (const Value& valueToControl, | |||||
const Array <var>& correspondingValues) | const Array <var>& correspondingValues) | ||||
: PropertyComponent (name), | : PropertyComponent (name), | ||||
choices (choices_), | choices (choices_), | ||||
comboBox (0), | |||||
isCustomClass (false) | isCustomClass (false) | ||||
{ | { | ||||
// The array of corresponding values must contain one value for each of the items in | // The array of corresponding values must contain one value for each of the items in | ||||
@@ -97,28 +95,27 @@ ChoicePropertyComponent::ChoicePropertyComponent (const Value& valueToControl, | |||||
createComboBox(); | createComboBox(); | ||||
comboBox->getSelectedIdAsValue().referTo (Value (new RemapperValueSource (valueToControl, correspondingValues))); | |||||
comboBox.getSelectedIdAsValue().referTo (Value (new RemapperValueSource (valueToControl, correspondingValues))); | |||||
} | } | ||||
ChoicePropertyComponent::~ChoicePropertyComponent() | ChoicePropertyComponent::~ChoicePropertyComponent() | ||||
{ | { | ||||
deleteAllChildren(); | |||||
} | } | ||||
//============================================================================== | //============================================================================== | ||||
void ChoicePropertyComponent::createComboBox() | void ChoicePropertyComponent::createComboBox() | ||||
{ | { | ||||
addAndMakeVisible (comboBox = new ComboBox()); | |||||
addAndMakeVisible (&comboBox); | |||||
for (int i = 0; i < choices.size(); ++i) | for (int i = 0; i < choices.size(); ++i) | ||||
{ | { | ||||
if (choices[i].isNotEmpty()) | if (choices[i].isNotEmpty()) | ||||
comboBox->addItem (choices[i], i + 1); | |||||
comboBox.addItem (choices[i], i + 1); | |||||
else | else | ||||
comboBox->addSeparator(); | |||||
comboBox.addSeparator(); | |||||
} | } | ||||
comboBox->setEditableText (false); | |||||
comboBox.setEditableText (false); | |||||
} | } | ||||
void ChoicePropertyComponent::setIndex (const int /*newIndex*/) | void ChoicePropertyComponent::setIndex (const int /*newIndex*/) | ||||
@@ -142,13 +139,13 @@ void ChoicePropertyComponent::refresh() | |||||
{ | { | ||||
if (isCustomClass) | if (isCustomClass) | ||||
{ | { | ||||
if (comboBox == 0) | |||||
if (! comboBox.isVisible()) | |||||
{ | { | ||||
createComboBox(); | createComboBox(); | ||||
comboBox->addListener (this); | |||||
comboBox.addListener (this); | |||||
} | } | ||||
comboBox->setSelectedId (getIndex() + 1, true); | |||||
comboBox.setSelectedId (getIndex() + 1, true); | |||||
} | } | ||||
} | } | ||||
@@ -156,7 +153,7 @@ void ChoicePropertyComponent::comboBoxChanged (ComboBox*) | |||||
{ | { | ||||
if (isCustomClass) | if (isCustomClass) | ||||
{ | { | ||||
const int newIndex = comboBox->getSelectedId() - 1; | |||||
const int newIndex = comboBox.getSelectedId() - 1; | |||||
if (newIndex != getIndex()) | if (newIndex != getIndex()) | ||||
setIndex (newIndex); | setIndex (newIndex); | ||||
@@ -117,7 +117,7 @@ protected: | |||||
StringArray choices; | StringArray choices; | ||||
private: | private: | ||||
ComboBox* comboBox; | |||||
ComboBox comboBox; | |||||
bool isCustomClass; | bool isCustomClass; | ||||
class RemapperValueSource; | class RemapperValueSource; | ||||
@@ -226,15 +226,14 @@ PropertyPanel::PropertyPanel() | |||||
{ | { | ||||
messageWhenEmpty = TRANS("(nothing selected)"); | messageWhenEmpty = TRANS("(nothing selected)"); | ||||
addAndMakeVisible (viewport = new Viewport()); | |||||
viewport->setViewedComponent (propertyHolderComponent = new PropertyHolderComponent()); | |||||
viewport->setFocusContainer (true); | |||||
addAndMakeVisible (&viewport); | |||||
viewport.setViewedComponent (propertyHolderComponent = new PropertyHolderComponent()); | |||||
viewport.setFocusContainer (true); | |||||
} | } | ||||
PropertyPanel::~PropertyPanel() | PropertyPanel::~PropertyPanel() | ||||
{ | { | ||||
clear(); | clear(); | ||||
deleteAllChildren(); | |||||
} | } | ||||
//============================================================================== | //============================================================================== | ||||
@@ -251,7 +250,7 @@ void PropertyPanel::paint (Graphics& g) | |||||
void PropertyPanel::resized() | void PropertyPanel::resized() | ||||
{ | { | ||||
viewport->setBounds (0, 0, getWidth(), getHeight()); | |||||
viewport.setBounds (0, 0, getWidth(), getHeight()); | |||||
updatePropHolderLayout(); | updatePropHolderLayout(); | ||||
} | } | ||||
@@ -294,10 +293,10 @@ void PropertyPanel::addSection (const String& sectionTitle, | |||||
void PropertyPanel::updatePropHolderLayout() const | void PropertyPanel::updatePropHolderLayout() const | ||||
{ | { | ||||
const int maxWidth = viewport->getMaximumVisibleWidth(); | |||||
const int maxWidth = viewport.getMaximumVisibleWidth(); | |||||
propertyHolderComponent->updateLayout (maxWidth); | propertyHolderComponent->updateLayout (maxWidth); | ||||
const int newMaxWidth = viewport->getMaximumVisibleWidth(); | |||||
const int newMaxWidth = viewport.getMaximumVisibleWidth(); | |||||
if (maxWidth != newMaxWidth) | if (maxWidth != newMaxWidth) | ||||
{ | { | ||||
// need to do this twice because of scrollbars changing the size, etc. | // need to do this twice because of scrollbars changing the size, etc. | ||||
@@ -393,7 +392,7 @@ XmlElement* PropertyPanel::getOpennessState() const | |||||
{ | { | ||||
XmlElement* const xml = new XmlElement ("PROPERTYPANELSTATE"); | XmlElement* const xml = new XmlElement ("PROPERTYPANELSTATE"); | ||||
xml->setAttribute ("scrollPos", viewport->getViewPositionY()); | |||||
xml->setAttribute ("scrollPos", viewport.getViewPositionY()); | |||||
const StringArray sections (getSectionNames()); | const StringArray sections (getSectionNames()); | ||||
@@ -422,8 +421,8 @@ void PropertyPanel::restoreOpennessState (const XmlElement& xml) | |||||
e->getBoolAttribute ("open")); | e->getBoolAttribute ("open")); | ||||
} | } | ||||
viewport->setViewPosition (viewport->getViewPositionX(), | |||||
xml.getIntAttribute ("scrollPos", viewport->getViewPositionY())); | |||||
viewport.setViewPosition (viewport.getViewPositionX(), | |||||
xml.getIntAttribute ("scrollPos", viewport.getViewPositionY())); | |||||
} | } | ||||
} | } | ||||
@@ -152,7 +152,7 @@ public: | |||||
juce_UseDebuggingNewOperator | juce_UseDebuggingNewOperator | ||||
private: | private: | ||||
Viewport* viewport; | |||||
Viewport viewport; | |||||
class PropertyHolderComponent; | class PropertyHolderComponent; | ||||
PropertyHolderComponent* propertyHolderComponent; | PropertyHolderComponent* propertyHolderComponent; | ||||
String messageWhenEmpty; | String messageWhenEmpty; | ||||
@@ -38,13 +38,13 @@ SliderPropertyComponent::SliderPropertyComponent (const String& name, | |||||
const double skewFactor) | const double skewFactor) | ||||
: PropertyComponent (name) | : PropertyComponent (name) | ||||
{ | { | ||||
addAndMakeVisible (slider = new Slider (name)); | |||||
addAndMakeVisible (&slider); | |||||
slider->setRange (rangeMin, rangeMax, interval); | |||||
slider->setSkewFactor (skewFactor); | |||||
slider->setSliderStyle (Slider::LinearBar); | |||||
slider.setRange (rangeMin, rangeMax, interval); | |||||
slider.setSkewFactor (skewFactor); | |||||
slider.setSliderStyle (Slider::LinearBar); | |||||
slider->addListener (this); | |||||
slider.addListener (this); | |||||
} | } | ||||
SliderPropertyComponent::SliderPropertyComponent (const Value& valueToControl, | SliderPropertyComponent::SliderPropertyComponent (const Value& valueToControl, | ||||
@@ -55,18 +55,17 @@ SliderPropertyComponent::SliderPropertyComponent (const Value& valueToControl, | |||||
const double skewFactor) | const double skewFactor) | ||||
: PropertyComponent (name) | : PropertyComponent (name) | ||||
{ | { | ||||
addAndMakeVisible (slider = new Slider (name)); | |||||
addAndMakeVisible (&slider); | |||||
slider->setRange (rangeMin, rangeMax, interval); | |||||
slider->setSkewFactor (skewFactor); | |||||
slider->setSliderStyle (Slider::LinearBar); | |||||
slider.setRange (rangeMin, rangeMax, interval); | |||||
slider.setSkewFactor (skewFactor); | |||||
slider.setSliderStyle (Slider::LinearBar); | |||||
slider->getValueObject().referTo (valueToControl); | |||||
slider.getValueObject().referTo (valueToControl); | |||||
} | } | ||||
SliderPropertyComponent::~SliderPropertyComponent() | SliderPropertyComponent::~SliderPropertyComponent() | ||||
{ | { | ||||
deleteAllChildren(); | |||||
} | } | ||||
void SliderPropertyComponent::setValue (const double /*newValue*/) | void SliderPropertyComponent::setValue (const double /*newValue*/) | ||||
@@ -75,18 +74,18 @@ void SliderPropertyComponent::setValue (const double /*newValue*/) | |||||
double SliderPropertyComponent::getValue() const | double SliderPropertyComponent::getValue() const | ||||
{ | { | ||||
return slider->getValue(); | |||||
return slider.getValue(); | |||||
} | } | ||||
void SliderPropertyComponent::refresh() | void SliderPropertyComponent::refresh() | ||||
{ | { | ||||
slider->setValue (getValue(), false); | |||||
slider.setValue (getValue(), false); | |||||
} | } | ||||
void SliderPropertyComponent::sliderValueChanged (Slider*) | void SliderPropertyComponent::sliderValueChanged (Slider*) | ||||
{ | { | ||||
if (getValue() != slider->getValue()) | |||||
setValue (slider->getValue()); | |||||
if (getValue() != slider.getValue()) | |||||
setValue (slider.getValue()); | |||||
} | } | ||||
@@ -102,7 +102,7 @@ protected: | |||||
Your subclass has access to this in case it needs to customise it in some way. | Your subclass has access to this in case it needs to customise it in some way. | ||||
*/ | */ | ||||
Slider* slider; | |||||
Slider slider; | |||||
SliderPropertyComponent (const SliderPropertyComponent&); | SliderPropertyComponent (const SliderPropertyComponent&); | ||||
SliderPropertyComponent& operator= (const SliderPropertyComponent&); | SliderPropertyComponent& operator= (const SliderPropertyComponent&); | ||||
@@ -218,23 +218,6 @@ public: | |||||
: type (type_), | : type (type_), | ||||
setup (setup_) | setup (setup_) | ||||
{ | { | ||||
sampleRateDropDown = 0; | |||||
sampleRateLabel = 0; | |||||
bufferSizeDropDown = 0; | |||||
bufferSizeLabel = 0; | |||||
outputDeviceDropDown = 0; | |||||
outputDeviceLabel = 0; | |||||
inputDeviceDropDown = 0; | |||||
inputDeviceLabel = 0; | |||||
testButton = 0; | |||||
inputLevelMeter = 0; | |||||
showUIButton = 0; | |||||
inputChanList = 0; | |||||
outputChanList = 0; | |||||
inputChanLabel = 0; | |||||
outputChanLabel = 0; | |||||
showAdvancedSettingsButton = 0; | |||||
if (hideAdvancedOptionsWithButton) | if (hideAdvancedOptionsWithButton) | ||||
{ | { | ||||
addAndMakeVisible (showAdvancedSettingsButton = new TextButton (TRANS("Show advanced settings..."))); | addAndMakeVisible (showAdvancedSettingsButton = new TextButton (TRANS("Show advanced settings..."))); | ||||
@@ -250,17 +233,6 @@ public: | |||||
~AudioDeviceSettingsPanel() | ~AudioDeviceSettingsPanel() | ||||
{ | { | ||||
setup.manager->removeChangeListener (this); | setup.manager->removeChangeListener (this); | ||||
deleteAndZero (outputDeviceLabel); | |||||
deleteAndZero (inputDeviceLabel); | |||||
deleteAndZero (sampleRateLabel); | |||||
deleteAndZero (bufferSizeLabel); | |||||
deleteAndZero (showUIButton); | |||||
deleteAndZero (inputChanLabel); | |||||
deleteAndZero (outputChanLabel); | |||||
deleteAndZero (showAdvancedSettingsButton); | |||||
deleteAllChildren(); | |||||
} | } | ||||
void resized() | void resized() | ||||
@@ -434,7 +406,7 @@ public: | |||||
{ | { | ||||
AudioIODevice* const currentDevice = setup.manager->getCurrentAudioDevice(); | AudioIODevice* const currentDevice = setup.manager->getCurrentAudioDevice(); | ||||
deleteAndZero (showUIButton); | |||||
showUIButton = 0; | |||||
if (currentDevice != 0 && currentDevice->hasControlPanel()) | if (currentDevice != 0 && currentDevice->hasControlPanel()) | ||||
{ | { | ||||
@@ -513,8 +485,8 @@ public: | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
deleteAndZero (outputChanLabel); | |||||
deleteAndZero (outputChanList); | |||||
outputChanLabel = 0; | |||||
outputChanList = 0; | |||||
} | } | ||||
if (setup.maxNumInputChannels > 0 | if (setup.maxNumInputChannels > 0 | ||||
@@ -533,8 +505,8 @@ public: | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
deleteAndZero (inputChanLabel); | |||||
deleteAndZero (inputChanList); | |||||
inputChanLabel = 0; | |||||
inputChanList = 0; | |||||
} | } | ||||
// sample rate.. | // sample rate.. | ||||
@@ -544,7 +516,6 @@ public: | |||||
addAndMakeVisible (sampleRateDropDown = new ComboBox (String::empty)); | addAndMakeVisible (sampleRateDropDown = new ComboBox (String::empty)); | ||||
sampleRateDropDown->addListener (this); | sampleRateDropDown->addListener (this); | ||||
delete sampleRateLabel; | |||||
sampleRateLabel = new Label (String::empty, TRANS ("sample rate:")); | sampleRateLabel = new Label (String::empty, TRANS ("sample rate:")); | ||||
sampleRateLabel->attachToComponent (sampleRateDropDown, true); | sampleRateLabel->attachToComponent (sampleRateDropDown, true); | ||||
} | } | ||||
@@ -573,7 +544,6 @@ public: | |||||
addAndMakeVisible (bufferSizeDropDown = new ComboBox (String::empty)); | addAndMakeVisible (bufferSizeDropDown = new ComboBox (String::empty)); | ||||
bufferSizeDropDown->addListener (this); | bufferSizeDropDown->addListener (this); | ||||
delete bufferSizeLabel; | |||||
bufferSizeLabel = new Label (String::empty, TRANS ("audio buffer size:")); | bufferSizeLabel = new Label (String::empty, TRANS ("audio buffer size:")); | ||||
bufferSizeLabel->attachToComponent (bufferSizeDropDown, true); | bufferSizeLabel->attachToComponent (bufferSizeDropDown, true); | ||||
} | } | ||||
@@ -604,10 +574,10 @@ public: | |||||
{ | { | ||||
jassert (setup.manager->getCurrentAudioDevice() == 0); // not the correct device type! | jassert (setup.manager->getCurrentAudioDevice() == 0); // not the correct device type! | ||||
deleteAndZero (sampleRateLabel); | |||||
deleteAndZero (bufferSizeLabel); | |||||
deleteAndZero (sampleRateDropDown); | |||||
deleteAndZero (bufferSizeDropDown); | |||||
sampleRateLabel = 0; | |||||
bufferSizeLabel = 0; | |||||
sampleRateDropDown = 0; | |||||
bufferSizeDropDown = 0; | |||||
if (outputDeviceDropDown != 0) | if (outputDeviceDropDown != 0) | ||||
outputDeviceDropDown->setSelectedId (-1, true); | outputDeviceDropDown->setSelectedId (-1, true); | ||||
@@ -624,20 +594,11 @@ private: | |||||
AudioIODeviceType* const type; | AudioIODeviceType* const type; | ||||
const AudioIODeviceType::DeviceSetupDetails setup; | const AudioIODeviceType::DeviceSetupDetails setup; | ||||
ComboBox* outputDeviceDropDown; | |||||
ComboBox* inputDeviceDropDown; | |||||
ComboBox* sampleRateDropDown; | |||||
ComboBox* bufferSizeDropDown; | |||||
Label* outputDeviceLabel; | |||||
Label* inputDeviceLabel; | |||||
Label* sampleRateLabel; | |||||
Label* bufferSizeLabel; | |||||
Label* inputChanLabel; | |||||
Label* outputChanLabel; | |||||
TextButton* testButton; | |||||
Component* inputLevelMeter; | |||||
TextButton* showUIButton; | |||||
TextButton* showAdvancedSettingsButton; | |||||
ScopedPointer<ComboBox> outputDeviceDropDown, inputDeviceDropDown, sampleRateDropDown, bufferSizeDropDown; | |||||
ScopedPointer<Label> outputDeviceLabel, inputDeviceLabel, sampleRateLabel, bufferSizeLabel, inputChanLabel, outputChanLabel; | |||||
ScopedPointer<TextButton> testButton; | |||||
ScopedPointer<Component> inputLevelMeter; | |||||
ScopedPointer<TextButton> showUIButton, showAdvancedSettingsButton; | |||||
void showCorrectDeviceName (ComboBox* const box, const bool isInput) | void showCorrectDeviceName (ComboBox* const box, const bool isInput) | ||||
{ | { | ||||
@@ -937,8 +898,7 @@ public: | |||||
}; | }; | ||||
private: | private: | ||||
ChannelSelectorListBox* inputChanList; | |||||
ChannelSelectorListBox* outputChanList; | |||||
ScopedPointer<ChannelSelectorListBox> inputChanList, outputChanList; | |||||
AudioDeviceSettingsPanel (const AudioDeviceSettingsPanel&); | AudioDeviceSettingsPanel (const AudioDeviceSettingsPanel&); | ||||
AudioDeviceSettingsPanel& operator= (const AudioDeviceSettingsPanel&); | AudioDeviceSettingsPanel& operator= (const AudioDeviceSettingsPanel&); | ||||
@@ -958,7 +918,6 @@ AudioDeviceSelectorComponent::AudioDeviceSelectorComponent (AudioDeviceManager& | |||||
: deviceManager (deviceManager_), | : deviceManager (deviceManager_), | ||||
deviceTypeDropDown (0), | deviceTypeDropDown (0), | ||||
deviceTypeDropDownLabel (0), | deviceTypeDropDownLabel (0), | ||||
audioDeviceSettingsComp (0), | |||||
minOutputChannels (minOutputChannels_), | minOutputChannels (minOutputChannels_), | ||||
maxOutputChannels (maxOutputChannels_), | maxOutputChannels (maxOutputChannels_), | ||||
minInputChannels (minInputChannels_), | minInputChannels (minInputChannels_), | ||||
@@ -1026,7 +985,6 @@ AudioDeviceSelectorComponent::AudioDeviceSelectorComponent (AudioDeviceManager& | |||||
AudioDeviceSelectorComponent::~AudioDeviceSelectorComponent() | AudioDeviceSelectorComponent::~AudioDeviceSelectorComponent() | ||||
{ | { | ||||
deviceManager.removeChangeListener (this); | deviceManager.removeChangeListener (this); | ||||
deleteAllChildren(); | |||||
} | } | ||||
void AudioDeviceSelectorComponent::resized() | void AudioDeviceSelectorComponent::resized() | ||||
@@ -1088,7 +1046,7 @@ void AudioDeviceSelectorComponent::comboBoxChanged (ComboBox* comboBoxThatHasCha | |||||
if (type != 0) | if (type != 0) | ||||
{ | { | ||||
deleteAndZero (audioDeviceSettingsComp); | |||||
audioDeviceSettingsComp = 0; | |||||
deviceManager.setCurrentAudioDeviceType (type->getTypeName(), true); | deviceManager.setCurrentAudioDeviceType (type->getTypeName(), true); | ||||
@@ -1112,8 +1070,7 @@ void AudioDeviceSelectorComponent::changeListenerCallback (void*) | |||||
|| audioDeviceSettingsCompType != deviceManager.getCurrentAudioDeviceType()) | || audioDeviceSettingsCompType != deviceManager.getCurrentAudioDeviceType()) | ||||
{ | { | ||||
audioDeviceSettingsCompType = deviceManager.getCurrentAudioDeviceType(); | audioDeviceSettingsCompType = deviceManager.getCurrentAudioDeviceType(); | ||||
deleteAndZero (audioDeviceSettingsComp); | |||||
audioDeviceSettingsComp = 0; | |||||
AudioIODeviceType* const type | AudioIODeviceType* const type | ||||
= deviceManager.getAvailableDeviceTypes() [deviceTypeDropDown == 0 | = deviceManager.getAvailableDeviceTypes() [deviceTypeDropDown == 0 | ||||
@@ -95,19 +95,19 @@ public: | |||||
private: | private: | ||||
AudioDeviceManager& deviceManager; | AudioDeviceManager& deviceManager; | ||||
ComboBox* deviceTypeDropDown; | |||||
Label* deviceTypeDropDownLabel; | |||||
Component* audioDeviceSettingsComp; | |||||
ScopedPointer<ComboBox> deviceTypeDropDown; | |||||
ScopedPointer<Label> deviceTypeDropDownLabel; | |||||
ScopedPointer<Component> audioDeviceSettingsComp; | |||||
String audioDeviceSettingsCompType; | String audioDeviceSettingsCompType; | ||||
const int minOutputChannels, maxOutputChannels, minInputChannels, maxInputChannels; | const int minOutputChannels, maxOutputChannels, minInputChannels, maxInputChannels; | ||||
const bool showChannelsAsStereoPairs; | const bool showChannelsAsStereoPairs; | ||||
const bool hideAdvancedOptionsWithButton; | const bool hideAdvancedOptionsWithButton; | ||||
class MidiInputSelectorComponentListBox; | class MidiInputSelectorComponentListBox; | ||||
MidiInputSelectorComponentListBox* midiInputsList; | |||||
Label* midiInputsLabel; | |||||
ComboBox* midiOutputSelector; | |||||
Label* midiOutputLabel; | |||||
friend class ScopedPointer<MidiInputSelectorComponentListBox>; | |||||
ScopedPointer<MidiInputSelectorComponentListBox> midiInputsList; | |||||
ScopedPointer<ComboBox> midiOutputSelector; | |||||
ScopedPointer<Label> midiInputsLabel, midiOutputLabel; | |||||
AudioDeviceSelectorComponent (const AudioDeviceSelectorComponent&); | AudioDeviceSelectorComponent (const AudioDeviceSelectorComponent&); | ||||
AudioDeviceSelectorComponent& operator= (const AudioDeviceSelectorComponent&); | AudioDeviceSelectorComponent& operator= (const AudioDeviceSelectorComponent&); | ||||
@@ -71,7 +71,6 @@ public: | |||||
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 | #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 | ||||
audioProcID (0), | audioProcID (0), | ||||
#endif | #endif | ||||
inputDevice (0), | |||||
isSlaveDevice (false), | isSlaveDevice (false), | ||||
deviceID (id), | deviceID (id), | ||||
started (false), | started (false), | ||||
@@ -105,7 +104,6 @@ public: | |||||
AudioObjectRemovePropertyListener (deviceID, &pa, deviceListenerProc, this); | AudioObjectRemovePropertyListener (deviceID, &pa, deviceListenerProc, this); | ||||
stop (false); | stop (false); | ||||
delete inputDevice; | |||||
} | } | ||||
void allocateTempBuffers() | void allocateTempBuffers() | ||||
@@ -770,7 +768,7 @@ public: | |||||
AudioDeviceIOProcID audioProcID; | AudioDeviceIOProcID audioProcID; | ||||
#endif | #endif | ||||
CoreAudioInternal* inputDevice; | |||||
ScopedPointer<CoreAudioInternal> inputDevice; | |||||
bool isSlaveDevice; | bool isSlaveDevice; | ||||
private: | private: | ||||
@@ -874,7 +872,6 @@ public: | |||||
isOpen_ (false), | isOpen_ (false), | ||||
isStarted (false) | isStarted (false) | ||||
{ | { | ||||
internal = 0; | |||||
CoreAudioInternal* device = 0; | CoreAudioInternal* device = 0; | ||||
if (outputDeviceId == 0 || outputDeviceId == inputDeviceId) | if (outputDeviceId == 0 || outputDeviceId == inputDeviceId) | ||||
@@ -914,8 +911,6 @@ public: | |||||
pa.mElement = kAudioObjectPropertyElementWildcard; | pa.mElement = kAudioObjectPropertyElementWildcard; | ||||
AudioObjectRemovePropertyListener (kAudioObjectSystemObject, &pa, hardwareListenerProc, internal); | AudioObjectRemovePropertyListener (kAudioObjectSystemObject, &pa, hardwareListenerProc, internal); | ||||
delete internal; | |||||
} | } | ||||
const StringArray getOutputChannelNames() | const StringArray getOutputChannelNames() | ||||
@@ -1084,7 +1079,7 @@ public: | |||||
juce_UseDebuggingNewOperator | juce_UseDebuggingNewOperator | ||||
private: | private: | ||||
CoreAudioInternal* internal; | |||||
ScopedPointer<CoreAudioInternal> internal; | |||||
bool isOpen_, isStarted; | bool isOpen_, isStarted; | ||||
String lastError; | String lastError; | ||||
@@ -1503,7 +1503,7 @@ const String DSoundAudioIODevice::openDevice (const BigInteger& inputChannels, | |||||
enabledInputs.getHighestBit() + 1 - inChannels.size(), | enabledInputs.getHighestBit() + 1 - inChannels.size(), | ||||
false); | false); | ||||
inputBuffers.setSize (enabledInputs.countNumberOfSetBits(), bufferSizeSamples); | |||||
inputBuffers.setSize (jmax (1, enabledInputs.countNumberOfSetBits()), bufferSizeSamples); | |||||
int i, numIns = 0; | int i, numIns = 0; | ||||
for (i = 0; i <= enabledInputs.getHighestBit(); i += 2) | for (i = 0; i <= enabledInputs.getHighestBit(); i += 2) | ||||
@@ -1528,7 +1528,7 @@ const String DSoundAudioIODevice::openDevice (const BigInteger& inputChannels, | |||||
enabledOutputs.getHighestBit() + 1 - outChannels.size(), | enabledOutputs.getHighestBit() + 1 - outChannels.size(), | ||||
false); | false); | ||||
outputBuffers.setSize (enabledOutputs.countNumberOfSetBits(), bufferSizeSamples); | |||||
outputBuffers.setSize (jmax (1, enabledOutputs.countNumberOfSetBits()), bufferSizeSamples); | |||||
int numOuts = 0; | int numOuts = 0; | ||||
for (i = 0; i <= enabledOutputs.getHighestBit(); i += 2) | for (i = 0; i <= enabledOutputs.getHighestBit(); i += 2) | ||||