Use CTRL-F focus the local search editor of a window if available (can be disabled via FSSelectLocalSearchEditorOnShortcut)

master
Ansariel 2016-10-11 09:45:49 +02:00
parent d19d9694f9
commit e057285ecd
33 changed files with 304 additions and 12 deletions

View File

@ -24114,17 +24114,28 @@ Change of this parameter will affect the layout of buttons in notification toast
<key>Value</key>
<integer>1</integer>
</map>
<key>FSMaxPendingIMMessages</key>
<map>
<key>Comment</key>
<string>Maximum number of pending IM or group messages before a minimized or not visible chat window will be updated</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>S32</string>
<key>Value</key>
<integer>25</integer>
</map>
<key>FSMaxPendingIMMessages</key>
<map>
<key>Comment</key>
<string>Maximum number of pending IM or group messages before a minimized or not visible chat window will be updated</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>S32</string>
<key>Value</key>
<integer>25</integer>
</map>
<key>FSSelectLocalSearchEditorOnShortcut</key>
<map>
<key>Comment</key>
<string>If enabled, pressing the shortcut for search (CTRL-F) will focus the search field of the active window (if available).</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>1</integer>
</map>
</map>
</llsd>

View File

@ -421,3 +421,8 @@ bool FSCommon::isLegacySkin()
std::string current_skin = gSavedSettings.getString("FSInternalSkinCurrent");
return (current_skin == "Vintage" || current_skin == "Latency");
}
bool FSCommon::isFilterEditorKeyCombo(KEY key, MASK mask)
{
return (mask == MASK_CONTROL && key == 'F' && gSavedSettings.getBOOL("FSSelectLocalSearchEditorOnShortcut"));
}

View File

@ -84,6 +84,8 @@ namespace FSCommon
bool isDefaultTexture(const LLUUID& asset_id);
bool isLegacySkin();
bool isFilterEditorKeyCombo(KEY key, MASK mask);
};
#endif // FS_COMMON_H

View File

@ -30,6 +30,7 @@
#include "fsfloaterassetblacklist.h"
#include "fscommon.h"
#include "fsscrolllistctrl.h"
#include "llfiltereditor.h"
#include "llfloaterreg.h"
@ -221,6 +222,17 @@ void FSFloaterAssetBlacklist::onFilterEdit(const std::string& search_string)
mResultList->setFilterString(mFilterSubStringOrig);
}
BOOL FSFloaterAssetBlacklist::handleKeyHere(KEY key, MASK mask)
{
if (FSCommon::isFilterEditorKeyCombo(key, mask))
{
getChild<LLFilterEditor>("filter_input")->setFocus(TRUE);
return TRUE;
}
return LLFloater::handleKeyHere(key, mask);
}
//---------------------------------------------------------------------------
// Context menu
//---------------------------------------------------------------------------

View File

@ -45,6 +45,8 @@ public:
/*virtual*/ void onOpen(const LLSD& key);
/*virtual*/ BOOL postBuild();
/*virtual*/ BOOL handleKeyHere(KEY key, MASK mask);
/*virtual*/ bool hasAccelerators() const { return true; }
void addElementToList(const LLUUID& id, const LLSD& data);
void removeElements();

View File

@ -29,6 +29,7 @@
#include "fsfloateravatarrendersettings.h"
#include "fscommon.h"
#include "llfiltereditor.h"
#include "llnamelistctrl.h"
#include "lltrans.h"
@ -133,6 +134,18 @@ void FSFloaterAvatarRenderSettings::onFilterEdit(const std::string& search_strin
mAvatarList->setFilterString(mFilterSubStringOrig);
}
BOOL FSFloaterAvatarRenderSettings::handleKeyHere(KEY key, MASK mask)
{
if (FSCommon::isFilterEditorKeyCombo(key, mask))
{
getChild<LLFilterEditor>("filter_input")->setFocus(TRUE);
return TRUE;
}
return LLFloater::handleKeyHere(key, mask);
}
//---------------------------------------------------------------------------
// Context menu
//---------------------------------------------------------------------------

View File

@ -43,6 +43,8 @@ public:
virtual ~FSFloaterAvatarRenderSettings();
/*virtual*/ BOOL postBuild();
/*virtual*/ BOOL handleKeyHere(KEY key, MASK mask);
/*virtual*/ bool hasAccelerators() const { return true; }
private:
void onCloseBtn();

View File

