29#include <gdk/gdkkeysyms.h>
31#include "gnc-cell-renderer-label.h"
45gsl_dismiss (GtkEntry *entry)
47 g_object_set (entry,
"editing-canceled", TRUE, NULL);
48 gtk_cell_editable_editing_done (GTK_CELL_EDITABLE (entry));
49 gtk_cell_editable_remove_widget (GTK_CELL_EDITABLE (entry));
53gsl_key_press_cb (GtkWidget *widget,
57 if (event->keyval == GDK_KEY_Escape)
59 gsl_dismiss (GTK_ENTRY (widget));
67gsl_focus_in_cb (GtkWidget *widget,
71 gtk_editable_select_region (GTK_EDITABLE (widget), 0, -1);
76gsl_focus_out_cb (GtkWidget *widget,
80 gsl_dismiss (GTK_ENTRY (widget));
85gnc_selectable_entry_new (
const gchar *text, gfloat xalign)
87 GtkEntry *entry = GTK_ENTRY (gtk_entry_new ());
90 gtk_editable_set_editable (GTK_EDITABLE (entry), FALSE);
92 gtk_entry_set_has_frame (entry, FALSE);
94 gtk_entry_set_width_chars (entry, 0);
95 gtk_entry_set_alignment (entry, xalign);
98 gtk_entry_set_text (entry, clean ? clean :
"");
101 g_signal_connect (entry,
"focus-in-event",
102 G_CALLBACK (gsl_focus_in_cb), NULL);
103 g_signal_connect (entry,
"key-press-event",
104 G_CALLBACK (gsl_key_press_cb), NULL);
105 g_signal_connect (entry,
"focus-out-event",
106 G_CALLBACK (gsl_focus_out_cb), NULL);
108 gtk_widget_show (GTK_WIDGET (entry));
109 return GTK_WIDGET (entry);
123 GtkCellRendererText parent;
126G_DEFINE_TYPE (GncCellRendererLabel, gnc_cell_renderer_label, GTK_TYPE_CELL_RENDERER_TEXT)
128static GtkCellEditable *
129gnc_cell_renderer_label_start_editing (GtkCellRenderer *cell,
133 const GdkRectangle *background_area,
134 const GdkRectangle *cell_area,
135 GtkCellRendererState flags)
141 g_object_get (cell,
"text", &text,
"xalign", &xalign, NULL);
143 editable = gnc_selectable_entry_new (text, xalign);
146 return GTK_CELL_EDITABLE (editable);
150gnc_cell_renderer_label_class_init (GncCellRendererLabelClass *klass)
152 GtkCellRendererClass *cell_class = GTK_CELL_RENDERER_CLASS (klass);
154 cell_class->start_editing = gnc_cell_renderer_label_start_editing;
158gnc_cell_renderer_label_init (GncCellRendererLabel *self)
162 g_object_set (self,
"mode", GTK_CELL_RENDERER_MODE_EDITABLE, NULL);
166gnc_cell_renderer_label_new (
void)
168 return g_object_new (GNC_TYPE_CELL_RENDERER_LABEL, NULL);
utility functions for the GnuCash UI
char * gnc_filter_text_for_bidi_marks(const char *text)
Returns the incoming text with Unicode bidi control characters removed.