aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Lahey <clahey@src.gnome.org>2000-01-17 17:13:45 +0800
committerChris Lahey <clahey@src.gnome.org>2000-01-17 17:13:45 +0800
commit804e7e17bf0ae0c3880e7aed3746dafcf183acad (patch)
tree48a61155bed596eaf66dd28d50efba860e9d0536
parent4d4bcd89d8403e8ee275f8c4695f45c82e2dd9f9 (diff)
downloadgsoc2013-evolution-804e7e17bf0ae0c3880e7aed3746dafcf183acad.tar
gsoc2013-evolution-804e7e17bf0ae0c3880e7aed3746dafcf183acad.tar.gz
gsoc2013-evolution-804e7e17bf0ae0c3880e7aed3746dafcf183acad.tar.bz2
gsoc2013-evolution-804e7e17bf0ae0c3880e7aed3746dafcf183acad.tar.lz
gsoc2013-evolution-804e7e17bf0ae0c3880e7aed3746dafcf183acad.tar.xz
gsoc2013-evolution-804e7e17bf0ae0c3880e7aed3746dafcf183acad.tar.zst
gsoc2013-evolution-804e7e17bf0ae0c3880e7aed3746dafcf183acad.zip
Finishing previous commit.
svn path=/trunk/; revision=1582
-rw-r--r--ChangeLog32
-rw-r--r--Makefile.am3
-rw-r--r--addressbook/.cvsignore6
-rw-r--r--addressbook/Makefile.am2
-rw-r--r--configure.in3
-rw-r--r--widgets/.cvsignore1
-rw-r--r--widgets/Makefile.am2
-rw-r--r--widgets/e-text.c139
-rw-r--r--widgets/e-text.h2
-rw-r--r--widgets/e-text/e-text.c139
-rw-r--r--widgets/e-text/e-text.h2
-rw-r--r--widgets/shortcut-bar/Makefile.am2
-rw-r--r--widgets/text/e-text.c139
-rw-r--r--widgets/text/e-text.h2
14 files changed, 236 insertions, 238 deletions
diff --git a/ChangeLog b/ChangeLog
index c6dccaf76f..84665924b3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,35 @@
+2000-01-17 Chrsitopher James Lahey <clahey@helixcode.com>
+
+ * head.png, phone.png, email.png, web.png, snailmail.png: Images
+ for e-contact-editor.c.
+
+ * addressbook/contact-editor/text-editor.c: Test program
+ for contact editor widget.
+
+ * addressbook/contact-editor/e-contact-editor.c,
+ addressbook/contact-editor/e-contact-editor.h: Contact editor
+ widget files.
+
+ * addressbook/contact-editor/.cvsignore,
+ addressbook/contact-editor/Makefile.am: New directory for contact
+ editor files.
+
+ * addressbook/.cvsignore, addressbook/Makefile.am: New directory
+ for addressbook files.
+
+ * widgets/.cvsignore: Added reflow-test.
+
+ * Makefile.am (SUBDIRS): Added addressbook subdirectory.
+
+ * configure.in, widgets/Makefile.am: Removed widgets/toolbar from
+ SUBDIRS since the lack of content was preventing it from
+ compiling.
+
+ * widgets/shortcut-bar/Makefile.am: Added gnomecanvaspixbuf to the
+ list of libraries used.
+
+ * widgets/e-text.c, widgets/e-text.h: Fixed a crashing bug.
+
2000-01-17 bertrand <bertrand@helixcode.com>
* tests/test9.c (main): test for the mbox utils.
diff --git a/Makefile.am b/Makefile.am
index 6a9c335cc5..46d9add621 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -5,7 +5,8 @@ SUBDIRS = \
e-util \
widgets \
composer \
- tests
+ tests \
+ addressbook
dist-hook:
for subdir in intl ; do \
diff --git a/addressbook/.cvsignore b/addressbook/.cvsignore
new file mode 100644
index 0000000000..09980ae6ba
--- /dev/null
+++ b/addressbook/.cvsignore
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
diff --git a/addressbook/Makefile.am b/addressbook/Makefile.am
new file mode 100644
index 0000000000..5080457fe2
--- /dev/null
+++ b/addressbook/Makefile.am
@@ -0,0 +1,2 @@
+SUBDIRS = \
+ contact-editor
diff --git a/configure.in b/configure.in
index 4ef3f68804..29136aaff7 100644
--- a/configure.in
+++ b/configure.in
@@ -141,6 +141,7 @@ widgets/Makefile
widgets/meeting-time-sel/Makefile
widgets/shortcut-bar/Makefile
widgets/e-table/Makefile
-widgets/toolbar/Makefile
+addressbook/Makefile
+addressbook/contact-editor/Makefile
shell/Makefile
])
diff --git a/widgets/.cvsignore b/widgets/.cvsignore
index d32593e1fd..d5b3a2ad62 100644
--- a/widgets/.cvsignore
+++ b/widgets/.cvsignore
@@ -6,3 +6,4 @@ Makefile.in
*.la
minicard-test
minicard-label-test
+reflow-test
diff --git a/widgets/Makefile.am b/widgets/Makefile.am
index 0c8142ede2..1e2016ef3c 100644
--- a/widgets/Makefile.am
+++ b/widgets/Makefile.am
@@ -1,6 +1,6 @@
SUBDIRS = \
- meeting-time-sel shortcut-bar e-table toolbar
+ meeting-time-sel shortcut-bar e-table
INCLUDES = \
-I$(top_srcdir)/camel \
diff --git a/widgets/e-text.c b/widgets/e-text.c
index cb3456cd24..f4d6dddf55 100644
--- a/widgets/e-text.c
+++ b/widgets/e-text.c
@@ -112,6 +112,20 @@ static guint32 e_text_get_event_time (EText *text);
static void e_text_get_selection(EText *text, GdkAtom selection, guint32 time);
static void e_text_supply_selection (EText *text, guint time, GdkAtom selection, guchar *data, gint length);
+static GtkWidget *e_text_get_invisible(EText *text);
+static void _selection_clear_event (GtkInvisible *invisible,
+ GdkEventSelection *event,
+ EText *text);
+static void _selection_get (GtkInvisible *invisible,
+ GtkSelectionData *selection_data,
+ guint info,
+ guint time_stamp,
+ EText *text);
+static void _selection_received (GtkInvisible *invisible,
+ GtkSelectionData *selection_data,
+ guint time,
+ EText *text);
+
static ETextSuckFont *e_suck_font (GdkFont *font);
static void e_suck_font_free (ETextSuckFont *suckfont);
@@ -290,9 +304,9 @@ e_text_init (EText *text)
text->tep = NULL;
- text->invisible = NULL;
text->has_selection = FALSE;
-
+
+ text->invisible = NULL;
text->primary_selection = NULL;
text->primary_length = 0;
text->clipboard_selection = NULL;
@@ -315,6 +329,9 @@ e_text_destroy (GtkObject *object)
if (text->tep)
gtk_object_unref (GTK_OBJECT(text->tep));
+
+ if (text->invisible)
+ gtk_object_unref (GTK_OBJECT(text->invisible));
if (text->lines)
g_free (text->lines);
@@ -1985,6 +2002,47 @@ e_text_command(ETextEventProcessor *tep, ETextEventProcessorCommand *command, gp
gnome_canvas_item_request_update (GNOME_CANVAS_ITEM(text));
}
+static void _invisible_destroy (GtkInvisible *invisible,
+ EText *text)
+{
+ text->invisible = NULL;
+}
+
+static GtkWidget *e_text_get_invisible(EText *text)
+{
+ GtkWidget *invisible;
+ if (text->invisible) {
+ invisible = text->invisible;
+ } else {
+ invisible = gtk_invisible_new();
+ text->invisible = invisible;
+
+ gtk_selection_add_target (invisible,
+ GDK_SELECTION_PRIMARY,
+ GDK_SELECTION_TYPE_STRING,
+ E_SELECTION_PRIMARY);
+ gtk_selection_add_target (invisible,
+ clipboard_atom,
+ GDK_SELECTION_TYPE_STRING,
+ E_SELECTION_CLIPBOARD);
+
+ gtk_signal_connect (GTK_OBJECT(invisible), "selection_get",
+ GTK_SIGNAL_FUNC (_selection_get),
+ text);
+ gtk_signal_connect (GTK_OBJECT(invisible), "selection_clear_event",
+ GTK_SIGNAL_FUNC (_selection_clear_event),
+ text);
+ gtk_signal_connect (GTK_OBJECT(invisible), "selection_received",
+ GTK_SIGNAL_FUNC (_selection_received),
+ text);
+
+ gtk_signal_connect (GTK_OBJECT(invisible), "destroy",
+ GTK_SIGNAL_FUNC (_invisible_destroy),
+ text);
+ }
+ return invisible;
+}
+
static void
_selection_clear_event (GtkInvisible *invisible,
GdkEventSelection *event,
@@ -1994,7 +2052,6 @@ _selection_clear_event (GtkInvisible *invisible,
g_free (text->primary_selection);
text->primary_selection = NULL;
text->primary_length = 0;
- gtk_object_unref (GTK_OBJECT(invisible));
text->has_selection = FALSE;
gnome_canvas_item_request_update (GNOME_CANVAS_ITEM(text));
@@ -2003,7 +2060,6 @@ _selection_clear_event (GtkInvisible *invisible,
g_free (text->clipboard_selection);
text->clipboard_selection = NULL;
text->clipboard_length = 0;
- gtk_object_unref (GTK_OBJECT(invisible));
}
}
@@ -2033,7 +2089,6 @@ _selection_received (GtkInvisible *invisible,
EText *text)
{
if (selection_data->length < 0 || selection_data->type != GDK_SELECTION_TYPE_STRING) {
- gtk_object_unref (GTK_OBJECT(invisible));
return;
} else {
ETextEventProcessorCommand command;
@@ -2043,62 +2098,24 @@ _selection_received (GtkInvisible *invisible,
command.value = selection_data->length;
command.time = time;
e_text_command(text->tep, &command, text);
- gtk_object_unref (GTK_OBJECT(invisible));
}
}
-static void _invisible_destroy (GtkInvisible *invisible,
- EText *text)
-{
- text->invisible = NULL;
-}
-
static void e_text_supply_selection (EText *text, guint time, GdkAtom selection, guchar *data, gint length)
{
gboolean successful;
GtkWidget *invisible;
- if (text->invisible) {
- invisible = text->invisible;
- gtk_object_ref (GTK_OBJECT(invisible));
- } else {
- invisible = gtk_invisible_new();
- text->invisible = invisible;
-
- gtk_selection_add_target (invisible,
- GDK_SELECTION_PRIMARY,
- GDK_SELECTION_TYPE_STRING,
- E_SELECTION_PRIMARY);
- gtk_selection_add_target (invisible,
- clipboard_atom,
- GDK_SELECTION_TYPE_STRING,
- E_SELECTION_CLIPBOARD);
-
- gtk_signal_connect (GTK_OBJECT(invisible), "selection_get",
- GTK_SIGNAL_FUNC (_selection_get),
- text);
- gtk_signal_connect (GTK_OBJECT(invisible), "selection_clear_event",
- GTK_SIGNAL_FUNC (_selection_clear_event),
- text);
- gtk_signal_connect (GTK_OBJECT(invisible), "selection_received",
- GTK_SIGNAL_FUNC (_selection_received),
- text);
-
- gtk_signal_connect (GTK_OBJECT(invisible), "destroy",
- GTK_SIGNAL_FUNC (_invisible_destroy),
- text);
- }
+ invisible = e_text_get_invisible(text);
if (selection == GDK_SELECTION_PRIMARY ) {
if (text->primary_selection) {
- gtk_object_unref (GTK_OBJECT(invisible));
g_free (text->primary_selection);
}
text->primary_selection = g_strndup(data, length);
text->primary_length = length;
} else if (selection == clipboard_atom) {
if (text->clipboard_selection) {
- gtk_object_unref (GTK_OBJECT(invisible));
g_free (text->clipboard_selection);
}
text->clipboard_selection = g_strndup(data, length);
@@ -2111,45 +2128,13 @@ static void e_text_supply_selection (EText *text, guint time, GdkAtom selection,
if (selection == GDK_SELECTION_PRIMARY)
text->has_selection = successful;
-
- if (!successful)
- gtk_object_unref(GTK_OBJECT(invisible));
}
static void
e_text_get_selection(EText *text, GdkAtom selection, guint32 time)
{
GtkWidget *invisible;
- if (text->invisible) {
- invisible = text->invisible;
- gtk_object_ref (GTK_OBJECT(invisible));
- } else {
- invisible = gtk_invisible_new();
- text->invisible = invisible;
-
- gtk_selection_add_target (invisible,
- GDK_SELECTION_PRIMARY,
- GDK_SELECTION_TYPE_STRING,
- E_SELECTION_PRIMARY);
- gtk_selection_add_target (invisible,
- clipboard_atom,
- GDK_SELECTION_TYPE_STRING,
- E_SELECTION_CLIPBOARD);
-
- gtk_signal_connect (GTK_OBJECT(invisible), "selection_get",
- GTK_SIGNAL_FUNC (_selection_get),
- text);
- gtk_signal_connect (GTK_OBJECT(invisible), "selection_clear_event",
- GTK_SIGNAL_FUNC (_selection_clear_event),
- text);
- gtk_signal_connect (GTK_OBJECT(invisible), "selection_received",
- GTK_SIGNAL_FUNC (_selection_received),
- text);
-
- gtk_signal_connect (GTK_OBJECT(invisible), "destroy",
- GTK_SIGNAL_FUNC (_invisible_destroy),
- text);
- }
+ invisible = e_text_get_invisible(text);
gtk_selection_convert(invisible,
selection,
GDK_SELECTION_TYPE_STRING,
diff --git a/widgets/e-text.h b/widgets/e-text.h
index 11a7a42375..e1f250c678 100644
--- a/widgets/e-text.h
+++ b/widgets/e-text.h
@@ -59,7 +59,7 @@ BEGIN_GNOME_DECLS
* text_width double R Used to query the width of the rendered text
* text_height double R Used to query the rendered height of the text
*
- * These are ignored in the AA version:
+ * These are currently ignored in the AA version:
* editable boolean RW Can this item be edited
* use_ellipsis boolean RW Whether to use ellipsises if text gets cut off. Meaningless if clip == false.
* ellipsis string RW The characters to use as ellipsis. NULL = "...".
diff --git a/widgets/e-text/e-text.c b/widgets/e-text/e-text.c
index cb3456cd24..f4d6dddf55 100644
--- a/widgets/e-text/e-text.c
+++ b/widgets/e-text/e-text.c
@@ -112,6 +112,20 @@ static guint32 e_text_get_event_time (EText *text);
static void e_text_get_selection(EText *text, GdkAtom selection, guint32 time);
static void e_text_supply_selection (EText *text, guint time, GdkAtom selection, guchar *data, gint length);
+static GtkWidget *e_text_get_invisible(EText *text);
+static void _selection_clear_event (GtkInvisible *invisible,
+ GdkEventSelection *event,
+ EText *text);
+static void _selection_get (GtkInvisible *invisible,
+ GtkSelectionData *selection_data,
+ guint info,
+ guint time_stamp,
+ EText *text);
+static void _selection_received (GtkInvisible *invisible,
+ GtkSelectionData *selection_data,
+ guint time,
+ EText *text);
+
static ETextSuckFont *e_suck_font (GdkFont *font);
static void e_suck_font_free (ETextSuckFont *suckfont);
@@ -290,9 +304,9 @@ e_text_init (EText *text)
text->tep = NULL;
- text->invisible = NULL;
text->has_selection = FALSE;
-
+
+ text->invisible = NULL;
text->primary_selection = NULL;
text->primary_length = 0;
text->clipboard_selection = NULL;
@@ -315,6 +329,9 @@ e_text_destroy (GtkObject *object)
if (text->tep)
gtk_object_unref (GTK_OBJECT(text->tep));
+
+ if (text->invisible)
+ gtk_object_unref (GTK_OBJECT(text->invisible));
if (text->lines)
g_free (text->lines);
@@ -1985,6 +2002,47 @@ e_text_command(ETextEventProcessor *tep, ETextEventProcessorCommand *command, gp
gnome_canvas_item_request_update (GNOME_CANVAS_ITEM(text));
}
+static void _invisible_destroy (GtkInvisible *invisible,
+ EText *text)
+{
+ text->invisible = NULL;
+}
+
+static GtkWidget *e_text_get_invisible(EText *text)
+{
+ GtkWidget *invisible;
+ if (text->invisible) {
+ invisible = text->invisible;
+ } else {
+ invisible = gtk_invisible_new();
+ text->invisible = invisible;
+
+ gtk_selection_add_target (invisible,
+ GDK_SELECTION_PRIMARY,
+ GDK_SELECTION_TYPE_STRING,
+ E_SELECTION_PRIMARY);
+ gtk_selection_add_target (invisible,
+ clipboard_atom,
+ GDK_SELECTION_TYPE_STRING,
+ E_SELECTION_CLIPBOARD);
+
+ gtk_signal_connect (GTK_OBJECT(invisible), "selection_get",
+ GTK_SIGNAL_FUNC (_selection_get),
+ text);
+ gtk_signal_connect (GTK_OBJECT(invisible), "selection_clear_event",
+ GTK_SIGNAL_FUNC (_selection_clear_event),
+ text);
+ gtk_signal_connect (GTK_OBJECT(invisible), "selection_received",
+ GTK_SIGNAL_FUNC (_selection_received),
+ text);
+
+ gtk_signal_connect (GTK_OBJECT(invisible), "destroy",
+ GTK_SIGNAL_FUNC (_invisible_destroy),
+ text);
+ }
+ return invisible;
+}
+
static void
_selection_clear_event (GtkInvisible *invisible,
GdkEventSelection *event,
@@ -1994,7 +2052,6 @@ _selection_clear_event (GtkInvisible *invisible,
g_free (text->primary_selection);
text->primary_selection = NULL;
text->primary_length = 0;
- gtk_object_unref (GTK_OBJECT(invisible));
text->has_selection = FALSE;
gnome_canvas_item_request_update (GNOME_CANVAS_ITEM(text));
@@ -2003,7 +2060,6 @@ _selection_clear_event (GtkInvisible *invisible,
g_free (text->clipboard_selection);
text->clipboard_selection = NULL;
text->clipboard_length = 0;
- gtk_object_unref (GTK_OBJECT(invisible));
}
}
@@ -2033,7 +2089,6 @@ _selection_received (GtkInvisible *invisible,
EText *text)
{
if (selection_data->length < 0 || selection_data->type != GDK_SELECTION_TYPE_STRING) {
- gtk_object_unref (GTK_OBJECT(invisible));
return;
} else {
ETextEventProcessorCommand command;
@@ -2043,62 +2098,24 @@ _selection_received (GtkInvisible *invisible,
command.value = selection_data->length;
command.time = time;
e_text_command(text->tep, &command, text);
- gtk_object_unref (GTK_OBJECT(invisible));
}
}
-static void _invisible_destroy (GtkInvisible *invisible,
- EText *text)
-{
- text->invisible = NULL;
-}
-
static void e_text_supply_selection (EText *text, guint time, GdkAtom selection, guchar *data, gint length)
{
gboolean successful;
GtkWidget *invisible;
- if (text->invisible) {
- invisible = text->invisible;
- gtk_object_ref (GTK_OBJECT(invisible));
- } else {
- invisible = gtk_invisible_new();
- text->invisible = invisible;
-
- gtk_selection_add_target (invisible,
- GDK_SELECTION_PRIMARY,
- GDK_SELECTION_TYPE_STRING,
- E_SELECTION_PRIMARY);
- gtk_selection_add_target (invisible,
- clipboard_atom,
- GDK_SELECTION_TYPE_STRING,
- E_SELECTION_CLIPBOARD);
-
- gtk_signal_connect (GTK_OBJECT(invisible), "selection_get",
- GTK_SIGNAL_FUNC (_selection_get),
- text);
- gtk_signal_connect (GTK_OBJECT(invisible), "selection_clear_event",
- GTK_SIGNAL_FUNC (_selection_clear_event),
- text);
- gtk_signal_connect (GTK_OBJECT(invisible), "selection_received",
- GTK_SIGNAL_FUNC (_selection_received),
- text);
-
- gtk_signal_connect (GTK_OBJECT(invisible), "destroy",
- GTK_SIGNAL_FUNC (_invisible_destroy),
- text);
- }
+ invisible = e_text_get_invisible(text);
if (selection == GDK_SELECTION_PRIMARY ) {
if (text->primary_selection) {
- gtk_object_unref (GTK_OBJECT(invisible));
g_free (text->primary_selection);
}
text->primary_selection = g_strndup(data, length);
text->primary_length = length;
} else if (selection == clipboard_atom) {
if (text->clipboard_selection) {
- gtk_object_unref (GTK_OBJECT(invisible));
g_free (text->clipboard_selection);
}
text->clipboard_selection = g_strndup(data, length);
@@ -2111,45 +2128,13 @@ static void e_text_supply_selection (EText *text, guint time, GdkAtom selection,
if (selection == GDK_SELECTION_PRIMARY)
text->has_selection = successful;
-
- if (!successful)
- gtk_object_unref(GTK_OBJECT(invisible));
}
static void
e_text_get_selection(EText *text, GdkAtom selection, guint32 time)
{
GtkWidget *invisible;
- if (text->invisible) {
- invisible = text->invisible;
- gtk_object_ref (GTK_OBJECT(invisible));
- } else {
- invisible = gtk_invisible_new();
- text->invisible = invisible;
-
- gtk_selection_add_target (invisible,
- GDK_SELECTION_PRIMARY,
- GDK_SELECTION_TYPE_STRING,
- E_SELECTION_PRIMARY);
- gtk_selection_add_target (invisible,
- clipboard_atom,
- GDK_SELECTION_TYPE_STRING,
- E_SELECTION_CLIPBOARD);
-
- gtk_signal_connect (GTK_OBJECT(invisible), "selection_get",
- GTK_SIGNAL_FUNC (_selection_get),
- text);
- gtk_signal_connect (GTK_OBJECT(invisible), "selection_clear_event",
- GTK_SIGNAL_FUNC (_selection_clear_event),
- text);
- gtk_signal_connect (GTK_OBJECT(invisible), "selection_received",
- GTK_SIGNAL_FUNC (_selection_received),
- text);
-
- gtk_signal_connect (GTK_OBJECT(invisible), "destroy",
- GTK_SIGNAL_FUNC (_invisible_destroy),
- text);
- }
+ invisible = e_text_get_invisible(text);
gtk_selection_convert(invisible,
selection,
GDK_SELECTION_TYPE_STRING,
diff --git a/widgets/e-text/e-text.h b/widgets/e-text/e-text.h
index 11a7a42375..e1f250c678 100644
--- a/widgets/e-text/e-text.h
+++ b/widgets/e-text/e-text.h
@@ -59,7 +59,7 @@ BEGIN_GNOME_DECLS
* text_width double R Used to query the width of the rendered text
* text_height double R Used to query the rendered height of the text
*
- * These are ignored in the AA version:
+ * These are currently ignored in the AA version:
* editable boolean RW Can this item be edited
* use_ellipsis boolean RW Whether to use ellipsises if text gets cut off. Meaningless if clip == false.
* ellipsis string RW The characters to use as ellipsis. NULL = "...".
diff --git a/widgets/shortcut-bar/Makefile.am b/widgets/shortcut-bar/Makefile.am
index bf41fcfc15..ac81f2e2e6 100644
--- a/widgets/shortcut-bar/Makefile.am
+++ b/widgets/shortcut-bar/Makefile.am
@@ -30,4 +30,4 @@ test_shortcut_bar_LDADD = \
$(EXTRA_GNOME_LIBS)
test_shortcut_bar_LDFLAGS = \
- `gnome-config --libs gdk_pixbuf`
+ `gnome-config --libs gdk_pixbuf gnomecanvaspixbuf`
diff --git a/widgets/text/e-text.c b/widgets/text/e-text.c
index cb3456cd24..f4d6dddf55 100644
--- a/widgets/text/e-text.c
+++ b/widgets/text/e-text.c
@@ -112,6 +112,20 @@ static guint32 e_text_get_event_time (EText *text);
static void e_text_get_selection(EText *text, GdkAtom selection, guint32 time);
static void e_text_supply_selection (EText *text, guint time, GdkAtom selection, guchar *data, gint length);
+static GtkWidget *e_text_get_invisible(EText *text);
+static void _selection_clear_event (GtkInvisible *invisible,
+ GdkEventSelection *event,
+ EText *text);
+static void _selection_get (GtkInvisible *invisible,
+ GtkSelectionData *selection_data,
+ guint info,
+ guint time_stamp,
+ EText *text);
+static void _selection_received (GtkInvisible *invisible,
+ GtkSelectionData *selection_data,
+ guint time,
+ EText *text);
+
static ETextSuckFont *e_suck_font (GdkFont *font);
static void e_suck_font_free (ETextSuckFont *suckfont);
@@ -290,9 +304,9 @@ e_text_init (EText *text)
text->tep = NULL;
- text->invisible = NULL;
text->has_selection = FALSE;
-
+
+ text->invisible = NULL;
text->primary_selection = NULL;
text->primary_length = 0;
text->clipboard_selection = NULL;
@@ -315,6 +329,9 @@ e_text_destroy (GtkObject *object)
if (text->tep)
gtk_object_unref (GTK_OBJECT(text->tep));
+
+ if (text->invisible)
+ gtk_object_unref (GTK_OBJECT(text->invisible));
if (text->lines)
g_free (text->lines);
@@ -1985,6 +2002,47 @@ e_text_command(ETextEventProcessor *tep, ETextEventProcessorCommand *command, gp
gnome_canvas_item_request_update (GNOME_CANVAS_ITEM(text));
}
+static void _invisible_destroy (GtkInvisible *invisible,
+ EText *text)
+{
+ text->invisible = NULL;
+}
+
+static GtkWidget *e_text_get_invisible(EText *text)
+{
+ GtkWidget *invisible;
+ if (text->invisible) {
+ invisible = text->invisible;
+ } else {
+ invisible = gtk_invisible_new();
+ text->invisible = invisible;
+
+ gtk_selection_add_target (invisible,
+ GDK_SELECTION_PRIMARY,
+ GDK_SELECTION_TYPE_STRING,
+ E_SELECTION_PRIMARY);
+ gtk_selection_add_target (invisible,
+ clipboard_atom,
+ GDK_SELECTION_TYPE_STRING,
+ E_SELECTION_CLIPBOARD);
+
+ gtk_signal_connect (GTK_OBJECT(invisible), "selection_get",
+ GTK_SIGNAL_FUNC (_selection_get),
+ text);
+ gtk_signal_connect (GTK_OBJECT(invisible), "selection_clear_event",
+ GTK_SIGNAL_FUNC (_selection_clear_event),
+ text);
+ gtk_signal_connect (GTK_OBJECT(invisible), "selection_received",
+ GTK_SIGNAL_FUNC (_selection_received),
+ text);
+
+ gtk_signal_connect (GTK_OBJECT(invisible), "destroy",
+ GTK_SIGNAL_FUNC (_invisible_destroy),
+ text);
+ }
+ return invisible;
+}
+
static void
_selection_clear_event (GtkInvisible *invisible,
GdkEventSelection *event,
@@ -1994,7 +2052,6 @@ _selection_clear_event (GtkInvisible *invisible,
g_free (text->primary_selection);
text->primary_selection = NULL;
text->primary_length = 0;
- gtk_object_unref (GTK_OBJECT(invisible));
text->has_selection = FALSE;
gnome_canvas_item_request_update (GNOME_CANVAS_ITEM(text));
@@ -2003,7 +2060,6 @@ _selection_clear_event (GtkInvisible *invisible,
g_free (text->clipboard_selection);
text->clipboard_selection = NULL;
text->clipboard_length = 0;
- gtk_object_unref (GTK_OBJECT(invisible));
}
}
@@ -2033,7 +2089,6 @@ _selection_received (GtkInvisible *invisible,
EText *text)
{
if (selection_data->length < 0 || selection_data->type != GDK_SELECTION_TYPE_STRING) {
- gtk_object_unref (GTK_OBJECT(invisible));
return;
} else {
ETextEventProcessorCommand command;
@@ -2043,62 +2098,24 @@ _selection_received (GtkInvisible *invisible,
command.value = selection_data->length;
command.time = time;
e_text_command(text->tep, &command, text);
- gtk_object_unref (GTK_OBJECT(invisible));
}
}
-static void _invisible_destroy (GtkInvisible *invisible,
- EText *text)
-{
- text->invisible = NULL;
-}
-
static void e_text_supply_selection (EText *text, guint time, GdkAtom selection, guchar *data, gint length)
{
gboolean successful;
GtkWidget *invisible;
- if (text->invisible) {
- invisible = text->invisible;
- gtk_object_ref (GTK_OBJECT(invisible));
- } else {
- invisible = gtk_invisible_new();
- text->invisible = invisible;
-
- gtk_selection_add_target (invisible,
- GDK_SELECTION_PRIMARY,
- GDK_SELECTION_TYPE_STRING,
- E_SELECTION_PRIMARY);
- gtk_selection_add_target (invisible,
- clipboard_atom,
- GDK_SELECTION_TYPE_STRING,
- E_SELECTION_CLIPBOARD);
-
- gtk_signal_connect (GTK_OBJECT(invisible), "selection_get",
- GTK_SIGNAL_FUNC (_selection_get),
- text);
- gtk_signal_connect (GTK_OBJECT(invisible), "selection_clear_event",
- GTK_SIGNAL_FUNC (_selection_clear_event),
- text);
- gtk_signal_connect (GTK_OBJECT(invisible), "selection_received",
- GTK_SIGNAL_FUNC (_selection_received),
- text);
-
- gtk_signal_connect (GTK_OBJECT(invisible), "destroy",
- GTK_SIGNAL_FUNC (_invisible_destroy),
- text);
- }
+ invisible = e_text_get_invisible(text);
if (selection == GDK_SELECTION_PRIMARY ) {
if (text->primary_selection) {
- gtk_object_unref (GTK_OBJECT(invisible));
g_free (text->primary_selection);
}
text->primary_selection = g_strndup(data, length);
text->primary_length = length;
} else if (selection == clipboard_atom) {
if (text->clipboard_selection) {
- gtk_object_unref (GTK_OBJECT(invisible));
g_free (text->clipboard_selection);
}
text->clipboard_selection = g_strndup(data, length);
@@ -2111,45 +2128,13 @@ static void e_text_supply_selection (EText *text, guint time, GdkAtom selection,
if (selection == GDK_SELECTION_PRIMARY)
text->has_selection = successful;
-
- if (!successful)
- gtk_object_unref(GTK_OBJECT(invisible));
}
static void
e_text_get_selection(EText *text, GdkAtom selection, guint32 time)
{
GtkWidget *invisible;
- if (text->invisible) {
- invisible = text->invisible;
- gtk_object_ref (GTK_OBJECT(invisible));
- } else {
- invisible = gtk_invisible_new();
- text->invisible = invisible;
-
- gtk_selection_add_target (invisible,
- GDK_SELECTION_PRIMARY,
- GDK_SELECTION_TYPE_STRING,
- E_SELECTION_PRIMARY);
- gtk_selection_add_target (invisible,
- clipboard_atom,
- GDK_SELECTION_TYPE_STRING,
- E_SELECTION_CLIPBOARD);
-
- gtk_signal_connect (GTK_OBJECT(invisible), "selection_get",
- GTK_SIGNAL_FUNC (_selection_get),
- text);
- gtk_signal_connect (GTK_OBJECT(invisible), "selection_clear_event",
- GTK_SIGNAL_FUNC (_selection_clear_event),
- text);
- gtk_signal_connect (GTK_OBJECT(invisible), "selection_received",
- GTK_SIGNAL_FUNC (_selection_received),
- text);
-
- gtk_signal_connect (GTK_OBJECT(invisible), "destroy",
- GTK_SIGNAL_FUNC (_invisible_destroy),
- text);
- }
+ invisible = e_text_get_invisible(text);
gtk_selection_convert(invisible,
selection,
GDK_SELECTION_TYPE_STRING,
diff --git a/widgets/text/e-text.h b/widgets/text/e-text.h
index 11a7a42375..e1f250c678 100644
--- a/widgets/text/e-text.h
+++ b/widgets/text/e-text.h
@@ -59,7 +59,7 @@ BEGIN_GNOME_DECLS
* text_width double R Used to query the width of the rendered text
* text_height double R Used to query the rendered height of the text
*
- * These are ignored in the AA version:
+ * These are currently ignored in the AA version:
* editable boolean RW Can this item be edited
* use_ellipsis boolean RW Whether to use ellipsises if text gets cut off. Meaningless if clip == false.
* ellipsis string RW The characters to use as ellipsis. NULL = "...".