[Vala] Modifying a Gtk.Entry's value on the fly
- From: Shem Pasamba <shemgp gmail com>
- To: vala-list gnome org
- Subject: [Vala] Modifying a Gtk.Entry's value on the fly
- Date: Wed, 11 Sep 2019 23:12:33 +0800
Hello,
I want to format the date of the birthday Gtk.Entry on the fly so that if
the user types eg. Jan 1, 2019 it will be converted to January 1, 2019. I
have code to convert the date already but it seems signal insert_text is
crashing on me even for the basic one (without changing anything). Here's
my builder code:
<object class="GtkEntry" id="birthday">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="has_frame">False</property>
<property name="width_chars">19</property>
<property name="placeholder_text" translatable="yes">ex. January 1,
2001</property>
<signal name="insert_text" handler="on_birthday_insert_text"
swapped="no"/>
</object>
And here's my signal handler:
[GtkCallback]
private void on_birthday_insert_text(Gtk.Editable widget, string
text, int length, ref int position)
{
GLib.SignalHandler.block_by_func(widget, (void *)
on_birthday_insert_text, (void *) this);
widget.insert_text(text, length, ref position);
GLib.SignalHandler.unblock_by_func(widget, (void *)
on_birthday_insert_text, (void *) this);
GLib.Signal.stop_emission_by_name(widget, "insert_text");
}
When I type anything in the entry it crashes with:
Thread 1 "pcc" received signal SIGSEGV, Segmentation fault.
0x00007ffff7d5155a in g_closure_invoke ()
from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
(gdb) bt
#0 0x00007ffff7d5155a in g_closure_invoke ()
at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#1 0x00007ffff7d65544 in () at
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#2 0x00007ffff7d6e327 in g_signal_emit_valist ()
at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#3 0x00007ffff7d6efa9 in g_signal_emit_by_name ()
at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#4 0x000055555555aeda in pcc_window_on_birthday_insert_text
(self=0x55555565ca70, widget=0x5555559e34c0, text=0x555555dc77a0 "x",
length=1, position=0x7fffffffcb34)
at ../../../../../../../../../Projects/pcc/src/window.vala:217
#5 0x000055555555af5f in
_pcc_window_on_birthday_insert_text_gtk_editable_insert_text
(_sender=0x5555559e34c0, new_text=0x555555dc77a0 "x",
new_text_length=1, position=0x7fffffffcb34, self=0x55555565ca70)
at ../../../../../../../../../Projects/pcc/src/window.vala:32
#6 0x00007ffff7d515e8 in g_closure_invoke ()
at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#7 0x00007ffff7d65544 in () at
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#8 0x00007ffff7d6e327 in g_signal_emit_valist ()
at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#9 0x00007ffff7d6efa9 in g_signal_emit_by_name ()
at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
--Type <RET> for more, q to quit, c to continue without paging--
#10 0x000055555555aeda in pcc_window_on_birthday_insert_text
(self=0x55555565ca70, widget=0x5555559e34c0, text=0x555555dc7780 "x",
length=1, position=0x7fffffffcb34) at
../../../../../../../../../Projects/pcc/src/window.vala:217
#11 0x000055555555af5f in
_pcc_window_on_birthday_insert_text_gtk_editable_insert_text
(_sender=0x5555559e34c0, new_text=0x555555dc7780 "x",
new_text_length=1, position=0x7fffffffcb34, self=0x55555565ca70)
at ../../../../../../../../../Projects/pcc/src/window.vala:32
#12 0x00007ffff7d515e8 in g_closure_invoke ()
at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#13 0x00007ffff7d65544 in () at
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#14 0x00007ffff7d6e327 in g_signal_emit_valist ()
at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#15 0x00007ffff7d6efa9 in g_signal_emit_by_name ()
at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#16 0x000055555555aeda in pcc_window_on_birthday_insert_text
(self=0x55555565ca70, widget=0x5555559e34c0, text=0x555555dc7760 "x",
length=1, position=0x7fffffffcb34) at
../../../../../../../../../Projects/pcc/src/window.vala:217
#17 0x000055555555af5f in
_pcc_window_on_birthday_insert_text_gtk_editable_insert_text
(_sender=0x5555559e34c0, new_text=0x555555dc7760 "x",
new_text_length=1, position=0x7fffffffcb34, self=0x55555565ca70)
at ../../../../../../../../../Projects/pcc/src/window.vala:32
#18 0x00007ffff7d515e8 in g_closure_invoke ()
at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#19 0x00007ffff7d65544 in () at
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#20 0x00007ffff7d6e327 in g_signal_emit_valist ()
at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#21 0x00007ffff7d6efa9 in g_signal_emit_by_name ()
at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#22 0x000055555555aeda in pcc_window_on_birthday_insert_text
So I guess it's not blocking since it goes to a loop. Please help.
Thank you.
All the best,
Shem Pasamba
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]