summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/CMakeLists.txt1
-rw-r--r--indra/newview/llbrowsernotification.cpp57
-rw-r--r--indra/newview/llfloatermediabrowser.cpp100
-rw-r--r--indra/newview/llfloatermediabrowser.h8
-rw-r--r--indra/newview/llfloaterpreference.cpp1
-rw-r--r--indra/newview/llmediactrl.cpp33
-rw-r--r--indra/newview/llmediactrl.h4
-rw-r--r--indra/newview/llnotificationhandler.h9
-rw-r--r--indra/newview/llnotificationmanager.cpp2
-rw-r--r--indra/newview/llviewermedia.cpp7
-rw-r--r--indra/newview/skins/default/xui/en/alert_check_box.xml4
-rw-r--r--indra/newview/skins/default/xui/en/floater_first_time_tip.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_media_browser.xml146
-rw-r--r--indra/newview/skins/default/xui/en/floater_test_checkbox.xml4
-rw-r--r--indra/newview/skins/default/xui/en/notifications.xml33
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_profile.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml1
-rw-r--r--indra/newview/skins/default/xui/en/widgets/check_box.xml8
18 files changed, 323 insertions, 99 deletions
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 2920b30129..c236dc1c3f 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -91,6 +91,7 @@ set(viewer_SOURCE_FILES
llbottomtray.cpp
llbox.cpp
llbreadcrumbview.cpp
+ llbrowsernotification.cpp
llbuycurrencyhtml.cpp
llcallbacklist.cpp
llcallfloater.cpp
diff --git a/indra/newview/llbrowsernotification.cpp b/indra/newview/llbrowsernotification.cpp
new file mode 100644
index 0000000000..e162527e23
--- /dev/null
+++ b/indra/newview/llbrowsernotification.cpp
@@ -0,0 +1,57 @@
+/**
+ * @file llbrowsernotification.cpp
+ * @brief Notification Handler Class for browser popups
+ *
+ * $LicenseInfo:firstyear=2000&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+
+#include "llviewerprecompiledheaders.h" // must be first include
+
+#include "llnotificationhandler.h"
+#include "llnotifications.h"
+#include "llfloatermediabrowser.h"
+#include "llfloaterreg.h"
+
+using namespace LLNotificationsUI;
+
+bool LLBrowserNotification::processNotification(const LLSD& notify)
+{
+ LLNotificationPtr notification = LLNotifications::instance().find(notify["id"].asUUID());
+
+ if (notification)
+ {
+ LLFloaterMediaBrowser* browserp = dynamic_cast<LLFloaterMediaBrowser*>(LLFloaterReg::findInstance("media_browser", notification->getPayload()["source"]));
+ if (notify["sigtype"].asString() == "add" || notify["sigtype"].asString() == "load")
+ {
+ if (browserp)
+ {
+ browserp->showNotification(notification);
+ }
+ }
+ else if (notify["sigtype"].asString() == "delete")
+ {
+ browserp->hideNotification();
+ }
+ }
+ return false;
+}
diff --git a/indra/newview/llfloatermediabrowser.cpp b/indra/newview/llfloatermediabrowser.cpp
index 5e06a2e078..751304588b 100644
--- a/indra/newview/llfloatermediabrowser.cpp
+++ b/indra/newview/llfloatermediabrowser.cpp
@@ -47,6 +47,9 @@
#include "llcombobox.h"
#include "llwindow.h"
#include "lllayoutstack.h"
+#include "llcheckboxctrl.h"
+
+#include "llnotifications.h"
// TEMP
#include "llsdutil.h"
@@ -210,12 +213,16 @@ void LLFloaterMediaBrowser::draw()
BOOL LLFloaterMediaBrowser::postBuild()
{
mBrowser = getChild<LLMediaCtrl>("browser");
+ mBrowser->setMediaID(mKey);
mBrowser->addObserver(this);
mAddressCombo = getChild<LLComboBox>("address");
mAddressCombo->setCommitCallback(onEnterAddress, this);
mAddressCombo->sortByName();
+ LLButton& notification_close = getChildRef<LLButton>("close_notification");
+ notification_close.setClickedCallback(boost::bind(&LLFloaterMediaBrowser::onCloseNotification, this), NULL);
+
childSetAction("back", onClickBack, this);
childSetAction("forward", onClickForward, this);
childSetAction("reload", onClickRefresh, this);
@@ -319,6 +326,73 @@ void LLFloaterMediaBrowser::setCurrentURL(const std::string& url)
getChildView("reload")->setEnabled(TRUE);
}
+void LLFloaterMediaBrowser::showNotification(LLNotificationPtr notify)
+{
+ mCurNotification = notify;
+
+ // add popup here
+ LLSD payload = notify->getPayload();
+
+ LLNotificationFormPtr formp = notify->getForm();
+ LLLayoutPanel& panel = getChildRef<LLLayoutPanel>("notification_area");
+ panel.setVisible(true);
+ panel.getChild<LLUICtrl>("notification_icon")->setValue(notify->getIcon());
+ panel.getChild<LLUICtrl>("notification_text")->setValue(notify->getMessage());
+ panel.getChild<LLUICtrl>("notification_text")->setToolTip(notify->getMessage());
+ LLNotificationForm::EIgnoreType ignore_type = formp->getIgnoreType();
+ LLLayoutPanel& form_elements = panel.getChildRef<LLLayoutPanel>("form_elements");
+
+ const S32 FORM_PADDING_HORIZONTAL = 10;
+ const S32 FORM_PADDING_VERTICAL = 5;
+ S32 cur_x = FORM_PADDING_HORIZONTAL;
+
+ if (ignore_type != LLNotificationForm::IGNORE_NO)
+ {
+ LLCheckBoxCtrl::Params checkbox_p;
+ checkbox_p.name = "ignore_check";
+ checkbox_p.rect = LLRect(cur_x, form_elements.getRect().getHeight() - FORM_PADDING_VERTICAL, cur_x, FORM_PADDING_VERTICAL);
+ checkbox_p.label = formp->getIgnoreMessage();
+ checkbox_p.label_text.text_color = LLColor4::black;
+ checkbox_p.commit_callback.function = boost::bind(&LLFloaterMediaBrowser::onClickIgnore, this, _1);
+
+ LLCheckBoxCtrl* check = LLUICtrlFactory::create<LLCheckBoxCtrl>(checkbox_p);
+ check->setRect(check->getBoundingRect());
+ form_elements.addChild(check);
+ cur_x = check->getRect().mRight + FORM_PADDING_HORIZONTAL;
+ }
+
+ for (S32 i = 0; i < formp->getNumElements(); i++)
+ {
+ LLSD form_element = formp->getElement(i);
+ if (form_element["type"].asString() == "button")
+ {
+ LLButton::Params button_p;
+ button_p.name = form_element["name"];
+ button_p.label = form_element["text"];
+ button_p.rect = LLRect(cur_x, form_elements.getRect().getHeight() - FORM_PADDING_VERTICAL, cur_x, FORM_PADDING_VERTICAL);
+ button_p.commit_callback.function = boost::bind(&LLFloaterMediaBrowser::onClickNotificationButton, this, form_element["name"].asString());
+ button_p.auto_resize = true;
+
+ LLButton* button = LLUICtrlFactory::create<LLButton>(button_p);
+ button->autoResize();
+ form_elements.addChild(button);
+
+ cur_x = button->getRect().mRight + FORM_PADDING_HORIZONTAL;
+ }
+ }
+
+
+ form_elements.reshape(cur_x, form_elements.getRect().getHeight());
+
+ //LLWeb::loadURL(payload["url"], payload["target"]);
+}
+
+void LLFloaterMediaBrowser::hideNotification()
+{
+ LLLayoutPanel& panel = getChildRef<LLLayoutPanel>("notification_area");
+ panel.setVisible(FALSE);
+}
+
//static
void LLFloaterMediaBrowser::onEnterAddress(LLUICtrl* ctrl, void* user_data)
{
@@ -451,3 +525,29 @@ void LLFloaterMediaBrowser::openMedia(const std::string& media_url, const std::s
mBrowser->navigateTo(media_url);
setCurrentURL(media_url);
}
+
+void LLFloaterMediaBrowser::onCloseNotification()
+{
+ LLNotifications::instance().cancel(mCurNotification);
+}
+
+void LLFloaterMediaBrowser::onClickIgnore(LLUICtrl* ctrl)
+{
+ bool check = ctrl->getValue().asBoolean();
+ if (mCurNotification && mCurNotification->getForm()->getIgnoreType() == LLNotificationForm::IGNORE_SHOW_AGAIN)
+ {
+ // question was "show again" so invert value to get "ignore"
+ check = !check;
+ }
+ mCurNotification->setIgnored(check);
+}
+
+void LLFloaterMediaBrowser::onClickNotificationButton(const std::string& name)
+{
+ if (!mCurNotification) return;
+
+ LLSD response = mCurNotification->getResponseTemplate();
+ response[name] = true;
+
+ mCurNotification->respond(response);
+}
diff --git a/indra/newview/llfloatermediabrowser.h b/indra/newview/llfloatermediabrowser.h
index 5cb7377a36..1a6f3a0352 100644
--- a/indra/newview/llfloatermediabrowser.h
+++ b/indra/newview/llfloatermediabrowser.h
@@ -33,6 +33,7 @@
class LLComboBox;
class LLMediaCtrl;
+class LLNotification;
class LLFloaterMediaBrowser :
public LLFloater,
@@ -59,6 +60,8 @@ public:
void buildURLHistory();
std::string getSupportURL();
void setCurrentURL(const std::string& url);
+ void showNotification(boost::shared_ptr<LLNotification> notify);
+ void hideNotification();
static void onEnterAddress(LLUICtrl* ctrl, void* user_data);
static void onClickRefresh(void* user_data);
@@ -74,9 +77,14 @@ public:
static void onClickSeek(void* user_data);
private:
+ void onCloseNotification();
+ void onClickIgnore(LLUICtrl* ctrl);
+ void onClickNotificationButton(const std::string& name);
+
LLMediaCtrl* mBrowser;
LLComboBox* mAddressCombo;
std::string mCurrentURL;
+ boost::shared_ptr<LLNotification> mCurNotification;
std::string mUUID;
};
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index 9892b4e357..50aacc6458 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -57,6 +57,7 @@
#include "llnearbychat.h"
#include "llnotifications.h"
#include "llnotificationsutil.h"
+#include "llnotificationtemplate.h"
#include "llpanellogin.h"
#include "llradiogroup.h"
#include "llsearchcombobox.h"
diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp
index 635ceb8380..951aaee705 100644
--- a/indra/newview/llmediactrl.cpp
+++ b/indra/newview/llmediactrl.cpp
@@ -48,6 +48,7 @@
// linden library includes
#include "llfocusmgr.h"
+#include "llsdutil.h"
extern BOOL gRestoreGL;
@@ -62,7 +63,8 @@ LLMediaCtrl::Params::Params()
texture_width("texture_width", 1024),
texture_height("texture_height", 1024),
caret_color("caret_color"),
- initial_mime_type("initial_mime_type")
+ initial_mime_type("initial_mime_type"),
+ media_id("media_id")
{
tab_stop(false);
}
@@ -88,6 +90,7 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :
mTextureWidth ( 1024 ),
mTextureHeight ( 1024 ),
mClearCache(false),
+ mMediaID(p.media_id),
mHomePageMimeType(p.initial_mime_type)
{
{
@@ -934,9 +937,20 @@ void LLMediaCtrl::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event)
case MEDIA_EVENT_CLICK_LINK_HREF:
{
LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_CLICK_LINK_HREF, target is \"" << self->getClickTarget() << "\", uri is " << self->getClickURL() << LL_ENDL;
+ // retrieve the event parameters
+ std::string url = self->getClickURL();
+ std::string target = self->getClickTarget();
+ std::string uuid = self->getClickUUID();
+
+ if(gSavedSettings.getBOOL("MediaEnablePopups"))
+ {
+ LLNotificationsUtil::add("PopupAttempt",
+ LLSD(),
+ LLSD().with("source", mMediaID).with("target", target).with("url", url).with("uuid", uuid),
+ boost::bind(&LLMediaCtrl::onPopup, this, _1, _2));
+ }
};
- break;
-
+
case MEDIA_EVENT_CLICK_LINK_NOFOLLOW:
{
LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_CLICK_LINK_NOFOLLOW, uri is " << self->getClickURL() << LL_ENDL;
@@ -991,3 +1005,16 @@ std::string LLMediaCtrl::getCurrentNavUrl()
return mCurrentNavUrl;
}
+void LLMediaCtrl::onPopup(const LLSD& notification, const LLSD& response)
+{
+ if (response["open"])
+ {
+ LLWeb::loadURL(notification["payload"]["url"], notification["payload"]["target"], notification["payload"]["uuid"]);
+ }
+ else
+ {
+ // Make sure the opening instance knows its window open request was denied, so it can clean things up.
+ LLViewerMedia::proxyWindowClosed(notification["payload"]["uuid"]);
+ }
+
+}
diff --git a/indra/newview/llmediactrl.h b/indra/newview/llmediactrl.h
index 6fefd8f6d7..54d50ce4d0 100644
--- a/indra/newview/llmediactrl.h
+++ b/indra/newview/llmediactrl.h
@@ -59,6 +59,7 @@ public:
Optional<LLUIColor> caret_color;
Optional<std::string> initial_mime_type;
+ Optional<std::string> media_id;
Params();
};
@@ -141,6 +142,7 @@ public:
bool getDecoupleTextureSize() { return mDecoupleTextureSize; }
void setTextureSize(S32 width, S32 height);
+ void setMediaID(const std::string& id) { mMediaID = id; }
// over-rides
@@ -163,6 +165,7 @@ public:
private:
void onVisibilityChange ( const LLSD& new_visibility );
+ void onPopup(const LLSD& notification, const LLSD& response);
const S32 mTextureDepthBytes;
LLUUID mMediaTextureID;
@@ -185,6 +188,7 @@ public:
bool mDecoupleTextureSize;
S32 mTextureWidth;
S32 mTextureHeight;
+ std::string mMediaID;
bool mClearCache;
};
diff --git a/indra/newview/llnotificationhandler.h b/indra/newview/llnotificationhandler.h
index 3c84a02b68..28a69f2373 100644
--- a/indra/newview/llnotificationhandler.h
+++ b/indra/newview/llnotificationhandler.h
@@ -276,6 +276,15 @@ public:
virtual bool processNotification(const LLSD& notify);
};
+/**
+ * Handler for browser notifications
+ */
+class LLBrowserNotification : public LLSingleton<LLBrowserNotification>
+{
+public:
+ virtual bool processNotification(const LLSD& notify);
+
+};
class LLHandlerUtil
{
diff --git a/indra/newview/llnotificationmanager.cpp b/indra/newview/llnotificationmanager.cpp
index 17cf1ab2b8..6988227128 100644
--- a/indra/newview/llnotificationmanager.cpp
+++ b/indra/newview/llnotificationmanager.cpp
@@ -61,6 +61,7 @@ void LLNotificationManager::init()
LLNotificationChannel::buildChannel("IM Notifications", "Visible", LLNotificationFilters::filterBy<std::string>(&LLNotification::getType, "notifytoast"));
LLNotificationChannel::buildChannel("Offer", "Visible", LLNotificationFilters::filterBy<std::string>(&LLNotification::getType, "offer"));
LLNotificationChannel::buildChannel("Hints", "Visible", LLNotificationFilters::filterBy<std::string>(&LLNotification::getType, "hint"));
+ LLNotificationChannel::buildChannel("Browser", "Visible", LLNotificationFilters::filterBy<std::string>(&LLNotification::getType, "browser"));
LLNotifications::instance().getChannel("Notifications")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1));
LLNotifications::instance().getChannel("NotificationTips")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1));
@@ -70,6 +71,7 @@ void LLNotificationManager::init()
LLNotifications::instance().getChannel("IM Notifications")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1));
LLNotifications::instance().getChannel("Offer")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1));
LLNotifications::instance().getChannel("Hints")->connectChanged(boost::bind(&LLHintHandler::processNotification, LLHintHandler::getInstance(), _1));
+ LLNotifications::instance().getChannel("Browser")->connectChanged(boost::bind(&LLBrowserNotification::processNotification, LLBrowserNotification::getInstance(), _1));
mNotifyHandlers["notify"] = boost::shared_ptr<LLEventHandler>(new LLScriptHandler(NT_NOTIFY, LLSD()));
mNotifyHandlers["notifytip"] = boost::shared_ptr<LLEventHandler>(new LLTipHandler(NT_NOTIFY, LLSD()));
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index 860d0b9fd6..48ab122edf 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -2856,13 +2856,6 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla
case MEDIA_EVENT_CLICK_LINK_HREF:
{
LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_CLICK_LINK_HREF, target is \"" << plugin->getClickTarget() << "\", uri is " << plugin->getClickURL() << LL_ENDL;
- // retrieve the event parameters
- std::string url = plugin->getClickURL();
- std::string target = plugin->getClickTarget();
- std::string uuid = plugin->getClickUUID();
-
- // loadURL now handles distinguishing between _blank, _external, and other named targets.
- LLWeb::loadURL(url, target, uuid);
};
break;
case MEDIA_EVENT_PLUGIN_FAILED_LAUNCH:
diff --git a/indra/newview/skins/default/xui/en/alert_check_box.xml b/indra/newview/skins/default/xui/en/alert_check_box.xml
index 9f1bdb5193..5535a5dc2a 100644
--- a/indra/newview/skins/default/xui/en/alert_check_box.xml
+++ b/indra/newview/skins/default/xui/en/alert_check_box.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<check_box
- text_enabled_color="LabelTextColor"
- text_disabled_color="LabelDisabledColor"
+ label_text.text_color="LabelTextColor"
+ label_text.text_readonly_color="LabelDisabledColor"
font="SansSerif"
follows="left|top"
name="check"/> \ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/floater_first_time_tip.xml b/indra/newview/skins/default/xui/en/floater_first_time_tip.xml
index e4ac8fed77..084b3167c7 100644
--- a/indra/newview/skins/default/xui/en/floater_first_time_tip.xml
+++ b/indra/newview/skins/default/xui/en/floater_first_time_tip.xml
@@ -16,7 +16,7 @@
layout="topleft"
left="5"
name="DontShowFirstTimeTip_checkbox"
- text_enabled_color="white"
+ label_text.text_color="white"
top="225"
width="200" />
</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_media_browser.xml b/indra/newview/skins/default/xui/en/floater_media_browser.xml
index 3b78da2a79..c220124f46 100644
--- a/indra/newview/skins/default/xui/en/floater_media_browser.xml
+++ b/indra/newview/skins/default/xui/en/floater_media_browser.xml
@@ -31,6 +31,7 @@
width="800">
<layout_panel
auto_resize="false"
+ default_tab_group="1"
height="20"
layout="topleft"
left="0"
@@ -78,6 +79,7 @@
<combo_box
allow_text_entry="true"
follows="left|top|right"
+ tab_group="1"
height="20"
layout="topleft"
left_pad="5"
@@ -182,76 +184,6 @@
function="MediaBrowser.Assign" />
</button>
</layout_panel>
- <layout_panel
- height="30"
- layout="topleft"
- name="notification_area"
- visible="false"
- user_resize="false"
- background_visible="true"
- bg_alpha_image="Yellow_Gradient"
- auto_resize="false"
- width="800">
- <layout_stack
- top="0"
- height="30"
- width="800"
- left="0"
- follows="all"
- orientation="horizontal"
- >
- <layout_panel
- height="30">
- <icon value="Popup_Caution"
- left="5"
- top="7"
- width="16"
- height="15"/>
- <text left_pad="8"
- top="10"
- height="25"
- width="400"
- text_color="black"
- font="SansSerifSmall"
- font.style="BOLD"
- name="notification_text"
- value="Notification text here"
- />
- </layout_panel>
- <layout_panel
- height="30"
- width="270"
- auto_resize="false"
- name="form_elements">
- <check_box name="enable_check"
- left="5"
- top="5"
- height="20"
- width="120"
- label="Enable all popups"
- text_enabled_color="black"
- />
- <button left_pad="5"
- width="140"
- top="4"
- label="Open pop-up window"/>
- </layout_panel>
- <layout_panel
- height="30"
- width="25"
- auto_resize="false"
- name="close_panel">
- <button left="5"
- name="close"
- width="16"
- height="16"
- top="8"
- image_color="DkGray_66"
- image_unselected="Icon_Close_Foreground"
- image_selected="Icon_Close_Press"/>
- </layout_panel>
- </layout_stack>
- </layout_panel>
<layout_panel
height="40"
layout="topleft"
@@ -260,14 +192,84 @@
top_delta="0"
user_resize="false"
width="540">
- <web_browser
+ <web_browser
bottom="-30"
- follows="left|right|top|bottom"
+ follows="all"
layout="topleft"
left="0"
name="browser"
top="0"
width="540" />
+ <layout_stack
+ name="notification_stack"
+ left="0"
+ top="0"
+ width="540"
+ bottom="-30"
+ follows="all"
+ mouse_opaque="false"
+ orientation="vertical">
+ <layout_panel
+ height="30"
+ min_height="30"
+ layout="topleft"
+ name="notification_area"
+ visible="false"
+ user_resize="false"
+ background_visible="true"
+ bg_alpha_image="Yellow_Gradient"
+ auto_resize="false"
+ width="800">
+ <layout_stack
+ top="0"
+ height="30"
+ width="800"
+ left="0"
+ follows="bottom|left|right"
+ orientation="horizontal">
+ <layout_panel
+ height="30">
+ <icon name="notification_icon"
+ left="5"
+ top="7"
+ width="16"
+ height="15"/>
+ <text left_pad="8"
+ top="10"
+ height="25"
+ width="400"
+ text_color="black"
+ font="SansSerifSmall"
+ font.style="BOLD"
+ name="notification_text"
+ value="Notification text here"/>
+ </layout_panel>
+ <layout_panel
+ height="30"
+ width="130"
+ auto_resize="false"
+ user_resize="false"
+ name="form_elements"/>
+ <layout_panel
+ height="30"
+ width="25"
+ auto_resize="false"
+ name="close_panel">
+ <button left="5"
+ name="close_notification"
+ width="16"
+ height="16"
+ top="8"
+ image_color="DkGray_66"
+ image_unselected="Icon_Close_Foreground"
+ image_selected="Icon_Close_Press"/>
+ </layout_panel>
+ </layout_stack>
+ </layout_panel>
+ <layout_panel
+ mouse_opaque="false"
+ auto_resize="true"/>
+ </layout_stack>
<button
follows="bottom|left"
height="20"
diff --git a/indra/newview/skins/default/xui/en/floater_test_checkbox.xml b/indra/newview/skins/default/xui/en/floater_test_checkbox.xml
index 1935edfcc1..95aaadfcf3 100644
--- a/indra/newview/skins/default/xui/en/floater_test_checkbox.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_checkbox.xml
@@ -41,7 +41,7 @@
layout="topleft"
left_delta="0"
name="text_enabled_color_checkbox"
- text_enabled_color="EmphasisColor"
+ label_text.text_color="EmphasisColor"
top_pad="14"
width="150" />
<check_box
@@ -51,7 +51,7 @@
layout="topleft"
left_delta="0"
name="text_disabled_color_checkbox"
- text_disabled_color="EmphasisColor_35"
+ label_text.text_readonly_color="EmphasisColor_35"
top_pad="14"
width="150" />
<check_box
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 47bb0fe45b..59fcd3513e 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -1,6 +1,5 @@
<?xml version="1.0" ?><notifications>
-
- <global name="skipnexttime">
+ <global name="skipnexttime">
Don&apos;t show me this again
</global>
@@ -97,7 +96,7 @@
</template>
<notification
- functor="GenericAcknowledge"
+ functor="GenericAcknowledge"
icon="alertmodal.tga"
name="MissingAlert"
label="Unknown Notification Message"
@@ -723,7 +722,7 @@ You need an account to enter [SECOND_LIFE]. Would you like to create one now?
<url
option="0"
name="url"
- openexternally = "1">
+ target = "_external">
http://join.secondlife.com/
</url>
@@ -2033,8 +2032,8 @@ Offer friendship to [NAME]?
</notification>
<notification
- icon="alertmodal.tga"
- label="Add Friend"
+ icon="alertmodal.tga"
+ label="Add Friend"
name="AddFriendWithMessage"
type="alertmodal">
Friends can give permissions to track each other on the map and receive online status updates.
@@ -6040,7 +6039,6 @@ One or more of your Voice Morphs will expire in less than [INTERVAL] days.
[[URL] Click here] to renew your subscription.
<unique/>
</notification>
- LLNotificationsUtil::add("VoiceEffectsNew");
<notification
icon="notify.tga"
@@ -6453,6 +6451,27 @@ Mute everyone?
<unique/>
</notification>
+ <notification
+ name="PopupAttempt"
+ icon="Popup_Caution"
+ type="browser"
+ duration="10"
+ >
+ A pop-up was prevented from opening.
+ <unique/>
+ <form name="form">
+ <ignore name="ignore"
+ text="Enable all pop-ups"/>
+ <button default="true"
+ index="0"
+ name="open"
+ text="Open pop-up window"/>
+ </form>
+
+
+ </notification>
+
+
<global name="UnsupportedCPU">
- Your CPU speed does not meet the minimum requirements.
</global>
diff --git a/indra/newview/skins/default/xui/en/panel_edit_profile.xml b/indra/newview/skins/default/xui/en/panel_edit_profile.xml
index 5072ec3a66..48bd9ace21 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_profile.xml
@@ -242,7 +242,7 @@
left="8"
name="show_in_search_checkbox"
height="15"
- text_enabled_color="white"
+ label_text.text_color="white"
top_pad="12"
width="100" />
<text
diff --git a/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml b/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml
index e261d6d555..2be95fc081 100644
--- a/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml
+++ b/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml
@@ -17,6 +17,7 @@
left="10"
name="stack"
top_pad="10"
+ orientation="vertical"
width="313">
<layout_panel
height="550"
diff --git a/indra/newview/skins/default/xui/en/widgets/check_box.xml b/indra/newview/skins/default/xui/en/widgets/check_box.xml
index 726ae803fe..7a60bee338 100644
--- a/indra/newview/skins/default/xui/en/widgets/check_box.xml
+++ b/indra/newview/skins/default/xui/en/widgets/check_box.xml
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<check_box text_enabled_color="LabelTextColor"
- text_disabled_color="LabelDisabledColor"
- font="SansSerifSmall"
+<check_box font="SansSerifSmall"
follows="left|top">
- <check_box.label_text name="checkbox label" />
+ <check_box.label_text name="checkbox label"
+ text_color="LabelTextColor"
+ text_readonly_color="LabelDisabledColor"/>
<check_box.check_button name="CheckboxCtrl Button"
commit_on_return="false"
label=""