@ -190,6 +190,17 @@ BOOL FSFloaterContacts::tick()
return FALSE;
}
BOOL FSFloaterContacts::handleKeyHere(KEY key, MASK mask)
{
if (FSCommon::isFilterEditorKeyCombo(key, mask) && getActiveTabName() == FRIENDS_TAB_NAME && gSavedSettings.getBOOL("FSContactListShowSearch"))
{
mFriendFilter->setFocus(TRUE);
return TRUE;
}
return LLFloater::handleKeyHere(key, mask);
}
void FSFloaterContacts::updateGroupButtons()
{
LLUUID groupId = getCurrentItemID();

View File

@ -52,6 +52,8 @@ public:
/*virtual*/ void onOpen(const LLSD& key);
/*virtual*/ void draw();
/*virtual*/ BOOL tick();
/*virtual*/ BOOL handleKeyHere(KEY key, MASK mask);
/*virtual*/ bool hasAccelerators() const { return true; }
// LLFriendObserver implementation
/*virtual*/ void changed(U32 changed_mask);

View File

@ -29,6 +29,7 @@
#include "fsfloaterteleporthistory.h"
#include "fscommon.h"
#include "llpanelteleporthistory.h"
#include "llbutton.h"
#include "llfiltereditor.h"
@ -105,3 +106,14 @@ void FSFloaterTeleportHistory::resetFilter()
mFilterEditor->clear();
onFilterEdit("", true);
}
BOOL FSFloaterTeleportHistory::handleKeyHere(KEY key, MASK mask)
{
if (FSCommon::isFilterEditorKeyCombo(key, mask))
{
mFilterEditor->setFocus(TRUE);
return TRUE;
}
return LLFloater::handleKeyHere(key, mask);
}

View File

@ -40,6 +40,8 @@ public:
virtual ~FSFloaterTeleportHistory();
BOOL postBuild();
/*virtual*/ BOOL handleKeyHere(KEY key, MASK mask);
/*virtual*/ bool hasAccelerators() const { return true; }
void resetFilter();

View File

@ -31,6 +31,7 @@
#include "fspanelblocklist.h"
#include "fscommon.h"
#include "fsblocklistmenu.h"
#include "fsscrolllistctrl.h"
#include "llavataractions.h"
@ -116,6 +117,17 @@ void FSPanelBlockList::onOpen(const LLSD& key)
}
}
BOOL FSPanelBlockList::handleKeyHere(KEY key, MASK mask)
{
if (FSCommon::isFilterEditorKeyCombo(key, mask))
{
getChild<LLFilterEditor>("blocked_filter_input")->setFocus(TRUE);
return TRUE;
}
return LLPanel::handleKeyHere(key, mask);
}
void FSPanelBlockList::selectBlocked(const LLUUID& mute_id)
{
mBlockedList->deselectAllItems();

View File

@ -48,6 +48,8 @@ public:
virtual BOOL postBuild();
virtual void onOpen(const LLSD& key);
/*virtual*/ BOOL handleKeyHere(KEY key, MASK mask);
/*virtual*/ bool hasAccelerators() const { return true; }
void selectBlocked(const LLUUID& id);

View File

@ -36,6 +36,7 @@
#include "lltoggleablemenu.h"
// newview
#include "fscommon.h"
#include "fsradarmenu.h"
#include "llavataractions.h"
#include "llnetmap.h"
@ -132,7 +133,8 @@ BOOL FSPanelRadar::postBuild()
mMiniMap = getChild<LLNetMap>("Net Map");
mAddFriendButton = getChild<LLButton>("add_friend_btn");
getChild<LLFilterEditor>("nearby_filter_input")->setCommitCallback(boost::bind(&FSPanelRadar::onFilterEdit, this, _2));
mFilterEditor = getChild<LLFilterEditor>("nearby_filter_input");
mFilterEditor->setCommitCallback(boost::bind(&FSPanelRadar::onFilterEdit, this, _2));
// Create menus.
LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
@ -169,6 +171,17 @@ BOOL FSPanelRadar::postBuild()
return TRUE;
}
BOOL FSPanelRadar::handleKeyHere(KEY key, MASK mask)
{
if (FSCommon::isFilterEditorKeyCombo(key, mask))
{
mFilterEditor->setFocus(TRUE);
return TRUE;
}
return LLPanel::handleKeyHere(key, mask);
}
void FSPanelRadar::updateButtons()
{
LLUUID selected_id;

View File

@ -49,6 +49,8 @@ public:
virtual ~FSPanelRadar();
/*virtual*/ BOOL postBuild();
/*virtual*/ BOOL handleKeyHere(KEY key, MASK mask);
/*virtual*/ bool hasAccelerators() const { return true; }
void requestUpdate();
LLUUID getCurrentItemID() const;
@ -86,6 +88,7 @@ private:
LLButton* mRadarGearButton;
LLButton* mAddFriendButton;
LLMenuButton* mOptionsButton;
LLFilterEditor* mFilterEditor;
LLHandle<LLView> mOptionsMenuHandle;

View File

@ -34,6 +34,7 @@
#include "llviewercontrol.h"
#include "llavataractions.h"
// </FS:CR>
#include "fscommon.h"
LLFloaterConversationLog::LLFloaterConversationLog(const LLSD& key)
: LLFloater(key),
@ -135,3 +136,16 @@ bool LLFloaterConversationLog::isActionChecked(const LLSD& userdata)
return false;
}
// <FS:Ansariel> CTRL-F focusses local search editor
BOOL LLFloaterConversationLog::handleKeyHere(KEY key, MASK mask)
{
if (FSCommon::isFilterEditorKeyCombo(key, mask))
{
getChild<LLFilterEditor>("people_filter_input")->setFocus(TRUE);
return TRUE;
}
return LLFloater::handleKeyHere(key, mask);
}
// </FS:Ansariel>

