diff options
Diffstat (limited to 'embed')
-rw-r--r-- | embed/ephy-base-embed.c | 821 | ||||
-rw-r--r-- | embed/ephy-base-embed.h | 32 |
2 files changed, 391 insertions, 462 deletions
diff --git a/embed/ephy-base-embed.c b/embed/ephy-base-embed.c index add2b6604..d57ac9b11 100644 --- a/embed/ephy-base-embed.c +++ b/embed/ephy-base-embed.c @@ -1,4 +1,4 @@ -/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2; -*- */ /* * Copyright © 2000-2004 Marco Pesenti Gritti * Copyright © 2003-2007 Christian Persch @@ -43,8 +43,7 @@ #define RELOAD_DELAY 250 /* ms */ #define RELOAD_DELAY_MAX_TICKS 40 /* RELOAD_DELAY * RELOAD_DELAY_MAX_TICKS = 10 s */ -struct _EphyBaseEmbedPrivate -{ +struct _EphyBaseEmbedPrivate { EphyEmbedAddressExpire address_expire; /* guint address_expire : 2; ? */ EphyEmbedSecurityLevel security_level; @@ -80,33 +79,31 @@ struct _EphyBaseEmbedPrivate }; #if 0 -typedef struct -{ +typedef struct { char *url; char *name; char *features; } PopupInfo; #endif -enum - { - PROP_0, - PROP_ADDRESS, - PROP_DOCUMENT_TYPE, - PROP_HIDDEN_POPUP_COUNT, - PROP_ICON, - PROP_ICON_ADDRESS, - PROP_LINK_MESSAGE, - PROP_LOAD_PROGRESS, - PROP_LOAD_STATUS, - PROP_NAVIGATION, - PROP_POPUPS_ALLOWED, - PROP_SECURITY, - PROP_STATUS_MESSAGE, - PROP_TITLE, - PROP_TYPED_ADDRESS, - PROP_ZOOM - }; +enum { + PROP_0, + PROP_ADDRESS, + PROP_DOCUMENT_TYPE, + PROP_HIDDEN_POPUP_COUNT, + PROP_ICON, + PROP_ICON_ADDRESS, + PROP_LINK_MESSAGE, + PROP_LOAD_PROGRESS, + PROP_LOAD_STATUS, + PROP_NAVIGATION, + PROP_POPUPS_ALLOWED, + PROP_SECURITY, + PROP_STATUS_MESSAGE, + PROP_TITLE, + PROP_TYPED_ADDRESS, + PROP_ZOOM +}; #define EPHY_BASE_EMBED_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), EPHY_TYPE_BASE_EMBED, EphyBaseEmbedPrivate)) @@ -129,11 +126,10 @@ ephy_base_embed_size_request (GtkWidget *widget, child = GTK_BIN (widget)->child; - if (child && GTK_WIDGET_VISIBLE (child)) - { - GtkRequisition child_requisition; - gtk_widget_size_request (GTK_WIDGET (child), &child_requisition); - } + if (child && GTK_WIDGET_VISIBLE (child)) { + GtkRequisition child_requisition; + gtk_widget_size_request (GTK_WIDGET (child), &child_requisition); + } } static void @@ -161,25 +157,22 @@ impl_set_typed_address (EphyEmbed *embed, priv->typed_address = g_strdup (address); if (expire == EPHY_EMBED_ADDRESS_EXPIRE_CURRENT && - !priv->is_loading) - { - priv->address_expire = EPHY_EMBED_ADDRESS_EXPIRE_NOW; - } - else - { - priv->address_expire = expire; - } + !priv->is_loading) { + priv->address_expire = EPHY_EMBED_ADDRESS_EXPIRE_NOW; + } else { + priv->address_expire = expire; + } g_object_notify (G_OBJECT (embed), "typed-address"); } -static const char* +static const char * impl_get_typed_address (EphyEmbed *embed) { return EPHY_BASE_EMBED (embed)->priv->typed_address; } -static const char* +static const char * impl_get_loading_title (EphyEmbed *embed) { EphyBaseEmbedPrivate *priv = EPHY_BASE_EMBED (embed)->priv; @@ -195,13 +188,13 @@ impl_get_is_blank (EphyEmbed *embed) return priv->is_blank; } -static const char* +static const char * impl_get_icon_address (EphyEmbed *embed) { return EPHY_BASE_EMBED (embed)->priv->icon_address; } -static GdkPixbuf* +static GdkPixbuf * impl_get_icon (EphyEmbed *embed) { return EPHY_BASE_EMBED (embed)->priv->icon; @@ -237,33 +230,28 @@ impl_get_navigation_flags (EphyEmbed *embed) return EPHY_BASE_EMBED (embed)->priv->nav_flags; } -static const char* +static const char * impl_get_address (EphyEmbed *embed) { EphyBaseEmbedPrivate *priv = EPHY_BASE_EMBED (embed)->priv; return priv->address ? priv->address : "about:blank"; } -static const char* +static const char * impl_get_status_message (EphyEmbed *embed) { EphyBaseEmbedPrivate *priv = EPHY_BASE_EMBED (embed)->priv; - if (priv->link_message && priv->link_message[0] != '\0') - { - return priv->link_message; - } - else if (priv->status_message) - { - return priv->status_message; - } - else - { - return NULL; - } + if (priv->link_message && priv->link_message[0] != '\0') { + return priv->link_message; + } else if (priv->status_message) { + return priv->status_message; + } else { + return NULL; + } } -static const char* +static const char * impl_get_link_message (EphyEmbed *embed) { return EPHY_BASE_EMBED (embed)->priv->link_message; @@ -275,8 +263,7 @@ ephy_base_embed_set_property (GObject *object, const GValue *value, GParamSpec *pspec) { - switch (prop_id) - { + switch (prop_id) { case PROP_ICON_ADDRESS: ephy_base_embed_set_icon_address (EPHY_BASE_EMBED (object), g_value_get_string (value)); break; @@ -303,7 +290,7 @@ ephy_base_embed_set_property (GObject *object, break; default: break; - } + } } static void @@ -314,8 +301,7 @@ ephy_base_embed_get_property (GObject *object, { EphyBaseEmbedPrivate *priv = EPHY_BASE_EMBED (object)->priv; - switch (prop_id) - { + switch (prop_id) { case PROP_ADDRESS: g_value_set_string (value, priv->address); break; @@ -365,7 +351,7 @@ ephy_base_embed_get_property (GObject *object, break; default: break; - } + } } static void @@ -450,7 +436,7 @@ ephy_base_embed_class_init (EphyBaseEmbedClass *klass) g_param_spec_string ("title", "Title", "The embed's title", - _("Blank page"), + _ ("Blank page"), G_PARAM_READABLE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB)); g_object_class_install_property (gobject_class, PROP_STATUS_MESSAGE, @@ -515,10 +501,9 @@ icon_cache_changed_cb (EphyFaviconCache *cache, /* is this for us? */ if (icon_address != NULL && - strcmp (icon_address, address) == 0) - { - ephy_base_embed_load_icon (EPHY_BASE_EMBED (embed)); - } + strcmp (icon_address, address) == 0) { + ephy_base_embed_load_icon (EPHY_BASE_EMBED (embed)); + } } static void @@ -526,12 +511,11 @@ ge_document_type_cb (EphyEmbed *embed, EphyEmbedDocumentType type, EphyBaseEmbed *bembed) { - if (bembed->priv->document_type != type) - { - bembed->priv->document_type = type; + if (bembed->priv->document_type != type) { + bembed->priv->document_type = type; - g_object_notify (G_OBJECT (embed), "document-type"); - } + g_object_notify (G_OBJECT (embed), "document-type"); + } } static gboolean @@ -559,36 +543,32 @@ ge_zoom_change_cb (EphyEmbed *embed, { char *address; - if (bembed->priv->zoom != zoom) - { - if (bembed->priv->is_setting_zoom) - { - return; - } - - address = ephy_embed_get_location (embed, TRUE); - if (address_has_web_scheme (address)) - { - EphyHistory *history; - EphyNode *host; - history = EPHY_HISTORY - (ephy_embed_shell_get_global_history (embed_shell)); - host = ephy_history_get_host (history, address); - - if (host != NULL) - { - ephy_node_set_property_float (host, - EPHY_NODE_HOST_PROP_ZOOM, - zoom); - } - } - - g_free (address); - - bembed->priv->zoom = zoom; - - g_object_notify (G_OBJECT (embed), "zoom"); + if (bembed->priv->zoom != zoom) { + if (bembed->priv->is_setting_zoom) { + return; + } + + address = ephy_embed_get_location (embed, TRUE); + if (address_has_web_scheme (address)) { + EphyHistory *history; + EphyNode *host; + history = EPHY_HISTORY + (ephy_embed_shell_get_global_history (embed_shell)); + host = ephy_history_get_host (history, address); + + if (host != NULL) { + ephy_node_set_property_float (host, + EPHY_NODE_HOST_PROP_ZOOM, + zoom); + } } + + g_free (address); + + bembed->priv->zoom = zoom; + + g_object_notify (G_OBJECT (embed), "zoom"); + } } static void @@ -609,18 +589,18 @@ ephy_base_embed_init (EphyBaseEmbed *self) g_signal_connect_object (self, "ge_document_type", G_CALLBACK (ge_document_type_cb), - self, (GConnectFlags) 0); + self, (GConnectFlags)0); g_signal_connect_object (self, "ge_zoom_change", G_CALLBACK (ge_zoom_change_cb), - self, (GConnectFlags) 0); + self, (GConnectFlags)0); g_signal_connect_object (self, "ge_favicon", G_CALLBACK (ge_favicon_cb), self, (GConnectFlags)0); cache = EPHY_FAVICON_CACHE - (ephy_embed_shell_get_favicon_cache (embed_shell)); + (ephy_embed_shell_get_favicon_cache (embed_shell)); g_signal_connect_object (G_OBJECT (cache), "changed", G_CALLBACK (icon_cache_changed_cb), self, (GConnectFlags)0); @@ -645,11 +625,10 @@ ephy_base_embed_finalize (GObject *object) { EphyBaseEmbedPrivate *priv = EPHY_BASE_EMBED (object)->priv; - if (priv->icon != NULL) - { - g_object_unref (priv->icon); - priv->icon = NULL; - } + if (priv->icon != NULL) { + g_object_unref (priv->icon); + priv->icon = NULL; + } #if 0 popups_manager_reset (embed); @@ -695,17 +674,16 @@ ephy_base_embed_set_address (EphyBaseEmbed *embed, char *address) priv->address = address; priv->is_blank = address == NULL || - strcmp (address, "about:blank") == 0; + strcmp (address, "about:blank") == 0; if (priv->is_loading && priv->address_expire == EPHY_EMBED_ADDRESS_EXPIRE_NOW && - priv->typed_address != NULL) - { - g_free (priv->typed_address); - priv->typed_address = NULL; + priv->typed_address != NULL) { + g_free (priv->typed_address); + priv->typed_address = NULL; - g_object_notify (object, "typed-address"); - } + g_object_notify (object, "typed-address"); + } g_object_notify (object, "address"); } @@ -739,24 +717,20 @@ ephy_base_embed_set_title (EphyBaseEmbed *embed, { EphyBaseEmbedPrivate *priv = embed->priv; - if (!priv->is_blank && (title == NULL || g_strstrip (title)[0] == '\0')) - { - g_free (title); - title = get_title_from_address (priv->address); - - /* Fallback */ - if (title == NULL || title[0] == '\0') - { - g_free (title); - title = NULL; - priv->is_blank = TRUE; - } - } - else if (priv->is_blank && title != NULL) - { + if (!priv->is_blank && (title == NULL || g_strstrip (title)[0] == '\0')) { + g_free (title); + title = get_title_from_address (priv->address); + + /* Fallback */ + if (title == NULL || title[0] == '\0') { g_free (title); title = NULL; + priv->is_blank = TRUE; } + } else if (priv->is_blank && title != NULL) { + g_free (title); + title = NULL; + } g_free (priv->title); priv->title = ephy_string_shorten (title, MAX_TITLE_LENGTH); @@ -770,16 +744,14 @@ ensure_page_info (EphyBaseEmbed *embed, const char *address) EphyBaseEmbedPrivate *priv = embed->priv; if ((priv->address == NULL || priv->address[0] == '\0') && - priv->address_expire == EPHY_EMBED_ADDRESS_EXPIRE_NOW) - { - ephy_base_embed_set_address (embed, g_strdup (address)); - } + priv->address_expire == EPHY_EMBED_ADDRESS_EXPIRE_NOW) { + ephy_base_embed_set_address (embed, g_strdup (address)); + } /* FIXME huh?? */ - if (priv->title == NULL || priv->title[0] == '\0') - { - ephy_base_embed_set_title (embed, NULL); - } + if (priv->title == NULL || priv->title[0] == '\0') { + ephy_base_embed_set_title (embed, NULL); + } } static void update_net_state_message (EphyBaseEmbed *embed, const char *uri, EphyEmbedNetState flags) @@ -788,66 +760,52 @@ update_net_state_message (EphyBaseEmbed *embed, const char *uri, EphyEmbedNetSta const char *msg = NULL; const char *host = NULL; - if (uri != NULL) - { - vfs_uri = gnome_vfs_uri_new (uri); - } + if (uri != NULL) { + vfs_uri = gnome_vfs_uri_new (uri); + } - if (vfs_uri != NULL) - { - host = gnome_vfs_uri_get_host_name (vfs_uri); - } + if (vfs_uri != NULL) { + host = gnome_vfs_uri_get_host_name (vfs_uri); + } if (host == NULL || host[0] == '\0') goto out; /* IS_REQUEST and IS_NETWORK can be both set */ - if (flags & EPHY_EMBED_STATE_IS_REQUEST) - { - if (flags & EPHY_EMBED_STATE_REDIRECTING) - { - msg = _("Redirecting to “%s”…"); - } - else if (flags & EPHY_EMBED_STATE_TRANSFERRING) - { - msg = _("Transferring data from “%s”…"); - } - else if (flags & EPHY_EMBED_STATE_NEGOTIATING) - { - msg = _("Waiting for authorization from “%s”…"); - } + if (flags & EPHY_EMBED_STATE_IS_REQUEST) { + if (flags & EPHY_EMBED_STATE_REDIRECTING) { + msg = _ ("Redirecting to “%s”…"); + } else if (flags & EPHY_EMBED_STATE_TRANSFERRING) { + msg = _ ("Transferring data from “%s”…"); + } else if (flags & EPHY_EMBED_STATE_NEGOTIATING) { + msg = _ ("Waiting for authorization from “%s”…"); } + } - if (flags & EPHY_EMBED_STATE_IS_NETWORK) - { - if (flags & EPHY_EMBED_STATE_START) - { - msg = _("Loading “%s”…"); - } + if (flags & EPHY_EMBED_STATE_IS_NETWORK) { + if (flags & EPHY_EMBED_STATE_START) { + msg = _ ("Loading “%s”…"); } + } if ((flags & EPHY_EMBED_STATE_IS_NETWORK) && - (flags & EPHY_EMBED_STATE_STOP)) - { - g_free (embed->priv->status_message); - embed->priv->status_message = NULL; - g_object_notify (G_OBJECT (embed), "status-message"); - - } - else if (msg != NULL) - { - g_free (embed->priv->status_message); - g_free (embed->priv->loading_title); - embed->priv->status_message = g_strdup_printf (msg, host); - embed->priv->loading_title = g_strdup_printf (msg, host); - g_object_notify (G_OBJECT (embed), "status-message"); - g_object_notify (G_OBJECT (embed), "title"); - } + (flags & EPHY_EMBED_STATE_STOP)) { + g_free (embed->priv->status_message); + embed->priv->status_message = NULL; + g_object_notify (G_OBJECT (embed), "status-message"); + + } else if (msg != NULL) { + g_free (embed->priv->status_message); + g_free (embed->priv->loading_title); + embed->priv->status_message = g_strdup_printf (msg, host); + embed->priv->loading_title = g_strdup_printf (msg, host); + g_object_notify (G_OBJECT (embed), "status-message"); + g_object_notify (G_OBJECT (embed), "title"); + } out: - if (vfs_uri != NULL) - { - gnome_vfs_uri_unref (vfs_uri); - } + if (vfs_uri != NULL) { + gnome_vfs_uri_unref (vfs_uri); + } } static void @@ -857,39 +815,34 @@ update_navigation_flags (EphyBaseEmbed *membed) EphyEmbed *embed = EPHY_EMBED (membed); guint flags = 0; - if (ephy_embed_can_go_up (embed)) - { - flags |= EPHY_EMBED_NAV_UP; - } + if (ephy_embed_can_go_up (embed)) { + flags |= EPHY_EMBED_NAV_UP; + } - if (ephy_embed_can_go_back (embed)) - { - flags |= EPHY_EMBED_NAV_BACK; - } + if (ephy_embed_can_go_back (embed)) { + flags |= EPHY_EMBED_NAV_BACK; + } - if (ephy_embed_can_go_forward (embed)) - { - flags |= EPHY_EMBED_NAV_FORWARD; - } + if (ephy_embed_can_go_forward (embed)) { + flags |= EPHY_EMBED_NAV_FORWARD; + } - if (priv->nav_flags != (EphyEmbedNavigationFlags)flags) - { - priv->nav_flags = (EphyEmbedNavigationFlags)flags; + if (priv->nav_flags != (EphyEmbedNavigationFlags)flags) { + priv->nav_flags = (EphyEmbedNavigationFlags)flags; - g_object_notify (G_OBJECT (embed), "navigation"); - } + g_object_notify (G_OBJECT (embed), "navigation"); + } } static int build_load_percent (int requests_done, int requests_total) { - int percent= 0; + int percent = 0; - if (requests_total > 0) - { - percent = (requests_done * 100) / requests_total; - percent = CLAMP (percent, 0, 100); - } + if (requests_total > 0) { + percent = (requests_done * 100) / requests_total; + percent = CLAMP (percent, 0, 100); + } return percent; } @@ -899,12 +852,11 @@ ephy_base_embed_set_load_percent (EphyBaseEmbed *embed, int percent) { EphyBaseEmbedPrivate *priv = embed->priv; - if (percent != priv->load_percent) - { - priv->load_percent = percent; + if (percent != priv->load_percent) { + priv->load_percent = percent; - g_object_notify (G_OBJECT (embed), "load-progress"); - } + g_object_notify (G_OBJECT (embed), "load-progress"); + } } static void @@ -912,22 +864,18 @@ build_progress_from_requests (EphyBaseEmbed *embed, EphyEmbedNetState state) { int load_percent; - if (state & EPHY_EMBED_STATE_IS_REQUEST) - { - if (state & EPHY_EMBED_STATE_START) - { - embed->priv->total_requests ++; - } - else if (state & EPHY_EMBED_STATE_STOP) - { - embed->priv->cur_requests ++; - } - - load_percent = build_load_percent (embed->priv->cur_requests, - embed->priv->total_requests); - - ephy_base_embed_set_load_percent (embed, load_percent); + if (state & EPHY_EMBED_STATE_IS_REQUEST) { + if (state & EPHY_EMBED_STATE_START) { + embed->priv->total_requests++; + } else if (state & EPHY_EMBED_STATE_STOP) { + embed->priv->cur_requests++; } + + load_percent = build_load_percent (embed->priv->cur_requests, + embed->priv->total_requests); + + ephy_base_embed_set_load_percent (embed, load_percent); + } } static void @@ -938,12 +886,11 @@ ephy_base_embed_set_load_status (EphyBaseEmbed *embed, gboolean status) is_loading = status != FALSE; - if (is_loading != priv->is_loading) - { - priv->is_loading = is_loading; + if (is_loading != priv->is_loading) { + priv->is_loading = is_loading; - g_object_notify (G_OBJECT (embed), "load-status"); - } + g_object_notify (G_OBJECT (embed), "load-status"); + } } void @@ -955,48 +902,44 @@ ephy_base_embed_update_from_net_state (EphyBaseEmbed *embed, update_net_state_message (embed, uri, state); - if (state & EPHY_EMBED_STATE_IS_NETWORK) - { - if (state & EPHY_EMBED_STATE_START) - { - GObject *object = G_OBJECT (embed); - - g_object_freeze_notify (object); + if (state & EPHY_EMBED_STATE_IS_NETWORK) { + if (state & EPHY_EMBED_STATE_START) { + GObject *object = G_OBJECT (embed); - priv->total_requests = 0; - priv->cur_requests = 0; + g_object_freeze_notify (object); - ephy_base_embed_set_load_percent (embed, 0); - ephy_base_embed_set_load_status (embed, TRUE); + priv->total_requests = 0; + priv->cur_requests = 0; - ensure_page_info (embed, uri); + ephy_base_embed_set_load_percent (embed, 0); + ephy_base_embed_set_load_status (embed, TRUE); - g_object_notify (object, "title"); + ensure_page_info (embed, uri); - g_object_thaw_notify (object); - } - else if (state & EPHY_EMBED_STATE_STOP) - { - GObject *object = G_OBJECT (embed); + g_object_notify (object, "title"); - g_object_freeze_notify (object); + g_object_thaw_notify (object); + } else if (state & EPHY_EMBED_STATE_STOP) { + GObject *object = G_OBJECT (embed); - ephy_base_embed_set_load_percent (embed, 100); - ephy_base_embed_set_load_status (embed, FALSE); + g_object_freeze_notify (object); - g_free (priv->loading_title); - priv->loading_title = NULL; + ephy_base_embed_set_load_percent (embed, 100); + ephy_base_embed_set_load_status (embed, FALSE); - priv->address_expire = EPHY_EMBED_ADDRESS_EXPIRE_NOW; + g_free (priv->loading_title); + priv->loading_title = NULL; - g_object_notify (object, "title"); + priv->address_expire = EPHY_EMBED_ADDRESS_EXPIRE_NOW; - g_object_thaw_notify (object); - } + g_object_notify (object, "title"); - update_navigation_flags (embed); + g_object_thaw_notify (object); } + update_navigation_flags (embed); + } + build_progress_from_requests (embed, state); } @@ -1011,20 +954,16 @@ ephy_base_embed_set_loading_title (EphyBaseEmbed *embed, g_free (priv->loading_title); priv->loading_title = NULL; - if (is_address) - { - title = freeme = get_title_from_address (title); - } + if (is_address) { + title = freeme = get_title_from_address (title); + } - if (title != NULL && title[0] != '\0') - { - /* translators: %s here is the address of the web page */ - priv->loading_title = g_strdup_printf (_("Loading “%s”…"), title); - } - else - { - priv->loading_title = g_strdup (_("Loading…")); - } + if (title != NULL && title[0] != '\0') { + /* translators: %s here is the address of the web page */ + priv->loading_title = g_strdup_printf (_ ("Loading “%s”…"), title); + } else { + priv->loading_title = g_strdup (_ ("Loading…")); + } g_free (freeme); } @@ -1034,21 +973,19 @@ ephy_base_embed_file_monitor_cancel (EphyBaseEmbed *embed) { EphyBaseEmbedPrivate *priv = embed->priv; - if (priv->monitor != NULL) - { - LOG ("Cancelling file monitor"); + if (priv->monitor != NULL) { + LOG ("Cancelling file monitor"); - gnome_vfs_monitor_cancel (priv->monitor); - priv->monitor = NULL; - } + gnome_vfs_monitor_cancel (priv->monitor); + priv->monitor = NULL; + } - if (priv->reload_scheduled_id != 0) - { - LOG ("Cancelling scheduled reload"); + if (priv->reload_scheduled_id != 0) { + LOG ("Cancelling scheduled reload"); - g_source_remove (priv->reload_scheduled_id); - priv->reload_scheduled_id = 0; - } + g_source_remove (priv->reload_scheduled_id); + priv->reload_scheduled_id = 0; + } priv->reload_delay_ticks = 0; } @@ -1058,22 +995,20 @@ ephy_base_embed_file_monitor_reload_cb (EphyBaseEmbed *embed) { EphyBaseEmbedPrivate *priv = embed->priv; - if (priv->reload_delay_ticks > 0) - { - priv->reload_delay_ticks--; + if (priv->reload_delay_ticks > 0) { + priv->reload_delay_ticks--; - /* Run again */ - return TRUE; - } + /* Run again */ + return TRUE; + } - if (priv->is_loading) - { - /* Wait a bit to reload if we're still loading! */ - priv->reload_delay_ticks = RELOAD_DELAY_MAX_TICKS / 2; + if (priv->is_loading) { + /* Wait a bit to reload if we're still loading! */ + priv->reload_delay_ticks = RELOAD_DELAY_MAX_TICKS / 2; - /* Run again */ - return TRUE; - } + /* Run again */ + return TRUE; + } priv->reload_scheduled_id = 0; @@ -1094,18 +1029,17 @@ ephy_base_embed_file_monitor_cb (GnomeVFSMonitorHandle *handle, { gboolean uri_is_directory; gboolean should_reload; - char* local_path; + char *local_path; EphyBaseEmbedPrivate *priv = embed->priv; LOG ("File '%s' has changed, scheduling reload", monitor_uri); - local_path = gnome_vfs_get_local_path_from_uri(monitor_uri); - uri_is_directory = g_file_test(local_path, G_FILE_TEST_IS_DIR); - g_free(local_path); + local_path = gnome_vfs_get_local_path_from_uri (monitor_uri); + uri_is_directory = g_file_test (local_path, G_FILE_TEST_IS_DIR); + g_free (local_path); - switch (event_type) - { - /* These events will always trigger a reload: */ + switch (event_type) { + /* These events will always trigger a reload: */ case GNOME_VFS_MONITOR_EVENT_CHANGED: case GNOME_VFS_MONITOR_EVENT_CREATED: should_reload = TRUE; @@ -1123,7 +1057,7 @@ ephy_base_embed_file_monitor_cb (GnomeVFSMonitorHandle *handle, default: should_reload = FALSE; break; - } + } if (should_reload) { /* We make a lot of assumptions here, but basically we know @@ -1131,23 +1065,19 @@ ephy_base_embed_file_monitor_cb (GnomeVFSMonitorHandle *handle, * Delay the reload a little bit so we don't endlessly * reload while a file is written. */ - if (priv->reload_delay_ticks == 0) - { - priv->reload_delay_ticks = 1; - } - else - { - /* Exponential backoff */ - priv->reload_delay_ticks = MIN (priv->reload_delay_ticks * 2, - RELOAD_DELAY_MAX_TICKS); - } + if (priv->reload_delay_ticks == 0) { + priv->reload_delay_ticks = 1; + } else { + /* Exponential backoff */ + priv->reload_delay_ticks = MIN (priv->reload_delay_ticks * 2, + RELOAD_DELAY_MAX_TICKS); + } - if (priv->reload_scheduled_id == 0) - { - priv->reload_scheduled_id = - g_timeout_add (RELOAD_DELAY, - (GSourceFunc) ephy_base_embed_file_monitor_reload_cb, embed); - } + if (priv->reload_scheduled_id == 0) { + priv->reload_scheduled_id = + g_timeout_add (RELOAD_DELAY, + (GSourceFunc)ephy_base_embed_file_monitor_reload_cb, embed); + } } } @@ -1158,38 +1088,35 @@ ephy_base_embed_update_file_monitor (EphyBaseEmbed *embed, EphyBaseEmbedPrivate *priv = embed->priv; GnomeVFSMonitorHandle *handle = NULL; gboolean local; - char* local_path; + char *local_path; GnomeVFSMonitorType monitor_type; if (priv->monitor != NULL && priv->address != NULL && address != NULL && - strcmp (priv->address, address) == 0) - - { - /* same address, no change needed */ - return; - } + strcmp (priv->address, address) == 0) { + /* same address, no change needed */ + return; + } ephy_base_embed_file_monitor_cancel (embed); local = g_str_has_prefix (address, "file://"); if (local == FALSE) return; - local_path = gnome_vfs_get_local_path_from_uri(address); - monitor_type = g_file_test(local_path, G_FILE_TEST_IS_DIR) - ? GNOME_VFS_MONITOR_DIRECTORY - : GNOME_VFS_MONITOR_FILE; - g_free(local_path); + local_path = gnome_vfs_get_local_path_from_uri (address); + monitor_type = g_file_test (local_path, G_FILE_TEST_IS_DIR) + ? GNOME_VFS_MONITOR_DIRECTORY + : GNOME_VFS_MONITOR_FILE; + g_free (local_path); if (gnome_vfs_monitor_add (&handle, address, monitor_type, - (GnomeVFSMonitorCallback) ephy_base_embed_file_monitor_cb, - embed) == GNOME_VFS_OK) - { - LOG ("Installed monitor for file '%s'", address); + (GnomeVFSMonitorCallback)ephy_base_embed_file_monitor_cb, + embed) == GNOME_VFS_OK) { + LOG ("Installed monitor for file '%s'", address); - priv->monitor = handle; - } + priv->monitor = handle; + } } void @@ -1206,20 +1133,17 @@ ephy_base_embed_location_changed (EphyBaseEmbed *embed, /* Do not expose about:blank to the user, an empty address bar will do better */ if (location == NULL || location[0] == '\0' || - strcmp (location, "about:blank") == 0) - { - ephy_base_embed_set_address (embed, NULL); - ephy_base_embed_set_title (embed, NULL); - } - else - { - char *embed_address; - - /* we do this to get rid of an eventual password in the URL */ - embed_address = ephy_embed_get_location (EPHY_EMBED (embed), TRUE); - ephy_base_embed_set_address (embed, embed_address); - ephy_base_embed_set_loading_title (embed, embed_address, TRUE); - } + strcmp (location, "about:blank") == 0) { + ephy_base_embed_set_address (embed, NULL); + ephy_base_embed_set_title (embed, NULL); + } else { + char *embed_address; + + /* we do this to get rid of an eventual password in the URL */ + embed_address = ephy_embed_get_location (EPHY_EMBED (embed), TRUE); + ephy_base_embed_set_address (embed, embed_address); + ephy_base_embed_set_loading_title (embed, embed_address, TRUE); + } ephy_base_embed_set_link_message (embed, NULL); ephy_base_embed_set_icon_address (embed, NULL); @@ -1274,28 +1198,26 @@ ephy_base_embed_set_icon_address (EphyBaseEmbed *embed, g_free (priv->icon_address); priv->icon_address = g_strdup (address); - if (priv->icon != NULL) - { - g_object_unref (priv->icon); - priv->icon = NULL; + if (priv->icon != NULL) { + g_object_unref (priv->icon); + priv->icon = NULL; - g_object_notify (object, "icon"); - } + g_object_notify (object, "icon"); + } - if (priv->icon_address) - { - /* FIXME: we need to put this somewhere inside src?/ - history = EPHY_HISTORY - (ephy_embed_shell_get_global_history (embed_shell)); - ephy_history_set_icon (history, priv->address, - priv->icon_address); + if (priv->icon_address) { + /* FIXME: we need to put this somewhere inside src?/ + history = EPHY_HISTORY + (ephy_embed_shell_get_global_history (embed_shell)); + ephy_history_set_icon (history, priv->address, + priv->icon_address); - eb = ephy_shell_get_bookmarks (ephy_shell); - ephy_bookmarks_set_icon (eb, priv->address, - priv->icon_address);*/ + eb = ephy_shell_get_bookmarks (ephy_shell); + ephy_bookmarks_set_icon (eb, priv->address, + priv->icon_address);*/ - ephy_base_embed_load_icon (embed); - } + ephy_base_embed_load_icon (embed); + } g_object_notify (object, "icon-address"); } @@ -1306,12 +1228,11 @@ ephy_base_embed_set_security_level (EphyBaseEmbed *embed, { EphyBaseEmbedPrivate *priv = embed->priv; - if (priv->security_level != level) - { - priv->security_level = level; + if (priv->security_level != level) { + priv->security_level = level; - g_object_notify (G_OBJECT (embed), "security-level"); - } + g_object_notify (G_OBJECT (embed), "security-level"); + } } void @@ -1321,32 +1242,29 @@ ephy_base_embed_restore_zoom_level (EphyBaseEmbed *membed, EphyBaseEmbedPrivate *priv = membed->priv; /* restore zoom level */ - if (address_has_web_scheme (address)) - { - EphyHistory *history; - EphyNode *host; - GValue value = { 0, }; - float zoom = 1.0, current_zoom; - - history = EPHY_HISTORY - (ephy_embed_shell_get_global_history (embed_shell)); - host = ephy_history_get_host (history, address); + if (address_has_web_scheme (address)) { + EphyHistory *history; + EphyNode *host; + GValue value = { 0, }; + float zoom = 1.0, current_zoom; + + history = EPHY_HISTORY + (ephy_embed_shell_get_global_history (embed_shell)); + host = ephy_history_get_host (history, address); + + if (host != NULL && ephy_node_get_property + (host, EPHY_NODE_HOST_PROP_ZOOM, &value)) { + zoom = g_value_get_float (&value); + g_value_unset (&value); + } - if (host != NULL && ephy_node_get_property - (host, EPHY_NODE_HOST_PROP_ZOOM, &value)) - { - zoom = g_value_get_float (&value); - g_value_unset (&value); - } - - current_zoom = ephy_embed_get_zoom (EPHY_EMBED (membed)); - if (zoom != current_zoom) - { - priv->is_setting_zoom = TRUE; - ephy_embed_set_zoom (EPHY_EMBED (membed), zoom); - priv->is_setting_zoom = FALSE; - } + current_zoom = ephy_embed_get_zoom (EPHY_EMBED (membed)); + if (zoom != current_zoom) { + priv->is_setting_zoom = TRUE; + ephy_embed_set_zoom (EPHY_EMBED (membed), zoom); + priv->is_setting_zoom = FALSE; } + } } /* Popup stuff if zeroed for now */ @@ -1413,25 +1331,21 @@ popups_manager_add (MozillaEmbed *embed, priv->hidden_popups = g_slist_prepend (priv->hidden_popups, popup); - if (popup_blocker_n_hidden (embed) > MAX_HIDDEN_POPUPS) /* bug #160863 */ - { - /* Remove the oldest popup */ - GSList *l = embed->priv->hidden_popups; + if (popup_blocker_n_hidden (embed) > MAX_HIDDEN_POPUPS) {/* bug #160863 */ + /* Remove the oldest popup */ + GSList *l = embed->priv->hidden_popups; - while (l->next->next != NULL) - { - l = l->next; - } + while (l->next->next != NULL) { + l = l->next; + } - popup = (PopupInfo *) l->next->data; - popups_manager_free_info (popup); + popup = (PopupInfo *)l->next->data; + popups_manager_free_info (popup); - l->next = NULL; - } - else - { - g_object_notify (G_OBJECT (embed), "hidden-popup-count"); - } + l->next = NULL; + } else { + g_object_notify (G_OBJECT (embed), "hidden-popup-count"); + } } static gboolean @@ -1449,7 +1363,7 @@ disconnect_popup (EphyWindow *window, MozillaEmbed *embed) { g_signal_handlers_disconnect_by_func - (window, G_CALLBACK (popups_manager_remove_window), embed); + (window, G_CALLBACK (popups_manager_remove_window), embed); } static void @@ -1459,7 +1373,7 @@ popups_manager_add_window (MozillaEmbed *embed, LOG ("popups_manager_add_window: embed %p, window %p", embed, window); embed->priv->shown_popups = g_slist_prepend - (embed->priv->shown_popups, window); + (embed->priv->shown_popups, window); g_signal_connect_swapped (window, "destroy", G_CALLBACK (popups_manager_remove_window), @@ -1476,18 +1390,17 @@ mozilla_embed_get_popups_allowed (MozillaEmbed *embed) gboolean allow; permission_manager = EPHY_PERMISSION_MANAGER - (ephy_embed_shell_get_embed_single (embed_shell)); + (ephy_embed_shell_get_embed_single (embed_shell)); g_return_val_if_fail (EPHY_IS_PERMISSION_MANAGER (permission_manager), FALSE); location = ephy_embed_get_location (embed, TRUE); - if (location == NULL) return FALSE; /* FALSE, TRUE… same thing */ + if (location == NULL) return FALSE;/* FALSE, TRUE… same thing */ response = ephy_permission_manager_test_permission - (permission_manager, location, EPT_POPUP); + (permission_manager, location, EPT_POPUP); - switch (response) - { + switch (response) { case EPHY_PERMISSION_ALLOWED: allow = TRUE; break; @@ -1497,9 +1410,9 @@ mozilla_embed_get_popups_allowed (MozillaEmbed *embed) case EPHY_PERMISSION_DEFAULT: default: allow = eel_gconf_get_boolean - (CONF_SECURITY_ALLOW_POPUPS); + (CONF_SECURITY_ALLOW_POPUPS); break; - } + } g_free (location); @@ -1516,16 +1429,15 @@ popups_manager_show (PopupInfo *popup, EphyEmbedSingle *single; /* Only show popup with non NULL url */ - if (popup->url != NULL) - { - embed = ephy_embed_get_embed (embed); + if (popup->url != NULL) { + embed = ephy_embed_get_embed (embed); - single = EPHY_EMBED_SINGLE - (ephy_embed_shell_get_embed_single (embed_shell)); + single = EPHY_EMBED_SINGLE + (ephy_embed_shell_get_embed_single (embed_shell)); - ephy_embed_single_open_window (single, embed, popup->url, - popup->name, popup->features); - } + ephy_embed_single_open_window (single, embed, popup->url, + popup->name, popup->features); + } popups_manager_free_info (popup); } @@ -1535,7 +1447,7 @@ popups_manager_show_all (MozillaEmbed *embed) LOG ("popup_blocker_show_all: embed %p", embed); g_slist_foreach (embed->priv->hidden_popups, - (GFunc) popups_manager_show, embed); + (GFunc)popups_manager_show, embed); g_slist_free (embed->priv->hidden_popups); embed->priv->hidden_popups = NULL; @@ -1557,11 +1469,11 @@ popups_manager_new_window_info (EphyWindow *window) g_return_val_if_fail (embed != NULL, g_strdup ("")); features = g_strdup_printf - ("width=%d,height=%d,menubar=%d,status=%d,toolbar=%d", - embed->priv->width, embed->priv->height, - (chrome & EPHY_EMBED_CHROME_MENUBAR) > 0, - (chrome & EPHY_EMBED_CHROME_STATUSBAR) > 0, - (chrome & EPHY_EMBED_CHROME_TOOLBAR) > 0); + ("width=%d,height=%d,menubar=%d,status=%d,toolbar=%d", + embed->priv->width, embed->priv->height, + (chrome & EPHY_EMBED_CHROME_MENUBAR) > 0, + (chrome & EPHY_EMBED_CHROME_STATUSBAR) > 0, + (chrome & EPHY_EMBED_CHROME_TOOLBAR) > 0); return features; } @@ -1596,7 +1508,7 @@ popups_manager_hide_all (MozillaEmbed *embed) LOG ("popup_blocker_hide_all: embed %p", embed); g_slist_foreach (embed->priv->shown_popups, - (GFunc) popups_manager_hide, embed); + (GFunc)popups_manager_hide, embed); g_slist_free (embed->priv->shown_popups); embed->priv->shown_popups = NULL; } @@ -1616,22 +1528,19 @@ mozilla_embed_set_popups_allowed (MozillaEmbed *embed, g_return_if_fail (location != NULL); manager = EPHY_PERMISSION_MANAGER - (ephy_embed_shell_get_embed_single (embed_shell)); + (ephy_embed_shell_get_embed_single (embed_shell)); g_return_if_fail (EPHY_IS_PERMISSION_MANAGER (manager)); permission = allowed ? EPHY_PERMISSION_ALLOWED - : EPHY_PERMISSION_DENIED; + : EPHY_PERMISSION_DENIED; ephy_permission_manager_add_permission (manager, location, EPT_POPUP, permission); - if (allowed) - { - popups_manager_show_all (embed); - } - else - { - popups_manager_hide_all (embed); - } + if (allowed) { + popups_manager_show_all (embed); + } else { + popups_manager_hide_all (embed); + } g_free (location); } @@ -1646,12 +1555,12 @@ static void popups_manager_reset (MozillaEmbed *embed) { g_slist_foreach (embed->priv->hidden_popups, - (GFunc) popups_manager_free_info, NULL); + (GFunc)popups_manager_free_info, NULL); g_slist_free (embed->priv->hidden_popups); embed->priv->hidden_popups = NULL; g_slist_foreach (embed->priv->shown_popups, - (GFunc) disconnect_popup, embed); + (GFunc)disconnect_popup, embed); g_slist_free (embed->priv->shown_popups); embed->priv->shown_popups = NULL; diff --git a/embed/ephy-base-embed.h b/embed/ephy-base-embed.h index a429a8c11..82c303a49 100644 --- a/embed/ephy-base-embed.h +++ b/embed/ephy-base-embed.h @@ -1,3 +1,25 @@ +/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2; -*- */ +/* + * Copyright © 2000-2004 Marco Pesenti Gritti + * Copyright © 2003-2007 Christian Persch + * Copyright © 2007 Xan Lopez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + #ifndef __EPHY_BASE_EMBED_H__ #define __EPHY_BASE_EMBED_H__ @@ -6,24 +28,22 @@ G_BEGIN_DECLS -#define EPHY_TYPE_BASE_EMBED (ephy_base_embed_get_type()) +#define EPHY_TYPE_BASE_EMBED (ephy_base_embed_get_type ()) #define EPHY_BASE_EMBED(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EPHY_TYPE_BASE_EMBED, EphyBaseEmbed)) #define EPHY_BASE_EMBED_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EPHY_TYPE_BASE_EMBED, EphyBaseEmbedClass)) #define EPHY_IS_BASE_EMBED(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EPHY_TYPE_BASE_EMBED)) #define EPHY_IS_BASE_EMBED_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EPHY_TYPE_BASE_EMBED)) #define EPHY_BASE_EMBED_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EPHY_TYPE_BASE_EMBED, EphyBaseEmbedClass)) -typedef struct _EphyBaseEmbed EphyBaseEmbed; +typedef struct _EphyBaseEmbed EphyBaseEmbed; typedef struct _EphyBaseEmbedClass EphyBaseEmbedClass; typedef struct _EphyBaseEmbedPrivate EphyBaseEmbedPrivate; -struct _EphyBaseEmbedClass -{ +struct _EphyBaseEmbedClass { GtkBinClass parent_class; }; -struct _EphyBaseEmbed -{ +struct _EphyBaseEmbed { GtkBin parent_instance; /*< private >*/ |