diff options
author | Brendan Taylor <whateley@gmail.com> | 2011-07-12 21:32:50 +0000 |
---|---|---|
committer | Brendan Taylor <whateley@gmail.com> | 2011-07-12 21:39:35 +0000 |
commit | 44e34a87ca6fc496d9c0a55a40dec98be27d52f6 (patch) | |
tree | 8e1dc09ab7516ab2617b1df7f1ddb243857056de /src | |
parent | fc9604fa60645fe7c6129a76bee273bb501b88e6 (diff) | |
parent | c08cce6f0a92c42c71da012dd38b9f54078a0b06 (diff) |
Merge branch 'tailhook/wm-integ' into experimental
Conflicts:
src/callbacks.c
src/callbacks.h
src/uzbl-core.c
Diffstat (limited to 'src')
-rw-r--r-- | src/uzbl-core.c | 15 | ||||
-rw-r--r-- | src/uzbl-core.h | 1 | ||||
-rw-r--r-- | src/variables.c | 33 | ||||
-rw-r--r-- | src/variables.h | 1 |
4 files changed, 42 insertions, 8 deletions
diff --git a/src/uzbl-core.c b/src/uzbl-core.c index 4965d8f..22a0dda 100644 --- a/src/uzbl-core.c +++ b/src/uzbl-core.c @@ -883,7 +883,7 @@ settings_init () { State* s = &uzbl.state; Network* n = &uzbl.net; int i; - + /* Load default config */ for (i = 0; default_config[i].command != NULL; i++) { parse_cmd_line(default_config[i].command, NULL); @@ -1082,7 +1082,6 @@ main (int argc, char* argv[]) { if (uzbl.state.plug_mode) { uzbl.gui.plug = create_plug(); gtk_container_add (GTK_CONTAINER (uzbl.gui.plug), uzbl.gui.vbox); - gtk_widget_show_all (GTK_WIDGET (uzbl.gui.plug)); /* in xembed mode the window has no unique id and thus * socket/fifo names aren't unique either. * we use a custom randomizer to create a random id @@ -1092,12 +1091,13 @@ main (int argc, char* argv[]) { srand((unsigned int)tv.tv_sec*tv.tv_usec); uzbl.xwin = rand(); } - + /* Windowed mode */ else { uzbl.gui.main_window = create_window(); gtk_container_add (GTK_CONTAINER (uzbl.gui.main_window), uzbl.gui.vbox); - gtk_widget_show_all (uzbl.gui.main_window); + /* We need to ensure there is a window, before we can get XID */ + gtk_widget_realize (GTK_WIDGET (uzbl.gui.main_window)); uzbl.xwin = GDK_WINDOW_XID (gtk_widget_get_window (GTK_WIDGET (uzbl.gui.main_window))); @@ -1172,6 +1172,13 @@ main (int argc, char* argv[]) { g_free(uri_override); } + /* Finally show the window */ + if (uzbl.gui.main_window) { + gtk_widget_show_all (uzbl.gui.main_window); + } else { + gtk_widget_show_all (GTK_WIDGET (uzbl.gui.plug)); + } + /* Verbose feedback */ if (uzbl.state.verbose) { printf("Uzbl start location: %s\n", argv[0]); diff --git a/src/uzbl-core.h b/src/uzbl-core.h index ae0fe49..db9c32e 100644 --- a/src/uzbl-core.h +++ b/src/uzbl-core.h @@ -75,6 +75,7 @@ typedef struct { WebKitWebView* web_view; gchar* main_title; gchar* icon; + gchar* window_role; /* WebInspector */ GtkWidget* inspector_window; diff --git a/src/variables.c b/src/variables.c index 5b717d9..529a850 100644 --- a/src/variables.c +++ b/src/variables.c @@ -45,6 +45,7 @@ const struct var_name_to_ptr_t { { "title_format_long", PTR_V_STR(uzbl.behave.title_format_long, 1, NULL)}, { "title_format_short", PTR_V_STR(uzbl.behave.title_format_short, 1, NULL)}, { "icon", PTR_V_STR(uzbl.gui.icon, 1, set_icon)}, + { "window_role", PTR_V_STR(uzbl.gui.window_role, 1, set_window_role)}, { "forward_keys", PTR_V_INT(uzbl.behave.forward_keys, 1, NULL)}, { "authentication_handler", PTR_V_STR(uzbl.behave.authentication_handler, 1, set_authentication_handler)}, { "scheme_handler", PTR_V_STR(uzbl.behave.scheme_handler, 1, NULL)}, @@ -277,11 +278,20 @@ view_settings() { void uri_change_cb (WebKitWebView *web_view, GParamSpec param_spec) { - (void) param_spec; + (void) param_spec; - g_free (uzbl.state.uri); - g_object_get (web_view, "uri", &uzbl.state.uri, NULL); - g_setenv("UZBL_URI", uzbl.state.uri, TRUE); + g_free (uzbl.state.uri); + g_object_get (web_view, "uri", &uzbl.state.uri, NULL); + g_setenv("UZBL_URI", uzbl.state.uri, TRUE); + + gdk_property_change( + gtk_widget_get_window (GTK_WIDGET (uzbl.gui.main_window)), + gdk_atom_intern_static_string("UZBL_URI"), + gdk_atom_intern_static_string("STRING"), + 8, + GDK_PROP_MODE_REPLACE, + (unsigned char *)uzbl.state.uri, + strlen(uzbl.state.uri)); } void @@ -330,6 +340,15 @@ cmd_load_uri() { soup_uri_free(soup_uri); } + gdk_property_change( + gtk_widget_get_window (GTK_WIDGET (uzbl.gui.main_window)), + gdk_atom_intern_static_string("UZBL_URI"), + gdk_atom_intern_static_string("STRING"), + 8, + GDK_PROP_MODE_REPLACE, + (unsigned char *)newuri, + strlen(newuri)); + webkit_web_view_load_uri (uzbl.gui.web_view, newuri); g_free (newuri); } @@ -479,6 +498,12 @@ set_icon() { } void +set_window_role() { + if (uzbl.gui.main_window) + gtk_window_set_role(GTK_WINDOW (uzbl.gui.main_window), uzbl.gui.window_role); +} + +void cmd_set_geometry() { int ret=0, x=0, y=0; unsigned int w=0, h=0; diff --git a/src/variables.h b/src/variables.h index 035c500..22756eb 100644 --- a/src/variables.h +++ b/src/variables.h @@ -58,6 +58,7 @@ void cmd_enforce_96dpi(); void cmd_inject_html(); void cmd_caret_browsing(); void cmd_javascript_windows(); +void set_window_role(); void cmd_set_geometry(); void cmd_view_source(); void cmd_scrollbars_visibility(); |