[Xfce4-commits] <midori:master> Re-implement block-uris and inactivity-reset as settings
Christian Dywan
noreply at xfce.org
Sun Nov 25 12:06:05 CET 2012
Updating branch refs/heads/master
to bb89ba3c8c0e7beea2fa8841600fb9c337f77b96 (commit)
from ad05b70604091fa410b2e5b96dff7c0d0159e756 (commit)
commit bb89ba3c8c0e7beea2fa8841600fb9c337f77b96
Author: Christian Dywan <christian at twotoasts.de>
Date: Fri Nov 23 22:17:14 2012 +0100
Re-implement block-uris and inactivity-reset as settings
Both can now be used without a custom command line and
in all runtime modes.
midori/main.c | 119 +++---------------------------------------
midori/midori-browser.c | 72 ++++++++++++++++++++++++++
midori/midori-browser.h | 4 ++
midori/midori-settings.vala | 21 ++++++++
midori/midori-websettings.c | 2 +-
5 files changed, 107 insertions(+), 111 deletions(-)
diff --git a/midori/main.c b/midori/main.c
index ec2a410..6d1c69f 100644
--- a/midori/main.c
+++ b/midori/main.c
@@ -46,13 +46,6 @@
#include <signal.h>
#endif
-#ifdef HAVE_X11_EXTENSIONS_SCRNSAVER_H
- #include <X11/Xlib.h>
- #include <X11/Xutil.h>
- #include <X11/extensions/scrnsaver.h>
- #include <gdk/gdkx.h>
-#endif
-
static void
midori_history_clear_cb (KatzeArray* array,
sqlite3* db)
@@ -948,94 +941,6 @@ signal_handler (int signal_id)
}
#endif
-static void
-midori_soup_session_block_uris_cb (SoupSession* session,
- SoupMessage* msg,
- gchar* blocked_uris)
-{
- static GRegex* regex = NULL;
- SoupURI* soup_uri;
- gchar* uri;
- if (!regex)
- regex = g_regex_new (blocked_uris, 0, 0, NULL);
- soup_uri = soup_message_get_uri (msg);
- uri = soup_uri_to_string (soup_uri, FALSE);
- if (g_regex_match (regex, uri, 0, 0))
- {
- soup_uri = soup_uri_new ("http://.invalid");
- soup_message_set_uri (msg, soup_uri);
- soup_uri_free (soup_uri);
- }
- g_free (uri);
-}
-
-typedef struct {
- MidoriBrowser* browser;
- guint timeout;
- gchar* uri;
-} MidoriInactivityTimeout;
-
-static gboolean
-midori_inactivity_timeout (gpointer data)
-{
- #ifdef HAVE_X11_EXTENSIONS_SCRNSAVER_H
- MidoriInactivityTimeout* mit = data;
- static Display* xdisplay = NULL;
- static XScreenSaverInfo* mit_info = NULL;
- static int has_extension = -1;
- int event_base, error_base;
-
- if (has_extension == -1)
- {
- GdkDisplay* display = gtk_widget_get_display (GTK_WIDGET (mit->browser));
- if (GDK_IS_X11_DISPLAY (display))
- {
- xdisplay = GDK_DISPLAY_XDISPLAY (display);
- has_extension = XScreenSaverQueryExtension (xdisplay,
- &event_base, &error_base);
- }
- else
- {
- has_extension = 0;
- }
- }
-
- if (has_extension)
- {
- if (!mit_info)
- mit_info = XScreenSaverAllocInfo ();
-
- XScreenSaverQueryInfo (xdisplay, RootWindow (xdisplay, 0), mit_info);
- if (mit_info->idle / 1000 > mit->timeout)
- {
- GtkWidget* view;
- midori_browser_set_current_uri (mit->browser, mit->uri);
- midori_private_data_clear_all (mit->browser);
- }
- }
- #else
- /* TODO: Implement for other windowing systems */
- #endif
-
- return TRUE;
-}
-
-static void
-midori_setup_inactivity_reset (MidoriBrowser* browser,
- gint inactivity_reset,
- const gchar* uri)
-{
- if (inactivity_reset > 0)
- {
- MidoriInactivityTimeout* mit = g_new (MidoriInactivityTimeout, 1);
- mit->browser = browser;
- mit->timeout = inactivity_reset;
- mit->uri = g_strdup (uri);
- g_timeout_add_seconds (inactivity_reset, midori_inactivity_timeout,
- mit);
- }
-}
-
int
main (int argc,
char** argv)
@@ -1372,10 +1277,6 @@ main (int argc,
}
midori_load_soup_session (settings);
- if (block_uris)
- g_signal_connect (session, "request-queued",
- G_CALLBACK (midori_soup_session_block_uris_cb),
- g_strdup (block_uris));
if (run)
{
@@ -1436,6 +1337,8 @@ main (int argc,
g_object_set (settings, "show-panel", FALSE,
"last-window-state", MIDORI_WINDOW_NORMAL,
+ "inactivity-reset", inactivity_reset,
+ "block-uris", block_uris,
NULL);
midori_browser_set_action_visible (browser, "Panel", FALSE);
g_object_set (browser, "settings", settings, NULL);
@@ -1472,15 +1375,11 @@ main (int argc,
if (midori_browser_get_current_uri (browser) == NULL)
midori_browser_add_uri (browser, "about:blank");
- midori_setup_inactivity_reset (browser, inactivity_reset, webapp);
midori_startup_timer ("App created: \t%f");
gtk_main ();
return 0;
}
- /* FIXME: Inactivity reset is only supported for app mode */
- if (inactivity_reset > 0)
- g_error ("--inactivity-reset is currently only supported with --app.");
if (portable)
{
@@ -1522,8 +1421,13 @@ main (int argc,
error_messages = g_string_new (NULL);
error = NULL;
settings = midori_settings_new_full (&extensions);
- g_object_set (settings, "enable-developer-extras", TRUE, NULL);
- g_object_set (settings, "enable-html5-database", TRUE, NULL);
+ g_object_set (settings,
+ "enable-developer-extras", TRUE,
+ "enable-html5-database", TRUE,
+ "block-uris", block_uris,
+ NULL);
+ if (inactivity_reset > 0)
+ g_object_set (settings, "inactivity-reset", inactivity_reset, NULL);
midori_startup_timer ("Config and accels read: \t%f");
/* Load search engines */
@@ -1695,11 +1599,6 @@ main (int argc,
if (execute)
g_object_set_data (G_OBJECT (app), "execute-command", uris);
- if (block_uris)
- g_signal_connect (webkit_get_default_session (), "request-queued",
- G_CALLBACK (midori_soup_session_block_uris_cb),
- g_strdup (block_uris));
-
gtk_main ();
diff --git a/midori/midori-browser.c b/midori/midori-browser.c
index 1ad0218..d8f239b 100644
--- a/midori/midori-browser.c
+++ b/midori/midori-browser.c
@@ -62,6 +62,13 @@
#include <sqlite3.h>
+#ifdef HAVE_X11_EXTENSIONS_SCRNSAVER_H
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+ #include <X11/extensions/scrnsaver.h>
+ #include <gdk/gdkx.h>
+#endif
+
struct _MidoriBrowser
{
#if HAVE_HILDON
@@ -5553,6 +5560,65 @@ static const GtkRadioActionEntry encoding_entries[] =
};
static const guint encoding_entries_n = G_N_ELEMENTS (encoding_entries);
+typedef struct {
+ MidoriBrowser* browser;
+ guint timeout;
+} MidoriInactivityTimeout;
+
+static gboolean
+midori_inactivity_timeout (gpointer data)
+{
+ #ifdef HAVE_X11_EXTENSIONS_SCRNSAVER_H
+ MidoriInactivityTimeout* mit = data;
+ static Display* xdisplay = NULL;
+ static XScreenSaverInfo* mit_info = NULL;
+ static int has_extension = -1;
+ int event_base, error_base;
+
+ if (has_extension == -1)
+ {
+ GdkDisplay* display = gtk_widget_get_display (GTK_WIDGET (mit->browser));
+ if (GDK_IS_X11_DISPLAY (display))
+ {
+ xdisplay = GDK_DISPLAY_XDISPLAY (display);
+ has_extension = XScreenSaverQueryExtension (xdisplay, &event_base, &error_base);
+ }
+ else
+ has_extension = 0;
+ }
+
+ if (has_extension)
+ {
+ if (!mit_info)
+ mit_info = XScreenSaverAllocInfo ();
+ XScreenSaverQueryInfo (xdisplay, RootWindow (xdisplay, 0), mit_info);
+ if (mit_info->idle / 1000 > mit->timeout)
+ {
+ GtkWidget* view;
+ midori_private_data_clear_all (mit->browser);
+ midori_browser_activate_action (mit->browser, "Homepage");
+ }
+ }
+ #else
+ /* TODO: Implement for other windowing systems */
+ #endif
+
+ return TRUE;
+}
+
+void
+midori_browser_set_inactivity_reset (MidoriBrowser* browser,
+ gint inactivity_reset)
+{
+ if (inactivity_reset > 0)
+ {
+ MidoriInactivityTimeout* mit = g_new (MidoriInactivityTimeout, 1);
+ mit->browser = browser;
+ mit->timeout = inactivity_reset;
+ g_timeout_add_seconds (inactivity_reset, midori_inactivity_timeout, mit);
+ }
+}
+
static void
midori_browser_window_state_event_cb (MidoriBrowser* browser,
GdkEventWindowState* event)
@@ -6841,6 +6907,7 @@ _midori_browser_update_settings (MidoriBrowser* browser)
{
gboolean remember_last_window_size;
MidoriWindowState last_window_state;
+ guint inactivity_reset;
gboolean compact_sidepanel;
gboolean right_align_sidepanel, open_panels_in_windows;
gint last_panel_position, last_panel_page;
@@ -6859,6 +6926,7 @@ _midori_browser_update_settings (MidoriBrowser* browser)
"last-window-width", &browser->last_window_width,
"last-window-height", &browser->last_window_height,
"last-window-state", &last_window_state,
+ "inactivity-reset", &inactivity_reset,
"compact-sidepanel", &compact_sidepanel,
"right-align-sidepanel", &right_align_sidepanel,
"open-panels-in-windows", &open_panels_in_windows,
@@ -6887,6 +6955,8 @@ _midori_browser_update_settings (MidoriBrowser* browser)
midori_speed_dial_set_close_buttons_left (browser->dial,
katze_object_get_boolean (browser->settings, "close-buttons-left"));
+ midori_browser_set_inactivity_reset (browser, inactivity_reset);
+
if (remember_last_window_size)
{
if (browser->last_window_width && browser->last_window_height)
@@ -7030,6 +7100,8 @@ midori_browser_settings_notify (MidoriWebSettings* web_settings,
midori_speed_dial_set_close_buttons_left (browser->dial,
katze_object_get_boolean (browser->settings, "close-buttons-left"));
}
+ else if (name == g_intern_string ("inactivity-reset"))
+ midori_browser_set_inactivity_reset (browser, g_value_get_uint (&value));
else if (!g_object_class_find_property (G_OBJECT_GET_CLASS (web_settings),
name))
g_warning (_("Unexpected setting '%s'"), name);
diff --git a/midori/midori-browser.h b/midori/midori-browser.h
index 211d342..5353714 100644
--- a/midori/midori-browser.h
+++ b/midori/midori-browser.h
@@ -194,6 +194,10 @@ midori_browser_save_uri (MidoriBrowser* browser,
MidoriView* view,
const gchar* uri);
+void
+midori_browser_set_inactivity_reset (MidoriBrowser* browser,
+ gint inactivity_reset);
+
G_END_DECLS
#endif /* __MIDORI_BROWSER_H__ */
diff --git a/midori/midori-settings.vala b/midori/midori-settings.vala
index 70d213c..9ed0810 100644
--- a/midori/midori-settings.vala
+++ b/midori/midori-settings.vala
@@ -35,6 +35,27 @@ namespace Midori {
/* Since: 0.1.3 */
public WindowState last_window_state { get; set; default = WindowState.NORMAL; }
+ /* Since: 0.4.8 */
+ public uint inactivity_reset { get; set; default = 0; }
+
+ GLib.Regex block_uris_regex;
+ /* Since: 0.4.8 */
+ public string? block_uris { get {
+ return block_uris_regex.get_pattern ();
+ } set {
+ if (block_uris_regex == null)
+ WebKit.get_default_session ().request_queued.connect ((msg) => {
+ if (block_uris_regex.match (msg.uri.to_string (false)))
+ msg.uri = new Soup.URI ("http://.invalid");
+ });
+ try {
+ block_uris_regex = new GLib.Regex (value);
+ }
+ catch (Error error) {
+ critical ("block-uris: %s", error.message);
+ }
+ } default = null; }
+
public string? location_entry_search { get; set; default = null; }
/* Since: 0.1.7 */
public int clear_private_data { get; set; default = 0; }
diff --git a/midori/midori-websettings.c b/midori/midori-websettings.c
index b1ef0fc..03a0bbf 100644
--- a/midori/midori-websettings.c
+++ b/midori/midori-websettings.c
@@ -1333,7 +1333,7 @@ midori_settings_new_full (gchar*** extensions)
g_object_set (settings, property, str, NULL);
g_free (str);
}
- else if (type == G_TYPE_PARAM_INT)
+ else if (type == G_TYPE_PARAM_INT || type == G_TYPE_PARAM_UINT)
{
integer = g_key_file_get_integer (key_file, "settings", property, NULL);
g_object_set (settings, property, integer, NULL);
More information about the Xfce4-commits
mailing list