diff options
| author | Richard Nelson <none@none> | 2010-04-01 12:52:04 -0700 | 
|---|---|---|
| committer | Richard Nelson <none@none> | 2010-04-01 12:52:04 -0700 | 
| commit | 6cc65f9e5f0aba9242295d955eb31c4938b093e1 (patch) | |
| tree | 43b41105ab1b95f0d63a85491417247f149a27de /indra/llui | |
| parent | 406b595e8c6811c2550340ba316328289d8b856f (diff) | |
| parent | df45c16169bd2be38c53fd39fd87aa7b00bb64c2 (diff) | |
merge
Diffstat (limited to 'indra/llui')
| -rw-r--r-- | indra/llui/llcombobox.cpp | 1 | ||||
| -rw-r--r-- | indra/llui/llflatlistview.cpp | 23 | ||||
| -rw-r--r-- | indra/llui/llflatlistview.h | 7 | ||||
| -rw-r--r-- | indra/llui/lllineeditor.cpp | 112 | ||||
| -rw-r--r-- | indra/llui/lllineeditor.h | 4 | ||||
| -rw-r--r-- | indra/llui/llmenugl.cpp | 2 | ||||
| -rw-r--r-- | indra/llui/llmultifloater.cpp | 2 | ||||
| -rw-r--r-- | indra/llui/lltextbase.cpp | 7 | ||||
| -rw-r--r-- | indra/llui/lltextbase.h | 1 | ||||
| -rw-r--r-- | indra/llui/lltexteditor.cpp | 237 | ||||
| -rw-r--r-- | indra/llui/lltexteditor.h | 12 | ||||
| -rw-r--r-- | indra/llui/llui.cpp | 7 | ||||
| -rw-r--r-- | indra/llui/llui.h | 2 | 
13 files changed, 80 insertions, 337 deletions
| diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp index 3a8efadaa4..cc107c972d 100644 --- a/indra/llui/llcombobox.cpp +++ b/indra/llui/llcombobox.cpp @@ -495,7 +495,6 @@ void LLComboBox::createLineEditor(const LLComboBox::Params& p)  		params.max_length_bytes(mMaxChars);  		params.commit_callback.function(boost::bind(&LLComboBox::onTextCommit, this, _2));  		params.keystroke_callback(boost::bind(&LLComboBox::onTextEntry, this, _1)); -		params.handle_edit_keys_directly(true);  		params.commit_on_focus_lost(false);  		params.follows.flags(FOLLOWS_ALL);  		params.label(mLabel); diff --git a/indra/llui/llflatlistview.cpp b/indra/llui/llflatlistview.cpp index d8084fd9aa..0fd7e7ed55 100644 --- a/indra/llui/llflatlistview.cpp +++ b/indra/llui/llflatlistview.cpp @@ -558,14 +558,6 @@ BOOL LLFlatListView::handleKeyHere(KEY key, MASK mask)  			}  			break;  		} -		case 'A': -		{ -			if(MASK_CONTROL & mask) -			{ -				handled = (BOOL)selectAll(); -			} -			break; -		}  		default:  			break;  	} @@ -790,7 +782,12 @@ bool LLFlatListView::selectNextItemPair(bool is_up_direction, bool reset_selecti  	return false;  } -bool LLFlatListView::selectAll() +BOOL LLFlatListView::canSelectAll() const +{ +	return !mItemPairs.empty() && mAllowSelection && mMultipleSelection; +} + +void LLFlatListView::selectAll()  {  	if (!mAllowSelection || !mMultipleSelection)  		return false; @@ -813,8 +810,6 @@ bool LLFlatListView::selectAll()  	// Stretch selected item rect to ensure it won't be clipped  	mSelectedItemsBorder->setRect(getLastSelectedItemRect().stretch(-1)); - -	return true;  }  bool LLFlatListView::isSelected(item_pair_t* item_pair) const @@ -952,11 +947,17 @@ void LLFlatListView::getValues(std::vector<LLSD>& values) const  void LLFlatListView::onFocusReceived()  {  	mSelectedItemsBorder->setVisible(TRUE); +	gEditMenuHandler = this;  }  // virtual  void LLFlatListView::onFocusLost()  {  	mSelectedItemsBorder->setVisible(FALSE); +	// Route menu back to the default + 	if( gEditMenuHandler == this ) +	{ +		gEditMenuHandler = NULL; +	}  }  //virtual  diff --git a/indra/llui/llflatlistview.h b/indra/llui/llflatlistview.h index dc6400c926..e2f01964de 100644 --- a/indra/llui/llflatlistview.h +++ b/indra/llui/llflatlistview.h @@ -58,7 +58,7 @@   * - Order of returned selected items are not guaranteed   * - The control assumes that all items being added are unique.   */ -class LLFlatListView : public LLScrollContainer +class LLFlatListView : public LLScrollContainer, public LLEditMenuHandler  {  public: @@ -114,7 +114,7 @@ public:  		Params();  	}; -	virtual ~LLFlatListView() { clear(); }; +	virtual ~LLFlatListView();  	/**  	 * Connects callback to signal called when Return key is pressed. @@ -344,7 +344,8 @@ protected:  	virtual bool selectNextItemPair(bool is_up_direction, bool reset_selection); -	virtual bool selectAll(); +	virtual BOOL canSelectAll() const; +	virtual void selectAll();  	virtual bool isSelected(item_pair_t* item_pair) const; diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp index 483a394bbd..ce0c0befe0 100644 --- a/indra/llui/lllineeditor.cpp +++ b/indra/llui/lllineeditor.cpp @@ -91,7 +91,6 @@ LLLineEditor::Params::Params()  	background_image_disabled("background_image_disabled"),  	background_image_focused("background_image_focused"),  	select_on_focus("select_on_focus", false), -	handle_edit_keys_directly("handle_edit_keys_directly", false),  	revert_on_esc("revert_on_esc", true),  	commit_on_focus_lost("commit_on_focus_lost", true),  	ignore_tab("ignore_tab", true), @@ -136,7 +135,6 @@ LLLineEditor::LLLineEditor(const LLLineEditor::Params& p)  	mIgnoreArrowKeys( FALSE ),  	mIgnoreTab( p.ignore_tab ),  	mDrawAsterixes( FALSE ), -	mHandleEditKeysDirectly(p.handle_edit_keys_directly),  	mSelectAllonFocusReceived( p.select_on_focus ),  	mPassDelete(FALSE),  	mReadOnly(FALSE), @@ -497,6 +495,7 @@ void LLLineEditor::selectAll()  	setCursor(mSelectionEnd);  	//mScrollHPos = 0;  	mIsSelecting = TRUE; +	updatePrimary();  } @@ -788,7 +787,7 @@ void LLLineEditor::removeChar()  	}  	else  	{ -		reportBadKeystroke(); +		LLUI::reportBadKeystroke();  	}  } @@ -827,7 +826,7 @@ void LLLineEditor::addChar(const llwchar uni_char)  	}  	else  	{ -		reportBadKeystroke(); +		LLUI::reportBadKeystroke();  	}  	getWindow()->hideCursorUntilMouseMove(); @@ -916,7 +915,7 @@ BOOL LLLineEditor::handleSelectionKey(KEY key, MASK mask)  			}  			else  			{ -				reportBadKeystroke(); +				LLUI::reportBadKeystroke();  			}  			break; @@ -932,7 +931,7 @@ BOOL LLLineEditor::handleSelectionKey(KEY key, MASK mask)  			}  			else  			{ -				reportBadKeystroke(); +				LLUI::reportBadKeystroke();  			}  			break; @@ -958,22 +957,6 @@ BOOL LLLineEditor::handleSelectionKey(KEY key, MASK mask)  		}  	} -	if (!handled && mHandleEditKeysDirectly) -	{ -		if( (MASK_CONTROL & mask) && ('A' == key) ) -		{ -			if( canSelectAll() ) -			{ -				selectAll(); -			} -			else -			{ -				reportBadKeystroke(); -			} -			handled = TRUE; -		} -	} -  	if(handled)  	{  		// take selection to 'primary' clipboard @@ -1020,7 +1003,7 @@ void LLLineEditor::cut()  		if( need_to_rollback )  		{  			rollback.doRollback( this ); -			reportBadKeystroke(); +			LLUI::reportBadKeystroke();  		}  		else  		if( mKeystrokeCallback ) @@ -1129,7 +1112,7 @@ void LLLineEditor::pasteHelper(bool is_primary)  				}  				// Truncate the clean string at the limit of what will fit  				clean_string = clean_string.substr(0, wchars_that_fit); -				reportBadKeystroke(); +				LLUI::reportBadKeystroke();  			}  			mText.insert(getCursor(), clean_string); @@ -1141,7 +1124,7 @@ void LLLineEditor::pasteHelper(bool is_primary)  			if( need_to_rollback )  			{  				rollback.doRollback( this ); -				reportBadKeystroke(); +				LLUI::reportBadKeystroke();  			}  			else  			if( mKeystrokeCallback ) @@ -1206,7 +1189,7 @@ BOOL LLLineEditor::handleSpecialKey(KEY key, MASK mask)  			}  			else  			{ -				reportBadKeystroke(); +				LLUI::reportBadKeystroke();  			}  		}  		handled = TRUE; @@ -1255,7 +1238,7 @@ BOOL LLLineEditor::handleSpecialKey(KEY key, MASK mask)  			}  			else  			{ -				reportBadKeystroke(); +				LLUI::reportBadKeystroke();  			}  			handled = TRUE;  		} @@ -1282,7 +1265,7 @@ BOOL LLLineEditor::handleSpecialKey(KEY key, MASK mask)  			}  			else  			{ -				reportBadKeystroke(); +				LLUI::reportBadKeystroke();  			}  			handled = TRUE;  		} @@ -1299,7 +1282,7 @@ BOOL LLLineEditor::handleSpecialKey(KEY key, MASK mask)  			}  			else  			{ -				reportBadKeystroke(); +				LLUI::reportBadKeystroke();  			}  			handled = TRUE;  		} @@ -1316,7 +1299,7 @@ BOOL LLLineEditor::handleSpecialKey(KEY key, MASK mask)  			}  			else  			{ -				reportBadKeystroke(); +				LLUI::reportBadKeystroke();  			}  			handled = TRUE;  		} @@ -1339,64 +1322,6 @@ BOOL LLLineEditor::handleSpecialKey(KEY key, MASK mask)  		break;  	} -	if( !handled && mHandleEditKeysDirectly ) -	{ -		// Standard edit keys (Ctrl-X, Delete, etc,) are handled here instead of routed by the menu system. -		if( KEY_DELETE == key ) -		{ -			if( canDoDelete() ) -			{ -				doDelete(); -			} -			else -			{ -				reportBadKeystroke(); -			} -			handled = TRUE; -		} -		else -		if( MASK_CONTROL & mask ) -		{ -			if( 'C' == key ) -			{ -				if( canCopy() ) -				{ -					copy(); -				} -				else -				{ -					reportBadKeystroke(); -				} -				handled = TRUE; -			} -			else -			if( 'V' == key ) -			{ -				if( canPaste() ) -				{ -					paste(); -				} -				else -				{ -					reportBadKeystroke(); -				} -				handled = TRUE; -			} -			else -			if( 'X' == key ) -			{ -				if( canCut() ) -				{ -					cut(); -				} -				else -				{ -					reportBadKeystroke(); -				} -				handled = TRUE; -			} -		} -	}  	return handled;  } @@ -1451,7 +1376,7 @@ BOOL LLLineEditor::handleKeyHere(KEY key, MASK mask )  			{  				rollback.doRollback(this); -				reportBadKeystroke(); +				LLUI::reportBadKeystroke();  			}  			// Notify owner if requested @@ -1499,7 +1424,7 @@ BOOL LLLineEditor::handleUnicodeCharHere(llwchar uni_char)  		{  			rollback.doRollback( this ); -			reportBadKeystroke(); +			LLUI::reportBadKeystroke();  		}  		// Notify owner if requested @@ -1544,7 +1469,7 @@ void LLLineEditor::doDelete()  		if( need_to_rollback )  		{  			rollback.doRollback( this ); -			reportBadKeystroke(); +			LLUI::reportBadKeystroke();  		}  		else  		{ @@ -1879,11 +1804,6 @@ S32 LLLineEditor::findPixelNearestPos(const S32 cursor_offset) const  	return result;  } -void LLLineEditor::reportBadKeystroke() -{ -	make_ui_sound("UISndBadKeystroke"); -} -  //virtual  void LLLineEditor::clear()  { diff --git a/indra/llui/lllineeditor.h b/indra/llui/lllineeditor.h index b62138426b..9489e723e3 100644 --- a/indra/llui/lllineeditor.h +++ b/indra/llui/lllineeditor.h @@ -81,7 +81,6 @@ public:  										background_image_focused;  		Optional<bool>					select_on_focus, -										handle_edit_keys_directly,  										revert_on_esc,  										commit_on_focus_lost,  										ignore_tab; @@ -215,7 +214,6 @@ public:  	void			extendSelection(S32 new_cursor_pos);  	void			deleteSelection(); -	void			setHandleEditKeysDirectly( BOOL b ) { mHandleEditKeysDirectly = b; }  	void			setSelectAllonFocusReceived(BOOL b);  	typedef boost::function<void (LLLineEditor* caller, void* user_data)> callback_t; @@ -247,7 +245,6 @@ private:  	void			addChar(const llwchar c);  	void			setCursorAtLocalPos(S32 local_mouse_x);  	S32				findPixelNearestPos(S32 cursor_offset = 0) const; -	void			reportBadKeystroke();  	BOOL			handleSpecialKey(KEY key, MASK mask);  	BOOL			handleSelectionKey(KEY key, MASK mask);  	BOOL			handleControlKey(KEY key, MASK mask); @@ -325,7 +322,6 @@ protected:  	BOOL		mIgnoreTab;  	BOOL		mDrawAsterixes; -	BOOL		mHandleEditKeysDirectly;  // If true, the standard edit keys (Ctrl-X, Delete, etc,) are handled here instead of routed by the menu system  	BOOL		mSelectAllonFocusReceived;  	BOOL		mPassDelete; diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp index fb4a9d032d..e0e86ae228 100644 --- a/indra/llui/llmenugl.cpp +++ b/indra/llui/llmenugl.cpp @@ -3345,7 +3345,7 @@ void LLMenuHolderGL::draw()  	LLView::draw();  	// now draw last selected item as overlay  	LLMenuItemGL* selecteditem = (LLMenuItemGL*)sItemLastSelectedHandle.get(); -	if (selecteditem && sItemActivationTimer.getStarted() && sItemActivationTimer.getElapsedTimeF32() < ACTIVATE_HIGHLIGHT_TIME) +	if (selecteditem && selecteditem->getVisible() && sItemActivationTimer.getStarted() && sItemActivationTimer.getElapsedTimeF32() < ACTIVATE_HIGHLIGHT_TIME)  	{  		// make sure toggle items, for example, show the proper state when fading out  		selecteditem->buildDrawLabel(); diff --git a/indra/llui/llmultifloater.cpp b/indra/llui/llmultifloater.cpp index 4af9108329..3aea648562 100644 --- a/indra/llui/llmultifloater.cpp +++ b/indra/llui/llmultifloater.cpp @@ -345,7 +345,7 @@ void LLMultiFloater::setVisible(BOOL visible)  BOOL LLMultiFloater::handleKeyHere(KEY key, MASK mask)  { -	if (key == 'W' && mask == MASK_CONTROL) +	if (key == 'W' && mask == (MASK_CONTROL|MASK_SHIFT))  	{  		LLFloater* floater = getActiveFloater();  		// is user closeable and is system closeable diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 56d7a63832..e08026eaf4 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -1059,6 +1059,13 @@ void LLTextBase::setValue(const LLSD& value )  }  //virtual +BOOL LLTextBase::canDeselect() const  +{  +	return hasSelection();  +} + + +//virtual  void LLTextBase::deselect()  {  	mSelectionStart = 0; diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h index 5b24c63557..8ed0680df9 100644 --- a/indra/llui/lltextbase.h +++ b/indra/llui/lltextbase.h @@ -132,6 +132,7 @@ public:  	/*virtual*/ LLTextViewModel* getViewModel() const;  	// LLEditMenuHandler interface +	/*virtual*/ BOOL		canDeselect() const;  	/*virtual*/ void		deselect();  	// used by LLTextSegment layout code diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index 7d230f7d42..0f943831eb 100644 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -240,7 +240,6 @@ LLTextEditor::Params::Params()  	prevalidate_callback("prevalidate_callback"),  	embedded_items("embedded_items", false),  	ignore_tab("ignore_tab", true), -	handle_edit_keys_directly("handle_edit_keys_directly", false),  	show_line_numbers("show_line_numbers", false),  	default_color("default_color"),      commit_on_focus_lost("commit_on_focus_lost", false), @@ -258,7 +257,6 @@ LLTextEditor::LLTextEditor(const LLTextEditor::Params& p) :  	mShowLineNumbers ( p.show_line_numbers ),  	mCommitOnFocusLost( p.commit_on_focus_lost),  	mAllowEmbeddedItems( p.embedded_items ), -	mHandleEditKeysDirectly( p.handle_edit_keys_directly ),  	mMouseDownX(0),  	mMouseDownY(0),  	mTabsToNextField(p.ignore_tab), @@ -507,21 +505,6 @@ void LLTextEditor::getSegmentsInRange(LLTextEditor::segment_vec_t& segments_out,  	}  } -// virtual -BOOL LLTextEditor::canDeselect() const -{ -	return hasSelection();  -} - - -void LLTextEditor::deselect() -{ -	mSelectionStart = 0; -	mSelectionEnd = 0; -	mIsSelecting = FALSE; -} - -  BOOL LLTextEditor::selectionContainsLineBreaks()  {  	if (hasSelection()) @@ -668,6 +651,7 @@ void LLTextEditor::selectAll()  	mSelectionStart = getLength();  	mSelectionEnd = 0;  	setCursorPos(mSelectionEnd); +	updatePrimary();  }  BOOL LLTextEditor::handleMouseDown(S32 x, S32 y, MASK mask) @@ -1025,7 +1009,7 @@ void LLTextEditor::removeCharOrTab()  	}  	else  	{ -		reportBadKeystroke(); +		LLUI::reportBadKeystroke();  	}  } @@ -1048,7 +1032,7 @@ void LLTextEditor::removeChar()  	}  	else  	{ -		reportBadKeystroke(); +		LLUI::reportBadKeystroke();  	}  } @@ -1198,22 +1182,6 @@ BOOL LLTextEditor::handleSelectionKey(const KEY key, const MASK mask)  		}  	} -	if( !handled && mHandleEditKeysDirectly ) -	{ -		if( (MASK_CONTROL & mask) && ('A' == key) ) -		{ -			if( canSelectAll() ) -			{ -				selectAll(); -			} -			else -			{ -				reportBadKeystroke(); -			} -			handled = TRUE; -		} -	} -  	if( handled )  	{  		// take selection to 'primary' clipboard @@ -1247,6 +1215,7 @@ BOOL LLTextEditor::handleNavigationKey(const KEY key, const MASK mask)  		case KEY_DOWN:  			changeLine( 1 ); +			deselect();  			break;  		case KEY_PAGE_DOWN: @@ -1260,7 +1229,7 @@ BOOL LLTextEditor::handleNavigationKey(const KEY key, const MASK mask)  		case KEY_LEFT:  			if( hasSelection() )  			{ -				setCursorPos(llmin( mCursorPos - 1, mSelectionStart, mSelectionEnd )); +				setCursorPos(llmin( mSelectionStart, mSelectionEnd ));  			}  			else  			{ @@ -1270,7 +1239,7 @@ BOOL LLTextEditor::handleNavigationKey(const KEY key, const MASK mask)  				}  				else  				{ -					reportBadKeystroke(); +					LLUI::reportBadKeystroke();  				}  			}  			break; @@ -1278,7 +1247,7 @@ BOOL LLTextEditor::handleNavigationKey(const KEY key, const MASK mask)  		case KEY_RIGHT:  			if( hasSelection() )  			{ -				setCursorPos(llmax( mCursorPos + 1, mSelectionStart, mSelectionEnd )); +				setCursorPos(llmax( mSelectionStart, mSelectionEnd ));  			}  			else  			{ @@ -1288,7 +1257,7 @@ BOOL LLTextEditor::handleNavigationKey(const KEY key, const MASK mask)  				}  				else  				{ -					reportBadKeystroke(); +					LLUI::reportBadKeystroke();  				}  			}	  			break; @@ -1298,6 +1267,11 @@ BOOL LLTextEditor::handleNavigationKey(const KEY key, const MASK mask)  			break;  		}  	} + +	if (handled) +	{ +		deselect(); +	}  	return handled;  } @@ -1551,75 +1525,13 @@ BOOL LLTextEditor::handleControlKey(const KEY key, const MASK mask)  	return handled;  } -BOOL LLTextEditor::handleEditKey(const KEY key, const MASK mask) -{ -	BOOL handled = FALSE; - -	// Standard edit keys (Ctrl-X, Delete, etc,) are handled here instead of routed by the menu system. -	if( KEY_DELETE == key ) -	{ -		if( canDoDelete() ) -		{ -			doDelete(); -		} -		else -		{ -			reportBadKeystroke(); -		} -		handled = TRUE; -	} -	else -	if( MASK_CONTROL & mask ) -	{ -		if( 'C' == key ) -		{ -			if( canCopy() ) -			{ -				copy(); -			} -			else -			{ -				reportBadKeystroke(); -			} -			handled = TRUE; -		} -		else -		if( 'V' == key ) -		{ -			if( canPaste() ) -			{ -				paste(); -			} -			else -			{ -				reportBadKeystroke(); -			} -			handled = TRUE; -		} -		else -		if( 'X' == key ) -		{ -			if( canCut() ) -			{ -				cut(); -			} -			else -			{ -				reportBadKeystroke(); -			} -			handled = TRUE; -		} -	} - -	return handled; -} -	 -BOOL LLTextEditor::handleSpecialKey(const KEY key, const MASK mask, BOOL* return_key_hit)	 +BOOL LLTextEditor::handleSpecialKey(const KEY key, const MASK mask)	  { -	*return_key_hit = FALSE;  	BOOL handled = TRUE; +	if (mReadOnly) return FALSE; +  	switch( key )  	{  	case KEY_INSERT: @@ -1641,7 +1553,7 @@ BOOL LLTextEditor::handleSpecialKey(const KEY key, const MASK mask, BOOL* return  		}  		else  		{ -			reportBadKeystroke(); +			LLUI::reportBadKeystroke();  		}  		break; @@ -1694,6 +1606,10 @@ BOOL LLTextEditor::handleSpecialKey(const KEY key, const MASK mask, BOOL* return  		break;  	} +	if (handled) +	{ +		onKeyStroke(); +	}  	return handled;  } @@ -1714,9 +1630,6 @@ void LLTextEditor::unindentLineBeforeCloseBrace()  BOOL LLTextEditor::handleKeyHere(KEY key, MASK mask )  {  	BOOL	handled = FALSE; -	BOOL	selection_modified = FALSE; -	BOOL	return_key_hit = FALSE; -	BOOL	text_may_have_changed = TRUE;  	// Special case for TAB.  If want to move to next field, report  	// not handled and let the parent take care of field movement. @@ -1724,116 +1637,24 @@ BOOL LLTextEditor::handleKeyHere(KEY key, MASK mask )  	{  		return FALSE;  	} -	/* -	if (KEY_F10 == key) -	{ -		LLComboBox::Params cp; -		cp.name = "combo box"; -		cp.label = "my combo"; -		cp.rect.width = 100; -		cp.rect.height = 20; -		cp.items.add().label = "item 1"; -		cp.items.add().label = "item 2"; -		cp.items.add().label = "item 3"; -		 -		appendWidget(LLUICtrlFactory::create<LLComboBox>(cp), "combo", true, false); -	} -	if (KEY_F11 == key) -	{ -		LLButton::Params bp; -		bp.name = "text button"; -		bp.label = "Click me"; -		bp.rect.width = 100; -		bp.rect.height = 20; -		appendWidget(LLUICtrlFactory::create<LLButton>(bp), "button", true, false); -	} -	*/ -	if (mReadOnly) +	if (mReadOnly && mScroller)  	{ -		if(mScroller) -		{ -			handled = mScroller->handleKeyHere( key, mask ); -		} -		else  -		{ -			handled = handleNavigationKey( key, mask ); -		} - +		handled = (mScroller && mScroller->handleKeyHere( key, mask )) +				|| handleSelectionKey(key, mask) +				|| handleControlKey(key, mask);  	}  	else  	{ -		// handle navigation keys ourself -		handled = handleNavigationKey( key, mask ); -	} - - -	if( handled ) -	{ -		text_may_have_changed = FALSE; -	} -		 -	if( !handled ) -	{ -		handled = handleSelectionKey( key, mask ); -		if( handled ) -		{ -			selection_modified = TRUE; -		} -	} - -	if( !handled ) -	{ -		handled = handleControlKey( key, mask ); -		if( handled ) -		{ -			selection_modified = TRUE; -		} -	} - -	if( !handled && mHandleEditKeysDirectly ) -	{ -		handled = handleEditKey( key, mask ); -		if( handled ) -		{ -			selection_modified = TRUE; -			text_may_have_changed = TRUE; -		} -	} - -	// Handle most keys only if the text editor is writeable. -	if( !mReadOnly ) -	{ -		if( !handled ) -		{ -			handled = handleSpecialKey( key, mask, &return_key_hit ); -			if( handled ) -			{ -				selection_modified = TRUE; -				text_may_have_changed = TRUE; -			} -		} - +		handled = handleNavigationKey( key, mask ) +				|| handleSelectionKey(key, mask) +				|| handleControlKey(key, mask) +				|| handleSpecialKey(key, mask);  	}  	if( handled )  	{  		resetCursorBlink(); - -		// Most keystrokes will make the selection box go away, but not all will. -		if( !selection_modified && -			KEY_SHIFT != key && -			KEY_CONTROL != key && -			KEY_ALT != key && -			KEY_CAPSLOCK ) -		{ -			deselect(); -		} - -		if(text_may_have_changed) -		{ -			onKeyStroke(); -		}  		needsScroll();  	} diff --git a/indra/llui/lltexteditor.h b/indra/llui/lltexteditor.h index 71d937b2c4..9b3ab9414c 100644 --- a/indra/llui/lltexteditor.h +++ b/indra/llui/lltexteditor.h @@ -68,7 +68,6 @@ public:  		Optional<bool>			embedded_items,  								ignore_tab, -								handle_edit_keys_directly,  								show_line_numbers,  								commit_on_focus_lost,  								show_context_menu; @@ -146,8 +145,6 @@ public:  	virtual BOOL	canDoDelete() const;  	virtual void	selectAll();  	virtual BOOL	canSelectAll()	const; -	virtual void	deselect(); -	virtual BOOL	canDeselect() const;  	void			selectNext(const std::string& search_text_in, BOOL case_insensitive, BOOL wrap = TRUE);  	BOOL			replaceText(const std::string& search_text, const std::string& replace_text, BOOL case_insensitive, BOOL wrap = TRUE); @@ -218,13 +215,10 @@ protected:  	S32				indentLine( S32 pos, S32 spaces );  	void			unindentLineBeforeCloseBrace(); -	void			reportBadKeystroke() { make_ui_sound("UISndBadKeystroke"); } -  	BOOL			handleNavigationKey(const KEY key, const MASK mask); -	BOOL			handleSpecialKey(const KEY key, const MASK mask, BOOL* return_key_hit); +	BOOL			handleSpecialKey(const KEY key, const MASK mask);  	BOOL			handleSelectionKey(const KEY key, const MASK mask);  	BOOL			handleControlKey(const KEY key, const MASK mask); -	BOOL			handleEditKey(const KEY key, const MASK mask);  	BOOL			selectionContainsLineBreaks();  	void			deleteSelection(BOOL transient_operation); @@ -329,10 +323,6 @@ private:  	LLUUID			mSourceID; -	// If true, the standard edit keys (Ctrl-X, Delete, etc,) are handled here  -	//instead of routed by the menu system -	BOOL			mHandleEditKeysDirectly;   -  	LLCoordGL		mLastIMEPosition;		// Last position of the IME editor  	keystroke_signal_t mKeystrokeSignal; diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp index b049895526..f9a4ed7285 100644 --- a/indra/llui/llui.cpp +++ b/indra/llui/llui.cpp @@ -1914,7 +1914,12 @@ void LLUI::clearPopups()  	}  } - +//static +void LLUI::reportBadKeystroke() +{ +	make_ui_sound("UISndBadKeystroke"); +} +	  //static  // spawn_x and spawn_y are top left corner of view in screen GL coordinates  void LLUI::positionViewNearMouse(LLView* view, S32 spawn_x, S32 spawn_y) diff --git a/indra/llui/llui.h b/indra/llui/llui.h index 30f3623ded..c18262ef76 100644 --- a/indra/llui/llui.h +++ b/indra/llui/llui.h @@ -217,6 +217,8 @@ public:  	static void removePopup(LLView*);  	static void clearPopups(); +	static void reportBadKeystroke(); +  	// Ensures view does not overlap mouse cursor, but is inside  	// the view's parent rectangle.  Used for tooltips, inspectors.  	// Optionally override the view's default X/Y, which are relative to the | 