View File

@ -43,6 +43,11 @@ public:
void onFilterEdit(const std::string& search_string);
// <FS:Ansariel> CTRL-F focusses local search editor
/*virtual*/ BOOL handleKeyHere(KEY key, MASK mask);
/*virtual*/ bool hasAccelerators() const { return true; }
// </FS:Ansariel>
private:
void onCustomAction (const LLSD& userdata);

View File

@ -43,6 +43,7 @@
#include "llsidepaneliteminfo.h"
#include "lltextbox.h"
#include "lltrans.h"
#include "fscommon.h"
///----------------------------------------------------------------------------
/// LLPanelMarketplaceListings
@ -673,6 +674,19 @@ void LLFloaterMarketplaceListings::onChanged()
}
}
// <FS:Ansariel> CTRL-F focusses local search editor
BOOL LLFloaterMarketplaceListings::handleKeyHere(KEY key, MASK mask)
{
if (FSCommon::isFilterEditorKeyCombo(key, mask))
{
getChild<LLFilterEditor>("filter_editor")->setFocus(TRUE);
return TRUE;
}
return LLFloater::handleKeyHere(key, mask);
}
// </FS:Ansariel>
//-----------------------------------------------------------------------------
// LLFloaterAssociateListing
//-----------------------------------------------------------------------------

View File

@ -109,6 +109,10 @@ public:
BOOL handleHover(S32 x, S32 y, MASK mask);
void onMouseLeave(S32 x, S32 y, MASK mask);
// <FS:Ansariel> CTRL-F focusses local search editor
/*virtual*/ BOOL handleKeyHere(KEY key, MASK mask);
/*virtual*/ bool hasAccelerators() const { return true; }
// </FS:Ansariel>
protected:
void setRootFolder();

View File

@ -60,6 +60,7 @@
#include "fsfloatergroup.h"
#include "llviewercontrol.h"
// </FS:Ansariel>
#include "fscommon.h"
static LLPanelInjector<LLPanelGroup> t_panel_group("panel_group_info_sidetray");
@ -846,4 +847,32 @@ void LLPanelGroup::showNotice(const std::string& subject,
}
// <FS:Ansariel> CTRL-F focusses local search editor
BOOL LLPanelGroup::handleKeyHere(KEY key, MASK mask)
{
if (FSCommon::isFilterEditorKeyCombo(key, mask))
{
if (mIsUsingTabContainer)
{
LLPanelGroupRoles* panel = dynamic_cast<LLPanelGroupRoles*>(getChild<LLTabContainer>("groups_accordion")->getCurrentPanel());
if (panel)
{
panel->getCurrentTab()->setSearchFilterFocus(TRUE);
return TRUE;
}
}
else
{
LLAccordionCtrlTab* tab = getChild<LLAccordionCtrl>("groups_accordion")->getSelectedTab();
if (tab && tab->getName() == "group_roles_tab")
{
tab->findChild<LLPanelGroupRoles>("group_roles_tab_panel")->getCurrentTab()->setSearchFilterFocus(TRUE);
return TRUE;
}
}
}
return LLPanel::handleKeyHere(key, mask);
}
// </FS:Ansariel>

View File

@ -88,6 +88,11 @@ public:
const std::string& inventory_name,
LLOfferInfo* inventory_offer);
// <FS:Ansariel> CTRL-F focusses local search editor
/*virtual*/ BOOL handleKeyHere(KEY key, MASK mask);
/*virtual*/ bool hasAccelerators() const { return true; }
// </FS:Ansariel>
protected:
virtual void update(LLGroupChange gc);

