Pull and merge from ssh://stinson@hg.lindenlab.com/richard/viewer-chui.

meow-7.2.2
William Todd Stinson 2012-12-19 10:26:17 -08:00
commit 865981c59f
8 changed files with 59 additions and 66 deletions

View File

@ -613,29 +613,11 @@ void LLButton::draw()
static LLCachedControl<bool> sEnableButtonFlashing(*LLUI::sSettingGroups["config"], "EnableButtonFlashing", true);
F32 alpha = mUseDrawContextAlpha ? getDrawContext().mAlpha : getCurrentTransparency();
bool flash = false;
if (mFlashingTimer)
{
mFlashing = mFlashingTimer->isFlashingInProgress();
flash = mFlashing && (!sEnableButtonFlashing || mFlashingTimer->isCurrentlyHighlighted());
}
else
{
if(mFlashing)
{
if ( sEnableButtonFlashing)
{
F32 elapsed = mFrameTimer.getElapsedTimeF32();
S32 flash_count = S32(elapsed * mButtonFlashRate * 2.f);
// flash on or off?
flash = (flash_count % 2 == 0) || flash_count > S32((F32)mButtonFlashCount * 2.f);
}
else
{ // otherwise just highlight button in flash color
flash = true;
}
}
}
bool flash = mFlashing && sEnableButtonFlashing;
bool pressed_by_keyboard = FALSE;
if (hasFocus())
@ -660,7 +642,8 @@ void LLButton::draw()
bool selected = getToggleState();
bool use_glow_effect = FALSE;
LLColor4 glow_color = LLColor4::white;
LLColor4 highlighting_color = LLColor4::white;
LLColor4 glow_color;
LLRender::eBlendType glow_type = LLRender::BT_ADD_WITH_ALPHA;
LLUIImage* imagep = NULL;
if (pressed && mDisplayPressedState)
@ -733,10 +716,15 @@ void LLButton::draw()
LLColor4 flash_color = mFlashBgColor.get();
use_glow_effect = TRUE;
glow_type = LLRender::BT_ALPHA; // blend the glow
if (mNeedsHighlight) // highlighted AND flashing
glow_color = (glow_color*0.5f + flash_color*0.5f) % 2.0f; // average between flash and highlight colour, with sum of the opacity
else
if (mFlashingTimer->isCurrentlyHighlighted())
{
glow_color = flash_color;
}
else if (mNeedsHighlight)
{
glow_color = highlighting_color;
}
}
}
@ -785,7 +773,7 @@ void LLButton::draw()
if (use_glow_effect)
{
mCurGlowStrength = lerp(mCurGlowStrength,
mFlashing ? (flash? 1.0 : 0.0)
mFlashing ? (mFlashingTimer->isCurrentlyHighlighted() || mNeedsHighlight? 1.0 : 0.0)
: mHoverGlowStrength,
LLCriticalDamp::getInterpolant(0.05f));
}

View File

@ -1481,17 +1481,20 @@ void LLFolderViewFolder::extendSelectionTo(LLFolderViewItem* new_selection)
void LLFolderViewFolder::destroyView()
{
std::for_each(mItems.begin(), mItems.end(), DeletePointer());
mItems.clear();
while (!mItems.empty())
{
LLFolderViewItem *itemp = mItems.back();
itemp->destroyView(); // LLFolderViewItem::destroyView() removes entry from mItems
}
while (!mFolders.empty())
{
LLFolderViewFolder *folderp = mFolders.back();
folderp->destroyView(); // removes entry from mFolders
folderp->destroyView(); // LLFolderVievFolder::destroyView() removes entry from mFolders
}
LLFolderViewItem::destroyView();
}
}
// extractItem() removes the specified item from the folder, but
// doesn't delete it.

View File

@ -1412,17 +1412,18 @@ bool LLFloaterIMContainer::removeConversationListItem(const LLUUID& uuid, bool c
// Delete the widget and the associated conversation item
// Note : since the mConversationsItems is also the listener to the widget, deleting
// the widget will also delete its listener
bool isWidgetSelected = false;
bool is_widget_selected = false;
LLFolderViewItem* new_selection = NULL;
LLFolderViewItem* widget = get_ptr_in_map(mConversationsWidgets,uuid);
if (widget)
{
isWidgetSelected = widget->isSelected();
is_widget_selected = widget->isSelected();
new_selection = mConversationsRoot->getNextFromChild(widget);
if(new_selection == NULL)
{
new_selection = mConversationsRoot->getPreviousFromChild(widget);
}
widget->destroyView();
}
@ -1445,7 +1446,7 @@ bool LLFloaterIMContainer::removeConversationListItem(const LLUUID& uuid, bool c
}
}
}
return isWidgetSelected;
return is_widget_selected;
}
LLConversationViewSession* LLFloaterIMContainer::createConversationItemWidget(LLConversationItem* item)

