summaryrefslogtreecommitdiff
path: root/indra/llui/llpanel.cpp
diff options
context:
space:
mode:
authorSteven Bennetts <steve@lindenlab.com>2008-02-19 23:12:34 +0000
committerSteven Bennetts <steve@lindenlab.com>2008-02-19 23:12:34 +0000
commit903292ba6779daabdb25cf22862cef6907a81f3d (patch)
tree3bb0d58e749e70c79cd5adef768aed79228ea487 /indra/llui/llpanel.cpp
parent2e32d44e7165775936beae5d9ef636ff9d3f2bd2 (diff)
merge -r 78989:80279 Branch_1-19-0-Viewer-> release
Changes from 1.19.0.2 and 1.19.0.3 DEV-9226 Some Dazzle? icons have sneaked into the release branch DEV-9226 - lock icon not appearing in properties window for no-modify inventory items DEV-8771 Preferences > Web has truncated text in the Address: section, ported and tested minor xml change DEV-9736 commit 1.19.0 second set of translated xui strings DEV-9825 Make the region info message a passive notification DEV-7714 - Korean viewer crashes on startup. DEV-9759 - Stand up button etc dissapear offscreen after using mouselook DEV-9938 client-readme-voice.txt missing from open source distribution DEV-9436 Changed default SL window size to 1000x700, to allow buttons in UI to have proper labels (Communicate) and search to fit onscreen. DEV-10031 Clicking on another users classifieds ad then closing asks you to save changes DEV-10066 Checking to select a role does not enable the apply button DEV-8809 stray 'Done" on the Profile Web tab DEV-8515 Debug settings overrides do not work for booleans. svn merge -r77376:77377 sl-parcelmedia-3. OK by cg. DEV-10083: Preferences window docks at an offscreen position and cannot be moved vertically DEV-10186 - LLIMPanel kills the framerate for group ims. DEV-10108 Viewer freeze and delay in opening map DEV-10115 Visible flashing of prim highlight when editing DEV-10112 Parcel audio play setting is not remembered when crossing over a parcel with no media DEV-10109 Alt and left/right arrow keys dont move you between tabs DEV-10093 Login Page > SL Release link overlaps Quit when viewer resized DEV-10048 Redocking the Contact list causes the communicate ui to get ugly DEV-8131 Deutsch "System Default" is translated as "System Error" in language preferences DEV-10209 - reverted floater_test.xml to empty floater. DEV-10255 - Clicking on gestures button moves open windows DEV-10046 Pressing escape doesnt cause the chat history or inventory windows to lose focus DEV-10399 -- Update required version of QuickTime library to 7.4.1 for 1.19.0 Viewer DEV-10410 - Toggling voice causes layout problems in toolbar DEV-8562 - Viewer crash just after login DEV-10147 - "LLXmlTree parse failed" with settings_releasecandidate.xml DEV-9874 - Land forsale icon in menubar overlaps pushobject restriction icon DEV-9701 - Upload Animation window: Button missing in Stopped window state DEV-10355 - Client crashes when viewing the proposals tab in group information DEV-10521 My Landmarks dropdown list adds a repetition to EOF every time it's opened DEV-10496 Groups>Proposals>Past Vote text gets chomped DEV-10499 Defaulted buttons in floater dialogs remain highlighted when not in focus DEV-5611 - Crash reporter appears in the background on mac (Changed launch to use open instead of direct binary call) DEV-10704 - Crash reporter not initializing boolean, causing false exec_froze reporting (Added initilizer to constructor)
Diffstat (limited to 'indra/llui/llpanel.cpp')
-rw-r--r--indra/llui/llpanel.cpp34
1 files changed, 27 insertions, 7 deletions
diff --git a/indra/llui/llpanel.cpp b/indra/llui/llpanel.cpp
index 6554a25dcf..4c16683704 100644
--- a/indra/llui/llpanel.cpp
+++ b/indra/llui/llpanel.cpp
@@ -211,6 +211,11 @@ void LLPanel::draw()
}
}
+ updateDefaultBtn();
+}
+
+void LLPanel::updateDefaultBtn()
+{
if( mDefaultBtn)
{
if (gFocusMgr.childHasKeyboardFocus( this ) && mDefaultBtn->getEnabled())
@@ -353,6 +358,13 @@ BOOL LLPanel::handleKeyHere( KEY key, MASK mask, BOOL called_from_parent )
if( getVisible() && getEnabled() &&
gFocusMgr.childHasKeyboardFocus(this) && !called_from_parent )
{
+ // handle user hitting ESC to defocus
+ if (key == KEY_ESCAPE)
+ {
+ gFocusMgr.setKeyboardFocus(NULL);
+ return TRUE;
+ }
+
LLUICtrl* cur_focus = gFocusMgr.getKeyboardFocus();
// If we have a default button, click it when
// return is pressed, unless current focus is a return-capturing button
@@ -1298,6 +1310,7 @@ LLView* LLLayoutStack::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactor
}
}
}
+ layout_stackp->updateLayout();
return layout_stackp;
}
@@ -1408,10 +1421,14 @@ void LLLayoutStack::updateLayout(BOOL force_resize)
{
// panels that are not fully visible do not count towards shrink headroom
if ((*panel_it)->mVisibleAmt < 1.f)
+ {
continue;
+ }
// if currently resizing a panel or the panel is flagged as not automatically resizing
// only track total available headroom, but don't use it for automatic resize logic
- if ((*panel_it)->mResizeBar->hasMouseCapture() || (!(*panel_it)->mAutoResize && !force_resize))
+ if ((*panel_it)->mResizeBar->hasMouseCapture()
+ || (!(*panel_it)->mAutoResize
+ && !force_resize))
{
if (mOrientation == HORIZONTAL)
{
@@ -1464,7 +1481,9 @@ void LLLayoutStack::updateLayout(BOOL force_resize)
S32 delta_size = 0;
// if panel can automatically resize (not animating, and resize flag set)...
- if ((*panel_it)->mVisibleAmt == 1.f && (force_resize || (*panel_it)->mAutoResize) && !(*panel_it)->mResizeBar->hasMouseCapture())
+ if ((*panel_it)->mVisibleAmt == 1.f
+ && (force_resize || (*panel_it)->mAutoResize)
+ && !(*panel_it)->mResizeBar->hasMouseCapture())
{
if (mOrientation == HORIZONTAL)
{
@@ -1472,7 +1491,7 @@ void LLLayoutStack::updateLayout(BOOL force_resize)
if (pixels_to_distribute < 0)
{
// shrink proportionally to amount over minimum
- delta_size = llround((F32)pixels_to_distribute * (F32)(cur_width - (*panel_it)->mMinWidth) / (F32)shrink_headroom_available);
+ delta_size = (shrink_headroom_available > 0) ? llround((F32)pixels_to_distribute * (F32)(cur_width - (*panel_it)->mMinWidth) / (F32)shrink_headroom_available) : 0;
}
else
{
@@ -1491,7 +1510,7 @@ void LLLayoutStack::updateLayout(BOOL force_resize)
if (pixels_to_distribute < 0)
{
// shrink proportionally to amount over minimum
- delta_size = llround((F32)pixels_to_distribute * (F32)(cur_height - (*panel_it)->mMinHeight) / (F32)shrink_headroom_available);
+ delta_size = (shrink_headroom_available > 0) ? llround((F32)pixels_to_distribute * (F32)(cur_height - (*panel_it)->mMinHeight) / (F32)shrink_headroom_available) : 0;
}
else
{
@@ -1583,9 +1602,10 @@ void LLLayoutStack::updateLayout(BOOL force_resize)
}
// not enough room to fit existing contents
- if (!force_resize
- && ((cur_y != -mPanelSpacing)
- || (cur_x != getRect().getWidth() + mPanelSpacing)))
+ if (force_resize == FALSE
+ // layout did not complete by reaching target position
+ && ((mOrientation == VERTICAL && cur_y != -mPanelSpacing)
+ || (mOrientation == HORIZONTAL && cur_x != getRect().getWidth() + mPanelSpacing)))
{
// do another layout pass with all stacked elements contributing
// even those that don't usually resize