aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog15
-rw-r--r--data/epiphany.schemas.in11
-rw-r--r--data/ui/epiphany-ui.xml2
-rw-r--r--embed/ephy-embed-prefs.h1
-rw-r--r--embed/mozilla/mozilla-notifiers.cpp1
-rw-r--r--src/ephy-window.c28
-rw-r--r--src/window-commands.c10
-rw-r--r--src/window-commands.h2
8 files changed, 69 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 6387a2b72..1e72dc412 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2004-01-09 Christian Persch <chpe@cvs.gnome.org>
+
+ * data/epiphany.schemas.in:
+ * data/ui/epiphany-ui.xml:
+ * embed/ephy-embed-prefs.h:
+ * embed/mozilla/mozilla-notifiers.cpp:
+ * src/ephy-window.c: (ephy_window_finalize),
+ (browse_with_caret_notifier), (ephy_window_init):
+ * src/pdm-dialog.c: (show_cookies_properties):
+ * src/window-commands.c: (window_cmd_browse_with_caret):
+ * src/window-commands.h:
+
+ Add an accellerator-only action (F7) to toggle caret browsing. Hook
+ up listener to set the mozilla pref, added the gconf key to the schema.
+
2004-01-09 Roozbeh Pournader <roozbeh@sharif.edu>
* lib/ephy-state.c: Fixed a logic error in using & instead of &&
diff --git a/data/epiphany.schemas.in b/data/epiphany.schemas.in
index c98dbd080..0d33cdc41 100644
--- a/data/epiphany.schemas.in
+++ b/data/epiphany.schemas.in
@@ -484,5 +484,16 @@
<long>Enable JavaScript.</long>
</locale>
</schema>
+ <schema>
+ <key>/schemas/apps/epiphany/web/browse_with_caret</key>
+ <applyto>/apps/epiphany/web/browse_with_caret</applyto>
+ <owner>epiphany</owner>
+ <type>bool</type>
+ <default>false</default>
+ <locale name="C">
+ <short>Browse with caret</short>
+ <long>Use caret browsing mode.</long>
+ </locale>
+ </schema>
</schemalist>
</gconfschemafile>
diff --git a/data/ui/epiphany-ui.xml b/data/ui/epiphany-ui.xml
index 12c0dbbe4..a4b862072 100644
--- a/data/ui/epiphany-ui.xml
+++ b/data/ui/epiphany-ui.xml
@@ -163,4 +163,6 @@
<menuitem name="CopyImageLocationILP" action="CopyImageLocation"/>
</popup>
+<accelerator name="BrowseWithCaretAccel" action="BrowseWithCaret"/>
+
</ui>
diff --git a/embed/ephy-embed-prefs.h b/embed/ephy-embed-prefs.h
index 33b86da97..090770724 100644
--- a/embed/ephy-embed-prefs.h
+++ b/embed/ephy-embed-prefs.h
@@ -12,6 +12,7 @@
#define CONF_SECURITY_COOKIES_ACCEPT "/apps/epiphany/web/cookie_accept"
#define CONF_LANGUAGE_AUTODETECT_ENCODING "/apps/epiphany/web/autodetect_encoding"
#define CONF_LANGUAGE_DEFAULT_ENCODING "/apps/epiphany/web/default_encoding"
+#define CONF_BROWSE_WITH_CARET "/apps/epiphany/web/browse_with_caret"
/* These are defined gnome wide now */
#define CONF_NETWORK_PROXY_MODE "/system/proxy/mode"
diff --git a/embed/mozilla/mozilla-notifiers.cpp b/embed/mozilla/mozilla-notifiers.cpp
index 3a0314ddf..cb0deec5a 100644
--- a/embed/mozilla/mozilla-notifiers.cpp
+++ b/embed/mozilla/mozilla-notifiers.cpp
@@ -151,6 +151,7 @@ conversion_table [] =
{ CONF_NETWORK_SOCKS_PROXY_PORT, INT_PREF, "network.proxy.socks_port" },
{ CONF_LANGUAGE_DEFAULT_ENCODING, STRING_PREF, "intl.charset.default" },
{ CONF_LANGUAGE_AUTODETECT_ENCODING, STRING_PREF, "intl.charset.detector" },
+ { CONF_BROWSE_WITH_CARET, BOOL_PREF, "accessibility.browsewithcaret" },
{ NULL, 0, NULL }
};
diff --git a/src/ephy-window.c b/src/ephy-window.c
index 588406b1d..48513c880 100644
--- a/src/ephy-window.c
+++ b/src/ephy-window.c
@@ -35,6 +35,7 @@
#include "ephy-shell.h"
#include "eel-gconf-extensions.h"
#include "ephy-prefs.h"
+#include "ephy-embed-prefs.h"
#include "ephy-zoom.h"
#include "ephy-debug.h"
#include "ephy-file-helpers.h"
@@ -240,7 +241,10 @@ static GtkToggleActionEntry ephy_menu_toggle_entries [] =
G_CALLBACK (window_cmd_view_statusbar), TRUE },
{ "ViewFullscreen", STOCK_FULLSCREEN, N_("_Fullscreen"), "F11",
N_("Browse at full screen"),
- G_CALLBACK (window_cmd_view_fullscreen), FALSE}
+ G_CALLBACK (window_cmd_view_fullscreen), FALSE },
+ { "BrowseWithCaret", NULL, N_("Selection Caret"), "F7",
+ "",
+ G_CALLBACK (window_cmd_browse_with_caret), FALSE }
};
static guint ephy_menu_n_toggle_entries = G_N_ELEMENTS (ephy_menu_toggle_entries);
@@ -329,6 +333,7 @@ struct EphyWindowPrivate
guint show_statusbar_notifier_id;
guint hide_menubar_notifier_id;
guint disable_save_to_disk_notifier_id;
+ guint browse_with_caret_notifier_id;
};
enum
@@ -1741,6 +1746,20 @@ actions_notifier (GConfClient *client,
}
static void
+browse_with_caret_notifier (GConfClient *client,
+ guint cnxn_id,
+ GConfEntry *entry,
+ EphyWindow *window)
+{
+ GtkAction *action;
+
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "BrowseWithCaret");
+ gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action),
+ eel_gconf_get_boolean (CONF_BROWSE_WITH_CARET));
+}
+
+static void
ephy_window_init (EphyWindow *window)
{
EphyExtension *manager;
@@ -1836,6 +1855,12 @@ ephy_window_init (EphyWindow *window)
(CONF_LOCKDOWN_DISABLE_SAVE_TO_DISK,
(GConfClientNotifyFunc)actions_notifier, window);
+ /* other notifiers */
+ browse_with_caret_notifier (NULL, 0, NULL, window);
+ window->priv->browse_with_caret_notifier_id = eel_gconf_notification_add
+ (CONF_BROWSE_WITH_CARET,
+ (GConfClientNotifyFunc)browse_with_caret_notifier, window);
+
/* ensure the UI is updated */
gtk_ui_manager_ensure_update (GTK_UI_MANAGER (window->ui_merge));
@@ -1853,6 +1878,7 @@ ephy_window_finalize (GObject *object)
eel_gconf_notification_remove (window->priv->show_statusbar_notifier_id);
eel_gconf_notification_remove (window->priv->hide_menubar_notifier_id);
eel_gconf_notification_remove (window->priv->disable_save_to_disk_notifier_id);
+ eel_gconf_notification_remove (window->priv->browse_with_caret_notifier_id);
if (window->priv->find_dialog)
{
diff --git a/src/window-commands.c b/src/window-commands.c
index 4b809321c..bb98bf12e 100644
--- a/src/window-commands.c
+++ b/src/window-commands.c
@@ -31,6 +31,7 @@
#include "print-dialog.h"
#include "eel-gconf-extensions.h"
#include "ephy-prefs.h"
+#include "ephy-embed-prefs.h"
#include "ephy-dialog.h"
#include "ephy-bookmarks-editor.h"
#include "ephy-history-window.h"
@@ -1105,3 +1106,12 @@ window_cmd_load_location (GtkAction *action,
}
}
+void
+window_cmd_browse_with_caret (GtkAction *action,
+ EphyWindow *window)
+{
+ gboolean active;
+
+ active = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
+ eel_gconf_set_boolean (CONF_BROWSE_WITH_CARET, active);
+}
diff --git a/src/window-commands.h b/src/window-commands.h
index 228434c27..b6aa7505c 100644
--- a/src/window-commands.h
+++ b/src/window-commands.h
@@ -172,3 +172,5 @@ void window_cmd_tabs_detach (GtkAction *action,
void window_cmd_load_location (GtkAction *action,
EphyWindow *window);
+void window_cmd_browse_with_caret (GtkAction *action,
+ EphyWindow *window);