Можно ли использовать только клавиши со стрелками для расширения дерева node в проводнике пакетов в Eclipse на Linux?

При использовании Eclipse я просматриваю дерево проводника пакета с помощью стрелок клавиатуры.

В Windows я могу развернуть смятый node, нажав клавишу . В Linux мне нужно нажать Shift + . Есть ли способ перенастроить его так, чтобы Shift не требовался?

Ответ 1

Поместите это в свой ~/.gtkrc-2.0, и вам должно быть хорошо идти. Левая и правая линии делают запрошенное изменение, остальные - мои личные дополнения, чтобы сделать эффект дерева более похожим на vim. Надеюсь, что это поможет!

binding "gtk-binding-tree-view" {
    bind "j"        { "move-cursor" (display-lines, 1) }
    bind "k"        { "move-cursor" (display-lines, -1) }
    bind "h"        { "expand-collapse-cursor-row" (1,0,0) }
    bind "l"        { "expand-collapse-cursor-row" (1,1,0) }
    bind "o"        { "move-cursor" (pages, 1) }
    bind "u"        { "move-cursor" (pages, -1) }
    bind "g"        { "move-cursor" (buffer-ends, -1) }
    bind "y"        { "move-cursor" (buffer-ends, 1) }
    bind "p"        { "select-cursor-parent" () }
    bind "Left"     { "expand-collapse-cursor-row" (0,0,0) }
    bind "Right"    { "expand-collapse-cursor-row" (0,1,0) }
    bind "semicolon" { "expand-collapse-cursor-row" (0,1,1) }
    bind "slash"    { "start-interactive-search" () }
}
class "GtkTreeView" binding "gtk-binding-tree-view"

затем перезапустите Eclipse, чтобы применить новые привязки

Ответ 2

Если кому-то интересно, как это сделать с GTK3 - просто откройте ~/.config/gtk-3.0/gtk.css и добавьте следующее:

@binding-set MyTreeViewBinding
{
    bind "Left"     { "expand-collapse-cursor-row" (0,0,0) };
    bind "Right"    { "expand-collapse-cursor-row" (0,1,0) };
}

GtkTreeView
{
  gtk-key-bindings: MyTreeViewBinding;
}

Ответ 3

Моя версия для GTK3, которая ведет себя более естественным образом. Добавьте в ~/.config/gtk-3.0/gtk.css следующее:

@binding-set MyTreeViewBinding
{
    bind "Left"     { "select-cursor-parent" ()
                      "expand-collapse-cursor-row" (0,0,0) };
    bind "Right"    { "expand-collapse-cursor-row" (0,1,0) };
}

GtkTreeView
{
    gtk-key-bindings: MyTreeViewBinding;
}

Ответ 4

Ответ, предоставленный Эндрю, правильный. Обратите внимание, что в более новых версиях Ubuntu нет файла ~/.gtkrc-2.0, поэтому вы можете либо его создать, либо отредактировать gtkrc текущей темы, которая хранится в

/usr/share/themes/your_theme/gtk-2.0/gtkrc

Ответ 5

Навигация виджета Tree управляется подклассом инструментария виджета - GTK. SWT/Eclipse не контролирует его. Если какая-либо такая конфигурация требуется для изменения короткого замыкания, то она должна быть сделана с самой стороны GTK.

Ответ 6

Я пытался использовать ответ @Андрея Лазарева. Однако из-за не обратно совместимых изменений в GTK3.20 (https://bugzilla.gnome.org/show_bug.cgi?id=766166) привязки должны быть слегка адаптированы:

@binding-set MyTreeViewBinding
{
   bind "Left"     { "select-cursor-parent" ()
                  "expand-collapse-cursor-row" (0,0,0) };
   bind "Right"    { "expand-collapse-cursor-row" (0,1,0) };
}

treeview
{
   -gtk-key-bindings: MyTreeViewBinding;
}

Обратите внимание на - перед gtk-key-bindings и GtkTreeView переименованным в treeview.

Ответ 7

Здесь я нашел хорошую рекомендацию привязки левой клавиши для дерева. Я хотел бы улучшить это, но я не знаю, как это сделать. Я нашел пару методов "test-collapse-row" и "test-expand-row" в ссылке ниже https://developer.gnome.org/gtk3/stable/GtkTreeView.html#GtkTreeView-select-cursor- строка для проверки текущей строки на расширяемой это или нет. Мне нужно, если это узел, и он не свернут, свернуть его, но если это не узел, или он уже свернут, установите указатель на родителя, но не сверните его. Я попытался найти пример с условием для привязки клавиш CSS, но пока не нашел.