# Conflicts:
#	indra/llui/lllineeditor.h
#	indra/llui/lltextbase.h
#	indra/newview/app_settings/settings.xml
#	indra/newview/llviewermenu.cpp
master
Ansariel 2024-02-08 16:36:25 +01:00
commit 25060135c8
12 changed files with 226 additions and 100 deletions

View File

@ -695,6 +695,7 @@ std::string mbcsstring_makeASCII(const std::string& wstr)
}
return out_str;
}
std::string utf8str_removeCRLF(const std::string& utf8str)
{
if (0 == utf8str.length())
@ -716,6 +717,54 @@ std::string utf8str_removeCRLF(const std::string& utf8str)
return out;
}
std::string utf8str_showBytesUTF8(const std::string& utf8str)
{
std::string result;
bool in_sequence = false;
for (U8 byte : utf8str)
{
if (byte >= 0x80) // Part of an UTF-8 sequence
{
if (!in_sequence) // Start new UTF-8 sequence
{
if (!result.empty() && result.back() != ' ')
result += ' '; // Use space as separator between ASCII and UTF-8
result += '[';
}
else if (byte >= 0xC0) // Start another UTF-8 sequence
{
result += "] ["; // Use space as separator between UTF-8 and UTF-8
}
else // Continue the same UTF-8 sequence
{
result += '.';
}
result += llformat("%02X", byte); // The byte is represented in hexadecimal form
in_sequence = true;
}
else // ASCII symbol is represented as a character
{
if (in_sequence) // End of UTF-8 sequence
{
result += ']';
if (byte != ' ')
{
result += ' '; // Use space as separator between UTF-8 and ASCII
}
}
result += byte;
in_sequence = false;
}
}
if (in_sequence) // End of UTF-8 sequence
{
result += ']';
}
return result;
}
#if LL_WINDOWS
unsigned int ll_wstring_default_code_page()
{

View File

@ -757,6 +757,7 @@ LL_COMMON_API std::string mbcsstring_makeASCII(const std::string& str);
LL_COMMON_API std::string utf8str_removeCRLF(const std::string& utf8str);
LL_COMMON_API std::string utf8str_showBytesUTF8(const std::string& utf8str);
#if LL_WINDOWS
/* @name Windows string helpers

View File

@ -1816,6 +1816,20 @@ void LLLineEditor::drawBackground()
}
}
//virtual
const std::string LLLineEditor::getToolTip() const
{
if (sDebugUnicode)
{
std::string text = getText();
std::string tooltip = utf8str_showBytesUTF8(text);
return tooltip;
}
return LLUICtrl::getToolTip();
}
//virtual
void LLLineEditor::draw()
{
F32 alpha = getDrawContext().mAlpha;

View File

@ -122,54 +122,55 @@ protected:
//void showContextMenu(S32 x, S32 y);
void showContextMenu(S32 x, S32 y, bool set_cursor_pos = true);
// </FS:Ansariel>
public:
virtual ~LLLineEditor();
// mousehandler overrides
/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
/*virtual*/ BOOL handleMouseUp(S32 x, S32 y, MASK mask);
/*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask);
/*virtual*/ BOOL handleDoubleClick(S32 x,S32 y,MASK mask);
/*virtual*/ BOOL handleMiddleMouseDown(S32 x,S32 y,MASK mask);
/*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
/*virtual*/ BOOL handleKeyHere(KEY key, MASK mask );
/*virtual*/ BOOL handleUnicodeCharHere(llwchar uni_char);
/*virtual*/ void onMouseCaptureLost();
/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask) override;
/*virtual*/ BOOL handleMouseUp(S32 x, S32 y, MASK mask) override;
/*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask) override;
/*virtual*/ BOOL handleDoubleClick(S32 x,S32 y,MASK mask) override;
/*virtual*/ BOOL handleMiddleMouseDown(S32 x,S32 y,MASK mask) override;
/*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask) override;
/*virtual*/ BOOL handleKeyHere(KEY key, MASK mask) override;
/*virtual*/ BOOL handleUnicodeCharHere(llwchar uni_char) override;
/*virtual*/ void onMouseCaptureLost() override;
// LLEditMenuHandler overrides
virtual void cut();
virtual BOOL canCut() const;
virtual void copy();
virtual BOOL canCopy() const;
virtual void paste();
virtual BOOL canPaste() const;
/*virtual*/ void cut() override;
/*virtual*/ BOOL canCut() const override;
/*virtual*/ void copy() override;
/*virtual*/ BOOL canCopy() const override;
/*virtual*/ void paste() override;
/*virtual*/ BOOL canPaste() const override;
virtual void updatePrimary();
virtual void copyPrimary();
virtual void pastePrimary();
virtual BOOL canPastePrimary() const;
virtual void doDelete();
virtual BOOL canDoDelete() const;
/*virtual*/ void doDelete() override;
/*virtual*/ BOOL canDoDelete() const override;
virtual void selectAll();
virtual BOOL canSelectAll() const;
/*virtual*/ void selectAll() override;
/*virtual*/ BOOL canSelectAll() const override;
virtual void deselect();
virtual BOOL canDeselect() const;
/*virtual*/ void deselect() override;
/*virtual*/ BOOL canDeselect() const override;
// LLSpellCheckMenuHandler overrides
/*virtual*/ bool getSpellCheck() const;
/*virtual*/ bool getSpellCheck() const override;
/*virtual*/ const std::string& getSuggestion(U32 index) const;
/*virtual*/ U32 getSuggestionCount() const;
/*virtual*/ void replaceWithSuggestion(U32 index);
/*virtual*/ const std::string& getSuggestion(U32 index) const override;
/*virtual*/ U32 getSuggestionCount() const override;
/*virtual*/ void replaceWithSuggestion(U32 index) override;
/*virtual*/ void addToDictionary();
/*virtual*/ bool canAddToDictionary() const;
/*virtual*/ void addToDictionary() override;
/*virtual*/ bool canAddToDictionary() const override;
/*virtual*/ void addToIgnore();
/*virtual*/ bool canAddToIgnore() const;
/*virtual*/ void addToIgnore() override;
/*virtual*/ bool canAddToIgnore() const override;
// Spell checking helper functions
std::string getMisspelledWord(U32 pos) const;
@ -177,27 +178,28 @@ public:
void onSpellCheckSettingsChange();
// view overrides
virtual void draw();
virtual void reshape(S32 width,S32 height,BOOL called_from_parent=TRUE);
virtual void onFocusReceived();
virtual void onFocusLost();
virtual void setEnabled(BOOL enabled);
/*virtual*/ const std::string getToolTip() const override;
/*virtual*/ void draw() override;
/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE) override;
/*virtual*/ void onFocusReceived() override;
/*virtual*/ void onFocusLost() override;
/*virtual*/ void setEnabled(BOOL enabled) override;
// UI control overrides
virtual void clear();
virtual void onTabInto();
virtual void setFocus( BOOL b );
virtual void setRect(const LLRect& rect);
virtual BOOL acceptsTextInput() const;
virtual void onCommit();
virtual BOOL isDirty() const; // Returns TRUE if user changed value at all
virtual void resetDirty(); // Clear dirty state
/*virtual*/ void clear() override;
/*virtual*/ void onTabInto() override;
/*virtual*/ void setFocus(BOOL b) override;
/*virtual*/ void setRect(const LLRect& rect) override;
/*virtual*/ BOOL acceptsTextInput() const override;
/*virtual*/ void onCommit() override;
/*virtual*/ BOOL isDirty() const override; // Returns TRUE if user changed value at all
/*virtual*/ void resetDirty() override; // Clear dirty state
// assumes UTF8 text
virtual void setValue(const LLSD& value );
virtual LLSD getValue() const;
virtual BOOL setTextArg( const std::string& key, const LLStringExplicit& text );
virtual BOOL setLabelArg( const std::string& key, const LLStringExplicit& text );
/*virtual*/ void setValue(const LLSD& value) override;
/*virtual*/ LLSD getValue() const override;
/*virtual*/ BOOL setTextArg(const std::string& key, const LLStringExplicit& text) override;
/*virtual*/ BOOL setLabelArg(const std::string& key, const LLStringExplicit& text) override;
//<FS:TS> FIRE-11373: Autoreplace doesn't work in nearby chat bar
typedef boost::function<void(S32&, S32&, LLWString&, S32&, const LLWString&)> autoreplace_callback_t;
@ -225,7 +227,7 @@ public:
// Selects characters 'start' to 'end'.
void setSelection(S32 start, S32 end);
virtual void getSelectionRange(S32 *position, S32 *length) const;
/*virtual*/ void getSelectionRange(S32 *position, S32 *length) const override;
void setCommitOnFocusLost( BOOL b ) { mCommitOnFocusLost = b; }
void setRevertOnEsc( BOOL b ) { mRevertOnEsc = b; }
@ -332,14 +334,14 @@ public:
void updateAllowingLanguageInput();
BOOL hasPreeditString() const;
// Implementation (overrides) of LLPreeditor
virtual void resetPreedit();
virtual void updatePreedit(const LLWString &preedit_string,
const segment_lengths_t &preedit_segment_lengths, const standouts_t &preedit_standouts, S32 caret_position);
virtual void markAsPreedit(S32 position, S32 length);
virtual void getPreeditRange(S32 *position, S32 *length) const;
virtual BOOL getPreeditLocation(S32 query_position, LLCoordGL *coord, LLRect *bounds, LLRect *control) const;
virtual S32 getPreeditFontSize() const;
virtual LLWString getPreeditString() const { return getWText(); }
/*virtual*/ void resetPreedit() override;
/*virtual*/ void updatePreedit(const LLWString &preedit_string,
const segment_lengths_t &preedit_segment_lengths, const standouts_t &preedit_standouts, S32 caret_position) override;
/*virtual*/ void markAsPreedit(S32 position, S32 length) override;
/*virtual*/ void getPreeditRange(S32 *position, S32 *length) const override;
/*virtual*/ BOOL getPreeditLocation(S32 query_position, LLCoordGL *coord, LLRect *bounds, LLRect *control) const override;
/*virtual*/ S32 getPreeditFontSize() const override;
/*virtual*/ LLWString getPreeditString() const override { return getWText(); }
void setText(const LLStringExplicit &new_text, bool use_size_limit);

