am: fix focus states and display of indirect keyboard
This commit is contained in:
parent
70590f79f8
commit
b206ea5cfe
|
@ -118,23 +118,17 @@ std::shared_ptr<ILibraryAppletAccessor> CreateGuestApplet(Core::System& system,
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case LibraryAppletMode::AllForeground:
|
case LibraryAppletMode::AllForeground:
|
||||||
case LibraryAppletMode::NoUi:
|
case LibraryAppletMode::NoUi:
|
||||||
applet->focus_state = FocusState::InFocus;
|
|
||||||
applet->hid_registration.EnableAppletToGetInput(true);
|
|
||||||
applet->message_queue.PushMessage(AppletMessageQueue::AppletMessage::ChangeIntoForeground);
|
|
||||||
applet->message_queue.PushMessage(AppletMessageQueue::AppletMessage::FocusStateChanged);
|
|
||||||
break;
|
|
||||||
case LibraryAppletMode::AllForegroundInitiallyHidden:
|
|
||||||
applet->system_buffer_manager.SetWindowVisibility(false);
|
|
||||||
applet->focus_state = FocusState::NotInFocus;
|
|
||||||
applet->hid_registration.EnableAppletToGetInput(false);
|
|
||||||
applet->message_queue.PushMessage(AppletMessageQueue::AppletMessage::FocusStateChanged);
|
|
||||||
break;
|
|
||||||
case LibraryAppletMode::PartialForeground:
|
case LibraryAppletMode::PartialForeground:
|
||||||
case LibraryAppletMode::PartialForegroundIndirectDisplay:
|
case LibraryAppletMode::PartialForegroundIndirectDisplay:
|
||||||
default:
|
|
||||||
applet->focus_state = FocusState::Background;
|
|
||||||
applet->hid_registration.EnableAppletToGetInput(true);
|
applet->hid_registration.EnableAppletToGetInput(true);
|
||||||
applet->message_queue.PushMessage(AppletMessageQueue::AppletMessage::FocusStateChanged);
|
applet->focus_state = FocusState::InFocus;
|
||||||
|
applet->message_queue.PushMessage(AppletMessageQueue::AppletMessage::ChangeIntoForeground);
|
||||||
|
break;
|
||||||
|
case LibraryAppletMode::AllForegroundInitiallyHidden:
|
||||||
|
applet->hid_registration.EnableAppletToGetInput(false);
|
||||||
|
applet->focus_state = FocusState::NotInFocus;
|
||||||
|
applet->system_buffer_manager.SetWindowVisibility(false);
|
||||||
|
applet->message_queue.PushMessage(AppletMessageQueue::AppletMessage::ChangeIntoBackground);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,8 @@ bool SystemBufferManager::Initialize(Nvnflinger::Nvnflinger* nvnflinger, Kernel:
|
||||||
}
|
}
|
||||||
|
|
||||||
Nvnflinger::LayerBlending blending = Nvnflinger::LayerBlending::None;
|
Nvnflinger::LayerBlending blending = Nvnflinger::LayerBlending::None;
|
||||||
if (mode == LibraryAppletMode::PartialForeground) {
|
if (mode == LibraryAppletMode::PartialForeground ||
|
||||||
|
mode == LibraryAppletMode::PartialForegroundIndirectDisplay) {
|
||||||
blending = Nvnflinger::LayerBlending::Coverage;
|
blending = Nvnflinger::LayerBlending::Coverage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -62,12 +62,12 @@ void IWindowController::SetAppletWindowVisibility(HLERequestContext& ctx) {
|
||||||
applet->hid_registration.EnableAppletToGetInput(visible);
|
applet->hid_registration.EnableAppletToGetInput(visible);
|
||||||
|
|
||||||
if (visible) {
|
if (visible) {
|
||||||
applet->message_queue.PushMessage(AppletMessageQueue::AppletMessage::ChangeIntoForeground);
|
|
||||||
applet->focus_state = FocusState::InFocus;
|
applet->focus_state = FocusState::InFocus;
|
||||||
|
applet->message_queue.PushMessage(AppletMessageQueue::AppletMessage::ChangeIntoForeground);
|
||||||
} else {
|
} else {
|
||||||
applet->focus_state = FocusState::NotInFocus;
|
applet->focus_state = FocusState::NotInFocus;
|
||||||
|
applet->message_queue.PushMessage(AppletMessageQueue::AppletMessage::ChangeIntoBackground);
|
||||||
}
|
}
|
||||||
applet->message_queue.PushMessage(AppletMessageQueue::AppletMessage::FocusStateChanged);
|
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
rb.Push(ResultSuccess);
|
rb.Push(ResultSuccess);
|
||||||
|
|
Reference in New Issue