Add child_activate signal
This commit is contained in:
parent
67e45d169a
commit
b45ddb74b5
1 changed files with 31 additions and 4 deletions
|
@ -91,8 +91,8 @@ public class Contacts.Sorted : Container {
|
||||||
}
|
}
|
||||||
|
|
||||||
[Signal (action=true)]
|
[Signal (action=true)]
|
||||||
public virtual signal void select_row () {
|
public virtual signal void activate_row () {
|
||||||
update_selected (focus_child);
|
select_and_activate (focus_child);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Signal (action=true)]
|
[Signal (action=true)]
|
||||||
|
@ -122,7 +122,7 @@ public class Contacts.Sorted : Container {
|
||||||
typeof (MovementStep), MovementStep.BUFFER_ENDS,
|
typeof (MovementStep), MovementStep.BUFFER_ENDS,
|
||||||
typeof (int), 1);
|
typeof (int), 1);
|
||||||
|
|
||||||
activate_signal = GLib.Signal.lookup ("select-row", typeof (Sorted));
|
activate_signal = GLib.Signal.lookup ("activate-row", typeof (Sorted));
|
||||||
}
|
}
|
||||||
|
|
||||||
unowned ChildInfo? find_child_at_y (int y) {
|
unowned ChildInfo? find_child_at_y (int y) {
|
||||||
|
@ -153,6 +153,15 @@ public class Contacts.Sorted : Container {
|
||||||
update_focus (child);
|
update_focus (child);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void select_and_activate (ChildInfo? child) {
|
||||||
|
Widget? w = null;
|
||||||
|
if (child != null)
|
||||||
|
w = child.widget;
|
||||||
|
update_selected (child);
|
||||||
|
if (w != null)
|
||||||
|
child_activated (w);
|
||||||
|
}
|
||||||
|
|
||||||
private void update_prelight (ChildInfo? child) {
|
private void update_prelight (ChildInfo? child) {
|
||||||
if (child != prelight_child) {
|
if (child != prelight_child) {
|
||||||
prelight_child = child;
|
prelight_child = child;
|
||||||
|
@ -193,14 +202,24 @@ public class Contacts.Sorted : Container {
|
||||||
public override bool button_press_event (Gdk.EventButton event) {
|
public override bool button_press_event (Gdk.EventButton event) {
|
||||||
if (event.button == 1) {
|
if (event.button == 1) {
|
||||||
unowned ChildInfo? child = find_child_at_y ((int)event.y);
|
unowned ChildInfo? child = find_child_at_y ((int)event.y);
|
||||||
update_selected (child);
|
select_and_activate (child);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Widget? get_selected_child (){
|
||||||
|
if (selected_child != null)
|
||||||
|
return selected_child.widget;
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public virtual signal void child_selected (Widget? child) {
|
public virtual signal void child_selected (Widget? child) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual signal void child_activated (Widget? child) {
|
||||||
|
}
|
||||||
|
|
||||||
public override bool focus (DirectionType direction) {
|
public override bool focus (DirectionType direction) {
|
||||||
bool had_focus;
|
bool had_focus;
|
||||||
bool focus_into;
|
bool focus_into;
|
||||||
|
@ -559,6 +578,14 @@ public class Contacts.Sorted : Container {
|
||||||
if (info == null)
|
if (info == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (info == selected_child) {
|
||||||
|
update_selected (null);
|
||||||
|
}
|
||||||
|
if (info == prelight_child)
|
||||||
|
prelight_child = null;
|
||||||
|
if (info == focus_child)
|
||||||
|
focus_child = null;
|
||||||
|
|
||||||
var next = get_next_visible (info.iter);
|
var next = get_next_visible (info.iter);
|
||||||
|
|
||||||
bool was_visible = widget.get_visible ();
|
bool was_visible = widget.get_visible ();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue