Skip to content

Commit 9f9dbf1

Browse files
committed
CbTextView: Add ::send() signal
Gets emitted when Ctrl + Return is used.
1 parent aa30906 commit 9f9dbf1

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

src/CbTextView.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ G_DEFINE_TYPE (CbTextView, cb_text_view, GTK_TYPE_WIDGET);
3131

3232
enum {
3333
SIGNAL_CHANGED,
34+
SIGNAL_SEND,
3435
LAST_SIGNAL
3536
};
3637
static guint text_view_signals[LAST_SIGNAL] = { 0 };
@@ -504,10 +505,22 @@ cb_text_view_key_press_event_cb (GtkWidget *widget,
504505
{
505506
CbTextView *self = user_data;
506507
guint keyval;
508+
GdkModifierType state;
507509

508510
if (!gdk_event_get_keyval ((GdkEvent *)event, &keyval))
509511
return GDK_EVENT_PROPAGATE;
510512

513+
gdk_event_get_state ((GdkEvent *)event, &state);
514+
515+
/* Control + Return is send for us */
516+
if (keyval == GDK_KEY_Return &&
517+
(state & GDK_CONTROL_MASK) > 0)
518+
{
519+
g_signal_emit (self, text_view_signals[SIGNAL_SEND], 0);
520+
return GDK_EVENT_STOP;
521+
}
522+
523+
511524
if (!cb_text_view_is_completing (self))
512525
return GDK_EVENT_PROPAGATE;
513526

@@ -558,6 +571,14 @@ cb_text_view_class_init (CbTextViewClass *klass)
558571
NULL, NULL,
559572
NULL, G_TYPE_NONE, 0);
560573

574+
text_view_signals[SIGNAL_SEND] = g_signal_new ("send",
575+
G_OBJECT_CLASS_TYPE (object_class),
576+
G_SIGNAL_RUN_FIRST,
577+
0,
578+
NULL, NULL,
579+
NULL, G_TYPE_NONE, 0);
580+
581+
561582
gtk_widget_class_set_css_name (GTK_WIDGET_CLASS (klass), "textview");
562583
}
563584

vapi/corebird-internal.vapi

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,7 @@ namespace Cb {
441441
public class TextView : Gtk.Widget {
442442
public TextView ();
443443
public signal void changed();
444+
public signal void send();
444445
public void set_account (Account acc);
445446
public void add_widget (Gtk.Widget widget);
446447
public void insert_at_cursor (string s);

0 commit comments

Comments
 (0)