// static void LLComboBox::onButtonDown(void *userdata) { LLComboBox *self = (LLComboBox *)userdata; if (!self->mList->getVisible()) { LLScrollListItem* last_selected_item = self->mList->getLastSelectedItem(); if (last_selected_item) { // highlight the original selection before potentially selecting a new item self->mList->highlightNthItem(self->mList->getItemIndex(last_selected_item)); } if( self->mPrearrangeCallback ) { self->mPrearrangeCallback( self, self->mCallbackUserData ); } if (self->mList->getItemCount() != 0) { self->showList(); } self->setFocus( TRUE ); // pass mouse capture on to list if button is depressed if (self->mButton->hasMouseCapture()) { gFocusMgr.setMouseCapture(self->mList); } } else { self->hideList(); } }
// static void LLPanelLogin::giveFocus() { if( sInstance ) { if (!sInstance->getVisible()) sInstance->setVisible(true); // Grab focus and move cursor to first blank input field std::string username = sInstance->getChild<LLUICtrl>("username_combo")->getValue().asString(); std::string pass = sInstance->getChild<LLUICtrl>("password_edit")->getValue().asString(); BOOL have_username = !username.empty(); BOOL have_pass = !pass.empty(); LLLineEditor* edit = NULL; LLComboBox* combo = NULL; if (have_username && !have_pass) { // User saved his name but not his password. Move // focus to password field. edit = sInstance->getChild<LLLineEditor>("password_edit"); } else { // User doesn't have a name, so start there. combo = sInstance->getChild<LLComboBox>("username_combo"); } if (edit) { edit->setFocus(TRUE); edit->selectAll(); } else if (combo) { combo->setFocus(TRUE); } } }