gucharmap r1689 - trunk/gucharmap
- From: chpe svn gnome org
- To: svn-commits-list gnome org
- Subject: gucharmap r1689 - trunk/gucharmap
- Date: Fri, 21 Mar 2008 10:56:48 +0000 (GMT)
Author: chpe
Date: Fri Mar 21 10:56:47 2008
New Revision: 1689
URL: http://svn.gnome.org/viewvc/gucharmap?rev=1689&view=rev
Log:
Implement Ctrl-V paste to go to the 1st character in the clipboard text. Bug #477921.
Only works if the chartable has the focus, unfortunately.
Modified:
trunk/gucharmap/gucharmap-chartable.c
Modified: trunk/gucharmap/gucharmap-chartable.c
==============================================================================
--- trunk/gucharmap/gucharmap-chartable.c (original)
+++ trunk/gucharmap/gucharmap-chartable.c Fri Mar 21 10:56:47 2008
@@ -773,6 +773,11 @@
gunichar wc)
{
guint cell = gucharmap_codepoint_list_get_index (chartable->codepoint_list, wc);
+ if (cell == -1) {
+ gtk_widget_error_bell (GTK_WIDGET (chartable));
+ return;
+ }
+
gucharmap_chartable_set_active_cell (chartable, cell);
}
@@ -1815,9 +1820,48 @@
}
static void
+gucharmap_chartable_paste_received_cb (GtkClipboard *clipboard,
+ const char *text,
+ gpointer user_data)
+{
+ gpointer *data = (gpointer *) user_data;
+ GucharmapChartable *chartable = *data;
+ gunichar wc;
+
+ g_slice_free (gpointer, data);
+
+ if (!chartable)
+ return;
+
+ g_object_remove_weak_pointer (G_OBJECT (chartable), data);
+
+ wc = g_utf8_get_char_validated (text, -1);
+ if (wc == 0 ||
+ !gucharmap_unichar_validate (wc)) {
+ gtk_widget_error_bell (GTK_WIDGET (chartable));
+ }
+
+ gucharmap_chartable_set_active_character (chartable, wc);
+}
+
+static void
gucharmap_chartable_paste_clipboard (GucharmapChartable *chartable)
{
- /* FIXMEchpe */
+ GtkClipboard *clipboard;
+ gpointer *data;
+
+ if (!GTK_WIDGET_REALIZED (chartable))
+ return;
+
+ data = g_slice_new (gpointer);
+ *data = chartable;
+ g_object_add_weak_pointer (G_OBJECT (chartable), data);
+
+ clipboard = gtk_widget_get_clipboard (GTK_WIDGET (chartable),
+ GDK_SELECTION_CLIPBOARD);
+ gtk_clipboard_request_text (clipboard,
+ gucharmap_chartable_paste_received_cb,
+ data);
}
/* does all the initial construction */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]