ui: Keyboard controls (#935)

* switch focus between views with Tab
* move focus within views with WASD/HJKL/Arrows
* move focus between graph edges by holding Shift
* move focus between code references by holding Shift
* removed graph panning with WASD and moved zooming to Alt + W/S
* removed graph navigation by pressing starting character in graph view lists
* changed local reference and custom trail shortcuts
* updated Keyboard Shortcuts window
* use common back and forward shortcuts and YZ & Shift + YZ
* fix macOS issue where widgets don't get proper focus after creating a new tab
* don't use shared_ptr in QtMainView

fixes #486, #327, #214, #210
This commit is contained in:
Eberhard Gräther
2020-03-02 14:48:03 +01:00
committed by GitHub
parent f4b37f9763
commit b0616778f3
98 changed files with 4204 additions and 863 deletions
+33 -59
View File
@@ -4,6 +4,7 @@
<window>
<background>#494949</background>
<separator>#CCCCCC</separator>
<focus>#9BF51D</focus>
<scrollbar>
<background>transparent</background>
<handle>#80999999</handle>
@@ -106,7 +107,6 @@
<file>
<background>#AAAAAA</background>
<hover>#999999</hover>
<title>
<text>black</text>
@@ -130,7 +130,6 @@
<title>
<text>#A0A0A0</text>
<background>transparent</background>
<hover>#2F2F2F</hover>
</title>
<line_number>
@@ -255,7 +254,7 @@
<type>
<border>
<normal>#20FFFFFF</normal>
<focus>#FFFFFF</focus>
<highlight>#FFFFFF</highlight>
</border>
<text>
<normal>#FFFFFF</normal>
@@ -292,11 +291,11 @@
<function>
<fill>
<normal>#FFCC3B</normal>
<focus>#FFD05A</focus>
<highlight>#FFD05A</highlight>
</fill>
<border>
<normal>transparent</normal>
<focus>#FFFFFF</focus>
<highlight>#FFFFFF</highlight>
</border>
<hatching>
<normal>#FFE8A6</normal>
@@ -309,11 +308,11 @@
<global_variable>
<fill>
<normal>#2FC2D6</normal>
<focus>#38D3E8</focus>
<highlight>#38D3E8</highlight>
</fill>
<border>
<normal>transparent</normal>
<focus>#FFFFFF</focus>
<highlight>#FFFFFF</highlight>
</border>
<hatching>
<normal>#96DAE3</normal>
@@ -335,7 +334,7 @@
</fill>
<border>
<normal>#80FFFFFF</normal>
<focus>#FFFFFF</focus>
<highlight>#FFFFFF</highlight>
</border>
<text>
<normal>#FFFFFF</normal>
@@ -357,11 +356,11 @@
<file>
<fill>
<normal>#4E82F6</normal>
<focus>#6793F6</focus>
<highlight>#6793F6</highlight>
</fill>
<border>
<normal>#20FFFFFF</normal>
<focus>#FFFFFF</focus>
<highlight>#FFFFFF</highlight>
</border>
<text>
<normal>#FFFFFF</normal>
@@ -382,8 +381,14 @@
<access>
<fill>
<normal>#CCCCCC</normal>
<normal>#494949</normal>
</fill>
<text>
<normal>#FFFFFF</normal>
</text>
<icon>
<normal>#FFFFFF</normal>
</icon>
</access>
<bundle>
<fill>
@@ -391,7 +396,7 @@
</fill>
<border>
<normal>#80FFFFFF</normal>
<focus>#FFFFFF</focus>
<highlight>#FFFFFF</highlight>
</border>
<text>
<normal>#FFFFFF</normal>
@@ -451,7 +456,7 @@
</text>
<border>
<normal>#4E82F6</normal>
<focus>#6793F6</focus>
<highlight>#6793F6</highlight>
</border>
</file>
<namespace>
@@ -463,7 +468,7 @@
</text>
<border>
<normal>#873E3E</normal>
<focus>#944444</focus>
<highlight>#944444</highlight>
</border>
</namespace>
<inheritance>
@@ -477,55 +482,24 @@
</group>
</node>
<edge>
<default>
<normal>#797979</normal>
</default>
<default>#797979</default>
<type_use>#797979</type_use>
<inheritance>#797979</inheritance>
<type_use>
<like>default</like>
</type_use>
<use>#00A0B6</use>
<call>#DEA400</call>
<call_trail_focus>#FFFFFF</call_trail_focus>
<override>#BA5ECC</override>
<inheritance>
<like>default</like>
</inheritance>
<type_argument>#D93D5F</type_argument>
<template_specialization>#D93D5F</template_specialization>
<override>
<normal>#BA5ECC</normal>
</override>
<include>#4E82F6</include>
<import>#4E82F6</import>
<macro_use>#4E82F6</macro_use>
<annotation_use>#4E82F6</annotation_use>
<call>
<normal>#DEA400</normal>
<trail_focus>#FFFFFF</trail_focus>
</call>
<use>
<normal>#00A0B6</normal>
</use>
<type_argument>
<normal>#D93D5F</normal>
</type_argument>
<template_specialization>
<like>type_argument</like>
</template_specialization>
<include>
<normal>#4E82F6</normal>
</include>
<import>
<like>include</like>
</import>
<macro_use>
<like>include</like>
</macro_use>
<annotation_use>
<like>include</like>
</annotation_use>
<aggregation>
<normal>#666666</normal>
<focus>#6D6D6D</focus>
</aggregation>
<aggregation>#666666</aggregation>
</edge>
</graph>
+26 -58
View File
@@ -4,6 +4,7 @@
<window>
<background>white</background>
<separator>#A2A2A2</separator>
<focus>#FF5900</focus>
<scrollbar>
<background>transparent</background>
<handle>#80999999</handle>
@@ -106,7 +107,6 @@
<file>
<background>#D8D8D8</background>
<hover>#E0E0E0</hover>
<title>
<text>black</text>
@@ -130,7 +130,6 @@
<title>
<text>#909090</text>
<background>transparent</background>
<hover>#F5F5F5</hover>
</title>
<line_number>
@@ -253,7 +252,7 @@
<type>
<border>
<normal>#203C3C3C</normal>
<focus>#3C3C3C</focus>
<highlight>#3C3C3C</highlight>
</border>
</type>
<built_in_type>
@@ -284,11 +283,11 @@
<function>
<fill>
<normal>#F4D07D</normal>
<focus>#F4BC3D</focus>
<highlight>#F4BC3D</highlight>
</fill>
<border>
<normal>transparent</normal>
<focus>#3C3C3C</focus>
<highlight>#3C3C3C</highlight>
</border>
<hatching>
<normal>#FFEDC4</normal>
@@ -301,11 +300,11 @@
<global_variable>
<fill>
<normal>#81C1E3</normal>
<focus>#72B3D6</focus>
<highlight>#72B3D6</highlight>
</fill>
<border>
<normal>transparent</normal>
<focus>#3C3C3C</focus>
<highlight>#3C3C3C</highlight>
</border>
<hatching>
<normal>#BBDDED</normal>
@@ -327,7 +326,7 @@
</fill>
<border>
<normal>#3D3D3D</normal>
<focus>black</focus>
<highlight>black</highlight>
</border>
<icon>
<normal>#3D3D3D</normal>
@@ -346,11 +345,11 @@
<file>
<fill>
<normal>#BEE0AF</normal>
<focus>#A6D492</focus>
<highlight>#A6D492</highlight>
</fill>
<border>
<normal>#203C3C3C</normal>
<focus>#3C3C3C</focus>
<highlight>#3C3C3C</highlight>
</border>
<hatching>
<normal>#D7F7C8</normal>
@@ -374,7 +373,7 @@
</fill>
<border>
<normal>#803C3C3C</normal>
<focus>#3C3C3C</focus>
<highlight>#3C3C3C</highlight>
</border>
</bundle>
<count_number>
@@ -425,7 +424,7 @@
</text>
<border>
<normal>#BEE0AF</normal>
<focus>#A6D492</focus>
<highlight>#A6D492</highlight>
</border>
</file>
<namespace>
@@ -437,7 +436,7 @@
</text>
<border>
<normal>#EFC5C5</normal>
<focus>#EFB3B3</focus>
<highlight>#EFB3B3</highlight>
</border>
</namespace>
<inheritance>
@@ -451,55 +450,24 @@
</group>
</node>
<edge>
<default>
<normal>#878787</normal>
</default>
<default>#878787</default>
<type_use>#878787</type_use>
<inheritance>#878787</inheritance>
<type_use>
<like>default</like>
</type_use>
<use>#4B9FC4</use>
<call>#F4BC3D</call>
<call_trail_focus>#F56B3D</call_trail_focus>
<override>#A37ACC</override>
<inheritance>
<like>default</like>
</inheritance>
<type_argument>#CF6B7C</type_argument>
<template_specialization>#CF6B7C</template_specialization>
<override>
<normal>#A37ACC</normal>
</override>
<include>#719660</include>
<import>#719660</import>
<macro_use>#719660</macro_use>
<annotation_use>#719660</annotation_use>
<call>
<normal>#F4BC3D</normal>
<trail_focus>#F56B3D</trail_focus>
</call>
<use>
<normal>#4B9FC4</normal>
</use>
<type_argument>
<like>#CF6B7C</like>
</type_argument>
<template_specialization>
<like>type_argument</like>
</template_specialization>
<include>
<normal>#719660</normal>
</include>
<import>
<like>include</like>
</import>
<macro_use>
<like>include</like>
</macro_use>
<annotation_use>
<like>include</like>
</annotation_use>
<aggregation>
<normal>#CCC</normal>
<focus>#BBB</focus>
</aggregation>
<aggregation>#CCC</aggregation>
</edge>
</graph>
+26 -58
View File
@@ -4,6 +4,7 @@
<window>
<background>#272728</background>
<separator>#CCC</separator>
<focus>#FFFF4D</focus>
<scrollbar>
<background>transparent</background>
<handle>#80999999</handle>
@@ -106,7 +107,6 @@
<file>
<background>#5C5C5C</background>
<hover>#6C6C6C</hover>
<title>
<text>#F7F7F7</text>
@@ -130,7 +130,6 @@
<title>
<text>#A0A0A0</text>
<background>transparent</background>
<hover>#2F2F2F</hover>
</title>
<line_number>
@@ -256,7 +255,7 @@
<type>
<border>
<normal>#20C3C3C3</normal>
<focus>#C3C3C3</focus>
<highlight>#C3C3C3</highlight>
</border>
</type>
<built_in_type>
@@ -287,11 +286,11 @@
<function>
<fill>
<normal>#7A681F</normal>
<focus>#9C8528</focus>
<highlight>#9C8528</highlight>
</fill>
<border>
<normal>transparent</normal>
<focus>#C3C3C3</focus>
<highlight>#C3C3C3</highlight>
</border>
<hatching>
<normal>#544815</normal>
@@ -304,11 +303,11 @@
<global_variable>
<fill>
<normal>#21516B</normal>
<focus>#2A6484</focus>
<highlight>#2A6484</highlight>
</fill>
<border>
<normal>transparent</normal>
<focus>#C3C3C3</focus>
<highlight>#C3C3C3</highlight>
</border>
<hatching>
<normal>#17384A</normal>
@@ -330,7 +329,7 @@
</fill>
<border>
<normal>#80C3C3C3</normal>
<focus>#C3C3C3</focus>
<highlight>#C3C3C3</highlight>
</border>
<icon>
<normal>#C3C3C3</normal>
@@ -349,11 +348,11 @@
<file>
<fill>
<normal>#1B564E</normal>
<focus>#21695F</focus>
<highlight>#21695F</highlight>
</fill>
<border>
<normal>#20C3C3C3</normal>
<focus>#C3C3C3</focus>
<highlight>#C3C3C3</highlight>
</border>
<hatching>
<normal>#123B35</normal>
@@ -377,7 +376,7 @@
</fill>
<border>
<normal>#80C3C3C3</normal>
<focus>#C3C3C3</focus>
<highlight>#C3C3C3</highlight>
</border>
</bundle>
<count_number>
@@ -428,7 +427,7 @@
</text>
<border>
<normal>#1B564E</normal>
<focus>#1E6158</focus>
<highlight>#1E6158</highlight>
</border>
</file>
<namespace>
@@ -440,7 +439,7 @@
</text>
<border>
<normal>#78282D</normal>
<focus>#872D33</focus>
<highlight>#872D33</highlight>
</border>
</namespace>
<inheritance>
@@ -454,55 +453,24 @@
</group>
</node>
<edge>
<default>
<normal>#797979</normal>
</default>
<default>#797979</default>
<type_use>#797979</type_use>
<inheritance>#797979</inheritance>
<type_use>
<like>default</like>
</type_use>
<use>#2D6A8C</use>
<call>#9C8528</call>
<call_trail_focus>#F7F7F7</call_trail_focus>
<override>#8A5A94</override>
<inheritance>
<like>default</like>
</inheritance>
<type_argument>#C14057</type_argument>
<template_specialization>#C14057</template_specialization>
<override>
<normal>#8A5A94</normal>
</override>
<include>#247368</include>
<import>#247368</import>
<macro_use>#247368</macro_use>
<annotation_use>#247368</annotation_use>
<call>
<normal>#9C8528</normal>
<trail_focus>#F7F7F7</trail_focus>
</call>
<use>
<normal>#2D6A8C</normal>
</use>
<type_argument>
<normal>#C14057</normal>
</type_argument>
<template_specialization>
<like>type_argument</like>
</template_specialization>
<include>
<normal>#247368</normal>
</include>
<import>
<like>include</like>
</import>
<macro_use>
<like>include</like>
</macro_use>
<annotation_use>
<like>include</like>
</annotation_use>
<aggregation>
<normal>#4D4D4D</normal>
<focus>#6D6D6D</focus>
</aggregation>
<aggregation>#4D4D4D</aggregation>
</edge>
</graph>
+26 -7
View File
@@ -24,6 +24,14 @@
border: none;
}
#focus_indicator {
background: <color:code/navigation/background>;
}
#focus_indicator[focused=true] {
background: <color:window/focus>;
}
#code_navigation QLabel {
color: <color:code/file/title/text>;
font-size: <setting:font_size>px;
@@ -131,14 +139,14 @@
border: none;
}
#title_bar:hover {
background-color: <color:code/file/hover>;
}
#title_bar[hovering=false] {
border-top: 1px solid <color:code/navigation/line>;
}
#title_bar[focused=true] {
border-left: 4px solid <color:window/focus>;
}
#title_bar_single {
background-color: <color:code/file/background>;
padding-right: 5px;
@@ -203,21 +211,32 @@
padding-bottom: 2px;
}
#code_file #code_snippet #scope_name:hover {
background-color: <color:code/snippet/title/hover>;
#code_file #code_snippet #scope_name[focused=true] {
color: <color:code/snippet/syntax/text>;
}
#code_file #code_snippet #dots {
background-color: <color:code/snippet/line_number/background>;
padding-right: 16px;
border-right: 3px solid transparent;
margin-right: 5px;
padding-right: 8px;
text-align: right;
}
#code_file #code_snippet #dots[focused=true] {
border-right: 3px solid <color:window/focus>;
}
#code_file #code_snippet #scope_name {
padding-left: 4px;
text-align: left;
}
#code_file #code_snippet #scope_name[focused=true] {
padding-left: 4px;
text-align: left;
}
#line_number_area {
background-color: <color:code/snippet/line_number/background>;
border: none;
@@ -22,6 +22,10 @@ QPushButton:pressed {
background: <color:search/button/press>;
}
#focus_indicator {
background: <color:window/focus>;
}
#expand_button {
max-width: 26px;
max-height: 26px;