aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Brendan Taylor <whateley@gmail.com>2011-07-12 21:32:50 +0000
committerGravatar Brendan Taylor <whateley@gmail.com>2011-07-12 21:39:35 +0000
commit44e34a87ca6fc496d9c0a55a40dec98be27d52f6 (patch)
tree8e1dc09ab7516ab2617b1df7f1ddb243857056de /src
parentfc9604fa60645fe7c6129a76bee273bb501b88e6 (diff)
parentc08cce6f0a92c42c71da012dd38b9f54078a0b06 (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.c15
-rw-r--r--src/uzbl-core.h1
-rw-r--r--src/variables.c33
-rw-r--r--src/variables.h1
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();