Add child_activate signal

This commit is contained in:
Alexander Larsson 2012-05-11 13:19:45 +02:00
parent 67e45d169a
commit b45ddb74b5

View file

@ -91,8 +91,8 @@ public class Contacts.Sorted : Container {
}
[Signal (action=true)]
public virtual signal void select_row () {
update_selected (focus_child);
public virtual signal void activate_row () {
select_and_activate (focus_child);
}
[Signal (action=true)]
@ -122,7 +122,7 @@ public class Contacts.Sorted : Container {
typeof (MovementStep), MovementStep.BUFFER_ENDS,
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) {
@ -153,6 +153,15 @@ public class Contacts.Sorted : Container {
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) {
if (child != prelight_child) {
prelight_child = child;
@ -193,14 +202,24 @@ public class Contacts.Sorted : Container {
public override bool button_press_event (Gdk.EventButton event) {
if (event.button == 1) {
unowned ChildInfo? child = find_child_at_y ((int)event.y);
update_selected (child);
select_and_activate (child);
}
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_activated (Widget? child) {
}
public override bool focus (DirectionType direction) {
bool had_focus;
bool focus_into;
@ -559,6 +578,14 @@ public class Contacts.Sorted : Container {
if (info == null)
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);
bool was_visible = widget.get_visible ();