aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--callbacks.c17
-rw-r--r--callbacks.h3
-rw-r--r--events.c4
-rw-r--r--events.h1
-rw-r--r--uzbl-core.c8
5 files changed, 29 insertions, 4 deletions
diff --git a/callbacks.c b/callbacks.c
index 593fdac..0058868 100644
--- a/callbacks.c
+++ b/callbacks.c
@@ -452,11 +452,26 @@ configure_event_cb(GtkWidget* window, GdkEventConfigure* event) {
(void) event;
retrieve_geometry();
- send_event(GEOMETRY_CHANGED, uzbl.gui.geometry, NULL);
+ /* TODO: Do we need this? */
+ //send_event(GEOMETRY_CHANGED, uzbl.gui.geometry, NULL);
return FALSE;
}
gboolean
+focus_cb(GtkWidget* window, GdkEventFocus* event, void *ud) {
+ (void) window;
+ (void) event;
+ (void) ud;
+
+ if(event->in)
+ send_event(FOCUS_GAINED, "", NULL);
+ else
+ send_event(FOCUS_LOST, "", NULL);
+
+ return TRUE;
+}
+
+gboolean
key_press_cb (GtkWidget* window, GdkEventKey* event) {
(void) window;
diff --git a/callbacks.h b/callbacks.h
index 7222eaf..72361ba 100644
--- a/callbacks.h
+++ b/callbacks.h
@@ -192,3 +192,6 @@ populate_popup_cb(WebKitWebView *v, GtkMenu *m, void *c);
gboolean
button_press_cb (GtkWidget* window, GdkEventButton* event);
+gboolean
+focus_cb(GtkWidget* window, GdkEventFocus* event, void *ud);
+
diff --git a/events.c b/events.c
index 76c0055..966cd15 100644
--- a/events.c
+++ b/events.c
@@ -37,7 +37,9 @@ const char *event_table[LAST_EVENT] = {
"LOAD_PROGRESS" ,
"LINK_UNHOVER" ,
"FORM_ACTIVE" ,
- "ROOT_ACTIVE"
+ "ROOT_ACTIVE" ,
+ "FOCUS_LOST" ,
+ "FOCUS_GAINED"
};
void
diff --git a/events.h b/events.h
index 551496e..9a3225b 100644
--- a/events.h
+++ b/events.h
@@ -12,6 +12,7 @@ enum event_type {
VARIABLE_SET, FIFO_SET, SOCKET_SET,
INSTANCE_START, INSTANCE_EXIT, LOAD_PROGRESS,
LINK_UNHOVER, FORM_ACTIVE, ROOT_ACTIVE,
+ FOCUS_LOST, FOCUS_GAINED,
/* must be last entry */
LAST_EVENT
diff --git a/uzbl-core.c b/uzbl-core.c
index ef9852b..25a0054 100644
--- a/uzbl-core.c
+++ b/uzbl-core.c
@@ -1896,7 +1896,7 @@ create_browser () {
g_object_connect((GObject*)g->web_view,
"signal::key-press-event", (GCallback)key_press_cb, NULL,
"signal::key-release-event", (GCallback)key_release_cb, NULL,
- "signal::button-press-event", (GCallback)button_press_cb, NULL,
+ "signal::button-press-event", (GCallback)button_press_cb, NULL,
"signal::title-changed", (GCallback)title_change_cb, NULL,
"signal::selection-changed", (GCallback)selection_changed_cb, NULL,
"signal::load-progress-changed", (GCallback)progress_change_cb, NULL,
@@ -1911,6 +1911,8 @@ create_browser () {
"signal::create-web-view", (GCallback)create_web_view_cb, NULL,
"signal::mime-type-policy-decision-requested", (GCallback)mime_policy_cb, NULL,
"signal::populate-popup", (GCallback)populate_popup_cb, NULL,
+ "signal::focus-in-event", (GCallback)focus_cb, NULL,
+ "signal::focus-out-event", (GCallback)focus_cb, NULL,
NULL);
}
@@ -1934,12 +1936,14 @@ create_mainbar () {
return g->mainbar;
}
+
GtkWidget*
create_window () {
GtkWidget* window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size (GTK_WINDOW (window), 800, 600);
gtk_widget_set_name (window, "Uzbl browser");
- g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (destroy_cb), NULL);
+ g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (destroy_cb), NULL);
+ g_signal_connect (G_OBJECT (window), "configure-event", G_CALLBACK (configure_event_cb), NULL);
return window;
}