From 910f25a32ce1d287788b0c184a530c2c450391fa Mon Sep 17 00:00:00 2001 From: Alexei Arabadji Date: Thu, 19 Nov 2009 18:41:41 +0200 Subject: fixed EXT-2515 "Docked floaters should be resizeable" undock floater when user resize floater by resize bar; --HG-- branch : product-engine --- indra/llui/llresizebar.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'indra/llui') diff --git a/indra/llui/llresizebar.cpp b/indra/llui/llresizebar.cpp index 304ac64f31..a7cf9be277 100644 --- a/indra/llui/llresizebar.cpp +++ b/indra/llui/llresizebar.cpp @@ -143,6 +143,12 @@ BOOL LLResizeBar::handleHover(S32 x, S32 y, MASK mask) if( valid_rect.localPointInRect( screen_x, screen_y ) && mResizingView ) { + // undock floater when user resize it + if (((LLFloater*)getParent())->isDocked()) + { + ((LLFloater*)getParent())->setDocked(false, false); + } + // Resize the parent LLRect orig_rect = mResizingView->getRect(); LLRect scaled_rect = orig_rect; -- cgit v1.3 From c994b57fa483d09367546d27434c25a316d86fe0 Mon Sep 17 00:00:00 2001 From: Leyla Farazha Date: Thu, 19 Nov 2009 16:29:20 -0800 Subject: EXT-2490 Right click context menu for objects should include build tools EXT-2541 Help > Report Abuse screenshot not showing up EXT-2549 Crash on exit from mouse-look (Mini Map related) EXT-2548 Viewer freezes when going out of the mouselook while there are more than two floaters EXT-1983 [BSI] Trying to edit a script in a no mod object pops up script editor with "object out of range" reviewed by Richard --- indra/llui/llfloater.cpp | 8 ++++++-- indra/newview/llagent.cpp | 6 +++++- indra/newview/llpanelobjectinventory.cpp | 13 ++++++++++--- indra/newview/llviewermenu.cpp | 15 ++++++++++++++- .../newview/skins/default/xui/en/floater_report_abuse.xml | 2 +- indra/newview/skins/default/xui/en/notifications.xml | 7 +++++++ 6 files changed, 43 insertions(+), 8 deletions(-) (limited to 'indra/llui') diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index 2a0dcaf333..bf965e8e28 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -2526,8 +2526,12 @@ void LLFloaterView::pushVisibleAll(BOOL visible, const skip_list_t& skip_list) void LLFloaterView::popVisibleAll(const skip_list_t& skip_list) { - for (child_list_const_iter_t child_iter = getChildList()->begin(); - child_iter != getChildList()->end(); ++child_iter) + // make a copy of the list since some floaters change their + // order in the childList when changing visibility. + child_list_t child_list_copy = *getChildList(); + + for (child_list_const_iter_t child_iter = child_list_copy.begin(); + child_iter != child_list_copy.end(); ++child_iter) { LLView *view = *child_iter; if (skip_list.find(view) == skip_list.end()) diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 7a540a45c4..e658b9af6a 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -2810,7 +2810,11 @@ void LLAgent::endAnimationUpdateUI() LLFloaterReg::restoreVisibleInstances(); #else // Use this for now LLFloaterView::skip_list_t skip_list; - skip_list.insert(LLFloaterReg::findInstance("mini_map")); + if (LLFloaterReg::findInstance("mini_map")) + { + skip_list.insert(LLFloaterReg::findInstance("mini_map")); + } + gFloaterView->popVisibleAll(skip_list); #endif mViewsPushed = FALSE; diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp index b1fbf789c6..dbe0ec3b86 100644 --- a/indra/newview/llpanelobjectinventory.cpp +++ b/indra/newview/llpanelobjectinventory.cpp @@ -1158,10 +1158,17 @@ void LLTaskLSLBridge::openItem() { return; } - LLLiveLSLEditor* preview = LLFloaterReg::showTypedInstance("preview_scriptedit", LLSD(mUUID), TAKE_FOCUS_YES); - if (preview && (object->permModify() || gAgent.isGodlike())) + if (object->permModify() || gAgent.isGodlike()) { - preview->setObjectID(mPanel->getTaskUUID()); + LLLiveLSLEditor* preview = LLFloaterReg::showTypedInstance("preview_scriptedit", LLSD(mUUID), TAKE_FOCUS_YES); + if (preview) + { + preview->setObjectID(mPanel->getTaskUUID()); + } + } + else + { + LLNotifications::instance().add("CannotOpenScriptObjectNoMod"); } } diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 6a6aa1061d..c67af994a4 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -2733,15 +2733,26 @@ bool enable_object_edit() // there. Eventually this needs to be replaced with code that only // lets you edit objects if you have permission to do so (edit perms, // group edit, god). See also lltoolbar.cpp. JC - bool enable = true; + bool enable = false; if (gAgent.inPrelude()) { enable = LLViewerParcelMgr::getInstance()->agentCanBuild() || LLSelectMgr::getInstance()->getSelection()->isAttachment(); + } + else if (LLSelectMgr::getInstance()->selectGetModify()) + { + enable = true; } + return enable; } +// mutually exclusive - show either edit option or build in menu +bool enable_object_build() +{ + return !enable_object_edit(); +} + class LLSelfRemoveAllAttachments : public view_listener_t { bool handleEvent(const LLSD& userdata) @@ -8023,6 +8034,8 @@ void initialize_menus() visible.add("VisiblePayObject", boost::bind(&enable_pay_object)); enable.add("EnablePayAvatar", boost::bind(&enable_pay_avatar)); enable.add("EnableEdit", boost::bind(&enable_object_edit)); + visible.add("VisibleBuild", boost::bind(&enable_object_build)); + visible.add("VisibleEdit", boost::bind(&enable_object_edit)); visible.add("Object.VisibleEdit", boost::bind(&enable_object_edit)); view_listener_t::addMenu(new LLFloaterVisible(), "FloaterVisible"); diff --git a/indra/newview/skins/default/xui/en/floater_report_abuse.xml b/indra/newview/skins/default/xui/en/floater_report_abuse.xml index 696233676c..91ca3ef27a 100644 --- a/indra/newview/skins/default/xui/en/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/en/floater_report_abuse.xml @@ -18,7 +18,7 @@ height="150" layout="topleft" left="60" - name="" + name="screenshot" top="15" width="220" /> + + Unable to open script in object without modify permissions. + + Date: Fri, 20 Nov 2009 09:47:47 +0800 Subject: Fix EXT-2645 Ensure link colors applied consistently to all text sources --- indra/llui/lltextbase.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'indra/llui') diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index cd795282f9..e210667764 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -1505,6 +1505,7 @@ void LLTextBase::appendText(const std::string &new_text, bool prepend_newline, c LLStyle::Params link_params = style_params; link_params.color = match.getColor(); + link_params.readonly_color = match.getColor(); // apply font name from requested style_params std::string font_name = LLFontGL::nameFromFont(style_params.font()); std::string font_size = LLFontGL::sizeFromFont(style_params.font()); -- cgit v1.3 From 2d9202cb812dec65ec571035389aacd49d19e659 Mon Sep 17 00:00:00 2001 From: Dmitry Oleshko Date: Fri, 20 Nov 2009 16:28:52 +0200 Subject: implemented low task (EXT-1476) Make layouts for Alert, Tip and Script notifications based on XML - made XML-files for the following controls on the panel for alert toasts: button, check box, icon and line editor. - changed creation of these controls in code: from XML vs. from Params in run-time - added getFont method to the LLCheckBox control --HG-- branch : product-engine --- indra/llui/llcheckboxctrl.h | 1 + indra/newview/lltoastalertpanel.cpp | 104 +++++++++++---------- .../newview/skins/default/xui/en/alert_button.xml | 14 +++ .../skins/default/xui/en/alert_check_box.xml | 7 ++ indra/newview/skins/default/xui/en/alert_icon.xml | 8 ++ .../skins/default/xui/en/alert_line_editor.xml | 11 +++ 6 files changed, 96 insertions(+), 49 deletions(-) create mode 100644 indra/newview/skins/default/xui/en/alert_button.xml create mode 100644 indra/newview/skins/default/xui/en/alert_check_box.xml create mode 100644 indra/newview/skins/default/xui/en/alert_icon.xml create mode 100644 indra/newview/skins/default/xui/en/alert_line_editor.xml (limited to 'indra/llui') diff --git a/indra/llui/llcheckboxctrl.h b/indra/llui/llcheckboxctrl.h index 2f8e8fdd23..b14e66b915 100644 --- a/indra/llui/llcheckboxctrl.h +++ b/indra/llui/llcheckboxctrl.h @@ -107,6 +107,7 @@ public: std::string getLabel() const; void setFont( const LLFontGL* font ) { mFont = font; } + const LLFontGL* getFont() { return mFont; } virtual void setControlName(const std::string& control_name, LLView* context); diff --git a/indra/newview/lltoastalertpanel.cpp b/indra/newview/lltoastalertpanel.cpp index beb31bc833..a4f5164a8d 100644 --- a/indra/newview/lltoastalertpanel.cpp +++ b/indra/newview/lltoastalertpanel.cpp @@ -53,6 +53,7 @@ #include "lluictrlfactory.h" #include "llnotifications.h" #include "llfunctorregistry.h" +#include "llrootview.h" const S32 MAX_ALLOWED_MSG_WIDTH = 400; const F32 DEFAULT_BUTTON_DELAY = 0.5f; @@ -220,16 +221,13 @@ LLToastAlertPanel::LLToastAlertPanel( LLNotificationPtr notification, bool modal static LLUIColor alert_text_color = LLUIColorTable::instance().getColor("AlertTextColor"); if (mCaution) { - LLIconCtrl::Params params; - params.name("icon"); - params.rect(LLRect(msg_x, msg_y, msg_x+32, msg_y-32)); - params.mouse_opaque(false); - params.follows.flags(FOLLOWS_LEFT | FOLLOWS_TOP); - params.tab_stop(false); - LLIconCtrl * icon = LLUICtrlFactory::create (params); - icon->setValue ("notify_caution_icon.tga"); - icon->setMouseOpaque(FALSE); - LLToastPanel::addChild(icon); + LLIconCtrl* icon = LLUICtrlFactory::getInstance()->createFromFile("alert_icon.xml", this, LLPanel::child_registry_t::instance()); + if(icon) + { + icon->setRect(LLRect(msg_x, msg_y, msg_x+32, msg_y-32)); + LLToastPanel::addChild(icon); + } + msg_x += 32 + HPAD; msg_box->setColor( alert_caution_text_color ); } @@ -245,29 +243,30 @@ LLToastAlertPanel::LLToastAlertPanel( LLNotificationPtr notification, bool modal // Buttons S32 button_left = (LLToastPanel::getRect().getWidth() - btn_total_width) / 2; - + for( S32 i = 0; i < num_options; i++ ) { LLRect button_rect; - button_rect.setOriginAndSize( button_left, VPAD, button_width, BTN_HEIGHT ); - - LLButton::Params p; - p.name(options[i].first); - p.rect(button_rect); - p.click_callback.function(boost::bind(&LLToastAlertPanel::onButtonPressed, this, _2, i)); - p.font(font); - p.label(options[i].second); + + LLButton* btn = LLUICtrlFactory::getInstance()->createFromFile("alert_button.xml", this, LLPanel::child_registry_t::instance()); + if(btn) + { + btn->setName(options[i].first); + btn->setRect(button_rect.setOriginAndSize( button_left, VPAD, button_width, BTN_HEIGHT )); + btn->setLabel(options[i].second); + btn->setFont(font); + + btn->setClickedCallback(boost::bind(&LLToastAlertPanel::onButtonPressed, this, _2, i)); - LLButton* btn = LLUICtrlFactory::create(p); - mButtonData[i].mButton = btn; + mButtonData[i].mButton = btn; - LLToastPanel::addChild(btn); + LLToastPanel::addChild(btn); - if( i == mDefaultOption ) - { - btn->setFocus(TRUE); + if( i == mDefaultOption ) + { + btn->setFocus(TRUE); + } } - button_left += button_width + BTN_HPAD; } @@ -275,25 +274,26 @@ LLToastAlertPanel::LLToastAlertPanel( LLNotificationPtr notification, bool modal if (!edit_text_name.empty()) { S32 y = VPAD + BTN_HEIGHT + VPAD/2; + mLineEditor = LLUICtrlFactory::getInstance()->createFromFile("alert_line_editor.xml", this, LLPanel::child_registry_t::instance()); + + if (mLineEditor) + { + LLRect leditor_rect = LLRect( HPAD, y+EDITOR_HEIGHT, dialog_width-HPAD, y); + mLineEditor->setName(edit_text_name); + mLineEditor->reshape(leditor_rect.getWidth(), leditor_rect.getHeight()); + mLineEditor->setRect(leditor_rect); + mLineEditor->setText(edit_text_contents); + mLineEditor->setMaxTextLength(STD_STRING_STR_LEN); - LLLineEditor::Params params; - params.name(edit_text_name); - params.rect(LLRect( HPAD, y+EDITOR_HEIGHT, dialog_width-HPAD, y)); - params.default_text(edit_text_contents); - params.max_length_bytes(STD_STRING_STR_LEN); - mLineEditor = LLUICtrlFactory::create (params); + // make sure all edit keys get handled properly (DEV-22396) + mLineEditor->setHandleEditKeysDirectly(TRUE); - // make sure all edit keys get handled properly (DEV-22396) - mLineEditor->setHandleEditKeysDirectly(TRUE); + LLToastPanel::addChild(mLineEditor); - LLToastPanel::addChild(mLineEditor); - } - - if (mLineEditor) - { - mLineEditor->setDrawAsterixes(is_password); + mLineEditor->setDrawAsterixes(is_password); - setEditTextArgs(notification->getSubstitutions()); + setEditTextArgs(notification->getSubstitutions()); + } } std::string ignore_label; @@ -323,7 +323,14 @@ LLToastAlertPanel::LLToastAlertPanel( LLNotificationPtr notification, bool modal bool LLToastAlertPanel::setCheckBox( const std::string& check_title, const std::string& check_control ) { - const LLFontGL* font = LLFontGL::getFontSansSerif(); + mCheck = LLUICtrlFactory::getInstance()->createFromFile("alert_check_box.xml", this, LLPanel::child_registry_t::instance()); + + if(!mCheck) + { + return false; + } + + const LLFontGL* font = mCheck->getFont(); const S32 LINE_HEIGHT = llfloor(font->getLineHeight() + 0.99f); // Extend dialog for "check next time" @@ -339,14 +346,13 @@ bool LLToastAlertPanel::setCheckBox( const std::string& check_title, const std:: LLToastPanel::reshape( dialog_width, dialog_height, FALSE ); S32 msg_x = (LLToastPanel::getRect().getWidth() - max_msg_width) / 2; + + // set check_box's attributes + LLRect check_rect; + mCheck->setRect(check_rect.setOriginAndSize(msg_x, VPAD+BTN_HEIGHT+LINE_HEIGHT/2, max_msg_width, LINE_HEIGHT)); + mCheck->setLabel(check_title); + mCheck->setCommitCallback(boost::bind(&LLToastAlertPanel::onClickIgnore, this, _1)); - LLCheckBoxCtrl::Params p; - p.name("check"); - p.rect.left(msg_x).bottom(VPAD+BTN_HEIGHT+LINE_HEIGHT/2).width(max_msg_width).height(LINE_HEIGHT); - p.label(check_title); - p.font(font); - p.commit_callback.function(boost::bind(&LLToastAlertPanel::onClickIgnore, this, _1)); - mCheck = LLUICtrlFactory::create(p); LLToastPanel::addChild(mCheck); return true; diff --git a/indra/newview/skins/default/xui/en/alert_button.xml b/indra/newview/skins/default/xui/en/alert_button.xml new file mode 100644 index 0000000000..48c67a3770 --- /dev/null +++ b/indra/newview/skins/default/xui/en/alert_button.xml @@ -0,0 +1,14 @@ + + +