View File

@ -431,6 +431,12 @@ void LLPanelGroupRoles::setGroupID(const LLUUID& id)
activate();
}
// <FS:Ansariel> CTRL-F focusses local search editor
LLPanelGroupSubTab* LLPanelGroupRoles::getCurrentTab() const
{
return dynamic_cast<LLPanelGroupSubTab*>(mSubTabContainer->getCurrentPanel());
}
// </FS:Ansariel>
// LLPanelGroupSubTab ////////////////////////////////////////////////////
LLPanelGroupSubTab::LLPanelGroupSubTab()
@ -789,6 +795,12 @@ void LLPanelGroupSubTab::setFooterEnabled(BOOL enable)
}
}
// <FS:Ansariel> CTRL-F focusses local search editor
void LLPanelGroupSubTab::setSearchFilterFocus(BOOL focus)
{
mSearchEditor->setFocus(focus);
}
// </FS:Ansariel>
// LLPanelGroupMembersSubTab /////////////////////////////////////////////
static LLPanelInjector<LLPanelGroupMembersSubTab> t_panel_group_members_subtab("panel_group_members_subtab");

View File

@ -80,6 +80,9 @@ public:
virtual void setGroupID(const LLUUID& id);
// <FS:Ansariel> CTRL-F focusses local search editor
LLPanelGroupSubTab* getCurrentTab() const;
protected:
LLPanelGroupTab* mCurrentTab;
LLPanelGroupTab* mRequestedTab;
@ -114,6 +117,10 @@ public:
void setFooterEnabled(BOOL enable);
virtual void setGroupID(const LLUUID& id);
// <FS:Ansariel> CTRL-F focusses local search editor
void setSearchFilterFocus(BOOL focus);
protected:
void buildActionsList(LLScrollListCtrl* ctrl,
U64 allowed_by_some,

View File

@ -62,6 +62,7 @@
#include "lltrans.h"
#include "llviewernetwork.h"
// </FS:AW opensim currency support>
#include "fscommon.h"
// <FS:Ansariel> FIRE-12808: Don't save filters during settings restore
bool LLPanelMainInventory::sSaveFilters = true;
@ -403,6 +404,14 @@ void LLPanelMainInventory::startSearch()
BOOL LLPanelMainInventory::handleKeyHere(KEY key, MASK mask)
{
// <FS:Ansariel> CTRL-F focusses local search editor
if (FSCommon::isFilterEditorKeyCombo(key, mask))
{
mFilterEditor->setFocus(TRUE);
return TRUE;
}
// </FS:Ansariel>
LLFolderView* root_folder = mActivePanel ? mActivePanel->getRootFolder() : NULL;
if (root_folder)
{

View File

@ -75,6 +75,8 @@ public:
/*virtual*/ void changed(U32);
/*virtual*/ void draw();
/*virtual*/ void onVisibilityChange ( BOOL new_visibility );
// <FS:Ansariel> CTRL-F focusses local search editor
/*virtual*/ bool hasAccelerators() const { return true; }
LLInventoryPanel* getPanel() { return mActivePanel; }
LLInventoryPanel* getActivePanel() { return mActivePanel; }

View File

@ -2095,4 +2095,31 @@ bool LLPanelPeople::onEnableColumnVisibilityChecked(const LLSD& userdata)
}
// </FS:Ansariel>
// <FS:Ansariel> CTRL-F focusses local search editor
BOOL LLPanelPeople::handleKeyHere(KEY key, MASK mask)
{
if (FSCommon::isFilterEditorKeyCombo(key, mask))
{
std::string cur_tab = getActiveTabName();
if (cur_tab == FRIENDS_TAB_NAME)
{
getChild<LLFilterEditor>("friends_filter_input")->setFocus(TRUE);
return TRUE;
}
else if (cur_tab == GROUP_TAB_NAME)
{
getChild<LLFilterEditor>("groups_filter_input")->setFocus(TRUE);
return TRUE;
}
else if (cur_tab == RECENT_TAB_NAME)
{
getChild<LLFilterEditor>("recent_filter_input")->setFocus(TRUE);
return TRUE;
}
}
return LLPanel::handleKeyHere(key, mask);
}
// </FS:Ansariel>
// EOF

View File

@ -66,6 +66,10 @@ public:
// Implements LLVoiceClientStatusObserver::onChange() to enable call buttons
// when voice is available
/*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal);
// <FS:Ansariel> CTRL-F focusses local search editor
/*virtual*/ BOOL handleKeyHere(KEY key, MASK mask);
/*virtual*/ bool hasAccelerators() const { return true; }
// </FS:Ansariel>
bool mTryToConnectToFacebook;

View File

@ -74,6 +74,7 @@
#include "llviewerregion.h"
#include "llviewerwindow.h"
#include "fsfloaterplacedetails.h"
#include "fscommon.h"
// Constants
static const F32 PLACE_INFO_UPDATE_INTERVAL = 3.0;
@ -1251,6 +1252,19 @@ void LLPanelPlaces::resetFilter()
}
// </FS:Ansariel>
// <FS:Ansariel> CTRL-F focusses local search editor
BOOL LLPanelPlaces::handleKeyHere(KEY key, MASK mask)
{
if (FSCommon::isFilterEditorKeyCombo(key, mask))
{
mFilterEditor->setFocus(TRUE);
return TRUE;
}
return LLPanel::handleKeyHere(key, mask);
}
// </FS:Ansariel>
static bool is_agent_in_selected_parcel(LLParcel* parcel)
{
LLViewerParcelMgr* parcel_mgr = LLViewerParcelMgr::getInstance();

View File

@ -59,6 +59,10 @@ public:
/*virtual*/ BOOL postBuild();
/*virtual*/ void onOpen(const LLSD& key);
// <FS:Ansariel> CTRL-F focusses local search editor
/*virtual*/ BOOL handleKeyHere(KEY key, MASK mask);
/*virtual*/ bool hasAccelerators() const { return true; }
// </FS:Ansariel>
// Called on parcel selection change to update place information.
void changedParcelSelection();

View File

@ -48,6 +48,7 @@
#include "llviewerregion.h"
#include "llvoavatarself.h"
#include "llviewerwearable.h"
#include "fscommon.h"
static LLPanelInjector<LLSidepanelAppearance> t_appearance("sidepanel_appearance");
@ -573,3 +574,24 @@ void LLSidepanelAppearance::updateAvatarComplexity(U32 complexity)
instance->mLastAvatarComplexity = complexity;
}
// </FS:Ansariel>
// <FS:Ansariel> CTRL-F focusses local search editor
BOOL LLSidepanelAppearance::handleKeyHere(KEY key, MASK mask)
{
if (FSCommon::isFilterEditorKeyCombo(key, mask))
{
if (mFilterEditor->getVisible())
{
mFilterEditor->setFocus(TRUE);
return TRUE;
}
else if (isOutfitEditPanelVisible() && getChildView("filter_panel")->getVisible())
{
getChild<LLFilterEditor>("look_item_filter")->setFocus(TRUE);
return TRUE;
}
}
return LLPanel::handleKeyHere(key, mask);
}
// </FS:Ansariel>

View File

@ -48,6 +48,10 @@ public:
/*virtual*/ BOOL postBuild();
/*virtual*/ void onOpen(const LLSD& key);
// <FS:Ansariel> CTRL-F focusses local search editor
/*virtual*/ BOOL handleKeyHere(KEY key, MASK mask);
/*virtual*/ bool hasAccelerators() const { return true; }
// </FS:Ansariel>
void refreshCurrentOutfitName(const std::string& name = "");

View File

@ -71,6 +71,8 @@
#include "lllocalbitmaps.h"
#include "llerror.h"
#include "fscommon.h"
static const F32 CONTEXT_CONE_IN_ALPHA = 0.0f;
static const F32 CONTEXT_CONE_OUT_ALPHA = 1.f;
static const F32 CONTEXT_FADE_TIME = 0.08f;
@ -272,6 +274,14 @@ BOOL LLFloaterTexturePicker::handleDragAndDrop(
BOOL LLFloaterTexturePicker::handleKeyHere(KEY key, MASK mask)
{
// <FS:Ansariel> CTRL-F focusses local search editor
if (FSCommon::isFilterEditorKeyCombo(key, mask))
{
mFilterEdit->setFocus(TRUE);
return TRUE;
}
// </FS:Ansariel>
LLFolderView* root_folder = mInventoryPanel->getRootFolder();
if (root_folder && mFilterEdit)

View File

@ -278,6 +278,8 @@ public:
std::string& tooltip_msg);
/*virtual*/ void draw();
/*virtual*/ BOOL handleKeyHere(KEY key, MASK mask);
// <FS:Ansariel> CTRL-F focusses local search editor
/*virtual*/ bool hasAccelerators() const { return true; }
// LLFloater overrides
/*virtual*/ BOOL postBuild();