From 8b3f4b56f93bfae8251e79c9210836437d2e945b Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Mon, 26 Apr 2021 23:55:45 +0300 Subject: SL-14664 Increase range of supported cursors on prim's media --- indra/media_plugins/cef/media_plugin_cef.cpp | 77 ++++++++++++++++++++++++---- 1 file changed, 68 insertions(+), 9 deletions(-) (limited to 'indra/media_plugins') diff --git a/indra/media_plugins/cef/media_plugin_cef.cpp b/indra/media_plugins/cef/media_plugin_cef.cpp index 0bb62d79ff..6ac5ce6dd9 100644 --- a/indra/media_plugins/cef/media_plugin_cef.cpp +++ b/indra/media_plugins/cef/media_plugin_cef.cpp @@ -386,18 +386,77 @@ void MediaPluginCEF::onCursorChangedCallback(dullahan::ECursorType type) case dullahan::CT_POINTER: name = "arrow"; break; + case dullahan::CT_CROSS: + name = "cross"; + break; + case dullahan::CT_HAND: + name = "hand"; + break; case dullahan::CT_IBEAM: name = "ibeam"; break; - case dullahan::CT_NORTHSOUTHRESIZE: - name = "splitv"; - break; - case dullahan::CT_EASTWESTRESIZE: - name = "splith"; - break; - case dullahan::CT_HAND: - name = "hand"; - break; + case dullahan::CT_WAIT: + name = "wait"; + break; + //case dullahan::CT_HELP: + case dullahan::CT_ROWRESIZE: + case dullahan::CT_NORTHRESIZE: + case dullahan::CT_SOUTHRESIZE: + case dullahan::CT_NORTHSOUTHRESIZE: + name = "split_ns"; + break; + case dullahan::CT_COLUMNRESIZE: + case dullahan::CT_EASTRESIZE: + case dullahan::CT_WESTRESIZE: + case dullahan::CT_EASTWESTRESIZE: + name = "split_we"; + break; + case dullahan::CT_NORTHEASTRESIZE: + case dullahan::CT_SOUTHWESTRESIZE: + case dullahan::CT_NORTHEASTSOUTHWESTRESIZE: + name = "split_nesw"; + break; + case dullahan::CT_SOUTHEASTRESIZE: + case dullahan::CT_NORTHWESTRESIZE: + case dullahan::CT_NORTHWESTSOUTHEASTRESIZE: + name = "split_nwse"; + break; + //case dullahan::CT_MIDDLEPANNING: + //case dullahan::CT_EASTPANNING: + //case dullahan::CT_NORTHPANNING: + //case dullahan::CT_NORTHEASTPANNING: + //case dullahan::CT_NORTHWESTPANNING: + //case dullahan::CT_SOUTHPANNING: + //case dullahan::CT_SOUTHEASTPANNING: + //case dullahan::CT_SOUTHWESTPANNING: + //case dullahan::CT_WESTPANNING: + //case dullahan::CT_MOVE: + //case dullahan::CT_VERTICALTEXT: + //case dullahan::CT_CELL: + //case dullahan::CT_CONTEXTMENU: + //case dullahan::CT_ALIAS: + case dullahan::CT_PROGRESS: + name = "working"; + break; + case dullahan::CT_COPY: + name = "arrow_copy"; + break; + case dullahan::CT_NONE: + name = "cursor_no"; + break; + case dullahan::CT_NODROP: + case dullahan::CT_NOTALLOWED: + name = "cursor_no_locked"; + break; + case dullahan::CT_ZOOMIN: + case dullahan::CT_ZOOMOUT: + name = "tool_zoomin"; + break; + case dullahan::CT_GRAB: + name = "tool_grab"; + break; + //case dullahan::CT_GRABING: + //case dullahan::CT_CUSTOM: default: LL_WARNS() << "Unknown cursor ID: " << (int)type << LL_ENDL; -- cgit v1.3 From e5136cd19b38d45854d9fc69ca05b6a4c89b0394 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Tue, 27 Apr 2021 20:51:23 +0300 Subject: SL-14664 Added 'alias' --- indra/media_plugins/cef/media_plugin_cef.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'indra/media_plugins') diff --git a/indra/media_plugins/cef/media_plugin_cef.cpp b/indra/media_plugins/cef/media_plugin_cef.cpp index 6ac5ce6dd9..7f3c159caa 100644 --- a/indra/media_plugins/cef/media_plugin_cef.cpp +++ b/indra/media_plugins/cef/media_plugin_cef.cpp @@ -434,7 +434,9 @@ void MediaPluginCEF::onCursorChangedCallback(dullahan::ECursorType type) //case dullahan::CT_VERTICALTEXT: //case dullahan::CT_CELL: //case dullahan::CT_CONTEXTMENU: - //case dullahan::CT_ALIAS: + case dullahan::CT_ALIAS: + name = "tool_media_open"; + break; case dullahan::CT_PROGRESS: name = "working"; break; -- cgit v1.3 From 5cde118ec848cc9053a3a502daeecb417c8cfc18 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Tue, 27 Apr 2021 22:52:00 +0300 Subject: SL-14664 Added zoomout and sizeall Remade code to use getCursorFromString --- indra/llwindow/llcursortypes.cpp | 2 + indra/llwindow/llcursortypes.h | 2 + indra/llwindow/llwindowmacosx.cpp | 2 + indra/llwindow/llwindowsdl.cpp | 2 + indra/llwindow/llwindowwin32.cpp | 6 ++- indra/media_plugins/cef/media_plugin_cef.cpp | 42 ++++++++-------- indra/newview/cursors_mac/UI_CURSOR_SIZEALL.tif | Bin 0 -> 624 bytes .../newview/cursors_mac/UI_CURSOR_TOOLZOOMOUT.tif | Bin 0 -> 576 bytes indra/newview/llviewermedia.cpp | 53 +-------------------- indra/newview/res-sdl/lltoolzoomout.BMP | Bin 2102 -> 630 bytes indra/newview/res-sdl/sizeall.BMP | Bin 0 -> 630 bytes indra/newview/res/lltoolzoomout.cur | Bin 326 -> 326 bytes 12 files changed, 36 insertions(+), 73 deletions(-) create mode 100644 indra/newview/cursors_mac/UI_CURSOR_SIZEALL.tif create mode 100644 indra/newview/cursors_mac/UI_CURSOR_TOOLZOOMOUT.tif create mode 100644 indra/newview/res-sdl/sizeall.BMP (limited to 'indra/media_plugins') diff --git a/indra/llwindow/llcursortypes.cpp b/indra/llwindow/llcursortypes.cpp index ec60097195..3079cc2419 100644 --- a/indra/llwindow/llcursortypes.cpp +++ b/indra/llwindow/llcursortypes.cpp @@ -42,6 +42,7 @@ ECursorType getCursorFromString(const std::string& cursor_string) cursor_string_table["UI_CURSOR_SIZENESW"] = UI_CURSOR_SIZENESW; cursor_string_table["UI_CURSOR_SIZEWE"] = UI_CURSOR_SIZEWE; cursor_string_table["UI_CURSOR_SIZENS"] = UI_CURSOR_SIZENS; + cursor_string_table["UI_CURSOR_SIZEALL"] = UI_CURSOR_SIZEALL; cursor_string_table["UI_CURSOR_NO"] = UI_CURSOR_NO; cursor_string_table["UI_CURSOR_WORKING"] = UI_CURSOR_WORKING; cursor_string_table["UI_CURSOR_TOOLGRAB"] = UI_CURSOR_TOOLGRAB; @@ -61,6 +62,7 @@ ECursorType getCursorFromString(const std::string& cursor_string) cursor_string_table["UI_CURSOR_TOOLCAMERA"] = UI_CURSOR_TOOLCAMERA; cursor_string_table["UI_CURSOR_TOOLPAN"] = UI_CURSOR_TOOLPAN; cursor_string_table["UI_CURSOR_TOOLZOOMIN"] = UI_CURSOR_TOOLZOOMIN; + cursor_string_table["UI_CURSOR_TOOLZOOMOUT"] = UI_CURSOR_TOOLZOOMOUT; cursor_string_table["UI_CURSOR_TOOLPICKOBJECT3"] = UI_CURSOR_TOOLPICKOBJECT3; cursor_string_table["UI_CURSOR_TOOLPLAY"] = UI_CURSOR_TOOLPLAY; cursor_string_table["UI_CURSOR_TOOLPAUSE"] = UI_CURSOR_TOOLPAUSE; diff --git a/indra/llwindow/llcursortypes.h b/indra/llwindow/llcursortypes.h index cb6d6636a0..d03b18e275 100644 --- a/indra/llwindow/llcursortypes.h +++ b/indra/llwindow/llcursortypes.h @@ -38,6 +38,7 @@ enum ECursorType { UI_CURSOR_SIZENESW, UI_CURSOR_SIZEWE, UI_CURSOR_SIZENS, + UI_CURSOR_SIZEALL, UI_CURSOR_NO, UI_CURSOR_WORKING, UI_CURSOR_TOOLGRAB, @@ -57,6 +58,7 @@ enum ECursorType { UI_CURSOR_TOOLCAMERA, UI_CURSOR_TOOLPAN, UI_CURSOR_TOOLZOOMIN, + UI_CURSOR_TOOLZOOMOUT, UI_CURSOR_TOOLPICKOBJECT3, UI_CURSOR_TOOLPLAY, UI_CURSOR_TOOLPAUSE, diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp index 2604a23c85..e288ccb842 100644 --- a/indra/llwindow/llwindowmacosx.cpp +++ b/indra/llwindow/llwindowmacosx.cpp @@ -1422,6 +1422,7 @@ const char* cursorIDToName(int id) case UI_CURSOR_SIZENESW: return "UI_CURSOR_SIZENESW"; case UI_CURSOR_SIZEWE: return "UI_CURSOR_SIZEWE"; case UI_CURSOR_SIZENS: return "UI_CURSOR_SIZENS"; + case UI_CURSOR_SIZEALL: return "UI_CURSOR_SIZEALL"; case UI_CURSOR_NO: return "UI_CURSOR_NO"; case UI_CURSOR_WORKING: return "UI_CURSOR_WORKING"; case UI_CURSOR_TOOLGRAB: return "UI_CURSOR_TOOLGRAB"; @@ -1441,6 +1442,7 @@ const char* cursorIDToName(int id) case UI_CURSOR_TOOLCAMERA: return "UI_CURSOR_TOOLCAMERA"; case UI_CURSOR_TOOLPAN: return "UI_CURSOR_TOOLPAN"; case UI_CURSOR_TOOLZOOMIN: return "UI_CURSOR_TOOLZOOMIN"; + case UI_CURSOR_TOOLZOOMOUT: return "UI_CURSOR_TOOLZOOMOUT"; case UI_CURSOR_TOOLPICKOBJECT3: return "UI_CURSOR_TOOLPICKOBJECT3"; case UI_CURSOR_TOOLPLAY: return "UI_CURSOR_TOOLPLAY"; case UI_CURSOR_TOOLPAUSE: return "UI_CURSOR_TOOLPAUSE"; diff --git a/indra/llwindow/llwindowsdl.cpp b/indra/llwindow/llwindowsdl.cpp index c20e639fc7..ef81c82685 100644 --- a/indra/llwindow/llwindowsdl.cpp +++ b/indra/llwindow/llwindowsdl.cpp @@ -2114,6 +2114,7 @@ void LLWindowSDL::initCursors() mSDLCursors[UI_CURSOR_SIZENESW] = makeSDLCursorFromBMP("sizenesw.BMP",17,17); mSDLCursors[UI_CURSOR_SIZEWE] = makeSDLCursorFromBMP("sizewe.BMP",16,14); mSDLCursors[UI_CURSOR_SIZENS] = makeSDLCursorFromBMP("sizens.BMP",17,16); + mSDLCursors[UI_CURSOR_SIZEALL] = makeSDLCursorFromBMP("sizeall.BMP", 17, 17); mSDLCursors[UI_CURSOR_NO] = makeSDLCursorFromBMP("llno.BMP",8,8); mSDLCursors[UI_CURSOR_WORKING] = makeSDLCursorFromBMP("working.BMP",12,15); mSDLCursors[UI_CURSOR_TOOLGRAB] = makeSDLCursorFromBMP("lltoolgrab.BMP",2,13); @@ -2133,6 +2134,7 @@ void LLWindowSDL::initCursors() mSDLCursors[UI_CURSOR_TOOLCAMERA] = makeSDLCursorFromBMP("lltoolcamera.BMP",7,5); mSDLCursors[UI_CURSOR_TOOLPAN] = makeSDLCursorFromBMP("lltoolpan.BMP",7,5); mSDLCursors[UI_CURSOR_TOOLZOOMIN] = makeSDLCursorFromBMP("lltoolzoomin.BMP",7,5); + mSDLCursors[UI_CURSOR_TOOLZOOMOUT] = makeSDLCursorFromBMP("lltoolzoomout.BMP", 7, 5); mSDLCursors[UI_CURSOR_TOOLPICKOBJECT3] = makeSDLCursorFromBMP("toolpickobject3.BMP",0,0); mSDLCursors[UI_CURSOR_TOOLPLAY] = makeSDLCursorFromBMP("toolplay.BMP",0,0); mSDLCursors[UI_CURSOR_TOOLPAUSE] = makeSDLCursorFromBMP("toolpause.BMP",0,0); diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index e8abb9f31a..38f537b251 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -1814,8 +1814,9 @@ void LLWindowWin32::initCursors() mCursor[ UI_CURSOR_CROSS ] = LoadCursor(NULL, IDC_CROSS); mCursor[ UI_CURSOR_SIZENWSE ] = LoadCursor(NULL, IDC_SIZENWSE); mCursor[ UI_CURSOR_SIZENESW ] = LoadCursor(NULL, IDC_SIZENESW); - mCursor[ UI_CURSOR_SIZEWE ] = LoadCursor(NULL, IDC_SIZEWE); - mCursor[ UI_CURSOR_SIZENS ] = LoadCursor(NULL, IDC_SIZENS); + mCursor[ UI_CURSOR_SIZEWE ] = LoadCursor(NULL, IDC_SIZEWE); + mCursor[ UI_CURSOR_SIZENS ] = LoadCursor(NULL, IDC_SIZENS); + mCursor[ UI_CURSOR_SIZEALL ] = LoadCursor(NULL, IDC_SIZEALL); mCursor[ UI_CURSOR_NO ] = LoadCursor(NULL, IDC_NO); mCursor[ UI_CURSOR_WORKING ] = LoadCursor(NULL, IDC_APPSTARTING); @@ -1837,6 +1838,7 @@ void LLWindowWin32::initCursors() mCursor[ UI_CURSOR_TOOLCAMERA ] = LoadCursor(module, TEXT("TOOLCAMERA")); mCursor[ UI_CURSOR_TOOLPAN ] = LoadCursor(module, TEXT("TOOLPAN")); mCursor[ UI_CURSOR_TOOLZOOMIN ] = LoadCursor(module, TEXT("TOOLZOOMIN")); + mCursor[ UI_CURSOR_TOOLZOOMOUT ] = LoadCursor(module, TEXT("TOOLZOOMOUT")); mCursor[ UI_CURSOR_TOOLPICKOBJECT3 ] = LoadCursor(module, TEXT("TOOLPICKOBJECT3")); mCursor[ UI_CURSOR_PIPETTE ] = LoadCursor(module, TEXT("TOOLPIPETTE")); mCursor[ UI_CURSOR_TOOLSIT ] = LoadCursor(module, TEXT("TOOLSIT")); diff --git a/indra/media_plugins/cef/media_plugin_cef.cpp b/indra/media_plugins/cef/media_plugin_cef.cpp index 7f3c159caa..d5bfd7eda0 100644 --- a/indra/media_plugins/cef/media_plugin_cef.cpp +++ b/indra/media_plugins/cef/media_plugin_cef.cpp @@ -383,43 +383,46 @@ void MediaPluginCEF::onCursorChangedCallback(dullahan::ECursorType type) switch (type) { - case dullahan::CT_POINTER: - name = "arrow"; - break; + case dullahan::CT_POINTER: + name = "UI_CURSOR_ARROW"; + break; case dullahan::CT_CROSS: - name = "cross"; + name = "UI_CURSOR_CROSS"; break; case dullahan::CT_HAND: - name = "hand"; + name = "UI_CURSOR_HAND"; break; case dullahan::CT_IBEAM: - name = "ibeam"; + name = "UI_CURSOR_IBEAM"; break; case dullahan::CT_WAIT: - name = "wait"; + name = "UI_CURSOR_WAIT"; break; //case dullahan::CT_HELP: case dullahan::CT_ROWRESIZE: case dullahan::CT_NORTHRESIZE: case dullahan::CT_SOUTHRESIZE: case dullahan::CT_NORTHSOUTHRESIZE: - name = "split_ns"; + name = "UI_CURSOR_SIZENS"; break; case dullahan::CT_COLUMNRESIZE: case dullahan::CT_EASTRESIZE: case dullahan::CT_WESTRESIZE: case dullahan::CT_EASTWESTRESIZE: - name = "split_we"; + name = "UI_CURSOR_SIZEWE"; break; case dullahan::CT_NORTHEASTRESIZE: case dullahan::CT_SOUTHWESTRESIZE: case dullahan::CT_NORTHEASTSOUTHWESTRESIZE: - name = "split_nesw"; + name = "UI_CURSOR_SIZENESW"; break; case dullahan::CT_SOUTHEASTRESIZE: case dullahan::CT_NORTHWESTRESIZE: case dullahan::CT_NORTHWESTSOUTHEASTRESIZE: - name = "split_nwse"; + name = "UI_CURSOR_SIZENWSE"; + break; + case dullahan::CT_MOVE: + name = "UI_CURSOR_SIZEALL"; break; //case dullahan::CT_MIDDLEPANNING: //case dullahan::CT_EASTPANNING: @@ -430,32 +433,33 @@ void MediaPluginCEF::onCursorChangedCallback(dullahan::ECursorType type) //case dullahan::CT_SOUTHEASTPANNING: //case dullahan::CT_SOUTHWESTPANNING: //case dullahan::CT_WESTPANNING: - //case dullahan::CT_MOVE: //case dullahan::CT_VERTICALTEXT: //case dullahan::CT_CELL: //case dullahan::CT_CONTEXTMENU: case dullahan::CT_ALIAS: - name = "tool_media_open"; + name = "UI_CURSOR_TOOLMEDIAOPEN"; break; case dullahan::CT_PROGRESS: - name = "working"; + name = "UI_CURSOR_WORKING"; break; case dullahan::CT_COPY: - name = "arrow_copy"; + name = "UI_CURSOR_ARROWCOPY"; break; case dullahan::CT_NONE: - name = "cursor_no"; + name = "UI_CURSOR_NO"; break; case dullahan::CT_NODROP: case dullahan::CT_NOTALLOWED: - name = "cursor_no_locked"; + name = "UI_CURSOR_NOLOCKED"; break; case dullahan::CT_ZOOMIN: + name = "UI_CURSOR_TOOLZOOMIN"; + break; case dullahan::CT_ZOOMOUT: - name = "tool_zoomin"; + name = "UI_CURSOR_TOOLZOOMOUT"; break; case dullahan::CT_GRAB: - name = "tool_grab"; + name = "UI_CURSOR_TOOLGRAB"; break; //case dullahan::CT_GRABING: //case dullahan::CT_CUSTOM: diff --git a/indra/newview/cursors_mac/UI_CURSOR_SIZEALL.tif b/indra/newview/cursors_mac/UI_CURSOR_SIZEALL.tif new file mode 100644 index 0000000000..85fec76fca Binary files /dev/null and b/indra/newview/cursors_mac/UI_CURSOR_SIZEALL.tif differ diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLZOOMOUT.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLZOOMOUT.tif new file mode 100644 index 0000000000..d64a7f2b68 Binary files /dev/null and b/indra/newview/cursors_mac/UI_CURSOR_TOOLZOOMOUT.tif differ diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 8cf9f4a85c..661a520394 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -3193,58 +3193,7 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_CURSOR_CHANGED, new cursor is " << plugin->getCursorName() << LL_ENDL; std::string cursor = plugin->getCursorName(); - - static const std::map cursor_name_to_enum - { - {std::string("arrow"), UI_CURSOR_ARROW}, - {std::string("wait"), UI_CURSOR_WAIT}, - {std::string("hand"), UI_CURSOR_HAND}, - {std::string("ibeam"), UI_CURSOR_IBEAM}, - {std::string("cross"), UI_CURSOR_CROSS}, - {std::string("split_nwse"), UI_CURSOR_SIZENWSE}, - {std::string("split_nesw"), UI_CURSOR_SIZENESW}, - {std::string("split_we"), UI_CURSOR_SIZEWE}, - {std::string("split_ns"), UI_CURSOR_SIZENS}, - {std::string("cursor_no"), UI_CURSOR_NO}, - {std::string("working"), UI_CURSOR_WORKING}, - {std::string("tool_grab"), UI_CURSOR_TOOLGRAB}, - {std::string("tool_land"), UI_CURSOR_TOOLLAND}, - {std::string("tool_focus"), UI_CURSOR_TOOLFOCUS}, - {std::string("tool_create"), UI_CURSOR_TOOLCREATE}, - {std::string("arrow_drag"), UI_CURSOR_ARROWDRAG}, - {std::string("arrow_copy"), UI_CURSOR_ARROWCOPY}, - {std::string("arrow_drag_multi"), UI_CURSOR_ARROWDRAGMULTI}, - {std::string("arrow_copy_multi"), UI_CURSOR_ARROWCOPYMULTI}, - {std::string("cursor_no_locked"), UI_CURSOR_NOLOCKED}, - {std::string("arrow_locked"), UI_CURSOR_ARROWLOCKED}, - {std::string("grab_locked"), UI_CURSOR_GRABLOCKED}, - {std::string("tool_translate"), UI_CURSOR_TOOLTRANSLATE}, - {std::string("tool_rotate"), UI_CURSOR_TOOLROTATE}, - {std::string("tool_scale"), UI_CURSOR_TOOLSCALE}, - {std::string("tool_camera"), UI_CURSOR_TOOLCAMERA}, - {std::string("tool_pan"), UI_CURSOR_TOOLPAN}, - {std::string("tool_zoomin"), UI_CURSOR_TOOLZOOMIN}, - {std::string("tool_pick_object3"), UI_CURSOR_TOOLPICKOBJECT3}, - {std::string("tool_play"), UI_CURSOR_TOOLPLAY}, - {std::string("tool_pause"), UI_CURSOR_TOOLPAUSE}, - {std::string("tool_media_open"), UI_CURSOR_TOOLMEDIAOPEN}, - {std::string("tool_pipette"), UI_CURSOR_PIPETTE}, - {std::string("tool_sit"), UI_CURSOR_TOOLSIT}, - {std::string("tool_buy"), UI_CURSOR_TOOLBUY}, - {std::string("tool_open"), UI_CURSOR_TOOLOPEN}, - {std::string("tool_pathfinding"), UI_CURSOR_TOOLPATHFINDING}, - }; - - std::map::const_iterator iter = cursor_name_to_enum.find(cursor); - if (iter != cursor_name_to_enum.end()) - { - mLastSetCursor = iter->second; - } - else - { - // for anything else, default to the arrow - mLastSetCursor = UI_CURSOR_ARROW; - } + mLastSetCursor = getCursorFromString(cursor); } break; diff --git a/indra/newview/res-sdl/lltoolzoomout.BMP b/indra/newview/res-sdl/lltoolzoomout.BMP index 7f958383ab..5bdf96f80d 100644 Binary files a/indra/newview/res-sdl/lltoolzoomout.BMP and b/indra/newview/res-sdl/lltoolzoomout.BMP differ diff --git a/indra/newview/res-sdl/sizeall.BMP b/indra/newview/res-sdl/sizeall.BMP new file mode 100644 index 0000000000..03d9bf4654 Binary files /dev/null and b/indra/newview/res-sdl/sizeall.BMP differ diff --git a/indra/newview/res/lltoolzoomout.cur b/indra/newview/res/lltoolzoomout.cur index b33e68d1a6..21e0ee9702 100644 Binary files a/indra/newview/res/lltoolzoomout.cur and b/indra/newview/res/lltoolzoomout.cur differ -- cgit v1.3 From 454c7f4543688126b2fa5c0560710f5a1733702e Mon Sep 17 00:00:00 2001 From: Callum Linden Date: Tue, 5 Oct 2021 14:37:48 -0700 Subject: Fix: SL-12320 The Viewer functionality is broken with an in-viewer enabled proxy --- autobuild.xml | 14 +-- indra/media_plugins/cef/media_plugin_cef.cpp | 104 ++++++++++++--------- indra/newview/llviewermedia.cpp | 6 +- .../default/xui/en/panel_preferences_setup.xml | 32 ++++--- 4 files changed, 90 insertions(+), 66 deletions(-) (limited to 'indra/media_plugins') diff --git a/autobuild.xml b/autobuild.xml index 4768bd25c6..efa04d0f63 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -580,9 +580,9 @@ archive hash - 49fff41e17e06cdf9eb0c737d20df52f + 6b5210f0f529b294e13e1a5ea4271363 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/83411/779825/dullahan-1.12.2.202106220202_91.1.21_g9dd45fe_chromium-91.0.4472.114-darwin64-560751.tar.bz2 + https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/88757/812363/dullahan-1.12.3.202110051826_91.1.21_g9dd45fe_chromium-91.0.4472.114-darwin64-564501.tar.bz2 name darwin64 @@ -592,9 +592,9 @@ archive hash - f51f324d50a2461cda273e84fa65e0ad + eb9b46761122a1746aff98de1115cc39 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/83413/779836/dullahan-1.12.2.202106220213_91.1.21_g9dd45fe_chromium-91.0.4472.114-windows-560751.tar.bz2 + https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/88756/812368/dullahan-1.12.3.202110051827_91.1.21_g9dd45fe_chromium-91.0.4472.114-windows-564501.tar.bz2 name windows @@ -604,16 +604,16 @@ archive hash - d3df46f6592715c75df2bf520c1ad68b + 0c8102b5375402704ea8302827e8182b url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/83412/779840/dullahan-1.12.2.202106220213_91.1.21_g9dd45fe_chromium-91.0.4472.114-windows64-560751.tar.bz2 + https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/88754/812351/dullahan-1.12.3.202110051815_91.1.21_g9dd45fe_chromium-91.0.4472.114-windows64-564501.tar.bz2 name windows64 version - 1.12.2.202106220213_91.1.21_g9dd45fe_chromium-91.0.4472.114 + 1.12.3.202110051815_91.1.21_g9dd45fe_chromium-91.0.4472.114 elfio diff --git a/indra/media_plugins/cef/media_plugin_cef.cpp b/indra/media_plugins/cef/media_plugin_cef.cpp index 8465285d2b..567bab2acf 100644 --- a/indra/media_plugins/cef/media_plugin_cef.cpp +++ b/indra/media_plugins/cef/media_plugin_cef.cpp @@ -89,6 +89,9 @@ private: bool mCookiesEnabled; bool mPluginsEnabled; bool mJavascriptEnabled; + bool mProxyEnabled; + std::string mProxyHost; + int mProxyPort; bool mDisableGPU; bool mDisableNetworkService; bool mUseMockKeyChain; @@ -124,6 +127,9 @@ MediaPluginBase(host_send_func, host_user_data) mCookiesEnabled = true; mPluginsEnabled = false; mJavascriptEnabled = true; + mProxyEnabled = false; + mProxyHost = ""; + mProxyPort = 0; mDisableGPU = false; mDisableNetworkService = true; mUseMockKeyChain = true; @@ -513,50 +519,58 @@ void MediaPluginCEF::receiveMessage(const char* message_string) } else if (message_class == LLPLUGIN_MESSAGE_CLASS_MEDIA) { - if (message_name == "init") - { - // event callbacks from Dullahan - mCEFLib->setOnPageChangedCallback(std::bind(&MediaPluginCEF::onPageChangedCallback, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5)); - mCEFLib->setOnCustomSchemeURLCallback(std::bind(&MediaPluginCEF::onCustomSchemeURLCallback, this, std::placeholders::_1)); - mCEFLib->setOnConsoleMessageCallback(std::bind(&MediaPluginCEF::onConsoleMessageCallback, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)); - mCEFLib->setOnStatusMessageCallback(std::bind(&MediaPluginCEF::onStatusMessageCallback, this, std::placeholders::_1)); - mCEFLib->setOnTitleChangeCallback(std::bind(&MediaPluginCEF::onTitleChangeCallback, this, std::placeholders::_1)); - mCEFLib->setOnTooltipCallback(std::bind(&MediaPluginCEF::onTooltipCallback, this, std::placeholders::_1)); - mCEFLib->setOnLoadStartCallback(std::bind(&MediaPluginCEF::onLoadStartCallback, this)); - mCEFLib->setOnLoadEndCallback(std::bind(&MediaPluginCEF::onLoadEndCallback, this, std::placeholders::_1)); - mCEFLib->setOnLoadErrorCallback(std::bind(&MediaPluginCEF::onLoadError, this, std::placeholders::_1, std::placeholders::_2)); - mCEFLib->setOnAddressChangeCallback(std::bind(&MediaPluginCEF::onAddressChangeCallback, this, std::placeholders::_1)); - mCEFLib->setOnOpenPopupCallback(std::bind(&MediaPluginCEF::onOpenPopupCallback, this, std::placeholders::_1, std::placeholders::_2)); - mCEFLib->setOnHTTPAuthCallback(std::bind(&MediaPluginCEF::onHTTPAuthCallback, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4)); - mCEFLib->setOnFileDialogCallback(std::bind(&MediaPluginCEF::onFileDialog, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5)); - mCEFLib->setOnCursorChangedCallback(std::bind(&MediaPluginCEF::onCursorChangedCallback, this, std::placeholders::_1)); - mCEFLib->setOnRequestExitCallback(std::bind(&MediaPluginCEF::onRequestExitCallback, this)); - mCEFLib->setOnJSDialogCallback(std::bind(&MediaPluginCEF::onJSDialogCallback, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)); - mCEFLib->setOnJSBeforeUnloadCallback(std::bind(&MediaPluginCEF::onJSBeforeUnloadCallback, this)); - - dullahan::dullahan_settings settings; + if (message_name == "init") + { + // event callbacks from Dullahan + mCEFLib->setOnPageChangedCallback(std::bind(&MediaPluginCEF::onPageChangedCallback, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5)); + mCEFLib->setOnCustomSchemeURLCallback(std::bind(&MediaPluginCEF::onCustomSchemeURLCallback, this, std::placeholders::_1)); + mCEFLib->setOnConsoleMessageCallback(std::bind(&MediaPluginCEF::onConsoleMessageCallback, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)); + mCEFLib->setOnStatusMessageCallback(std::bind(&MediaPluginCEF::onStatusMessageCallback, this, std::placeholders::_1)); + mCEFLib->setOnTitleChangeCallback(std::bind(&MediaPluginCEF::onTitleChangeCallback, this, std::placeholders::_1)); + mCEFLib->setOnTooltipCallback(std::bind(&MediaPluginCEF::onTooltipCallback, this, std::placeholders::_1)); + mCEFLib->setOnLoadStartCallback(std::bind(&MediaPluginCEF::onLoadStartCallback, this)); + mCEFLib->setOnLoadEndCallback(std::bind(&MediaPluginCEF::onLoadEndCallback, this, std::placeholders::_1)); + mCEFLib->setOnLoadErrorCallback(std::bind(&MediaPluginCEF::onLoadError, this, std::placeholders::_1, std::placeholders::_2)); + mCEFLib->setOnAddressChangeCallback(std::bind(&MediaPluginCEF::onAddressChangeCallback, this, std::placeholders::_1)); + mCEFLib->setOnOpenPopupCallback(std::bind(&MediaPluginCEF::onOpenPopupCallback, this, std::placeholders::_1, std::placeholders::_2)); + mCEFLib->setOnHTTPAuthCallback(std::bind(&MediaPluginCEF::onHTTPAuthCallback, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4)); + mCEFLib->setOnFileDialogCallback(std::bind(&MediaPluginCEF::onFileDialog, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5)); + mCEFLib->setOnCursorChangedCallback(std::bind(&MediaPluginCEF::onCursorChangedCallback, this, std::placeholders::_1)); + mCEFLib->setOnRequestExitCallback(std::bind(&MediaPluginCEF::onRequestExitCallback, this)); + mCEFLib->setOnJSDialogCallback(std::bind(&MediaPluginCEF::onJSDialogCallback, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)); + mCEFLib->setOnJSBeforeUnloadCallback(std::bind(&MediaPluginCEF::onJSBeforeUnloadCallback, this)); + + dullahan::dullahan_settings settings; #if LL_WINDOWS - // As of CEF version 83+, for Windows versions, we need to tell CEF - // where the host helper process is since this DLL is not in the same - // dir as the executable that loaded it (SLPlugin.exe). The code in - // Dullahan that tried to figure out the location automatically uses - // the location of the exe which isn't helpful so we tell it explicitly. - char cur_dir_str[MAX_PATH]; - GetCurrentDirectoryA(MAX_PATH, cur_dir_str); - settings.host_process_path = std::string(cur_dir_str); + // As of CEF version 83+, for Windows versions, we need to tell CEF + // where the host helper process is since this DLL is not in the same + // dir as the executable that loaded it (SLPlugin.exe). The code in + // Dullahan that tried to figure out the location automatically uses + // the location of the exe which isn't helpful so we tell it explicitly. + char cur_dir_str[MAX_PATH]; + GetCurrentDirectoryA(MAX_PATH, cur_dir_str); + settings.host_process_path = std::string(cur_dir_str); #endif - settings.accept_language_list = mHostLanguage; - - // SL-15560: Product team overruled my change to set the default - // embedded background color to match the floater background - // and set it to white - settings.background_color = 0xffffffff; // white - - settings.cache_enabled = true; - settings.root_cache_path = mRootCachePath; - settings.cache_path = mCachePath; - settings.context_cache_path = mContextCachePath; - settings.cookies_enabled = mCookiesEnabled; + settings.accept_language_list = mHostLanguage; + + // SL-15560: Product team overruled my change to set the default + // embedded background color to match the floater background + // and set it to white + settings.background_color = 0xffffffff; // white + + settings.cache_enabled = true; + settings.root_cache_path = mRootCachePath; + settings.cache_path = mCachePath; + settings.context_cache_path = mContextCachePath; + settings.cookies_enabled = mCookiesEnabled; + + // configure proxy argument if enabled and valid + if (mProxyEnabled && mProxyHost.length()) + { + std::ostringstream proxy_url; + proxy_url << mProxyHost << ":" << mProxyPort; + settings.proxy_host_port = proxy_url.str(); + } settings.disable_gpu = mDisableGPU; #if LL_DARWIN settings.disable_network_service = mDisableNetworkService; @@ -883,6 +897,12 @@ void MediaPluginCEF::receiveMessage(const char* message_string) { mDisableGPU = message_in.getValueBoolean("disable"); } + else if (message_name == "proxy_setup") + { + mProxyEnabled = message_in.getValueBoolean("enable"); + mProxyHost = message_in.getValue("host"); + mProxyPort = message_in.getValueS32("port"); + } } else if (message_class == LLPLUGIN_MESSAGE_CLASS_MEDIA_TIME) { diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index d35dbda907..5de7744972 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -1759,6 +1759,10 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_ // need to set agent string here before instance created media_source->setBrowserUserAgent(LLViewerMedia::getInstance()->getCurrentUserAgent()); + // configure and pass proxy setup based on debug settings that are + // configured by UI in prefs -> setup + media_source->proxy_setup(gSavedSettings.getBOOL("BrowserProxyEnabled"), gSavedSettings.getString("BrowserProxyAddress"), gSavedSettings.getS32("BrowserProxyPort")); + media_source->setTarget(target); const std::string plugin_dir = gDirUtilp->getLLPluginDir(); @@ -1842,8 +1846,6 @@ bool LLViewerMediaImpl::initializePlugin(const std::string& media_type) std::string ca_path = gDirUtilp->getCAFile(); media_source->addCertificateFilePath( ca_path ); - media_source->proxy_setup(gSavedSettings.getBOOL("BrowserProxyEnabled"), gSavedSettings.getString("BrowserProxyAddress"), gSavedSettings.getS32("BrowserProxyPort")); - if(mClearCache) { mClearCache = false; diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml index dff6f6e600..5e41ba4ae1 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml @@ -227,23 +227,25 @@ height="10" layout="topleft" left="30" - name="Proxy Settings 1" - mouse_opaque="false" - top_pad="10" - width="300"> - Proxy Settings: - - - Your system's existing proxy settings will be used + Proxy Settings: + + -- cgit v1.3