[seahorse] Use GTK+ GtkEntryBuffer for secure password entry.
- From: Stefan Walter <stefw src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [seahorse] Use GTK+ GtkEntryBuffer for secure password entry.
- Date: Thu, 21 Jan 2010 19:09:28 +0000 (UTC)
commit 6bfb8025ed42f47748b6d83d604a4fa71aec61df
Author: Stef Walter <stef memberwebs com>
Date: Thu Jan 21 19:06:38 2010 +0000
Use GTK+ GtkEntryBuffer for secure password entry.
Remove our own copy of GtkEntry, and use the new GtkEntryBuffer
in GTK+ 2.18. Bump requred GTK+ version.
common/Makefile.am | 4 +-
common/seahorse-secure-buffer.c | 196 +++
common/seahorse-secure-buffer.h | 57 +
configure.in | 2 +-
gkr/seahorse-gkr-add-item.c | 20 +-
gkr/seahorse-gkr-item-properties.c | 50 +-
libseahorse/Makefile.am | 1 -
libseahorse/seahorse-passphrase.c | 44 +-
libseahorse/seahorse-prefs.c | 1 -
libseahorse/seahorse-secure-entry.c | 3007 -----------------------------------
libseahorse/seahorse-secure-entry.h | 187 ---
11 files changed, 322 insertions(+), 3247 deletions(-)
---
diff --git a/common/Makefile.am b/common/Makefile.am
index 7fd0823..1ad86ed 100644
--- a/common/Makefile.am
+++ b/common/Makefile.am
@@ -11,5 +11,5 @@ libseahorse_common_la_SOURCES = \
seahorse-bind.c seahorse-bind.h \
seahorse-cleanup.c seahorse-cleanup.h \
seahorse-object-list.c seahorse-object-list.h \
- seahorse-registry.c seahorse-registry.h
-
\ No newline at end of file
+ seahorse-registry.c seahorse-registry.h \
+ seahorse-secure-buffer.c seahorse-secure-buffer.h
\ No newline at end of file
diff --git a/common/seahorse-secure-buffer.c b/common/seahorse-secure-buffer.c
new file mode 100644
index 0000000..8db74f0
--- /dev/null
+++ b/common/seahorse-secure-buffer.c
@@ -0,0 +1,196 @@
+/*
+ * Seahorse
+ *
+ * Copyright (C) 2010 Stefan Walter
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ */
+
+#include "config.h"
+
+#include "seahorse-secure-buffer.h"
+#include <gnome-keyring-memory.h>
+
+#include <string.h>
+
+/* Initial size of buffer, in bytes */
+#define MIN_SIZE 16
+
+struct _SeahorseSecureBufferPrivate
+{
+ gchar *text;
+ gsize text_size;
+ gsize text_bytes;
+ guint text_chars;
+};
+
+G_DEFINE_TYPE (SeahorseSecureBuffer, seahorse_secure_buffer, GTK_TYPE_ENTRY_BUFFER);
+
+/* --------------------------------------------------------------------------------
+ * SECURE IMPLEMENTATIONS OF TEXT BUFFER
+ */
+
+static const gchar*
+seahorse_secure_buffer_real_get_text (GtkEntryBuffer *buffer, gsize *n_bytes)
+{
+ SeahorseSecureBuffer *self = SEAHORSE_SECURE_BUFFER (buffer);
+ if (n_bytes)
+ *n_bytes = self->priv->text_bytes;
+ if (!self->priv->text)
+ return "";
+ return self->priv->text;
+}
+
+static guint
+seahorse_secure_buffer_real_get_length (GtkEntryBuffer *buffer)
+{
+ SeahorseSecureBuffer *self = SEAHORSE_SECURE_BUFFER (buffer);
+ return self->priv->text_chars;
+}
+
+static guint
+seahorse_secure_buffer_real_insert_text (GtkEntryBuffer *buffer, guint position,
+ const gchar *chars, guint n_chars)
+{
+ SeahorseSecureBuffer *self = SEAHORSE_SECURE_BUFFER (buffer);
+ SeahorseSecureBufferPrivate *pv = self->priv;
+ gsize n_bytes;
+ gsize at;
+
+ n_bytes = g_utf8_offset_to_pointer (chars, n_chars) - chars;
+
+ /* Need more memory */
+ if (n_bytes + pv->text_bytes + 1 > pv->text_size) {
+
+ /* Calculate our new buffer size */
+ while (n_bytes + pv->text_bytes + 1 > pv->text_size) {
+ if (pv->text_size == 0) {
+ pv->text_size = MIN_SIZE;
+ } else {
+ if (2 * pv->text_size < GTK_ENTRY_BUFFER_MAX_SIZE) {
+ pv->text_size *= 2;
+ } else {
+ pv->text_size = GTK_ENTRY_BUFFER_MAX_SIZE;
+ if (n_bytes > pv->text_size - pv->text_bytes - 1) {
+ n_bytes = pv->text_size - pv->text_bytes - 1;
+ n_bytes = g_utf8_find_prev_char (chars, chars + n_bytes + 1) - chars;
+ n_chars = g_utf8_strlen (chars, n_bytes);
+ }
+ break;
+ }
+ }
+ }
+
+ pv->text = gnome_keyring_memory_realloc (pv->text, pv->text_size);
+ }
+
+ /* Actual text insertion */
+ at = g_utf8_offset_to_pointer (pv->text, position) - pv->text;
+ g_memmove (pv->text + at + n_bytes, pv->text + at, pv->text_bytes - at);
+ memcpy (pv->text + at, chars, n_bytes);
+
+ /* Book keeping */
+ pv->text_bytes += n_bytes;
+ pv->text_chars += n_chars;
+ pv->text[pv->text_bytes] = '\0';
+
+ gtk_entry_buffer_emit_inserted_text (buffer, position, chars, n_chars);
+ return n_chars;
+}
+
+static guint
+seahorse_secure_buffer_real_delete_text (GtkEntryBuffer *buffer, guint position, guint n_chars)
+{
+ SeahorseSecureBuffer *self = SEAHORSE_SECURE_BUFFER (buffer);
+ SeahorseSecureBufferPrivate *pv = self->priv;
+ gsize start, end;
+
+ if (position > pv->text_chars)
+ position = pv->text_chars;
+ if (position + n_chars > pv->text_chars)
+ n_chars = pv->text_chars - position;
+
+ if (n_chars > 0) {
+ start = g_utf8_offset_to_pointer (pv->text, position) - pv->text;
+ end = g_utf8_offset_to_pointer (pv->text, position + n_chars) - pv->text;
+
+ g_memmove (pv->text + start, pv->text + end, pv->text_bytes + 1 - end);
+ pv->text_chars -= n_chars;
+ pv->text_bytes -= (end - start);
+
+ gtk_entry_buffer_emit_deleted_text (buffer, position, n_chars);
+ }
+
+ return n_chars;
+}
+
+/* --------------------------------------------------------------------------------
+ *
+ */
+
+static void
+seahorse_secure_buffer_init (SeahorseSecureBuffer *self)
+{
+ SeahorseSecureBufferPrivate *pv;
+ pv = self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, SEAHORSE_TYPE_SECURE_BUFFER, SeahorseSecureBufferPrivate);
+
+ pv->text = NULL;
+ pv->text_chars = 0;
+ pv->text_bytes = 0;
+ pv->text_size = 0;
+}
+
+static void
+seahorse_secure_buffer_finalize (GObject *obj)
+{
+ SeahorseSecureBuffer *self = SEAHORSE_SECURE_BUFFER (obj);
+ SeahorseSecureBufferPrivate *pv = self->priv;
+
+ if (pv->text) {
+ gnome_keyring_memory_free (pv->text);
+ pv->text = NULL;
+ pv->text_bytes = pv->text_size = 0;
+ pv->text_chars = 0;
+ }
+
+ G_OBJECT_CLASS (seahorse_secure_buffer_parent_class)->finalize (obj);
+}
+
+static void
+seahorse_secure_buffer_class_init (SeahorseSecureBufferClass *klass)
+{
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+ GtkEntryBufferClass *buffer_class = GTK_ENTRY_BUFFER_CLASS (klass);
+
+ gobject_class->finalize = seahorse_secure_buffer_finalize;
+
+ buffer_class->get_text = seahorse_secure_buffer_real_get_text;
+ buffer_class->get_length = seahorse_secure_buffer_real_get_length;
+ buffer_class->insert_text = seahorse_secure_buffer_real_insert_text;
+ buffer_class->delete_text = seahorse_secure_buffer_real_delete_text;
+
+ g_type_class_add_private (gobject_class, sizeof (SeahorseSecureBufferPrivate));
+}
+
+/* --------------------------------------------------------------------------------
+ *
+ */
+
+GtkEntryBuffer*
+seahorse_secure_buffer_new (void)
+{
+ return g_object_new (SEAHORSE_TYPE_SECURE_BUFFER, NULL);
+}
diff --git a/common/seahorse-secure-buffer.h b/common/seahorse-secure-buffer.h
new file mode 100644
index 0000000..7c94f8a
--- /dev/null
+++ b/common/seahorse-secure-buffer.h
@@ -0,0 +1,57 @@
+/*
+ * Seahorse
+ *
+ * Copyright (C) 2010 Stefan Walter
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ */
+
+#ifndef __SEAHORSE_SECURE_BUFFER_H__
+#define __SEAHORSE_SECURE_BUFFER_H__
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define SEAHORSE_TYPE_SECURE_BUFFER (seahorse_secure_buffer_get_type ())
+#define SEAHORSE_SECURE_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SEAHORSE_TYPE_SECURE_BUFFER, SeahorseSecureBuffer))
+#define SEAHORSE_SECURE_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SEAHORSE_TYPE_SECURE_BUFFER, SeahorseSecureBufferClass))
+#define SEAHORSE_IS_SECURE_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SEAHORSE_TYPE_SECURE_BUFFER))
+#define SEAHORSE_IS_SECURE_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SEAHORSE_TYPE_SECURE_BUFFER))
+#define SEAHORSE_SECURE_BUFFER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SEAHORSE_TYPE_SECURE_BUFFER, SeahorseSecureBufferClass))
+
+typedef struct _SeahorseSecureBuffer SeahorseSecureBuffer;
+typedef struct _SeahorseSecureBufferClass SeahorseSecureBufferClass;
+typedef struct _SeahorseSecureBufferPrivate SeahorseSecureBufferPrivate;
+
+struct _SeahorseSecureBuffer
+{
+ GtkEntryBuffer parent;
+ SeahorseSecureBufferPrivate *priv;
+};
+
+struct _SeahorseSecureBufferClass
+{
+ GtkEntryBufferClass parent_class;
+};
+
+GType seahorse_secure_buffer_get_type (void) G_GNUC_CONST;
+
+GtkEntryBuffer* seahorse_secure_buffer_new (void);
+
+G_END_DECLS
+
+#endif /* __SEAHORSE_SECURE_BUFFER_H__ */
diff --git a/configure.in b/configure.in
index ba7483d..a262ac3 100644
--- a/configure.in
+++ b/configure.in
@@ -45,7 +45,7 @@ AC_CHECK_FUNCS(strsep)
AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
-PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.10)
+PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.18)
AC_SUBST([GTK_LIBS])
AC_SUBST([GTK_CFLAGS])
diff --git a/gkr/seahorse-gkr-add-item.c b/gkr/seahorse-gkr-add-item.c
index 09f4853..3d9146c 100644
--- a/gkr/seahorse-gkr-add-item.c
+++ b/gkr/seahorse-gkr-add-item.c
@@ -24,10 +24,11 @@
#include "seahorse-gkr-keyring.h"
#include "seahorse-gkr-source.h"
-#include "seahorse-secure-entry.h"
#include "seahorse-widget.h"
#include "seahorse-util.h"
+#include "common/seahorse-secure-buffer.h"
+
#include <glib/gi18n.h>
static void
@@ -74,11 +75,8 @@ on_add_item_label_changed (GtkEntry *entry, SeahorseWidget *swidget)
G_MODULE_EXPORT void
on_add_item_password_toggled (GtkToggleButton *button, SeahorseWidget *swidget)
{
- GtkWidget *widget;
-
- widget = g_object_get_data (G_OBJECT (swidget), "gkr-secure-entry");
- seahorse_secure_entry_set_visibility (SEAHORSE_SECURE_ENTRY (widget),
- gtk_toggle_button_get_active (button));
+ GtkWidget *widget= g_object_get_data (G_OBJECT (swidget), "gkr-secure-entry");
+ gtk_entry_set_visibility (GTK_ENTRY (widget), gtk_toggle_button_get_active (button));
}
G_MODULE_EXPORT void
@@ -101,7 +99,7 @@ on_add_item_response (GtkDialog *dialog, int response, SeahorseWidget *swidget)
g_return_if_fail (label && label[0]);
widget = g_object_get_data (G_OBJECT (swidget), "gkr-secure-entry");
- secret = seahorse_secure_entry_get_text (SEAHORSE_SECURE_ENTRY (widget));
+ secret = gtk_entry_get_text (GTK_ENTRY (widget));
widget = seahorse_widget_get_widget (swidget, "item-keyring");
keyring = gtk_combo_box_get_active_text (GTK_COMBO_BOX (widget));
@@ -126,6 +124,7 @@ void
seahorse_gkr_add_item_show (GtkWindow *parent)
{
SeahorseWidget *swidget = NULL;
+ GtkEntryBuffer *buffer;
GtkWidget *entry, *widget;
GList *keyrings, *l;
GtkCellRenderer *cell;
@@ -161,11 +160,16 @@ seahorse_gkr_add_item_show (GtkWindow *parent)
widget = seahorse_widget_get_widget (swidget, "password-area");
g_return_if_fail (widget);
- entry = seahorse_secure_entry_new ();
+ buffer = seahorse_secure_buffer_new ();
+ entry = gtk_entry_new_with_buffer (buffer);
+ g_object_unref (buffer);
gtk_container_add (GTK_CONTAINER (widget), GTK_WIDGET (entry));
gtk_widget_show (GTK_WIDGET (entry));
g_object_set_data (G_OBJECT (swidget), "gkr-secure-entry", entry);
+ widget = seahorse_widget_get_widget (swidget, "show-password");
+ on_add_item_password_toggled (GTK_TOGGLE_BUTTON (widget), swidget);
+
widget = seahorse_widget_get_toplevel (swidget);
gtk_widget_show (widget);
gtk_window_present (GTK_WINDOW (widget));
diff --git a/gkr/seahorse-gkr-item-properties.c b/gkr/seahorse-gkr-item-properties.c
index 5cd215d..b8bbf08 100644
--- a/gkr/seahorse-gkr-item-properties.c
+++ b/gkr/seahorse-gkr-item-properties.c
@@ -30,11 +30,11 @@
#include "seahorse-object.h"
#include "seahorse-object-widget.h"
#include "seahorse-secure-memory.h"
-#include "seahorse-secure-entry.h"
#include "seahorse-util.h"
#include "seahorse-widget.h"
#include "common/seahorse-bind.h"
+#include "common/seahorse-secure-buffer.h"
GType
boxed_access_control_type (void)
@@ -171,9 +171,9 @@ static void
transfer_password (SeahorseGkrItem *git, SeahorseWidget *swidget)
{
GtkWidget *expander;
- SeahorseSecureEntry *entry;
+ GtkEntry *entry;
const gchar *secret;
-
+
expander = seahorse_widget_get_widget (swidget, "password-expander");
g_return_if_fail (expander);
@@ -182,15 +182,15 @@ transfer_password (SeahorseGkrItem *git, SeahorseWidget *swidget)
if (gtk_expander_get_expanded (GTK_EXPANDER (expander))) {
secret = seahorse_gkr_item_get_secret (git);
- seahorse_secure_entry_set_text (entry, secret ? secret : "");
+ gtk_entry_set_text (entry, secret ? secret : "");
} else {
- seahorse_secure_entry_set_text (entry, "");
+ gtk_entry_set_text (entry, "");
}
- seahorse_secure_entry_reset_changed (entry);
+ g_object_set_data (G_OBJECT (entry), "changed", NULL);
}
static void
-password_activate (SeahorseSecureEntry *entry, SeahorseWidget *swidget)
+password_activate (GtkEntry *entry, SeahorseWidget *swidget)
{
SeahorseObject *object;
SeahorseGkrItem *git;
@@ -210,7 +210,7 @@ password_activate (SeahorseSecureEntry *entry, SeahorseWidget *swidget)
return;
entry = g_object_get_data (G_OBJECT (swidget), "secure-password-entry");
- if (!seahorse_secure_entry_get_changed (entry))
+ if (!g_object_get_data (G_OBJECT (entry), "changed"))
return;
if (g_object_get_data (G_OBJECT (swidget), "updating-password"))
@@ -225,7 +225,7 @@ password_activate (SeahorseSecureEntry *entry, SeahorseWidget *swidget)
seahorse_util_wait_until (seahorse_gkr_item_get_info (git));
info = gnome_keyring_item_info_copy (seahorse_gkr_item_get_info (git));
- gnome_keyring_item_info_set_secret (info, seahorse_secure_entry_get_text (entry));
+ gnome_keyring_item_info_set_secret (info, gtk_entry_get_text (entry));
op = seahorse_gkr_operation_update_info (git, info);
gnome_keyring_item_info_free (info);
@@ -250,8 +250,14 @@ password_activate (SeahorseSecureEntry *entry, SeahorseWidget *swidget)
}
+static void
+password_changed (GtkEditable *editable, SeahorseWidget *swidget)
+{
+ g_object_set_data (G_OBJECT (editable), "changed", "changed");
+}
+
static gboolean
-password_focus_out (SeahorseSecureEntry* entry, GdkEventFocus *event, SeahorseWidget *swidget)
+password_focus_out (GtkEntry* entry, GdkEventFocus *event, SeahorseWidget *swidget)
{
password_activate (entry, swidget);
return FALSE;
@@ -260,11 +266,8 @@ password_focus_out (SeahorseSecureEntry* entry, GdkEventFocus *event, SeahorseWi
G_MODULE_EXPORT void
on_item_show_password_toggled (GtkToggleButton *button, SeahorseWidget *swidget)
{
- GtkWidget *widget;
-
- widget = g_object_get_data (G_OBJECT (swidget), "secure-password-entry");
- seahorse_secure_entry_set_visibility (SEAHORSE_SECURE_ENTRY (widget),
- gtk_toggle_button_get_active (button));
+ GtkWidget *widget = g_object_get_data (G_OBJECT (swidget), "secure-password-entry");
+ gtk_entry_set_visibility (GTK_ENTRY (widget), gtk_toggle_button_get_active (button));
}
G_MODULE_EXPORT void
@@ -364,6 +367,7 @@ static void
setup_main (SeahorseWidget *swidget)
{
SeahorseObject *object;
+ GtkEntryBuffer *buffer;
GtkWidget *widget;
GtkWidget *box;
@@ -403,10 +407,12 @@ setup_main (SeahorseWidget *swidget)
/* User name */
seahorse_bind_property_full ("item-attributes", object, transform_attributes_user, "label",
seahorse_widget_get_widget (swidget, "login-field"), NULL);
-
+
/* Create the password entry */
- widget = seahorse_secure_entry_new ();
-
+ buffer = seahorse_secure_buffer_new ();
+ widget = gtk_entry_new_with_buffer (buffer);
+ g_object_unref (buffer);
+
box = seahorse_widget_get_widget (swidget, "password-box-area");
g_return_if_fail (box != NULL);
gtk_container_add (GTK_CONTAINER (box), widget);
@@ -415,13 +421,17 @@ setup_main (SeahorseWidget *swidget)
/* Now watch for changes in the password */
g_signal_connect (widget, "activate", G_CALLBACK (password_activate), swidget);
+ g_signal_connect (widget, "changed", G_CALLBACK (password_changed), swidget);
g_signal_connect_after (widget, "focus-out-event", G_CALLBACK (password_focus_out), swidget);
-
+
/* Sensitivity of the password entry */
seahorse_bind_property ("has-secret", object, "sensitive", widget);
-
+
/* Updating of the password entry */
seahorse_bind_objects ("has-secret", object, (SeahorseTransfer)transfer_password, swidget);
+
+ widget = seahorse_widget_get_widget (swidget, "show-password-check");
+ on_item_show_password_toggled (widget, swidget);
}
/* -----------------------------------------------------------------------------
diff --git a/libseahorse/Makefile.am b/libseahorse/Makefile.am
index 817d44c..825cb21 100644
--- a/libseahorse/Makefile.am
+++ b/libseahorse/Makefile.am
@@ -47,7 +47,6 @@ libseahorse_la_SOURCES = \
seahorse-prefs.c seahorse-prefs.h \
seahorse-progress.c seahorse-progress.h \
seahorse-secure-memory.c seahorse-secure-memory.h \
- seahorse-secure-entry.c seahorse-secure-entry.h \
seahorse-servers.c seahorse-servers.h \
seahorse-set.c seahorse-set.h \
seahorse-set-model.c seahorse-set-model.h \
diff --git a/libseahorse/seahorse-passphrase.c b/libseahorse/seahorse-passphrase.c
index 8f1e9a0..7d9ca80 100644
--- a/libseahorse/seahorse-passphrase.c
+++ b/libseahorse/seahorse-passphrase.c
@@ -47,7 +47,8 @@
#include "seahorse-widget.h"
#include "seahorse-util.h"
#include "seahorse-passphrase.h"
-#include "seahorse-secure-entry.h"
+
+#include "common/seahorse-secure-buffer.h"
#define HIG_SMALL 6 /* gnome hig small space in pixels */
#define HIG_LARGE 12 /* gnome hig large space in pixels */
@@ -116,9 +117,9 @@ ungrab_keyboard (GtkWidget *win, GdkEvent *event, gpointer data)
static void
confirm_callback (GtkWidget *widget, GtkDialog *dialog)
{
- GtkWidget *entry = GTK_WIDGET (g_object_get_data (G_OBJECT (dialog), "secure-entry"));
- g_assert (SEAHORSE_IS_SECURE_ENTRY (entry));
- gtk_widget_grab_focus (entry);
+ GtkWidget *entry = GTK_WIDGET (g_object_get_data (G_OBJECT (dialog), "secure-entry"));
+ g_assert (GTK_IS_ENTRY (entry));
+ gtk_widget_grab_focus (entry);
}
/* When enter is pressed in the entry, we simulate an ok */
@@ -131,14 +132,14 @@ enter_callback (GtkWidget *widget, GtkDialog *dialog)
static void
entry_changed (GtkEditable *editable, GtkDialog *dialog)
{
- SeahorseSecureEntry *entry, *confirm;
-
- entry = SEAHORSE_SECURE_ENTRY (g_object_get_data (G_OBJECT (dialog), "secure-entry"));
- confirm = SEAHORSE_SECURE_ENTRY (g_object_get_data (G_OBJECT (dialog), "confirm-entry"));
-
- gtk_dialog_set_response_sensitive (dialog, GTK_RESPONSE_ACCEPT,
- strcmp (seahorse_secure_entry_get_text (entry),
- seahorse_secure_entry_get_text (confirm)) == 0);
+ GtkEntry *entry, *confirm;
+
+ entry = GTK_ENTRY (g_object_get_data (G_OBJECT (dialog), "secure-entry"));
+ confirm = GTK_ENTRY (g_object_get_data (G_OBJECT (dialog), "confirm-entry"));
+
+ gtk_dialog_set_response_sensitive (dialog, GTK_RESPONSE_ACCEPT,
+ strcmp (gtk_entry_get_text (entry),
+ gtk_entry_get_text (confirm)) == 0);
}
static gboolean
@@ -180,7 +181,8 @@ seahorse_passphrase_prompt_show (const gchar *title, const gchar *description,
const gchar *prompt, const gchar *check,
gboolean confirm)
{
- SeahorseSecureEntry *entry;
+ GtkEntryBuffer *buffer;
+ GtkEntry *entry;
GtkDialog *dialog;
GtkWidget *w;
GtkWidget *box;
@@ -246,7 +248,9 @@ seahorse_passphrase_prompt_show (const gchar *title, const gchar *description,
g_free (msg);
gtk_table_attach (table, w, 0, 1, 0, 1, GTK_FILL, 0, 0, 0);
- entry = SEAHORSE_SECURE_ENTRY (seahorse_secure_entry_new ());
+ buffer = seahorse_secure_buffer_new ();
+ entry = GTK_ENTRY (gtk_entry_new_with_buffer (buffer));
+ g_object_unref (buffer);
gtk_widget_set_size_request (GTK_WIDGET (entry), 200, -1);
g_object_set_data (G_OBJECT (dialog), "confirm-entry", entry);
g_signal_connect (G_OBJECT (entry), "activate", G_CALLBACK (confirm_callback), dialog);
@@ -261,8 +265,10 @@ seahorse_passphrase_prompt_show (const gchar *title, const gchar *description,
w = gtk_label_new (msg);
g_free (msg);
gtk_table_attach (table, w, 0, 1, 1, 2, GTK_FILL, 0, 0, 0);
-
- entry = SEAHORSE_SECURE_ENTRY (seahorse_secure_entry_new ());
+
+ buffer = seahorse_secure_buffer_new ();
+ entry = GTK_ENTRY (gtk_entry_new_with_buffer (buffer));
+ g_object_unref (buffer);
gtk_widget_set_size_request (GTK_WIDGET (entry), 200, -1);
g_object_set_data (G_OBJECT (dialog), "secure-entry", entry);
g_signal_connect (G_OBJECT (entry), "activate", G_CALLBACK (enter_callback), dialog);
@@ -310,10 +316,8 @@ seahorse_passphrase_prompt_show (const gchar *title, const gchar *description,
const gchar*
seahorse_passphrase_prompt_get (GtkDialog *dialog)
{
- SeahorseSecureEntry *entry;
-
- entry = SEAHORSE_SECURE_ENTRY (g_object_get_data (G_OBJECT (dialog), "secure-entry"));
- return seahorse_secure_entry_get_text (entry);
+ GtkEntry *entry = GTK_ENTRY (g_object_get_data (G_OBJECT (dialog), "secure-entry"));
+ return gtk_entry_get_text (entry);
}
gboolean
diff --git a/libseahorse/seahorse-prefs.c b/libseahorse/seahorse-prefs.c
index ee92b19..644003d 100644
--- a/libseahorse/seahorse-prefs.c
+++ b/libseahorse/seahorse-prefs.c
@@ -28,7 +28,6 @@
#include "seahorse-gtkstock.h"
#include "seahorse-keyserver-control.h"
#include "seahorse-prefs.h"
-#include "seahorse-secure-entry.h"
#include "seahorse-servers.h"
#include "seahorse-util.h"
#include "seahorse-widget.h"
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]