aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Brendan Taylor <whateley@gmail.com>2009-07-09 17:11:03 -0600
committerGravatar Brendan Taylor <whateley@gmail.com>2009-07-09 17:11:03 -0600
commitdf924bde8429a2decf025ed57acd3412aa5355b0 (patch)
tree4917a35df47ccfa9b84ac6b0d3da1643b65aad98
parent1216c4822c70f3bd74f4776a2f4f7ce6e7e206e6 (diff)
@MODE works.
-rw-r--r--tests/test-expand.c6
-rw-r--r--uzbl.c25
-rw-r--r--uzbl.h1
3 files changed, 17 insertions, 15 deletions
diff --git a/tests/test-expand.c b/tests/test-expand.c
index 0613acf..72aef23 100644
--- a/tests/test-expand.c
+++ b/tests/test-expand.c
@@ -80,10 +80,10 @@ test_KEYCMD (void) {
void
test_MODE (void) {
- uzbl.behave.insert_mode = 0;
+ set_insert_mode(FALSE);
g_assert_cmpstr(expand("@MODE", 0, FALSE), ==, "C");
- uzbl.behave.insert_mode = 1;
+ set_insert_mode(TRUE);
g_assert_cmpstr(expand("@MODE", 0, FALSE), ==, "I");
}
@@ -207,7 +207,7 @@ main (int argc, char *argv[]) {
g_test_add_func("/test-expand/@SELECTED_URI", test_SELECTED_URI);
g_test_add_func("/test-expand/@NAME", test_NAME);
// g_test_add_func("/test-expand/@KEYCMD", test_KEYCMD);
-// g_test_add_func("/test-expand/@MODE", test_MODE);
+ g_test_add_func("/test-expand/@MODE", test_MODE);
g_test_add_func("/test-expand/@MSG", test_MSG);
g_test_add_func("/test-expand/@WEBKIT_*", test_WEBKIT_VERSION);
g_test_add_func("/test-expand/@ARCH_UZBL", test_ARCH_UZBL);
diff --git a/uzbl.c b/uzbl.c
index 210e94f..d95dc8c 100644
--- a/uzbl.c
+++ b/uzbl.c
@@ -165,6 +165,7 @@ const struct {
{ "LOAD_PROGRESSBAR", PTR_C(uzbl.gui.sbar.progress_bar, STR, NULL)},
{ "TITLE", PTR_C(uzbl.gui.main_title, STR, NULL)},
{ "SELECTED_URI", PTR_C(uzbl.state.selected_url, STR, NULL)},
+ { "MODE", PTR_C(uzbl.gui.sbar.mode_indicator, STR, NULL)},
{ "MSG", PTR_C(uzbl.gui.sbar.msg, STR, NULL)},
{ "NAME", PTR_C(uzbl.state.instance_name, STR, NULL)},
@@ -729,7 +730,7 @@ load_commit_cb (WebKitWebView* page, WebKitWebFrame* frame, gpointer data) {
GString* newuri = g_string_new (webkit_web_frame_get_uri (frame));
uzbl.state.uri = g_string_free (newuri, FALSE);
if (uzbl.behave.reset_command_mode && uzbl.behave.insert_mode) {
- uzbl.behave.insert_mode = uzbl.behave.always_insert_mode;
+ set_insert_mode(uzbl.behave.always_insert_mode);
update_title();
}
if (uzbl.behave.load_commit_handler)
@@ -884,18 +885,24 @@ act_dump_config() {
dump_config();
}
+void set_insert_mode(gboolean mode) {
+ uzbl.behave.insert_mode = mode;
+ uzbl.gui.sbar.mode_indicator = (mode ?
+ uzbl.behave.insert_indicator : uzbl.behave.cmd_indicator);
+}
+
static void
toggle_insert_mode(WebKitWebView *page, GArray *argv, GString *result) {
(void) page; (void) result;
if (argv_idx(argv, 0)) {
if (strcmp (argv_idx(argv, 0), "0") == 0) {
- uzbl.behave.insert_mode = FALSE;
+ set_insert_mode(FALSE);
} else {
- uzbl.behave.insert_mode = TRUE;
+ set_insert_mode(TRUE);
}
} else {
- uzbl.behave.insert_mode = ! uzbl.behave.insert_mode;
+ set_insert_mode( !uzbl.behave.insert_mode );
}
update_title();
@@ -1266,11 +1273,6 @@ expand_template(const char *template, gboolean escape_markup) {
g_string_append(ret, uzbl.state.keycmd->str?
uzbl.state.keycmd->str:g_strdup(""));
break;
- case SYM_MODE:
- g_string_append(ret,
- uzbl.behave.insert_mode?
- uzbl.behave.insert_indicator:uzbl.behave.cmd_indicator);
- break;
default:
break;
}
@@ -1527,8 +1529,7 @@ cmd_load_uri() {
static void
cmd_always_insert_mode() {
- uzbl.behave.insert_mode =
- uzbl.behave.always_insert_mode ? TRUE : FALSE;
+ set_insert_mode(uzbl.behave.always_insert_mode);
update_title();
}
@@ -2098,7 +2099,7 @@ key_press_cb (GtkWidget* window, GdkEventKey* event)
/* turn off insert mode (if always_insert_mode is not used) */
if (uzbl.behave.insert_mode && (event->keyval == GDK_Escape)) {
- uzbl.behave.insert_mode = uzbl.behave.always_insert_mode;
+ set_insert_mode(uzbl.behave.always_insert_mode);
update_title();
return TRUE;
}
diff --git a/uzbl.h b/uzbl.h
index 83d7871..d6a646c 100644
--- a/uzbl.h
+++ b/uzbl.h
@@ -36,6 +36,7 @@ typedef struct {
gchar *progress_s, *progress_u;
int progress_w;
gchar *progress_bar;
+ gchar *mode_indicator;
} StatusBar;