mirror of
https://gitlab.gnome.org/GNOME/gitg
synced 2024-10-05 23:50:07 +00:00
Stage/unstage all selected items when pressing Enter in list
This commit is contained in:
parent
daab32a55b
commit
c8ce18e5e5
|
@ -821,8 +821,15 @@ namespace GitgCommit
|
|||
Sidebar.Item.Type.STAGED,
|
||||
selected_paths,
|
||||
(item) => {
|
||||
on_staged_activated(new Gitg.StageStatusItem[] {item.item});
|
||||
});
|
||||
if (d_main.sidebar.is_selected(item))
|
||||
{
|
||||
on_unstage_selected_items();
|
||||
}
|
||||
else
|
||||
{
|
||||
on_staged_activated(new Gitg.StageStatusItem[] {item.item});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
model.end_header();
|
||||
|
@ -845,8 +852,15 @@ namespace GitgCommit
|
|||
Sidebar.Item.Type.UNSTAGED,
|
||||
selected_paths,
|
||||
(item) => {
|
||||
on_unstaged_activated(new Gitg.StageStatusItem[] {item.item});
|
||||
});
|
||||
if (d_main.sidebar.is_selected(item))
|
||||
{
|
||||
on_stage_selected_items();
|
||||
}
|
||||
else
|
||||
{
|
||||
on_unstaged_activated(new Gitg.StageStatusItem[] {item.item});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
model.end_header();
|
||||
|
@ -865,8 +879,15 @@ namespace GitgCommit
|
|||
Sidebar.Item.Type.UNTRACKED,
|
||||
selected_paths,
|
||||
(item) => {
|
||||
on_unstaged_activated(new Gitg.StageStatusItem[] {item.item});
|
||||
});
|
||||
if (d_main.sidebar.is_selected(item))
|
||||
{
|
||||
on_stage_selected_items();
|
||||
}
|
||||
else
|
||||
{
|
||||
on_unstaged_activated(new Gitg.StageStatusItem[] {item.item});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
model.end_header();
|
||||
|
@ -887,8 +908,15 @@ namespace GitgCommit
|
|||
Sidebar.Item.Type.SUBMODULE,
|
||||
selected_paths,
|
||||
(item) => {
|
||||
on_unstaged_activated(new Gitg.StageStatusItem[] {item.item});
|
||||
});
|
||||
if (d_main.sidebar.is_selected(item))
|
||||
{
|
||||
on_stage_selected_items();
|
||||
}
|
||||
else
|
||||
{
|
||||
on_unstaged_activated(new Gitg.StageStatusItem[] {item.item});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
model.end_header();
|
||||
|
|
|
@ -195,6 +195,7 @@ namespace Gitg
|
|||
{
|
||||
var box = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 3);
|
||||
var tip = @"$(module.get_path())/ ($(module.get_url()))";
|
||||
|
||||
box.set_tooltip_text(tip);
|
||||
box.show();
|
||||
|
||||
|
|
|
@ -383,6 +383,23 @@ public class Sidebar : Gtk.TreeView
|
|||
});
|
||||
}
|
||||
|
||||
public bool is_selected(SidebarItem item)
|
||||
{
|
||||
bool retval = false;
|
||||
|
||||
model.foreach((m, path, iter) => {
|
||||
if (model.item_for_iter(iter) == item)
|
||||
{
|
||||
retval = get_selection().iter_is_selected(iter);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
protected override void row_activated(Gtk.TreePath path, Gtk.TreeViewColumn column)
|
||||
{
|
||||
if (model.clearing)
|
||||
|
@ -398,6 +415,48 @@ public class Sidebar : Gtk.TreeView
|
|||
}
|
||||
}
|
||||
|
||||
protected override bool key_press_event(Gdk.EventKey event)
|
||||
{
|
||||
if ((event.state & Gtk.accelerator_get_default_mod_mask()) != 0)
|
||||
{
|
||||
return base.key_press_event(event);
|
||||
}
|
||||
|
||||
switch (event.keyval) {
|
||||
case Gdk.Key.Return:
|
||||
case Gdk.Key.ISO_Enter:
|
||||
case Gdk.Key.KP_Enter:
|
||||
case Gdk.Key.space:
|
||||
case Gdk.Key.KP_Space:
|
||||
Gtk.TreePath? path = null;
|
||||
Gtk.TreeIter iter;
|
||||
|
||||
get_cursor(out path, null);
|
||||
|
||||
var sel = get_selection();
|
||||
|
||||
if (path != null)
|
||||
{
|
||||
if (model.get_iter(out iter, path))
|
||||
{
|
||||
if (sel.iter_is_selected(iter))
|
||||
{
|
||||
model.activate(iter, 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
sel.unselect_all();
|
||||
sel.select_iter(iter);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return base.key_press_event(event);
|
||||
}
|
||||
|
||||
public new SidebarStore model
|
||||
{
|
||||
get { return base.get_model() as SidebarStore; }
|
||||
|
|
Loading…
Reference in a new issue