View File

@ -1256,6 +1256,7 @@ void LLTextBase::insertSegment(LLTextSegmentPtr segment_to_insert)
needsReflow(reflow_start_index);
}
//virtual
BOOL LLTextBase::handleMouseDown(S32 x, S32 y, MASK mask)
{
// handle triple click
@ -1310,6 +1311,7 @@ BOOL LLTextBase::handleMouseDown(S32 x, S32 y, MASK mask)
return LLUICtrl::handleMouseDown(x, y, mask);
}
//virtual
BOOL LLTextBase::handleMouseUp(S32 x, S32 y, MASK mask)
{
LLTextSegmentPtr cur_segment = getSegmentAtLocalPos(x, y);
@ -1329,6 +1331,7 @@ BOOL LLTextBase::handleMouseUp(S32 x, S32 y, MASK mask)
return LLUICtrl::handleMouseUp(x, y, mask);
}
//virtual
BOOL LLTextBase::handleMiddleMouseDown(S32 x, S32 y, MASK mask)
{
LLTextSegmentPtr cur_segment = getSegmentAtLocalPos(x, y);
@ -1340,6 +1343,7 @@ BOOL LLTextBase::handleMiddleMouseDown(S32 x, S32 y, MASK mask)
return LLUICtrl::handleMiddleMouseDown(x, y, mask);
}
//virtual
BOOL LLTextBase::handleMiddleMouseUp(S32 x, S32 y, MASK mask)
{
LLTextSegmentPtr cur_segment = getSegmentAtLocalPos(x, y);
@ -1351,6 +1355,7 @@ BOOL LLTextBase::handleMiddleMouseUp(S32 x, S32 y, MASK mask)
return LLUICtrl::handleMiddleMouseUp(x, y, mask);
}
//virtual
BOOL LLTextBase::handleRightMouseDown(S32 x, S32 y, MASK mask)
{
LLTextSegmentPtr cur_segment = getSegmentAtLocalPos(x, y);
@ -1362,6 +1367,7 @@ BOOL LLTextBase::handleRightMouseDown(S32 x, S32 y, MASK mask)
return LLUICtrl::handleRightMouseDown(x, y, mask);
}
//virtual
BOOL LLTextBase::handleRightMouseUp(S32 x, S32 y, MASK mask)
{
LLTextSegmentPtr cur_segment = getSegmentAtLocalPos(x, y);
@ -1373,6 +1379,7 @@ BOOL LLTextBase::handleRightMouseUp(S32 x, S32 y, MASK mask)
return LLUICtrl::handleRightMouseUp(x, y, mask);
}
//virtual
BOOL LLTextBase::handleDoubleClick(S32 x, S32 y, MASK mask)
{
//Don't start triple click timer if user have clicked on scrollbar
@ -1392,6 +1399,7 @@ BOOL LLTextBase::handleDoubleClick(S32 x, S32 y, MASK mask)
return LLUICtrl::handleDoubleClick(x, y, mask);
}
//virtual
BOOL LLTextBase::handleHover(S32 x, S32 y, MASK mask)
{
LLTextSegmentPtr cur_segment = getSegmentAtLocalPos(x, y);
@ -1403,6 +1411,7 @@ BOOL LLTextBase::handleHover(S32 x, S32 y, MASK mask)
return LLUICtrl::handleHover(x, y, mask);
}
//virtual
BOOL LLTextBase::handleScrollWheel(S32 x, S32 y, S32 clicks)
{
LLTextSegmentPtr cur_segment = getSegmentAtLocalPos(x, y);
@ -1414,6 +1423,7 @@ BOOL LLTextBase::handleScrollWheel(S32 x, S32 y, S32 clicks)
return LLUICtrl::handleScrollWheel(x, y, clicks);
}
//virtual
BOOL LLTextBase::handleToolTip(S32 x, S32 y, MASK mask)
{
LLTextSegmentPtr cur_segment = getSegmentAtLocalPos(x, y);
@ -1425,7 +1435,20 @@ BOOL LLTextBase::handleToolTip(S32 x, S32 y, MASK mask)
return LLUICtrl::handleToolTip(x, y, mask);
}
//virtual
const std::string LLTextBase::getToolTip() const
{
if (sDebugUnicode)
{
std::string text = getText();
std::string tooltip = utf8str_showBytesUTF8(text);
return tooltip;
}
return LLUICtrl::getToolTip();
}
//virtual
void LLTextBase::reshape(S32 width, S32 height, BOOL called_from_parent)
{
if (width != getRect().getWidth() || height != getRect().getHeight() || LLView::sForceReshape)
@ -1452,6 +1475,7 @@ void LLTextBase::reshape(S32 width, S32 height, BOOL called_from_parent)
}
}
//virtual
void LLTextBase::draw()
{
// reflow if needed, on demand

View File

@ -306,7 +306,7 @@ namespace LLInitParam
/// as LLTextEditor and LLTextBox. It implements shared functionality
/// such as Url highlighting and opening.
///
class LLTextBase
class LLTextBase
: public LLUICtrl,
protected LLEditMenuHandler,
public LLSpellCheckMenuHandler,
@ -381,51 +381,52 @@ public:
};
// LLMouseHandler interface
/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
/*virtual*/ BOOL handleMouseUp(S32 x, S32 y, MASK mask);
/*virtual*/ BOOL handleMiddleMouseDown(S32 x, S32 y, MASK mask);
/*virtual*/ BOOL handleMiddleMouseUp(S32 x, S32 y, MASK mask);
/*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
/*virtual*/ BOOL handleRightMouseUp(S32 x, S32 y, MASK mask);
/*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
/*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask);
/*virtual*/ BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
/*virtual*/ BOOL handleToolTip(S32 x, S32 y, MASK mask);
/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask) override;
/*virtual*/ BOOL handleMouseUp(S32 x, S32 y, MASK mask) override;
/*virtual*/ BOOL handleMiddleMouseDown(S32 x, S32 y, MASK mask) override;
/*virtual*/ BOOL handleMiddleMouseUp(S32 x, S32 y, MASK mask) override;
/*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask) override;
/*virtual*/ BOOL handleRightMouseUp(S32 x, S32 y, MASK mask) override;
/*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask) override;
/*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask) override;
/*virtual*/ BOOL handleScrollWheel(S32 x, S32 y, S32 clicks) override;
/*virtual*/ BOOL handleToolTip(S32 x, S32 y, MASK mask) override;
// LLView interface
/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
/*virtual*/ void draw();
/*virtual*/ const std::string getToolTip() const override;
/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE) override;
/*virtual*/ void draw() override;
// LLUICtrl interface
/*virtual*/ BOOL acceptsTextInput() const { return !mReadOnly; }
/*virtual*/ void setColor( const LLColor4& c );
/*virtual*/ BOOL acceptsTextInput() const override { return !mReadOnly; }
/*virtual*/ void setColor(const LLColor4& c) override;
virtual void setReadOnlyColor(const LLColor4 &c);
virtual void onVisibilityChange( BOOL new_visibility );
/*virtual*/ void onVisibilityChange(BOOL new_visibility) override;
/*virtual*/ void setValue(const LLSD& value );
/*virtual*/ LLTextViewModel* getViewModel() const;
/*virtual*/ void setValue(const LLSD& value) override;
/*virtual*/ LLTextViewModel* getViewModel() const override;
// LLEditMenuHandler interface
/*virtual*/ BOOL canDeselect() const;
/*virtual*/ void deselect();
/*virtual*/ BOOL canDeselect() const override;
/*virtual*/ void deselect() override;
virtual void onFocusReceived();
virtual void onFocusLost();
virtual void onFocusReceived() override;
virtual void onFocusLost() override;
void setParseHTML(bool parse_html) { mParseHTML = parse_html; }
// LLSpellCheckMenuHandler overrides
/*virtual*/ bool getSpellCheck() const;
/*virtual*/ bool getSpellCheck() const override;
/*virtual*/ const std::string& getSuggestion(U32 index) const;
/*virtual*/ U32 getSuggestionCount() const;
/*virtual*/ void replaceWithSuggestion(U32 index);
/*virtual*/ const std::string& getSuggestion(U32 index) const override;
/*virtual*/ U32 getSuggestionCount() const override;
/*virtual*/ void replaceWithSuggestion(U32 index) override;
/*virtual*/ void addToDictionary();
/*virtual*/ bool canAddToDictionary() const;
/*virtual*/ void addToDictionary() override;
/*virtual*/ bool canAddToDictionary() const override;
/*virtual*/ void addToIgnore();
/*virtual*/ bool canAddToIgnore() const;
/*virtual*/ void addToIgnore() override;
/*virtual*/ bool canAddToIgnore() const override;
// Spell checking helper functions
std::string getMisspelledWord(U32 pos) const;
@ -459,7 +460,7 @@ public:
void appendText(const std::string &new_text, bool prepend_newline, const LLStyle::Params& input_params = LLStyle::Params());
void setLabel(const LLStringExplicit& label);
virtual BOOL setLabelArg(const std::string& key, const LLStringExplicit& text );
/*virtual*/ BOOL setLabelArg(const std::string& key, const LLStringExplicit& text) override;
const std::string& getLabel() { return mLabel.getString(); }
const LLWString& getWlabel() { return mLabel.getWString();}
@ -696,7 +697,8 @@ protected:
S32 normalizeUri(std::string& uri);
protected:
virtual std::string _getSearchText() const
// virtual
std::string _getSearchText() const override
{
return mLabel.getString() + getToolTip();
}

