pull fix for STORM-422
commit
e2714252f3
2
build.sh
2
build.sh
|
|
@ -228,7 +228,7 @@ do
|
|||
fi
|
||||
else
|
||||
begin_section "Build$variant"
|
||||
build "$variant" "$build_dir" > "$build_log" 2>&1
|
||||
build "$variant" "$build_dir" >> "$build_log" 2>&1
|
||||
begin_section Tests
|
||||
grep --line-buffered "^##teamcity" "$build_log"
|
||||
end_section Tests
|
||||
|
|
|
|||
|
|
@ -129,6 +129,7 @@ Alissa Sabre
|
|||
VWR-12617
|
||||
VWR-12620
|
||||
VWR-12789
|
||||
SNOW-322
|
||||
Angus Boyd
|
||||
VWR-592
|
||||
Ann Congrejo
|
||||
|
|
@ -145,6 +146,7 @@ Asuka Neely
|
|||
Balp Allen
|
||||
VWR-4157
|
||||
Be Holder
|
||||
SNOW-322
|
||||
SNOW-397
|
||||
Benja Kepler
|
||||
VWR-746
|
||||
|
|
|
|||
|
|
@ -30,6 +30,9 @@
|
|||
|
||||
#include "llimagedimensionsinfo.h"
|
||||
|
||||
// Value is true if one of Libjpeg's functions has encountered an error while working.
|
||||
static bool sJpegErrorEncountered = false;
|
||||
|
||||
bool LLImageDimensionsInfo::load(const std::string& src_filename,U32 codec)
|
||||
{
|
||||
clean();
|
||||
|
|
@ -101,9 +104,17 @@ bool LLImageDimensionsInfo::getImageDimensionsPng()
|
|||
return true;
|
||||
}
|
||||
|
||||
// Called instead of exit() if Libjpeg encounters an error.
|
||||
void on_jpeg_error(j_common_ptr cinfo)
|
||||
{
|
||||
(void) cinfo;
|
||||
sJpegErrorEncountered = true;
|
||||
llwarns << "Libjpeg has encountered an error!" << llendl;
|
||||
}
|
||||
|
||||
bool LLImageDimensionsInfo::getImageDimensionsJpeg()
|
||||
{
|
||||
sJpegErrorEncountered = false;
|
||||
clean();
|
||||
FILE *fp = fopen (mSrcFilename.c_str(), "rb");
|
||||
if (fp == NULL)
|
||||
|
|
@ -115,6 +126,9 @@ bool LLImageDimensionsInfo::getImageDimensionsJpeg()
|
|||
jpeg_error_mgr jerr;
|
||||
jpeg_decompress_struct cinfo;
|
||||
cinfo.err = jpeg_std_error(&jerr);
|
||||
// Call our function instead of exit() if Libjpeg encounters an error.
|
||||
// This is done to avoid crash in this case (STORM-472).
|
||||
cinfo.err->error_exit = on_jpeg_error;
|
||||
|
||||
jpeg_create_decompress (&cinfo);
|
||||
jpeg_stdio_src (&cinfo, fp);
|
||||
|
|
@ -128,6 +142,6 @@ bool LLImageDimensionsInfo::getImageDimensionsJpeg()
|
|||
jpeg_destroy_decompress(&cinfo);
|
||||
fclose(fp);
|
||||
|
||||
return true;
|
||||
return !sJpegErrorEncountered;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -43,6 +43,8 @@
|
|||
#include "lldraghandle.h"
|
||||
#include "lltextbox.h"
|
||||
#include "llviewermenu.h"
|
||||
#include "llfloaterworldmap.h"
|
||||
#include "llagent.h"
|
||||
|
||||
//
|
||||
// Constants
|
||||
|
|
@ -122,11 +124,36 @@ BOOL LLFloaterMap::postBuild()
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL LLFloaterMap::handleDoubleClick( S32 x, S32 y, MASK mask )
|
||||
BOOL LLFloaterMap::handleDoubleClick(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
// If floater is minimized, minimap should be shown on doubleclick (STORM-299)
|
||||
std::string floater_to_show = this->isMinimized() ? "mini_map" : "world_map";
|
||||
LLFloaterReg::showInstance(floater_to_show);
|
||||
if (isMinimized())
|
||||
{
|
||||
setMinimized(FALSE);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
LLVector3d pos_global = mMap->viewPosToGlobal(x, y);
|
||||
|
||||
// If we're not tracking a beacon already, double-click will set one
|
||||
if (!LLTracker::isTracking(NULL))
|
||||
{
|
||||
LLFloaterWorldMap* world_map = LLFloaterWorldMap::getInstance();
|
||||
if (world_map)
|
||||
{
|
||||
world_map->trackLocation(pos_global);
|
||||
}
|
||||
}
|
||||
|
||||
if (gSavedSettings.getBOOL("DoubleClickTeleport"))
|
||||
{
|
||||
// If DoubleClickTeleport is on, double clicking the minimap will teleport there
|
||||
gAgent.teleportViaLocationLookAt(pos_global);
|
||||
}
|
||||
else
|
||||
{
|
||||
LLFloaterReg::showInstance("world_map");
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1643,17 +1643,18 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
|
|||
const BOOL is_agent_inventory = (model->getCategory(inv_cat->getUUID()) != NULL)
|
||||
&& (LLToolDragAndDrop::SOURCE_AGENT == source);
|
||||
|
||||
const LLUUID ¤t_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT, false);
|
||||
const BOOL move_is_into_current_outfit = (mUUID == current_outfit_id);
|
||||
|
||||
BOOL accept = FALSE;
|
||||
if (is_agent_inventory)
|
||||
{
|
||||
const LLUUID &cat_id = inv_cat->getUUID();
|
||||
const LLUUID &trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH, false);
|
||||
const LLUUID ¤t_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT, false);
|
||||
const LLUUID &landmarks_id = model->findCategoryUUIDForType(LLFolderType::FT_LANDMARK, false);
|
||||
|
||||
const BOOL move_is_into_trash = (mUUID == trash_id) || model->isObjectDescendentOf(mUUID, trash_id);
|
||||
const BOOL move_is_into_outfit = getCategory() && (getCategory()->getPreferredType() == LLFolderType::FT_OUTFIT);
|
||||
const BOOL move_is_into_current_outfit = (mUUID == current_outfit_id);
|
||||
const BOOL move_is_into_landmarks = (mUUID == landmarks_id) || model->isObjectDescendentOf(mUUID, landmarks_id);
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
|
|
@ -1794,6 +1795,17 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
|
|||
LLUUID category_id = mUUID;
|
||||
accept = move_inv_category_world_to_agent(object_id, category_id, drop);
|
||||
}
|
||||
else if (LLToolDragAndDrop::SOURCE_LIBRARY == source)
|
||||
{
|
||||
// Accept folders that contain complete outfits.
|
||||
accept = move_is_into_current_outfit && LLAppearanceMgr::instance().getCanMakeFolderIntoOutfit(inv_cat->getUUID());
|
||||
|
||||
if (accept && drop)
|
||||
{
|
||||
LLAppearanceMgr::instance().wearInventoryCategory(inv_cat, true, false);
|
||||
}
|
||||
}
|
||||
|
||||
return accept;
|
||||
}
|
||||
|
||||
|
|
@ -2896,6 +2908,7 @@ static BOOL can_move_to_outfit(LLInventoryItem* inv_item, BOOL move_is_into_curr
|
|||
{
|
||||
if ((inv_item->getInventoryType() != LLInventoryType::IT_WEARABLE) &&
|
||||
(inv_item->getInventoryType() != LLInventoryType::IT_GESTURE) &&
|
||||
(inv_item->getInventoryType() != LLInventoryType::IT_ATTACHMENT) &&
|
||||
(inv_item->getInventoryType() != LLInventoryType::IT_OBJECT))
|
||||
{
|
||||
return FALSE;
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ class LLColor4U;
|
|||
class LLCoordGL;
|
||||
class LLImageRaw;
|
||||
class LLViewerTexture;
|
||||
class LLFloaterMap;
|
||||
|
||||
class LLNetMap : public LLUICtrl
|
||||
{
|
||||
|
|
@ -55,6 +56,7 @@ public:
|
|||
protected:
|
||||
LLNetMap (const Params & p);
|
||||
friend class LLUICtrlFactory;
|
||||
friend class LLFloaterMap;
|
||||
|
||||
public:
|
||||
virtual ~LLNetMap();
|
||||
|
|
|
|||
Loading…
Reference in New Issue