mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
Deprecated some old bool notification mode parameters, and replaced them with NotificationType values in the ComboBox and Button classes.
This commit is contained in:
parent
51b9d1ed98
commit
eb646f8c42
24 changed files with 119 additions and 95 deletions
|
|
@ -207,7 +207,7 @@ void JuceUpdater::updateInstallButtonStatus()
|
|||
{
|
||||
const int numChecked = getNumCheckedModules();
|
||||
installButton.setEnabled (numChecked > 0);
|
||||
selectAllButton.setToggleState (numChecked > latestList.modules.size() / 2, false);
|
||||
selectAllButton.setToggleState (numChecked > latestList.modules.size() / 2, dontSendNotification);
|
||||
}
|
||||
|
||||
void JuceUpdater::filenameComponentChanged (FilenameComponent*)
|
||||
|
|
|
|||
|
|
@ -320,7 +320,7 @@ public:
|
|||
|
||||
addAndMakeVisible (&caseButton);
|
||||
caseButton.setColour (ToggleButton::textColourId, Colours::white);
|
||||
caseButton.setToggleState (isCaseSensitiveSearch(), false);
|
||||
caseButton.setToggleState (isCaseSensitiveSearch(), dontSendNotification);
|
||||
caseButton.addListener (this);
|
||||
|
||||
findPrev.setConnectedEdges (Button::ConnectedOnRight);
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ public:
|
|||
if (! ButtonHandler::restoreFromXml (xml, comp, layout))
|
||||
return false;
|
||||
|
||||
tb->setToggleState (xml.getBoolAttribute ("state", false), false);
|
||||
tb->setToggleState (xml.getBoolAttribute ("state", false), dontSendNotification);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -75,7 +75,7 @@ public:
|
|||
String s;
|
||||
|
||||
if (tb->getToggleState())
|
||||
s << memberVariableName << "->setToggleState (true, false);\n";
|
||||
s << memberVariableName << "->setToggleState (true, dontSendNotification);\n";
|
||||
|
||||
s << getColourIntialisationCode (component, memberVariableName)
|
||||
<< '\n';
|
||||
|
|
@ -117,7 +117,7 @@ private:
|
|||
bool perform()
|
||||
{
|
||||
showCorrectTab();
|
||||
getComponent()->setToggleState (newState, false);
|
||||
getComponent()->setToggleState (newState, dontSendNotification);
|
||||
changed();
|
||||
return true;
|
||||
}
|
||||
|
|
@ -125,7 +125,7 @@ private:
|
|||
bool undo()
|
||||
{
|
||||
showCorrectTab();
|
||||
getComponent()->setToggleState (oldState, false);
|
||||
getComponent()->setToggleState (oldState, dontSendNotification);
|
||||
changed();
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ struct NewProjectWizardClasses
|
|||
setupComp.addChildAndSetID (c, "filesToCreate");
|
||||
|
||||
c->addItemList (fileOptions, 1);
|
||||
c->setSelectedId (1, false);
|
||||
c->setSelectedId (1, dontSendNotification);
|
||||
|
||||
Label* l = new Label (String::empty, TRANS("Files to Auto-Generate") + ":");
|
||||
l->attachToComponent (c, true);
|
||||
|
|
@ -482,7 +482,7 @@ struct NewProjectWizardClasses
|
|||
|
||||
addChildAndSetID (&projectType, "projectType");
|
||||
projectType.addItemList (getWizardNames(), 1);
|
||||
projectType.setSelectedId (1, true);
|
||||
projectType.setSelectedId (1, dontSendNotification);
|
||||
projectType.setBounds ("100, projectName.bottom + 4, projectName.right, top + 22");
|
||||
typeLabel.attachToComponent (&projectType, true);
|
||||
projectType.addListener (this);
|
||||
|
|
|
|||
|
|
@ -253,7 +253,7 @@ AudioDemoSynthPage::AudioDemoSynthPage (AudioDeviceManager& deviceManager_)
|
|||
sineButton->setButtonText ("Use sine wave");
|
||||
sineButton->setRadioGroupId (321);
|
||||
sineButton->addListener (this);
|
||||
sineButton->setToggleState (true, false);
|
||||
sineButton->setToggleState (true, dontSendNotification);
|
||||
|
||||
addAndMakeVisible (sampledButton = new ToggleButton (String::empty));
|
||||
sampledButton->setButtonText ("Use sampled sound");
|
||||
|
|
|
|||
|
|
@ -520,7 +520,7 @@ RenderingTestComponent::RenderingTestComponent ()
|
|||
testTypeComboBox->setSelectedId (2);
|
||||
sizeSlider->setValue (1.0, dontSendNotification);
|
||||
opacitySlider->setValue (1.0, dontSendNotification);
|
||||
highQualityToggle->setToggleState (true, false);
|
||||
highQualityToggle->setToggleState (true, dontSendNotification);
|
||||
//[/Constructor]
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -242,7 +242,7 @@ private:
|
|||
{
|
||||
row = newRow;
|
||||
columnId = newColumn;
|
||||
comboBox.setSelectedId (owner.getRating (row), true);
|
||||
comboBox.setSelectedId (owner.getRating (row), dontSendNotification);
|
||||
}
|
||||
|
||||
void comboBoxChanged (ComboBox* /*comboBoxThatHasChanged*/)
|
||||
|
|
|
|||
|
|
@ -399,7 +399,7 @@ static Component* createRadioButtonPage()
|
|||
tb->setTooltip ("a set of mutually-exclusive radio buttons");
|
||||
|
||||
if (i == 0)
|
||||
tb->setToggleState (true, false);
|
||||
tb->setToggleState (true, dontSendNotification);
|
||||
}
|
||||
|
||||
for (int i = 0; i < 4; ++i)
|
||||
|
|
@ -429,7 +429,7 @@ static Component* createRadioButtonPage()
|
|||
db->setBounds (25 + i * buttonSize, 180, buttonSize, buttonSize);
|
||||
|
||||
if (i == 0)
|
||||
db->setToggleState (true, false);
|
||||
db->setToggleState (true, dontSendNotification);
|
||||
}
|
||||
|
||||
for (int i = 0; i < 4; ++i)
|
||||
|
|
@ -447,7 +447,7 @@ static Component* createRadioButtonPage()
|
|||
| ((i != 3) ? Button::ConnectedOnRight : 0));
|
||||
|
||||
if (i == 0)
|
||||
tb->setToggleState (true, false);
|
||||
tb->setToggleState (true, dontSendNotification);
|
||||
}
|
||||
|
||||
return page;
|
||||
|
|
@ -1074,7 +1074,7 @@ public:
|
|||
addAndMakeVisible (&enableButton);
|
||||
enableButton.setBounds (230, 10, 180, 24);
|
||||
enableButton.setTooltip ("Enables/disables all the components");
|
||||
enableButton.setToggleState (true, false);
|
||||
enableButton.setToggleState (true, dontSendNotification);
|
||||
enableButton.addListener (this);
|
||||
|
||||
addAndMakeVisible (&transformSlider);
|
||||
|
|
|
|||
|
|
@ -465,10 +465,10 @@ public:
|
|||
bufferSizeDropDown = nullptr;
|
||||
|
||||
if (outputDeviceDropDown != nullptr)
|
||||
outputDeviceDropDown->setSelectedId (-1, true);
|
||||
outputDeviceDropDown->setSelectedId (-1, dontSendNotification);
|
||||
|
||||
if (inputDeviceDropDown != nullptr)
|
||||
inputDeviceDropDown->setSelectedId (-1, true);
|
||||
inputDeviceDropDown->setSelectedId (-1, dontSendNotification);
|
||||
}
|
||||
|
||||
resized();
|
||||
|
|
@ -498,7 +498,7 @@ private:
|
|||
|
||||
const int index = type->getIndexOfDevice (currentDevice, isInput);
|
||||
|
||||
box->setSelectedId (index + 1, true);
|
||||
box->setSelectedId (index + 1, dontSendNotification);
|
||||
|
||||
if (testButton != nullptr && ! isInput)
|
||||
testButton->setEnabled (index >= 0);
|
||||
|
|
@ -509,13 +509,13 @@ private:
|
|||
{
|
||||
const StringArray devs (type->getDeviceNames (isInputs));
|
||||
|
||||
combo.clear (true);
|
||||
combo.clear (dontSendNotification);
|
||||
|
||||
for (int i = 0; i < devs.size(); ++i)
|
||||
combo.addItem (devs[i], i + 1);
|
||||
|
||||
combo.addItem (getNoDeviceString(), -1);
|
||||
combo.setSelectedId (-1, true);
|
||||
combo.setSelectedId (-1, dontSendNotification);
|
||||
}
|
||||
|
||||
int getLowestY() const
|
||||
|
|
@ -617,7 +617,7 @@ private:
|
|||
sampleRateDropDown->addItem (String (rate) + " Hz", rate);
|
||||
}
|
||||
|
||||
sampleRateDropDown->setSelectedId (roundToInt (currentDevice->getCurrentSampleRate()), true);
|
||||
sampleRateDropDown->setSelectedId (roundToInt (currentDevice->getCurrentSampleRate()), dontSendNotification);
|
||||
sampleRateDropDown->addListener (this);
|
||||
}
|
||||
|
||||
|
|
@ -651,7 +651,7 @@ private:
|
|||
bs);
|
||||
}
|
||||
|
||||
bufferSizeDropDown->setSelectedId (currentDevice->getCurrentBufferSizeSamples(), true);
|
||||
bufferSizeDropDown->setSelectedId (currentDevice->getCurrentBufferSizeSamples(), dontSendNotification);
|
||||
bufferSizeDropDown->addListener (this);
|
||||
}
|
||||
|
||||
|
|
@ -1059,7 +1059,7 @@ void AudioDeviceSelectorComponent::changeListenerCallback (ChangeBroadcaster*)
|
|||
void AudioDeviceSelectorComponent::updateAllControls()
|
||||
{
|
||||
if (deviceTypeDropDown != nullptr)
|
||||
deviceTypeDropDown->setText (deviceManager.getCurrentAudioDeviceType(), false);
|
||||
deviceTypeDropDown->setText (deviceManager.getCurrentAudioDeviceType(), dontSendNotification);
|
||||
|
||||
if (audioDeviceSettingsComp == nullptr
|
||||
|| audioDeviceSettingsCompType != deviceManager.getCurrentAudioDeviceType())
|
||||
|
|
@ -1112,7 +1112,7 @@ void AudioDeviceSelectorComponent::updateAllControls()
|
|||
if (deviceManager.getDefaultMidiOutput() != nullptr)
|
||||
current = 1 + midiOuts.indexOf (deviceManager.getDefaultMidiOutputName());
|
||||
|
||||
midiOutputSelector->setSelectedId (current, true);
|
||||
midiOutputSelector->setSelectedId (current, dontSendNotification);
|
||||
}
|
||||
|
||||
resized();
|
||||
|
|
|
|||
|
|
@ -271,10 +271,12 @@ namespace juce
|
|||
|
||||
//==============================================================================
|
||||
// Cross-compiler deprecation macros..
|
||||
#if DOXYGEN || (JUCE_MSVC && ! JUCE_NO_DEPRECATION_WARNINGS)
|
||||
/** This can be used to wrap a function which has been deprecated. */
|
||||
#ifdef DOXYGEN
|
||||
/** This macro can be used to wrap a function which has been deprecated. */
|
||||
#define JUCE_DEPRECATED(functionDef)
|
||||
#elif JUCE_MSVC && ! JUCE_NO_DEPRECATION_WARNINGS
|
||||
#define JUCE_DEPRECATED(functionDef) __declspec(deprecated) functionDef
|
||||
#elif JUCE_GCC && ! JUCE_NO_DEPRECATION_WARNINGS
|
||||
#elif JUCE_GCC && ! JUCE_NO_DEPRECATION_WARNINGS
|
||||
#define JUCE_DEPRECATED(functionDef) functionDef __attribute__ ((deprecated))
|
||||
#else
|
||||
#define JUCE_DEPRECATED(functionDef) functionDef
|
||||
|
|
|
|||
|
|
@ -1224,7 +1224,7 @@ private:
|
|||
explicit String (const PreallocationBytes&); // This constructor preallocates a certain amount of memory
|
||||
void appendFixedLength (const char* text, int numExtraChars);
|
||||
size_t getByteOffsetOfEnd() const noexcept;
|
||||
JUCE_DEPRECATED (String (const String& stringToCopy, size_t charsToAllocate));
|
||||
JUCE_DEPRECATED (String (const String&, size_t));
|
||||
|
||||
// This private cast operator should prevent strings being accidentally cast
|
||||
// to bools (this is possible because the compiler can add an implicit cast
|
||||
|
|
|
|||
|
|
@ -124,7 +124,7 @@ void Button::setConnectedEdges (const int connectedEdgeFlags_)
|
|||
|
||||
//==============================================================================
|
||||
void Button::setToggleState (const bool shouldBeOn,
|
||||
const bool sendChangeNotification)
|
||||
const NotificationType notification)
|
||||
{
|
||||
if (shouldBeOn != lastToggleState)
|
||||
{
|
||||
|
|
@ -136,8 +136,11 @@ void Button::setToggleState (const bool shouldBeOn,
|
|||
|
||||
WeakReference<Component> deletionWatcher (this);
|
||||
|
||||
if (sendChangeNotification)
|
||||
if (notification != dontSendNotification)
|
||||
{
|
||||
// async callbacks aren't possible here
|
||||
jassert (notification != sendNotificationAsync);
|
||||
|
||||
sendClickMessage (ModifierKeys());
|
||||
|
||||
if (deletionWatcher == nullptr)
|
||||
|
|
@ -146,7 +149,7 @@ void Button::setToggleState (const bool shouldBeOn,
|
|||
|
||||
if (lastToggleState)
|
||||
{
|
||||
turnOffOtherButtonsInGroup (sendChangeNotification);
|
||||
turnOffOtherButtonsInGroup (notification);
|
||||
|
||||
if (deletionWatcher == nullptr)
|
||||
return;
|
||||
|
|
@ -156,6 +159,11 @@ void Button::setToggleState (const bool shouldBeOn,
|
|||
}
|
||||
}
|
||||
|
||||
void Button::setToggleState (const bool shouldBeOn, bool sendChange)
|
||||
{
|
||||
setToggleState (shouldBeOn, sendChange ? sendNotification : dontSendNotification);
|
||||
}
|
||||
|
||||
void Button::setClickingTogglesState (const bool shouldToggle) noexcept
|
||||
{
|
||||
clickTogglesState = shouldToggle;
|
||||
|
|
@ -175,7 +183,7 @@ bool Button::getClickingTogglesState() const noexcept
|
|||
void Button::valueChanged (Value& value)
|
||||
{
|
||||
if (value.refersToSameSourceAs (isOn))
|
||||
setToggleState (isOn.getValue(), true);
|
||||
setToggleState (isOn.getValue(), sendNotification);
|
||||
}
|
||||
|
||||
void Button::setRadioGroupId (const int newGroupId)
|
||||
|
|
@ -185,11 +193,11 @@ void Button::setRadioGroupId (const int newGroupId)
|
|||
radioGroupId = newGroupId;
|
||||
|
||||
if (lastToggleState)
|
||||
turnOffOtherButtonsInGroup (true);
|
||||
turnOffOtherButtonsInGroup (sendNotification);
|
||||
}
|
||||
}
|
||||
|
||||
void Button::turnOffOtherButtonsInGroup (const bool sendChangeNotification)
|
||||
void Button::turnOffOtherButtonsInGroup (const NotificationType notification)
|
||||
{
|
||||
if (Component* const p = getParentComponent())
|
||||
{
|
||||
|
|
@ -207,7 +215,7 @@ void Button::turnOffOtherButtonsInGroup (const bool sendChangeNotification)
|
|||
{
|
||||
if (b->getRadioGroupId() == radioGroupId)
|
||||
{
|
||||
b->setToggleState (false, sendChangeNotification);
|
||||
b->setToggleState (false, notification);
|
||||
|
||||
if (deletionWatcher == nullptr)
|
||||
return;
|
||||
|
|
@ -309,7 +317,7 @@ void Button::triggerClick()
|
|||
void Button::internalClickCallback (const ModifierKeys& modifiers)
|
||||
{
|
||||
if (clickTogglesState)
|
||||
setToggleState ((radioGroupId != 0) || ! lastToggleState, false);
|
||||
setToggleState ((radioGroupId != 0) || ! lastToggleState, dontSendNotification);
|
||||
|
||||
sendClickMessage (modifiers);
|
||||
}
|
||||
|
|
@ -351,9 +359,6 @@ void Button::removeListener (ButtonListener* const listener)
|
|||
buttonListeners.remove (listener);
|
||||
}
|
||||
|
||||
void Button::addButtonListener (ButtonListener* l) { addListener (l); }
|
||||
void Button::removeButtonListener (ButtonListener* l) { removeListener (l); }
|
||||
|
||||
void Button::sendClickMessage (const ModifierKeys& modifiers)
|
||||
{
|
||||
Component::BailOutChecker checker (this);
|
||||
|
|
@ -523,7 +528,7 @@ void Button::applicationCommandListChanged()
|
|||
setEnabled (target != nullptr && (info.flags & ApplicationCommandInfo::isDisabled) == 0);
|
||||
|
||||
if (target != nullptr)
|
||||
setToggleState ((info.flags & ApplicationCommandInfo::isTicked) != 0, false);
|
||||
setToggleState ((info.flags & ApplicationCommandInfo::isTicked) != 0, dontSendNotification);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -90,17 +90,17 @@ public:
|
|||
an action you won't change this. Toggle buttons, however will want to
|
||||
change their state when turned on or off.
|
||||
|
||||
@param shouldBeOn whether to set the button's toggle state to be on or
|
||||
off. If it's a member of a button group, this will
|
||||
always try to turn it on, and to turn off any other
|
||||
buttons in the group
|
||||
@param sendChangeNotification if true, a callback will be made to clicked(); if false
|
||||
the button will be repainted but no notification will
|
||||
be sent
|
||||
@param shouldBeOn whether to set the button's toggle state to be on or
|
||||
off. If it's a member of a button group, this will
|
||||
always try to turn it on, and to turn off any other
|
||||
buttons in the group
|
||||
@param notification determines the behaviour if the value changes - this
|
||||
can invoke a synchronous call to clicked(), but
|
||||
sendNotificationAsync is not supported
|
||||
@see getToggleState, setRadioGroupId
|
||||
*/
|
||||
void setToggleState (bool shouldBeOn,
|
||||
bool sendChangeNotification);
|
||||
NotificationType notification);
|
||||
|
||||
/** Returns true if the button is 'on'.
|
||||
|
||||
|
|
@ -353,6 +353,8 @@ public:
|
|||
*/
|
||||
void setState (const ButtonState newState);
|
||||
|
||||
// This method's parameters have changed - see the new version.
|
||||
JUCE_DEPRECATED (void setToggleState (bool, bool));
|
||||
|
||||
protected:
|
||||
//==============================================================================
|
||||
|
|
@ -474,16 +476,12 @@ private:
|
|||
ButtonState updateState();
|
||||
ButtonState updateState (bool isOver, bool isDown);
|
||||
bool isShortcutPressed() const;
|
||||
void turnOffOtherButtonsInGroup (bool sendChangeNotification);
|
||||
void turnOffOtherButtonsInGroup (NotificationType);
|
||||
|
||||
void flashButtonState();
|
||||
void sendClickMessage (const ModifierKeys&);
|
||||
void sendStateMessage();
|
||||
|
||||
// These are deprecated - please use addListener() and removeListener() instead!
|
||||
JUCE_DEPRECATED (void addButtonListener (Listener*));
|
||||
JUCE_DEPRECATED (void removeButtonListener (Listener*));
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Button)
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -2214,12 +2214,10 @@ public:
|
|||
CachedComponentImage* getCachedComponentImage() const noexcept { return cachedImage; }
|
||||
|
||||
//==============================================================================
|
||||
#ifndef DOXYGEN
|
||||
// These methods are deprecated - use localPointToGlobal, getLocalPoint, getLocalPoint, etc instead.
|
||||
JUCE_DEPRECATED (Point<int> relativePositionToGlobal (Point<int>) const);
|
||||
JUCE_DEPRECATED (Point<int> globalPositionToRelative (Point<int>) const);
|
||||
JUCE_DEPRECATED (Point<int> relativePositionToOtherComponent (const Component*, Point<int>) const);
|
||||
#endif
|
||||
|
||||
private:
|
||||
//==============================================================================
|
||||
|
|
|
|||
|
|
@ -244,7 +244,7 @@ void FileBrowserComponent::setRoot (const File& newRootDirectory)
|
|||
if (currentRootName.isEmpty())
|
||||
currentRootName = File::separatorString;
|
||||
|
||||
currentPathBox.setText (currentRootName, true);
|
||||
currentPathBox.setText (currentRootName, dontSendNotification);
|
||||
|
||||
goUpButton->setEnabled (currentRoot.getParentDirectory().isDirectory()
|
||||
&& currentRoot.getParentDirectory() != currentRoot);
|
||||
|
|
|
|||
|
|
@ -174,7 +174,7 @@ void FilenameComponent::setCurrentFile (File newFile,
|
|||
if (addToRecentlyUsedList)
|
||||
addRecentlyUsedFile (newFile);
|
||||
|
||||
filenameBox.setText (lastFilename, true);
|
||||
filenameBox.setText (lastFilename, dontSendNotification);
|
||||
|
||||
if (notification != dontSendNotification)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -321,7 +321,7 @@ void TabbedButtonBar::setCurrentTabIndex (int newIndex, const bool sendChangeMes
|
|||
for (int i = 0; i < tabs.size(); ++i)
|
||||
{
|
||||
TabBarButton* tb = tabs.getUnchecked(i)->button;
|
||||
tb->setToggleState (i == newIndex, false);
|
||||
tb->setToggleState (i == newIndex, dontSendNotification);
|
||||
}
|
||||
|
||||
resized();
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ BooleanPropertyComponent::~BooleanPropertyComponent()
|
|||
|
||||
void BooleanPropertyComponent::setState (const bool newState)
|
||||
{
|
||||
button.setToggleState (newState, true);
|
||||
button.setToggleState (newState, sendNotification);
|
||||
}
|
||||
|
||||
bool BooleanPropertyComponent::getState() const
|
||||
|
|
@ -75,7 +75,7 @@ void BooleanPropertyComponent::paint (Graphics& g)
|
|||
|
||||
void BooleanPropertyComponent::refresh()
|
||||
{
|
||||
button.setToggleState (getState(), false);
|
||||
button.setToggleState (getState(), dontSendNotification);
|
||||
button.setButtonText (button.getToggleState() ? onText : offText);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ void ChoicePropertyComponent::refresh()
|
|||
comboBox.addListener (this);
|
||||
}
|
||||
|
||||
comboBox.setSelectedId (getIndex() + 1, true);
|
||||
comboBox.setSelectedId (getIndex() + 1, dontSendNotification);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -165,13 +165,13 @@ void ComboBox::changeItemText (const int itemId, const String& newText)
|
|||
jassertfalse;
|
||||
}
|
||||
|
||||
void ComboBox::clear (const bool dontSendChangeMessage)
|
||||
void ComboBox::clear (const NotificationType notification)
|
||||
{
|
||||
items.clear();
|
||||
separatorPending = false;
|
||||
|
||||
if (! label->isEditable())
|
||||
setSelectedItemIndex (-1, dontSendChangeMessage);
|
||||
setSelectedItemIndex (-1, notification);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
|
|
@ -257,9 +257,9 @@ int ComboBox::getSelectedItemIndex() const
|
|||
return index;
|
||||
}
|
||||
|
||||
void ComboBox::setSelectedItemIndex (const int index, const bool dontSendChangeMessage)
|
||||
void ComboBox::setSelectedItemIndex (const int index, const NotificationType notification)
|
||||
{
|
||||
setSelectedId (getItemId (index), dontSendChangeMessage);
|
||||
setSelectedId (getItemId (index), notification);
|
||||
}
|
||||
|
||||
int ComboBox::getSelectedId() const noexcept
|
||||
|
|
@ -269,21 +269,20 @@ int ComboBox::getSelectedId() const noexcept
|
|||
return (item != nullptr && getText() == item->name) ? item->itemId : 0;
|
||||
}
|
||||
|
||||
void ComboBox::setSelectedId (const int newItemId, const bool dontSendChangeMessage)
|
||||
void ComboBox::setSelectedId (const int newItemId, const NotificationType notification)
|
||||
{
|
||||
const ItemInfo* const item = getItemForId (newItemId);
|
||||
const String newItemText (item != nullptr ? item->name : String::empty);
|
||||
|
||||
if (lastCurrentId != newItemId || label->getText() != newItemText)
|
||||
{
|
||||
if (! dontSendChangeMessage)
|
||||
triggerAsyncUpdate();
|
||||
|
||||
label->setText (newItemText, dontSendNotification);
|
||||
lastCurrentId = newItemId;
|
||||
currentId = newItemId;
|
||||
|
||||
repaint(); // for the benefit of the 'none selected' text
|
||||
|
||||
sendChange (notification);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -304,7 +303,7 @@ bool ComboBox::selectIfEnabled (const int index)
|
|||
void ComboBox::valueChanged (Value&)
|
||||
{
|
||||
if (lastCurrentId != (int) currentId.getValue())
|
||||
setSelectedId (currentId.getValue(), false);
|
||||
setSelectedId (currentId.getValue());
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
|
|
@ -313,7 +312,7 @@ String ComboBox::getText() const
|
|||
return label->getText();
|
||||
}
|
||||
|
||||
void ComboBox::setText (const String& newText, const bool dontSendChangeMessage)
|
||||
void ComboBox::setText (const String& newText, const NotificationType notification)
|
||||
{
|
||||
for (int i = items.size(); --i >= 0;)
|
||||
{
|
||||
|
|
@ -322,23 +321,20 @@ void ComboBox::setText (const String& newText, const bool dontSendChangeMessage)
|
|||
if (item->isRealItem()
|
||||
&& item->name == newText)
|
||||
{
|
||||
setSelectedId (item->itemId, dontSendChangeMessage);
|
||||
setSelectedId (item->itemId, notification);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
lastCurrentId = 0;
|
||||
currentId = 0;
|
||||
repaint();
|
||||
|
||||
if (label->getText() != newText)
|
||||
{
|
||||
label->setText (newText, dontSendNotification);
|
||||
|
||||
if (! dontSendChangeMessage)
|
||||
triggerAsyncUpdate();
|
||||
sendChange (notification);
|
||||
}
|
||||
|
||||
repaint();
|
||||
}
|
||||
|
||||
void ComboBox::showEditor()
|
||||
|
|
@ -594,3 +590,18 @@ void ComboBox::handleAsyncUpdate()
|
|||
Component::BailOutChecker checker (this);
|
||||
listeners.callChecked (checker, &ComboBoxListener::comboBoxChanged, this); // (can't use ComboBox::Listener due to idiotic VC2005 bug)
|
||||
}
|
||||
|
||||
void ComboBox::sendChange (const NotificationType notification)
|
||||
{
|
||||
if (notification != dontSendNotification)
|
||||
triggerAsyncUpdate();
|
||||
|
||||
if (notification == sendNotificationSync)
|
||||
handleUpdateNowIfNeeded();
|
||||
}
|
||||
|
||||
// Old deprecated methods - remove eventually...
|
||||
void ComboBox::clear (const bool dontSendChange) { clear (dontSendChange ? dontSendNotification : sendNotification); }
|
||||
void ComboBox::setSelectedItemIndex (const int index, const bool dontSendChange) { setSelectedItemIndex (index, dontSendChange ? dontSendNotification : sendNotification); }
|
||||
void ComboBox::setSelectedId (const int newItemId, const bool dontSendChange) { setSelectedId (newItemId, dontSendChange ? dontSendNotification : sendNotification); }
|
||||
void ComboBox::setText (const String& newText, const bool dontSendChange) { setText (newText, dontSendChange ? dontSendNotification : sendNotification); }
|
||||
|
|
|
|||
|
|
@ -141,12 +141,12 @@ public:
|
|||
|
||||
/** Removes all the items from the drop-down list.
|
||||
|
||||
If this call causes the content to be cleared, then a change-message
|
||||
will be broadcast unless dontSendChangeMessage is true.
|
||||
If this call causes the content to be cleared, and a change-message
|
||||
will be broadcast according to the notification parameter.
|
||||
|
||||
@see addItem, removeItem, getNumItems
|
||||
*/
|
||||
void clear (bool dontSendChangeMessage = false);
|
||||
void clear (NotificationType notification = sendNotificationAsync);
|
||||
|
||||
/** Returns the number of items that have been added to the list.
|
||||
|
||||
|
|
@ -196,12 +196,13 @@ public:
|
|||
This will set the ComboBox's text to that of the item that matches
|
||||
this ID.
|
||||
|
||||
@param newItemId the new item to select
|
||||
@param dontSendChangeMessage if set to true, this method won't trigger a
|
||||
change notification
|
||||
@param newItemId the new item to select
|
||||
@param notification determines the type of change notification that will
|
||||
be sent to listeners if the value changes
|
||||
@see getSelectedId, setSelectedItemIndex, setText
|
||||
*/
|
||||
void setSelectedId (int newItemId, bool dontSendChangeMessage = false);
|
||||
void setSelectedId (int newItemId,
|
||||
NotificationType notification = sendNotificationAsync);
|
||||
|
||||
//==============================================================================
|
||||
/** Returns the index of the item that's currently shown in the box.
|
||||
|
|
@ -219,12 +220,13 @@ public:
|
|||
This will set the ComboBox's text to that of the item at the given
|
||||
index in the list.
|
||||
|
||||
@param newItemIndex the new item to select
|
||||
@param dontSendChangeMessage if set to true, this method won't trigger a
|
||||
change notification
|
||||
@param newItemIndex the new item to select
|
||||
@param notification determines the type of change notification that will
|
||||
be sent to listeners if the value changes
|
||||
@see getSelectedItemIndex, setSelectedId, setText
|
||||
*/
|
||||
void setSelectedItemIndex (int newItemIndex, bool dontSendChangeMessage = false);
|
||||
void setSelectedItemIndex (int newItemIndex,
|
||||
NotificationType notification = sendNotificationAsync);
|
||||
|
||||
//==============================================================================
|
||||
/** Returns the text that is currently shown in the combo-box's text field.
|
||||
|
|
@ -244,12 +246,13 @@ public:
|
|||
items, then getSelectedId() will return -1, otherwise it wil return
|
||||
the approriate ID.
|
||||
|
||||
@param newText the text to select
|
||||
@param dontSendChangeMessage if set to true, this method won't trigger a
|
||||
change notification
|
||||
@param newText the text to select
|
||||
@param notification determines the type of change notification that will
|
||||
be sent to listeners if the text changes
|
||||
@see getText
|
||||
*/
|
||||
void setText (const String& newText, bool dontSendChangeMessage = false);
|
||||
void setText (const String& newText,
|
||||
NotificationType notification = sendNotificationAsync);
|
||||
|
||||
/** Programmatically opens the text editor to allow the user to edit the current item.
|
||||
|
||||
|
|
@ -371,6 +374,12 @@ public:
|
|||
/** @internal */
|
||||
void valueChanged (Value&) override;
|
||||
|
||||
// These methods' bool parameters have changed: see their new method signatures.
|
||||
JUCE_DEPRECATED (void clear (bool));
|
||||
JUCE_DEPRECATED (void setSelectedId (int, bool));
|
||||
JUCE_DEPRECATED (void setSelectedItemIndex (int, bool));
|
||||
JUCE_DEPRECATED (void setText (const String&, bool));
|
||||
|
||||
private:
|
||||
//==============================================================================
|
||||
struct ItemInfo
|
||||
|
|
@ -395,6 +404,7 @@ private:
|
|||
ItemInfo* getItemForId (int itemId) const noexcept;
|
||||
ItemInfo* getItemForIndex (int index) const noexcept;
|
||||
bool selectIfEnabled (int index);
|
||||
void sendChange (NotificationType);
|
||||
static void popupMenuFinishedCallback (int, ComboBox*);
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ComboBox)
|
||||
|
|
|
|||
|
|
@ -232,7 +232,7 @@ void DocumentWindow::resized()
|
|||
ResizableWindow::resized();
|
||||
|
||||
if (Button* const b = getMaximiseButton())
|
||||
b->setToggleState (isFullScreen(), false);
|
||||
b->setToggleState (isFullScreen(), dontSendNotification);
|
||||
|
||||
const Rectangle<int> titleBarArea (getTitleBarArea());
|
||||
|
||||
|
|
|
|||
|
|
@ -312,7 +312,7 @@ public:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
/** @deprecated - use setContentOwned() and setContentNonOwned() instead. */
|
||||
// Deprecated: use setContentOwned() and setContentNonOwned() instead.
|
||||
JUCE_DEPRECATED (void setContentComponent (Component* newContentComponent,
|
||||
bool deleteOldOne = true,
|
||||
bool resizeToFit = false));
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@ void PreferencesPanel::setCurrentPage (const String& pageName)
|
|||
{
|
||||
if (buttons.getUnchecked(i)->getName() == pageName)
|
||||
{
|
||||
buttons.getUnchecked(i)->setToggleState (true, false);
|
||||
buttons.getUnchecked(i)->setToggleState (true, dontSendNotification);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue