Browse Source

Fix for transformed Components not being centred correctly

tags/2021-05-28
ed 8 years ago
parent
commit
6d356423e2
1 changed files with 8 additions and 6 deletions
  1. +8
    -6
      modules/juce_gui_basics/components/juce_Component.cpp

+ 8
- 6
modules/juce_gui_basics/components/juce_Component.cpp View File

@@ -434,9 +434,9 @@ struct Component::ComponentHelpers
static Rectangle<int> getParentOrMainMonitorBounds (const Component& comp)
{
if (Component* p = comp.getParentComponent())
return p->getLocalBounds();
return comp.getLocalArea (p, p->getLocalBounds());
return Desktop::getInstance().getDisplays().getMainDisplay().userArea;
return convertFromParentSpace (comp, Desktop::getInstance().getDisplays().getMainDisplay().userArea);
}
static void releaseAllCachedImageResources (Component& c)
@@ -1250,8 +1250,10 @@ void Component::setBounds (const String& newBoundsExpression)
void Component::setBoundsRelative (const float x, const float y,
const float w, const float h)
{
const int pw = getParentWidth();
const int ph = getParentHeight();
const Rectangle<int> parentArea (ComponentHelpers::getParentOrMainMonitorBounds (*this));
const int pw = parentArea.getWidth();
const int ph = parentArea.getHeight();
setBounds (roundToInt (x * pw),
roundToInt (y * ph),
@@ -1261,8 +1263,8 @@ void Component::setBoundsRelative (const float x, const float y,
void Component::setCentrePosition (const int x, const int y)
{
setTopLeftPosition (x - getWidth() / 2,
y - getHeight() / 2);
setTopLeftPosition (ComponentHelpers::convertFromParentSpace (*this, Point<int> (x, y))
.translated (getWidth() / -2, getHeight() / -2));
}
void Component::setCentreRelative (const float x, const float y)


Loading…
Cancel
Save