View File

@ -748,19 +748,6 @@ void LLFloaterIMSessionTab::onOpen(const LLSD& key)
}
}
// virtual
void LLFloaterIMSessionTab::onClose(bool app_quitting)
{
// Always suppress the IM from the conversations list on close if present for any reason
if (LLFloaterIMSessionTab::isChatMultiTab())
{
LLFloaterIMContainer* im_box = LLFloaterIMContainer::findInstance();
if (im_box)
{
im_box->removeConversationListItem(mKey);
}
}
}
void LLFloaterIMSessionTab::onTearOffClicked()
{

View File

@ -77,7 +77,6 @@ public:
// LLFloater overrides
/*virtual*/ void onOpen(const LLSD& key);
/*virtual*/ void onClose(bool app_quitting);
/*virtual*/ BOOL postBuild();
/*virtual*/ void draw();
/*virtual*/ void setVisible(BOOL visible);

View File

@ -160,10 +160,16 @@ void on_new_message(const LLSD& msg)
LLFloaterIMSessionTab* session_floater = LLFloaterIMSessionTab::getConversation(session_id);
//session floater not focused (visible or not)
bool sessionFloaterNotFocused = session_floater && !session_floater->hasFocus();
bool session_floater_not_focused = session_floater && !session_floater->hasFocus();
//conv. floater is closed
bool conversation_floater_is_closed =
!( im_box
&& im_box->isInVisibleChain()
&& !im_box->isMinimized());
//conversation floater not focused (visible or not)
bool conversationFloaterNotFocused = im_box && !im_box->hasFocus();
bool conversation_floater_not_focused =
conversation_floater_is_closed || !im_box->hasFocus();
if ("toast" == action)
{
@ -187,12 +193,12 @@ void on_new_message(const LLSD& msg)
}
//User is not focused on conversation containing the message
if(sessionFloaterNotFocused)
if(session_floater_not_focused)
{
im_box->flashConversationItemWidget(session_id, true);
//The conversation floater isn't focused/open
if(conversationFloaterNotFocused)
if(conversation_floater_not_focused)
{
gToolBarView->flashCommand(LLCommandId("chat"), true);
@ -204,23 +210,29 @@ void on_new_message(const LLSD& msg)
}
}
}
else if ("flash" == action)
{
//User is not focused on conversation containing the message
if(sessionFloaterNotFocused && conversationFloaterNotFocused)
{
gToolBarView->flashCommand(LLCommandId("chat"), true);
}
//conversation floater is open but a different conversation is focused
else if(sessionFloaterNotFocused)
{
im_box->flashConversationItemWidget(session_id, true);
}
if (session_floater_not_focused)
{
//User is not focused on conversation containing the message
if(conversation_floater_not_focused)
{
gToolBarView->flashCommand(LLCommandId("chat"), true);
}
//conversation floater is open but a different conversation is focused
else
{
im_box->flashConversationItemWidget(session_id, true);
}
}
}
else if("openconversations" == action)
{
//User is not focused on conversation containing the message
if(sessionFloaterNotFocused)
if(session_floater_not_focused)
{
//Flash line item
im_box->flashConversationItemWidget(session_id, true);

View File

@ -11,6 +11,9 @@
<color
name="EmphasisColor_35"
value="0.38 0.694 0.573 0.35" />
<color
name="BeaconColor"
value="1 .67 .2 1" />
<color
name="White"
value="1 1 1 1" />

View File

@ -30,9 +30,9 @@
image_overlay_alignment="left"
use_ellipses="true"
auto_resize="true"
button_flash_count="3"
button_flash_rate="0.25"
flash_color="EmphasisColor"/>
button_flash_count="4"
button_flash_rate="0.5"
flash_color="BeaconColor"/>
<button_icon pad_left="10"
pad_right="10"
image_bottom_pad="10"
@ -51,7 +51,7 @@
chrome="true"
use_ellipses="true"
auto_resize="true"
button_flash_count="3"
button_flash_rate="0.25"
flash_color="EmphasisColor"/>
button_flash_count="4"
button_flash_rate="0.5"
flash_color="BeaconColor"/>
</toolbar>