View File

@ -65,6 +65,7 @@ static const S32 LINE_HEIGHT = 15;
S32 LLView::sDepth = 0;
bool LLView::sDebugRects = false;
bool LLView::sDebugUnicode = false;
bool LLView::sIsRectDirty = false;
LLRect LLView::sDirtyRect;
bool LLView::sDebugRectsShowNames = true;

View File

@ -671,6 +671,9 @@ public:
// Draw debug rectangles around widgets to help with alignment and spacing
static bool sDebugRects;
// Show hexadecimal byte values of unicode symbols in a tooltip
static bool sDebugUnicode;
static bool sIsRectDirty;
static LLRect sDirtyRect;

View File

@ -1633,6 +1633,30 @@ class LLAdvancedCheckDebugViews : public view_listener_t
///////////////////
// DEBUG UNICODE //
///////////////////
class LLAdvancedToggleDebugUnicode : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
{
LLView::sDebugUnicode = !(LLView::sDebugUnicode);
return true;
}
};
class LLAdvancedCheckDebugUnicode : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
{
return LLView::sDebugUnicode;
}
};
///////////////////////
// XUI NAME TOOLTIPS //
///////////////////////
@ -10908,19 +10932,13 @@ void handle_show_url(const LLSD& param)
void handle_report_bug(const LLSD& param)
{
// <FS:Ansariel> Keep linking to out JIRA
//std::string url = gSavedSettings.getString("ReportBugURL");
//LLWeb::loadURLExternal(url);
LLUIString url(param.asString());
LLStringUtil::format_map_t replace;
// <FS:Ansariel> FIRE-14001: JIRA report is being cut off when using Help -> Report Bug
//std::string environment = LLAppViewer::instance()->getViewerInfoString(true);
//boost::regex regex;
//regex.assign("</?nolink>");
//std::string stripped_env = boost::regex_replace(environment, regex, "");
//replace["[ENVIRONMENT]"] = LLURI::escape(stripped_env);
LLSD sysinfo = FSData::getSystemInfo();
LLStringUtil::format_map_t replace;
replace["[ENVIRONMENT]"] = LLURI::escape(sysinfo["Part1"].asString().substr(1) + sysinfo["Part2"].asString().substr(1));
// </FS:Ansariel>
LLSLURL location_url;
LLAgentUI::buildSLURL(location_url);
replace["[LOCATION]"] = LLURI::escape(location_url.getSLURLString());
@ -10929,6 +10947,7 @@ void handle_report_bug(const LLSD& param)
file_bug_url.setArgs(replace);
LLWeb::loadURLExternal(file_bug_url.getString());
// </FS:Ansariel>
}
void handle_buy_currency_test(void*)
@ -12317,6 +12336,8 @@ void initialize_menus()
view_listener_t::addMenu(new LLAdvancedCheckDebugClicks(), "Advanced.CheckDebugClicks");
view_listener_t::addMenu(new LLAdvancedCheckDebugViews(), "Advanced.CheckDebugViews");
view_listener_t::addMenu(new LLAdvancedToggleDebugViews(), "Advanced.ToggleDebugViews");
view_listener_t::addMenu(new LLAdvancedCheckDebugUnicode(), "Advanced.CheckDebugUnicode");
view_listener_t::addMenu(new LLAdvancedToggleDebugUnicode(), "Advanced.ToggleDebugUnicode");
view_listener_t::addMenu(new LLAdvancedToggleXUINameTooltips(), "Advanced.ToggleXUINameTooltips");
view_listener_t::addMenu(new LLAdvancedCheckXUINameTooltips(), "Advanced.CheckXUINameTooltips");
view_listener_t::addMenu(new LLAdvancedToggleDebugMouseEvents(), "Advanced.ToggleDebugMouseEvents");

