Skip to content

Commit 1f22d69

Browse files
committed
Move context menu action accelerators to SourceView
1 parent 317e75e commit 1f22d69

2 files changed

Lines changed: 37 additions & 64 deletions

File tree

src/MainWindow.vala

Lines changed: 0 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -79,14 +79,10 @@ namespace Scratch {
7979
public const string ACTION_OPEN_PROJECT = "action-open-project";
8080
public const string ACTION_COLLAPSE_ALL_FOLDERS = "action-collapse-all-folders";
8181
public const string ACTION_GO_TO = "action-go-to";
82-
public const string ACTION_SORT_LINES = "action-sort-lines";
8382
public const string ACTION_NEW_TAB = "action-new-tab";
8483
public const string ACTION_NEW_FROM_CLIPBOARD = "action-new-from-clipboard";
8584
public const string ACTION_DUPLICATE_TAB = "action-duplicate-tab";
8685
public const string ACTION_PREFERENCES = "preferences";
87-
public const string ACTION_ADD_MARK = "action_add_mark";
88-
public const string ACTION_PREVIOUS_MARK = "action_previous_mark";
89-
public const string ACTION_NEXT_MARK = "action_next_mark";
9086

9187
public const string ACTION_UNDO = "action-undo";
9288
public const string ACTION_REDO = "action-redo";
@@ -104,7 +100,6 @@ namespace Scratch {
104100
public const string ACTION_ZOOM_DEFAULT = "action-zoom-default";
105101
public const string ACTION_ZOOM_IN = "action-zoom-in";
106102
public const string ACTION_ZOOM_OUT = "action-zoom-out";
107-
public const string ACTION_TOGGLE_COMMENT = "action-toggle-comment";
108103
public const string ACTION_TOGGLE_SHOW_FIND = "action-toggle_show-find";
109104
public const string ACTION_TOGGLE_SIDEBAR = "action-toggle-sidebar";
110105
public const string ACTION_FOCUS_SIDEBAR = "action-focus-sidebar";
@@ -151,7 +146,6 @@ namespace Scratch {
151146
{ ACTION_TOGGLE_SHOW_FIND, action_toggle_show_find, null, "false" },
152147
{ ACTION_TEMPLATES, action_templates },
153148
{ ACTION_GO_TO, action_go_to },
154-
{ ACTION_SORT_LINES, action_sort_lines },
155149
{ ACTION_NEW_TAB, action_new_tab },
156150
{ ACTION_NEW_FROM_CLIPBOARD, action_new_tab_from_clipboard },
157151
{ ACTION_DUPLICATE_TAB, action_duplicate_tab },
@@ -168,7 +162,6 @@ namespace Scratch {
168162
{ ACTION_ZOOM_DEFAULT, action_set_default_zoom },
169163
{ ACTION_ZOOM_IN, action_zoom_in },
170164
{ ACTION_ZOOM_OUT, action_zoom_out},
171-
{ ACTION_TOGGLE_COMMENT, action_toggle_comment },
172165
{ ACTION_TOGGLE_SIDEBAR, action_toggle_sidebar, null, "true" },
173166
{ ACTION_FOCUS_SIDEBAR, action_focus_sidebar },
174167
{ ACTION_FOCUS_DOCUMENT, action_focus_document },
@@ -180,9 +173,6 @@ namespace Scratch {
180173
{ ACTION_PREVIOUS_TAB, action_previous_tab },
181174
{ ACTION_CLEAR_LINES, action_clear_lines },
182175
{ ACTION_BRANCH_ACTIONS, action_branch_actions, "s" },
183-
{ ACTION_ADD_MARK, action_add_mark},
184-
{ ACTION_PREVIOUS_MARK, action_previous_mark},
185-
{ ACTION_NEXT_MARK, action_next_mark},
186176
{ ACTION_CLOSE_TAB, action_close_tab, "s" },
187177
{ ACTION_CLOSE_TABS_TO_RIGHT, action_close_tabs_to_right },
188178
{ ACTION_CLOSE_OTHER_TABS, action_close_other_tabs },
@@ -220,7 +210,6 @@ namespace Scratch {
220210
action_accelerators.set (ACTION_SAVE, "<Control>s");
221211
action_accelerators.set (ACTION_SAVE_AS, "<Control><shift>s");
222212
action_accelerators.set (ACTION_GO_TO, "<Control>i");
223-
action_accelerators.set (ACTION_SORT_LINES, "F5");
224213
action_accelerators.set (ACTION_NEW_TAB, "<Control>n");
225214
action_accelerators.set (ACTION_DUPLICATE_TAB, "<Control><Shift>k" );
226215
action_accelerators.set (ACTION_UNDO, "<Control>z");
@@ -239,8 +228,6 @@ namespace Scratch {
239228
action_accelerators.set (ACTION_ZOOM_IN, "<Control>KP_Add");
240229
action_accelerators.set (ACTION_ZOOM_OUT, "<Control>minus");
241230
action_accelerators.set (ACTION_ZOOM_OUT, "<Control>KP_Subtract");
242-
action_accelerators.set (ACTION_TOGGLE_COMMENT, "<Control>m");
243-
action_accelerators.set (ACTION_TOGGLE_COMMENT, "<Control>slash");
244231
action_accelerators.set (ACTION_TOGGLE_SIDEBAR, "F9"); // GNOME
245232
action_accelerators.set (ACTION_TOGGLE_SIDEBAR, "<Control>backslash"); // Atom
246233
action_accelerators.set (ACTION_FOCUS_SIDEBAR, "<Control><Alt>Left");
@@ -255,9 +242,6 @@ namespace Scratch {
255242
action_accelerators.set (ACTION_PREVIOUS_TAB, "<Control>Page_Up");
256243
action_accelerators.set (ACTION_CLEAR_LINES, "<Control>K"); //Geany
257244
action_accelerators.set (ACTION_BRANCH_ACTIONS + "::", "<Control>B");
258-
action_accelerators.set (ACTION_ADD_MARK, "<Alt>equal");
259-
action_accelerators.set (ACTION_PREVIOUS_MARK, "<Alt>Left");
260-
action_accelerators.set (ACTION_NEXT_MARK, "<Alt>Right");
261245
action_accelerators.set (ACTION_HIDE_PROJECT_DOCS + "::", "<Control><Shift>h");
262246
action_accelerators.set (ACTION_MOVE_TAB_TO_NEW_WINDOW, "<Control><Alt>n");
263247
action_accelerators.set (ACTION_RESTORE_PROJECT_DOCS + "::", "<Control><Shift>r");
@@ -1405,27 +1389,6 @@ namespace Scratch {
14051389
buffer.insert (ref start, selected.up (), -1);
14061390
}
14071391

1408-
private void action_toggle_comment () {
1409-
var doc = get_focused_document ();
1410-
if (doc == null) {
1411-
return;
1412-
}
1413-
1414-
var buffer = doc.source_view.buffer;
1415-
if (buffer is Gtk.SourceBuffer) {
1416-
CommentToggler.toggle_comment (buffer as Gtk.SourceBuffer);
1417-
}
1418-
}
1419-
1420-
private void action_sort_lines () {
1421-
var doc = get_focused_document ();
1422-
if (doc == null) {
1423-
return;
1424-
}
1425-
1426-
doc.source_view.sort_selected_lines ();
1427-
}
1428-
14291392
private void action_toggle_sidebar (SimpleAction action) {
14301393
if (sidebar == null) {
14311394
return;
@@ -1526,33 +1489,6 @@ namespace Scratch {
15261489
folder_manager_view.branch_actions (get_target_path_for_actions (param));
15271490
}
15281491

1529-
private void action_previous_mark () {
1530-
var doc = get_focused_document ();
1531-
if (doc == null) {
1532-
return;
1533-
}
1534-
1535-
doc.source_view.goto_previous_mark ();
1536-
}
1537-
1538-
private void action_next_mark () {
1539-
var doc = get_focused_document ();
1540-
if (doc == null) {
1541-
return;
1542-
}
1543-
1544-
doc.source_view.goto_next_mark ();
1545-
}
1546-
1547-
private void action_add_mark () {
1548-
var doc = get_focused_document ();
1549-
if (doc == null) {
1550-
return;
1551-
}
1552-
1553-
doc.source_view.add_mark_at_cursor ();
1554-
}
1555-
15561492
private void action_move_tab_to_new_window () {
15571493
document_view.transfer_tab_to_new_window ();
15581494
}

src/Widgets/SourceView.vala

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ namespace Scratch.Widgets {
3939
private string selected_text = "";
4040
private GitGutterRenderer git_diff_gutter_renderer;
4141
private NavMarkGutterRenderer navmark_gutter_renderer;
42+
private Gtk.EventControllerKey key_controller;
4243

4344
private const uint THROTTLE_MS = 400;
4445
private double total_delta = 0;
@@ -256,6 +257,42 @@ namespace Scratch.Widgets {
256257
menu.show_all ();
257258
});
258259

260+
// Handle context menu shortcuts here.
261+
// In Gtk3 we use a EventControllerKey but after porting to Gtk4 we can replace with Gtk.Shortcuts
262+
key_controller = new Gtk.EventControllerKey (application.get_active_window ()) {
263+
propagation_phase = CAPTURE
264+
};
265+
key_controller.key_pressed.connect ((kv, kc, state) => {
266+
if (!this.is_focus || !Gtk.accelerator_valid (kv, state)) {
267+
return false;
268+
}
269+
270+
var mods = (state & Gtk.accelerator_get_default_mod_mask ());
271+
var accel = Gtk.accelerator_name (kv, mods);
272+
switch (accel) {
273+
case "F5":
274+
sort_selected_lines ();
275+
return true;
276+
case "<Alt>equal":
277+
add_mark_at_cursor ();
278+
return true;
279+
case "<Alt>Left":
280+
goto_next_mark ();
281+
return true;
282+
case "<Alt>Right":
283+
goto_previous_mark ();
284+
return true;
285+
case "<Primary>m":
286+
case "<Primary>slash":
287+
CommentToggler.toggle_comment (buffer as Gtk.SourceBuffer);
288+
return true;
289+
default:
290+
break;
291+
}
292+
293+
return false;
294+
});
295+
259296
size_allocate.connect ((allocation) => {
260297
// Throttle for performance
261298
if (size_allocate_timer == 0) {

0 commit comments

Comments
 (0)