Permalink
Browse files

Merge pull request #10472 from unknownbrackets/ui-perms

UI: Only default focus visible things
  • Loading branch information...
hrydgard committed Dec 30, 2017
2 parents 2dda2bf + 5ea54d9 commit 364a2662fd8c38078a66b86666b11df0509c9bba
Showing with 19 additions and 10 deletions.
  1. +1 −1 UI/DevScreens.cpp
  2. +8 −2 UI/MainScreen.cpp
  3. +3 −2 ext/native/ui/ui_screen.cpp
  4. +3 −1 ext/native/ui/viewgroup.cpp
  5. +4 −4 ext/native/ui/viewgroup.h
View
@@ -60,7 +60,7 @@ void DevMenu::CreatePopupContents(UI::ViewGroup *parent) {
I18NCategory *dev = GetI18NCategory("Developer");
I18NCategory *sy = GetI18NCategory("System");
ScrollView *scroll = new ScrollView(ORIENT_VERTICAL, new LinearLayoutParams(FILL_PARENT, WRAP_CONTENT));
ScrollView *scroll = new ScrollView(ORIENT_VERTICAL, new LinearLayoutParams(FILL_PARENT, WRAP_CONTENT, 1.0f));
LinearLayout *items = new LinearLayout(ORIENT_VERTICAL);
#if !defined(MOBILE_DEVICE)
View
@@ -762,6 +762,7 @@ void MainScreen::CreateViews() {
tabRecentGames->OnHighlight.Handle(this, &MainScreen::OnGameHighlight);
}
Button *grantStorageButton = nullptr;
if (hasStorageAccess) {
ScrollView *scrollAllGames = new ScrollView(ORIENT_VERTICAL, new LinearLayoutParams(FILL_PARENT, WRAP_CONTENT));
scrollAllGames->SetTag("MainScreenAllGames");
@@ -819,7 +820,8 @@ void MainScreen::CreateViews() {
LinearLayout *buttonHolder = new LinearLayout(ORIENT_HORIZONTAL, new LinearLayoutParams(WRAP_CONTENT, WRAP_CONTENT));
buttonHolder->Add(new Spacer(new LinearLayoutParams(1.0f)));
buttonHolder->Add(new Button(mm->T("Give PPSSPP permission to access storage"), new LinearLayoutParams(WRAP_CONTENT, WRAP_CONTENT)))->OnClick.Handle(this, &MainScreen::OnAllowStorage);
grantStorageButton = new Button(mm->T("Give PPSSPP permission to access storage"), new LinearLayoutParams(WRAP_CONTENT, WRAP_CONTENT));
buttonHolder->Add(grantStorageButton)->OnClick.Handle(this, &MainScreen::OnAllowStorage);
buttonHolder->Add(new Spacer(new LinearLayoutParams(1.0f)));
leftColumn->Add(new Spacer(new LinearLayoutParams(0.1f)));
@@ -878,7 +880,11 @@ void MainScreen::CreateViews() {
root_->Add(rightColumn);
}
root_->SetDefaultFocusView(tabHolder_);
if (grantStorageButton) {
root_->SetDefaultFocusView(grantStorageButton);
} else if (tabHolder_->GetVisibility() != V_GONE) {
root_->SetDefaultFocusView(tabHolder_);
}
I18NCategory *u = GetI18NCategory("Upgrade");
@@ -33,8 +33,9 @@ void UIScreen::DoRecreateViews() {
delete root_;
root_ = nullptr;
CreateViews();
if (root_ && root_->GetDefaultFocusView()) {
root_->GetDefaultFocusView()->SetFocus();
UI::View *defaultView = root_ ? root_->GetDefaultFocusView() : nullptr;
if (defaultView && defaultView->GetVisibility() == UI::V_VISIBLE) {
defaultView->SetFocus();
}
recreateViews_ = false;
@@ -1555,7 +1555,9 @@ void UpdateViewHierarchy(ViewGroup *root) {
std::lock_guard<std::mutex> lock(focusLock);
EnableFocusMovement(true);
if (!GetFocusedView()) {
if (root->GetDefaultFocusView()) {
View *defaultView = root->GetDefaultFocusView();
// Can't focus what you can't see.
if (defaultView && defaultView->GetVisibility() == V_VISIBLE) {
root->GetDefaultFocusView()->SetFocus();
} else {
root->SetFocus();
@@ -24,7 +24,7 @@ struct NeighborResult {
class ViewGroup : public View {
public:
ViewGroup(LayoutParams *layoutParams = 0) : View(layoutParams), defaultFocusView_(0), hasDropShadow_(false), clip_(false) {}
ViewGroup(LayoutParams *layoutParams = 0) : View(layoutParams) {}
virtual ~ViewGroup();
// Pass through external events to children.
@@ -83,11 +83,11 @@ class ViewGroup : public View {
protected:
std::mutex modifyLock_; // Hold this when changing the subviews.
std::vector<View *> views_;
View *defaultFocusView_;
View *defaultFocusView_ = nullptr;
Drawable bg_;
float dropShadowExpand_ = 0.0f;
bool hasDropShadow_;
bool clip_;
bool hasDropShadow_ = false;
bool clip_ = false;
};
// A frame layout contains a single child view (normally).

0 comments on commit 364a266

Please sign in to comment.