ผมคิดว่าคุณสามารถบรรลุนี้โดยการปรับเปลี่ยนรหัสที่มาของความสามัคคี 7 เพียงทำตามขั้นตอนที่อธิบายไว้ในเว็บไซต์นักพัฒนาซอฟต์แวร์ แต่ก่อนที่จะเริ่มกระบวนการสร้างเปิด: ./trunk/plugins/unityshell/src/unityshell.cpp
และดูSetUpAndShowSwitcher
ฟังก์ชั่น:
void UnityScreen::SetUpAndShowSwitcher(switcher::ShowMode show_mode)
{
RaiseInputWindows();
if (!optionGetAltTabBiasViewport())
{
if (show_mode == switcher::ShowMode::CURRENT_VIEWPORT)
show_mode = switcher::ShowMode::ALL;
else
show_mode = switcher::ShowMode::CURRENT_VIEWPORT;
}
auto results = launcher_controller_->GetAltTabIcons(show_mode == switcher::ShowMode::CURRENT_VIEWPORT,
switcher_controller_->show_desktop_disabled());
if (switcher_controller_->CanShowSwitcher(results))
switcher_controller_->Show(show_mode, switcher::SortMode::FOCUS_ORDER, results);
}
ที่นี่คุณสามารถเห็นได้อย่างชัดเจนว่านี่เป็นฟังก์ชั่นที่เรากำลังมองหา ส่วนบนรับผิดชอบการสลับโหมดวิวพอร์ต:
การสลับนี้จะปรากฏขึ้นทุกครั้งที่เราย้ายเข้ากลุ่มของแอพหรือหากเราย้ายออกจากกลุ่ม optionGetAltTabBiasViewport
บ่งบอกว่าสิ่งนี้เกิดขึ้นเมื่อใด จากนั้นGetAltTabIcons
มีส่วนร่วมเพื่อให้ได้ไอคอนที่ถูกต้อง และในที่สุดShow
ฟังก์ชั่นที่มีปุ่มSortMode::FOCUS_ORDER
ถูกเรียกเพื่อแสดงไอคอนที่เรียงลำดับของเรา SortMode เป็น Enum:
enum class SortMode
{
LAUNCHER_ORDER,
FOCUS_ORDER,
};
และการเปลี่ยนFOCUS_ORDER
เป็นLAUNCHER_ORDER
ควรแก้ปัญหาของคุณ คุณสามารถเพิ่มคำสั่งเพิ่มเติมก่อนการเรียกShow
เพื่อป้องกันการเรียงลำดับตัวเรียกใช้ในShowMode::ALL
กรณี
โปรดทราบว่าซอร์สโค้ดของ Unity 8 นั้นดูแตกต่างอย่างสิ้นเชิง ดังนั้นวิธีนี้อาจใช้ได้กับ Unity 7 เท่านั้น หลังจากครึ่งชั่วโมงแก้ไขการอ้างอิงที่หายไปและหลังจากนั้นอีกหนึ่งชั่วโมงในการต่อสู้กับ cmake ฉันตัดสินใจที่จะไม่ทำลายระบบของฉันและลองใช้กับ VM ในวันพรุ่งนี้;)