Clone in a terminal:
Commit fe4a76d
Johan Mattsson - 2014-11-14T20:19:41+00:00
fe4a76de7de004960086ac57c49bac7d6608e59cjohan.mattsson.m@gmail.com

Contextual key bindings

Changed files (3)

Diff

diff --git a/libbirdfont/Menu.vala b/libbirdfont/Menu.valaindex 54815f6..5820e82 100644--- a/libbirdfont/Menu.vala+++ b/libbirdfont/Menu.vala@@ -262,6 +262,7 @@ public class Menu : GLib.Object { 			PenTool.select_point_up (); 			show_menu = false; 		});+		select_point_above.display = "Glyph"; 		edit_menu.items.add (select_point_above);  		MenuItem select_next_point = add_menu_item (t_("Select Next Point"), "select next point");@@ -269,6 +270,7 @@ public class Menu : GLib.Object { 			PenTool.select_point_right (); 			show_menu = false; 		});+		select_next_point.display = "Glyph"; 		edit_menu.items.add (select_next_point); 		 		MenuItem select_previous_point = add_menu_item (t_("Select Previous Point"), "select previous point");@@ -276,6 +278,7 @@ public class Menu : GLib.Object { 			PenTool.select_point_left (); 			show_menu = false; 		});+		select_previous_point.display = "Glyph"; 		edit_menu.items.add (select_previous_point);  		MenuItem select_point_below = add_menu_item (t_("Select Point Below"), "select point below");@@ -283,6 +286,7 @@ public class Menu : GLib.Object { 			PenTool.select_point_down (); 			show_menu = false; 		});+		select_point_below.display = "Glyph"; 		edit_menu.items.add (select_point_below);  		// tab menu@@ -353,6 +357,7 @@ public class Menu : GLib.Object { 			KerningDisplay.next_pair (); 			show_menu = false; 		});+		next_kerning_pair.display = "Kerning"; 		kerning_menu.items.add (next_kerning_pair);  		MenuItem previous_kerning_pair = add_menu_item (t_("Select Previous Kerning Pair"), "select previous kerning pair");@@ -360,6 +365,7 @@ public class Menu : GLib.Object { 			KerningDisplay.previous_pair (); 			show_menu = false; 		});+		previous_kerning_pair.display = "Kerning"; 		kerning_menu.items.add (previous_kerning_pair);  		// ligature menu@@ -423,6 +429,24 @@ public class Menu : GLib.Object { 		load_key_bindings (); 	} +	public void process_key_binding_events (uint keyval) {+		string display;+		+		foreach (MenuItem item in sorted_menu_items) {+			if (item.key == (unichar) keyval && item.modifiers == KeyBindings.modifier) {+				+				if (BirdFont.get_current_display () is Glyph && item.display == "Glyph") {+					item.action ();+				}+				+				display = BirdFont.get_current_display ().get_name ();+				if (item.display == "" || item.display == display) {+					item.action ();+				}+			}+		}+	}+ 	void load_key_bindings () { 		File default_key_bindings = SearchPaths.find_file (null, "key_bindings.xml"); 		File user_key_bindings = get_child (BirdFont.get_settings_directory (), "key_bindings.xml");diff --git a/libbirdfont/MenuItem.vala b/libbirdfont/MenuItem.valaindex 4e8b102..991caf7 100644--- a/libbirdfont/MenuItem.vala+++ b/libbirdfont/MenuItem.vala@@ -25,6 +25,7 @@ public class MenuItem : GLib.Object { 	// key bindings 	public uint modifiers = NONE; 	public unichar key = '\0';+	public string display = "";	 	 	public MenuItem (string label, string identifier = "") { 		this.label = new Text ();diff --git a/libbirdfont/SettingsDisplay.vala b/libbirdfont/SettingsDisplay.valaindex d272b12..e9a8fcb 100644--- a/libbirdfont/SettingsDisplay.vala+++ b/libbirdfont/SettingsDisplay.vala@@ -288,7 +288,6 @@ public class SettingsDisplay : FontDisplay {  	public override void key_release (uint keyval) { 		if (update_key_bindings) {-			print (@"$keyval\n"); 			if (keyval == Key.BACK_SPACE) { 				update_key_bindings = false; 				new_key_bindings.active = false;

Contact

Email: johan.mattsson.m@gmail.com
Mastodon: typo.social/@birdfont
GitHub: johanmattssonm
LinkedIn: johan-mattsson-2ab324112