summaryrefslogtreecommitdiff
path: root/indra/llui
diff options
context:
space:
mode:
authorKelly Washington <kelly@lindenlab.com>2010-09-24 15:57:17 -0700
committerKelly Washington <kelly@lindenlab.com>2010-09-24 15:57:17 -0700
commitd129d6ee23995d0a5e89aa71e56d6ed6aa95761e (patch)
tree0f8ff06e67af5cf7e3c031432c6ed1f25717866f /indra/llui
parent22228896ee2ce6f20d67ce2c4a415fcd40d6b6e0 (diff)
VWR-21377 Script editor ctrl-f fix.
let some LLViews handle shortcut keys if they want. reviewed with ambroff
Diffstat (limited to 'indra/llui')
-rw-r--r--indra/llui/llfocusmgr.cpp14
-rw-r--r--indra/llui/llfocusmgr.h2
-rw-r--r--indra/llui/llview.h5
3 files changed, 21 insertions, 0 deletions
diff --git a/indra/llui/llfocusmgr.cpp b/indra/llui/llfocusmgr.cpp
index 1f16d12add..7fbfd80d8d 100644
--- a/indra/llui/llfocusmgr.cpp
+++ b/indra/llui/llfocusmgr.cpp
@@ -315,6 +315,20 @@ void LLFocusMgr::removeKeyboardFocusWithoutCallback( const LLFocusableElement* f
}
}
+bool LLFocusMgr::keyboardFocusHasMenus() const
+{
+ LLView* focus_view = dynamic_cast<LLView*>(mKeyboardFocus);
+ while( focus_view )
+ {
+ if(focus_view->hasMenus())
+ {
+ return true;
+ }
+
+ focus_view = focus_view->getParent();
+ }
+ return false;
+}
void LLFocusMgr::setMouseCapture( LLMouseHandler* new_captor )
{
diff --git a/indra/llui/llfocusmgr.h b/indra/llui/llfocusmgr.h
index eef82a3b5a..e09bad0187 100644
--- a/indra/llui/llfocusmgr.h
+++ b/indra/llui/llfocusmgr.h
@@ -118,6 +118,8 @@ public:
void unlockFocus();
BOOL focusLocked() const { return mLockedView != NULL; }
+ bool keyboardFocusHasMenus() const;
+
private:
LLUICtrl* mLockedView;
diff --git a/indra/llui/llview.h b/indra/llui/llview.h
index f7175112bf..62683491ef 100644
--- a/indra/llui/llview.h
+++ b/indra/llui/llview.h
@@ -277,6 +277,11 @@ public:
BOOL focusNextRoot();
BOOL focusPrevRoot();
+ // Normally we want the app menus to get priority on modified keys
+ // However, if this item claims to have menus then we want to give
+ // it first chance at handling them. (eg. the script editor)
+ virtual bool hasMenus() const { return false; };
+
// delete all children. Override this function if you need to
// perform any extra clean up such as cached pointers to selected
// children, etc.