View File

@ -576,7 +576,8 @@
<menu_item_check label="Doppel-Klick-Teleport" name="DoubleClick Teleport"/>
<menu_item_check label="SelectMgr debuggen" name="Debug SelectMgr"/>
<menu_item_check label="Klicks debuggen" name="Debug Clicks"/>
<menu_item_check label="Debug-Ansichten" name="Debug Views"/>
<menu_item_check label="Ansichten debuggen" name="Debug Views"/>
<menu_item_check label="Unicode debuggen" name="Debug Unicode"/>
<menu_item_check label="Kurzinfos: Debug-Namen" name="Debug Name Tooltips"/>
<menu_item_check label="Maus-Events debuggen" name="Debug Mouse Events"/>
<menu_item_check label="Keys debuggen" name="Debug Keys"/>

View File

@ -288,7 +288,7 @@
expand_lines_count="5"
follows="left|right|bottom"
font="SansSerifSmall"
height="20"
height="20"
is_expandable="true"
text_tentative_color="TextFgTentativeColor"
bg_writeable_color="ScriptBackground"

View File

@ -4946,6 +4946,14 @@
<menu_item_check.on_click
function="Advanced.ToggleDebugViews" />
</menu_item_check>
<menu_item_check
label="Debug Unicode"
name="Debug Unicode">
<menu_item_check.on_check
function="Advanced.CheckDebugUnicode" />
<menu_item_check.on_click
function="Advanced.ToggleDebugUnicode" />
</menu_item_check>
<menu_item_check
label="Debug Name Tooltips"
name="Debug Name Tooltips">
@ -5794,7 +5802,7 @@
<menu_item_call.on_click
function="PromptShowURL"
name="PublicIssueTracker_url"
parameter="WebLaunchPublicIssue,http://jira.secondlife.com" />
parameter="WebLaunchPublicIssue,https://feedback.secondlife.com/" />
</menu_item_call>
<menu_item_call
label="Public Issue Tracker Help"