summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCinder <cinder.roxley@phoenixviewer.com>2014-05-14 14:08:24 -0600
committerCinder <cinder.roxley@phoenixviewer.com>2014-05-14 14:08:24 -0600
commite776b600b1a76fcbe316041fc6fa8e885464daee (patch)
tree79982fcb22e40343969b789ff8f175fae9b40632
parentc073bad6b29fa3c5167c28c286171a1bda9b5e4a (diff)
Refactor more script editor properties away from LLTextEditor to LLScriptEditor
-rwxr-xr-xindra/llui/lltexteditor.cpp77
-rwxr-xr-xindra/llui/lltexteditor.h7
-rw-r--r--indra/newview/llfloaterscriptedprefs.h4
-rw-r--r--indra/newview/llscripteditor.cpp96
-rw-r--r--indra/newview/llscripteditor.h8
-rw-r--r--indra/newview/skins/default/xui/en/floater_script_ed_prefs.xml1
-rwxr-xr-xindra/newview/skins/default/xui/en/panel_script_ed.xml3
7 files changed, 106 insertions, 90 deletions
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index 7818f6e285..268c830a75 100755
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -75,8 +75,6 @@ template class LLTextEditor* LLView::getChild<class LLTextEditor>(
//
// Constants
//
-const S32 UI_TEXTEDITOR_LINE_NUMBER_MARGIN = 32;
-const S32 UI_TEXTEDITOR_LINE_NUMBER_DIGITS = 4;
const S32 SPACES_PER_TAB = 4;
const F32 SPELLCHECK_DELAY = 0.5f; // delay between the last keypress and spell checking the word the cursor is on
@@ -236,7 +234,6 @@ LLTextEditor::Params::Params()
prevalidate_callback("prevalidate_callback"),
embedded_items("embedded_items", false),
ignore_tab("ignore_tab", true),
- show_line_numbers("show_line_numbers", false),
auto_indent("auto_indent", true),
default_color("default_color"),
commit_on_focus_lost("commit_on_focus_lost", false),
@@ -252,8 +249,7 @@ LLTextEditor::LLTextEditor(const LLTextEditor::Params& p) :
mBaseDocIsPristine(TRUE),
mPristineCmd( NULL ),
mLastCmd( NULL ),
- mDefaultColor( p.default_color() ),
- mShowLineNumbers ( p.show_line_numbers ),
+ mDefaultColor( p.default_color() ),
mAutoIndent(p.auto_indent),
mCommitOnFocusLost( p.commit_on_focus_lost),
mAllowEmbeddedItems( p.embedded_items ),
@@ -277,14 +273,7 @@ LLTextEditor::LLTextEditor(const LLTextEditor::Params& p) :
params.visible = p.border_visible;
mBorder = LLUICtrlFactory::create<LLViewBorder> (params);
addChild( mBorder );
-
setText(p.default_text());
-
- if (mShowLineNumbers)
- {
- mHPad += UI_TEXTEDITOR_LINE_NUMBER_MARGIN;
- updateRects();
- }
mParseOnTheFly = TRUE;
}
@@ -2196,69 +2185,6 @@ void LLTextEditor::drawPreeditMarker()
}
}
-
-void LLTextEditor::drawLineNumbers()
-{
- LLGLSUIDefault gls_ui;
- LLRect scrolled_view_rect = getVisibleDocumentRect();
- LLRect content_rect = getVisibleTextRect();
- LLLocalClipRect clip(content_rect);
- S32 first_line = getFirstVisibleLine();
- S32 num_lines = getLineCount();
- if (first_line >= num_lines)
- {
- return;
- }
-
- S32 cursor_line = mLineInfoList[getLineNumFromDocIndex(mCursorPos)].mLineNum;
-
- if (mShowLineNumbers)
- {
- S32 left = 0;
- S32 top = getRect().getHeight();
- S32 bottom = 0;
-
- gl_rect_2d(left, top, UI_TEXTEDITOR_LINE_NUMBER_MARGIN, bottom, mReadOnlyBgColor.get() ); // line number area always read-only
- gl_rect_2d(UI_TEXTEDITOR_LINE_NUMBER_MARGIN, top, UI_TEXTEDITOR_LINE_NUMBER_MARGIN-1, bottom, LLColor4::grey3); // separator
-
- S32 last_line_num = -1;
-
- for (S32 cur_line = first_line; cur_line < num_lines; cur_line++)
- {
- line_info& line = mLineInfoList[cur_line];
-
- if ((line.mRect.mTop - scrolled_view_rect.mBottom) < mVisibleTextRect.mBottom)
- {
- break;
- }
-
- S32 line_bottom = line.mRect.mBottom - scrolled_view_rect.mBottom + mVisibleTextRect.mBottom;
- // draw the line numbers
- if(line.mLineNum != last_line_num && line.mRect.mTop <= scrolled_view_rect.mTop)
- {
- const LLFontGL *num_font = LLFontGL::getFontMonospace();
- const LLWString ltext = utf8str_to_wstring(llformat("%d", line.mLineNum ));
- BOOL is_cur_line = cursor_line == line.mLineNum;
- const U8 style = is_cur_line ? LLFontGL::BOLD : LLFontGL::NORMAL;
- const LLColor4 fg_color = is_cur_line ? mCursorColor : mReadOnlyFgColor;
- num_font->render(
- ltext, // string to draw
- 0, // begin offset
- UI_TEXTEDITOR_LINE_NUMBER_MARGIN - 2, // x
- line_bottom, // y
- fg_color,
- LLFontGL::RIGHT, // horizontal alignment
- LLFontGL::BOTTOM, // vertical alignment
- style,
- LLFontGL::NO_SHADOW,
- S32_MAX, // max chars
- UI_TEXTEDITOR_LINE_NUMBER_MARGIN - 2); // max pixels
- last_line_num = line.mLineNum;
- }
- }
- }
-}
-
void LLTextEditor::draw()
{
{
@@ -2270,7 +2196,6 @@ void LLTextEditor::draw()
}
LLTextBase::draw();
- drawLineNumbers();
drawPreeditMarker();
diff --git a/indra/llui/lltexteditor.h b/indra/llui/lltexteditor.h
index 404275026c..2408613824 100755
--- a/indra/llui/lltexteditor.h
+++ b/indra/llui/lltexteditor.h
@@ -58,7 +58,6 @@ public:
Optional<bool> embedded_items,
ignore_tab,
- show_line_numbers,
commit_on_focus_lost,
show_context_menu,
enable_tooltip_paste,
@@ -279,11 +278,11 @@ protected:
protected:
LLUIColor mDefaultColor;
- BOOL mShowLineNumbers;
bool mAutoIndent;
bool mParseOnTheFly;
void updateLinkSegments();
+ class LLViewBorder* mBorder;
private:
//
@@ -293,8 +292,6 @@ private:
void cleanStringForPaste(LLWString & clean_string);
void pasteTextWithLinebreaks(LLWString & clean_string);
- void drawLineNumbers();
-
void onKeyStroke();
// Concrete TextCmd sub-classes used by the LLTextEditor base class
@@ -303,8 +300,6 @@ private:
class TextCmdOverwriteChar;
class TextCmdRemove;
- class LLViewBorder* mBorder;
-
BOOL mBaseDocIsPristine;
TextCmd* mPristineCmd;
diff --git a/indra/newview/llfloaterscriptedprefs.h b/indra/newview/llfloaterscriptedprefs.h
index 360c9adc92..765db75abc 100644
--- a/indra/newview/llfloaterscriptedprefs.h
+++ b/indra/newview/llfloaterscriptedprefs.h
@@ -25,8 +25,8 @@
* $/LicenseInfo$
*/
-#ifndef LLFLOATERSCRIPTEDPREFS_H
-#define LLFLOATERSCRIPTEDPREFS_H
+#ifndef LL_FLOATERSCRIPTEDPREFS_H
+#define LL_FLOATERSCRIPTEDPREFS_H
#include "llfloater.h"
diff --git a/indra/newview/llscripteditor.cpp b/indra/newview/llscripteditor.cpp
index 31d3c29af4..df46380130 100644
--- a/indra/newview/llscripteditor.cpp
+++ b/indra/newview/llscripteditor.cpp
@@ -29,19 +29,109 @@
#include "llscripteditor.h"
#include "llsyntaxid.h"
+#include "lllocalcliprect.h"
+
+const S32 UI_TEXTEDITOR_LINE_NUMBER_MARGIN = 32;
+const S32 UI_TEXTEDITOR_LINE_NUMBER_DIGITS = 4;
static LLDefaultChildRegistry::Register<LLScriptEditor> r("script_editor");
LLScriptEditor::Params::Params()
-{
-
-}
+: show_line_numbers("show_line_numbers", true)
+{}
LLScriptEditor::LLScriptEditor(const Params& p)
: LLTextEditor(p)
+, mShowLineNumbers(p.show_line_numbers)
+{
+ if (mShowLineNumbers)
+ {
+ mHPad += UI_TEXTEDITOR_LINE_NUMBER_MARGIN;
+ updateRects();
+ }
+}
+
+void LLScriptEditor::draw()
{
+ {
+ // pad clipping rectangle so that cursor can draw at full width
+ // when at left edge of mVisibleTextRect
+ LLRect clip_rect(mVisibleTextRect);
+ clip_rect.stretch(1);
+ LLLocalClipRect clip(clip_rect);
+ }
+ LLTextBase::draw();
+ drawLineNumbers();
+
+ drawPreeditMarker();
+
+ //RN: the decision was made to always show the orange border for keyboard focus but do not put an insertion caret
+ // when in readonly mode
+ mBorder->setKeyboardFocusHighlight( hasFocus() );// && !mReadOnly);
+}
+
+void LLScriptEditor::drawLineNumbers()
+{
+ LLGLSUIDefault gls_ui;
+ LLRect scrolled_view_rect = getVisibleDocumentRect();
+ LLRect content_rect = getVisibleTextRect();
+ LLLocalClipRect clip(content_rect);
+ S32 first_line = getFirstVisibleLine();
+ S32 num_lines = getLineCount();
+ if (first_line >= num_lines)
+ {
+ return;
+ }
+
+ S32 cursor_line = mLineInfoList[getLineNumFromDocIndex(mCursorPos)].mLineNum;
+
+ if (mShowLineNumbers)
+ {
+ S32 left = 0;
+ S32 top = getRect().getHeight();
+ S32 bottom = 0;
+
+ gl_rect_2d(left, top, UI_TEXTEDITOR_LINE_NUMBER_MARGIN, bottom, mReadOnlyBgColor.get() ); // line number area always read-only
+ gl_rect_2d(UI_TEXTEDITOR_LINE_NUMBER_MARGIN, top, UI_TEXTEDITOR_LINE_NUMBER_MARGIN-1, bottom, LLColor4::grey3); // separator
+
+ S32 last_line_num = -1;
+
+ for (S32 cur_line = first_line; cur_line < num_lines; cur_line++)
+ {
+ line_info& line = mLineInfoList[cur_line];
+
+ if ((line.mRect.mTop - scrolled_view_rect.mBottom) < mVisibleTextRect.mBottom)
+ {
+ break;
+ }
+
+ S32 line_bottom = line.mRect.mBottom - scrolled_view_rect.mBottom + mVisibleTextRect.mBottom;
+ // draw the line numbers
+ if(line.mLineNum != last_line_num && line.mRect.mTop <= scrolled_view_rect.mTop)
+ {
+ const LLFontGL *num_font = LLFontGL::getFontMonospace();
+ const LLWString ltext = utf8str_to_wstring(llformat("%d", line.mLineNum ));
+ BOOL is_cur_line = cursor_line == line.mLineNum;
+ const U8 style = is_cur_line ? LLFontGL::BOLD : LLFontGL::NORMAL;
+ const LLColor4 fg_color = is_cur_line ? mCursorColor : mReadOnlyFgColor;
+ num_font->render(
+ ltext, // string to draw
+ 0, // begin offset
+ UI_TEXTEDITOR_LINE_NUMBER_MARGIN - 2, // x
+ line_bottom, // y
+ fg_color,
+ LLFontGL::RIGHT, // horizontal alignment
+ LLFontGL::BOTTOM, // vertical alignment
+ style,
+ LLFontGL::NO_SHADOW,
+ S32_MAX, // max chars
+ UI_TEXTEDITOR_LINE_NUMBER_MARGIN - 2); // max pixels
+ last_line_num = line.mLineNum;
+ }
+ }
+ }
}
void LLScriptEditor::initKeywords()
diff --git a/indra/newview/llscripteditor.h b/indra/newview/llscripteditor.h
index d3e18021f9..8c5ab362a3 100644
--- a/indra/newview/llscripteditor.h
+++ b/indra/newview/llscripteditor.h
@@ -36,10 +36,16 @@ public:
struct Params : public LLInitParam::Block<Params, LLTextEditor::Params>
{
+ Optional<bool> show_line_numbers;
+
Params();
};
virtual ~LLScriptEditor() {};
+
+ // LLView override
+ virtual void draw();
+
void initKeywords();
void loadKeywords();
void clearSegments();
@@ -51,11 +57,13 @@ protected:
LLScriptEditor(const Params& p);
private:
+ void drawLineNumbers();
void updateSegments();
void loadKeywords(const std::string& filename_keywords,
const std::string& filename_colors);
LLKeywords mKeywords;
+ bool mShowLineNumbers;
};
#endif // LL_SCRIPTEDITOR_H
diff --git a/indra/newview/skins/default/xui/en/floater_script_ed_prefs.xml b/indra/newview/skins/default/xui/en/floater_script_ed_prefs.xml
index 838ed031d6..ee996ee27c 100644
--- a/indra/newview/skins/default/xui/en/floater_script_ed_prefs.xml
+++ b/indra/newview/skins/default/xui/en/floater_script_ed_prefs.xml
@@ -464,7 +464,6 @@
bg_readonly_color="ScriptBackground"
bg_selected_color="ScriptSelectedColor"
cursor_color="ScriptCursorColor"
- show_line_numbers="true"
enable_tooltip_paste="true"
word_wrap="true">
default
diff --git a/indra/newview/skins/default/xui/en/panel_script_ed.xml b/indra/newview/skins/default/xui/en/panel_script_ed.xml
index 755d9eaf39..76677d6e95 100755
--- a/indra/newview/skins/default/xui/en/panel_script_ed.xml
+++ b/indra/newview/skins/default/xui/en/panel_script_ed.xml
@@ -172,8 +172,7 @@
width="487"
enable_tooltip_paste="true"
word_wrap="true"
- show_context_menu="true"
- show_line_numbers="true">
+ show_context_menu="true">
Loading...
</script_editor>
<scroll_list