5 G_DEFINE_TYPE(GiraraEntry, girara_entry, GTK_TYPE_ENTRY)
7 static
void girara_entry_paste_primary(GiraraEntry* self);
17 girara_entry_class_init(GiraraEntryClass* klass)
19 klass->paste_primary = girara_entry_paste_primary;
22 g_signal_new(
"paste-primary",
24 G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
25 G_STRUCT_OFFSET(GiraraEntryClass, paste_primary),
27 g_cclosure_marshal_generic,
30 GtkBindingSet* binding_set = gtk_binding_set_by_class(klass);
31 gtk_binding_entry_add_signal(binding_set, GDK_KEY_Insert, GDK_SHIFT_MASK,
52 girara_entry_paste_primary(GiraraEntry*
self)
54 GValue editable = G_VALUE_INIT;
55 g_value_init(&editable, G_TYPE_BOOLEAN);
57 g_object_get_property(G_OBJECT(
self),
"editable", &editable);
59 if (g_value_get_boolean(&editable) ==
true) {
60 gchar* text = gtk_clipboard_wait_for_text(gtk_clipboard_get(GDK_SELECTION_PRIMARY));
63 int pos = gtk_editable_get_position(GTK_EDITABLE(
self));
65 gtk_editable_insert_text(GTK_EDITABLE(
self), text, -1, &pos);
66 gtk_editable_set_position(GTK_EDITABLE(
self), pos);
69 gtk_widget_error_bell(GTK_WIDGET(
self));
#define GIRARA_TYPE_ENTRY
GiraraEntry * girara_entry_new(void)
#define GIRARA_ENTRY(obj)