diff options
Diffstat (limited to 'embed/ephy-find-toolbar.c')
-rw-r--r-- | embed/ephy-find-toolbar.c | 799 |
1 files changed, 385 insertions, 414 deletions
diff --git a/embed/ephy-find-toolbar.c b/embed/ephy-find-toolbar.c index 54d2c75dd..0efe2e876 100644 --- a/embed/ephy-find-toolbar.c +++ b/embed/ephy-find-toolbar.c @@ -31,55 +31,50 @@ #include <string.h> #include <webkit2/webkit2.h> -struct _EphyFindToolbar -{ - GtkSearchBar parent_instance; - - WebKitWebView *web_view; - WebKitFindController *controller; - GtkWidget *entry; - GtkWidget *next; - GtkWidget *prev; - guint find_again_source_id; - guint find_source_id; - char *find_string; - guint preedit_changed : 1; - guint prevent_activate : 1; - guint activated : 1; - guint links_only : 1; - guint typing_ahead : 1; +struct _EphyFindToolbar { + GtkSearchBar parent_instance; + + WebKitWebView *web_view; + WebKitFindController *controller; + GtkWidget *entry; + GtkWidget *next; + GtkWidget *prev; + guint find_again_source_id; + guint find_source_id; + char *find_string; + guint preedit_changed : 1; + guint prevent_activate : 1; + guint activated : 1; + guint links_only : 1; + guint typing_ahead : 1; }; G_DEFINE_TYPE (EphyFindToolbar, ephy_find_toolbar, GTK_TYPE_SEARCH_BAR) -enum -{ - PROP_0, - PROP_WEB_VIEW, - LAST_PROP +enum { + PROP_0, + PROP_WEB_VIEW, + LAST_PROP }; static GParamSpec *obj_properties[LAST_PROP]; -enum -{ - CLOSE, - LAST_SIGNAL +enum { + CLOSE, + LAST_SIGNAL }; static guint signals[LAST_SIGNAL]; -typedef enum -{ - EPHY_FIND_RESULT_FOUND = 0, - EPHY_FIND_RESULT_NOTFOUND = 1, - EPHY_FIND_RESULT_FOUNDWRAPPED = 2 +typedef enum { + EPHY_FIND_RESULT_FOUND = 0, + EPHY_FIND_RESULT_NOTFOUND = 1, + EPHY_FIND_RESULT_FOUNDWRAPPED = 2 } EphyFindResult; -typedef enum -{ - EPHY_FIND_DIRECTION_NEXT, - EPHY_FIND_DIRECTION_PREV +typedef enum { + EPHY_FIND_DIRECTION_NEXT, + EPHY_FIND_DIRECTION_PREV } EphyFindDirection; /* private functions */ @@ -88,253 +83,239 @@ static void ephy_find_toolbar_set_web_view (EphyFindToolbar *toolbar, WebKitWebV static void set_status (EphyFindToolbar *toolbar, - EphyFindResult result) -{ - const char *icon_name = "edit-find-symbolic"; - const char *tooltip = NULL; - - switch (result) - { - case EPHY_FIND_RESULT_FOUND: - break; - case EPHY_FIND_RESULT_NOTFOUND: - icon_name = "face-uncertain-symbolic"; - tooltip = _("Text not found"); - gtk_widget_error_bell (GTK_WIDGET (toolbar)); - - break; - case EPHY_FIND_RESULT_FOUNDWRAPPED: - icon_name = "view-wrapped-symbolic"; - tooltip = _("Search wrapped back to the top"); - break; - - default: - g_assert_not_reached (); - } - - gtk_widget_set_sensitive (toolbar->prev, result != EPHY_FIND_RESULT_NOTFOUND); - gtk_widget_set_sensitive (toolbar->next, result != EPHY_FIND_RESULT_NOTFOUND); - - g_object_set (toolbar->entry, - "primary-icon-name", icon_name, - "primary-icon-activatable", FALSE, - "primary-icon-sensitive", FALSE, - "primary-icon-tooltip-text", tooltip, - NULL); + EphyFindResult result) +{ + const char *icon_name = "edit-find-symbolic"; + const char *tooltip = NULL; + + switch (result) { + case EPHY_FIND_RESULT_FOUND: + break; + case EPHY_FIND_RESULT_NOTFOUND: + icon_name = "face-uncertain-symbolic"; + tooltip = _("Text not found"); + gtk_widget_error_bell (GTK_WIDGET (toolbar)); + + break; + case EPHY_FIND_RESULT_FOUNDWRAPPED: + icon_name = "view-wrapped-symbolic"; + tooltip = _("Search wrapped back to the top"); + break; + + default: + g_assert_not_reached (); + } + + gtk_widget_set_sensitive (toolbar->prev, result != EPHY_FIND_RESULT_NOTFOUND); + gtk_widget_set_sensitive (toolbar->next, result != EPHY_FIND_RESULT_NOTFOUND); + + g_object_set (toolbar->entry, + "primary-icon-name", icon_name, + "primary-icon-activatable", FALSE, + "primary-icon-sensitive", FALSE, + "primary-icon-tooltip-text", tooltip, + NULL); } static void clear_status (EphyFindToolbar *toolbar) { - g_object_set (toolbar->entry, - "primary-icon-name", "edit-find-symbolic", - NULL); + g_object_set (toolbar->entry, + "primary-icon-name", "edit-find-symbolic", + NULL); - gtk_widget_set_sensitive (toolbar->prev, FALSE); - gtk_widget_set_sensitive (toolbar->next, FALSE); + gtk_widget_set_sensitive (toolbar->prev, FALSE); + gtk_widget_set_sensitive (toolbar->next, FALSE); - if (toolbar->web_view == NULL) return; + if (toolbar->web_view == NULL) return; - webkit_find_controller_search_finish (toolbar->controller); + webkit_find_controller_search_finish (toolbar->controller); } /* Code adapted from gtktreeview.c:gtk_tree_view_key_press() and * gtk_tree_view_real_start_interactive_seach() */ static gboolean -tab_search_key_press_cb (WebKitWebView *web_view, - GdkEventKey *event, - EphyFindToolbar *toolbar) +tab_search_key_press_cb (WebKitWebView *web_view, + GdkEventKey *event, + EphyFindToolbar *toolbar) { - GtkWidget *widget = (GtkWidget *) toolbar; - - g_return_val_if_fail (event != NULL, FALSE); - - /* check for / and ' which open the find toolbar in text resp. link mode */ - if (gtk_search_bar_get_search_mode (GTK_SEARCH_BAR (widget)) == FALSE) - { - if (event->keyval == GDK_KEY_slash) - { - ephy_find_toolbar_open (toolbar, FALSE, TRUE); - return TRUE; - } - else if (event->keyval == GDK_KEY_apostrophe) - { - ephy_find_toolbar_open (toolbar, TRUE, TRUE); - return TRUE; - } - } - - return FALSE; + GtkWidget *widget = (GtkWidget *)toolbar; + + g_return_val_if_fail (event != NULL, FALSE); + + /* check for / and ' which open the find toolbar in text resp. link mode */ + if (gtk_search_bar_get_search_mode (GTK_SEARCH_BAR (widget)) == FALSE) { + if (event->keyval == GDK_KEY_slash) { + ephy_find_toolbar_open (toolbar, FALSE, TRUE); + return TRUE; + } else if (event->keyval == GDK_KEY_apostrophe) { + ephy_find_toolbar_open (toolbar, TRUE, TRUE); + return TRUE; + } + } + + return FALSE; } static void -real_find (EphyFindToolbar *toolbar, +real_find (EphyFindToolbar *toolbar, EphyFindDirection direction) { - WebKitFindOptions options = WEBKIT_FIND_OPTIONS_CASE_INSENSITIVE; + WebKitFindOptions options = WEBKIT_FIND_OPTIONS_CASE_INSENSITIVE; - if (!g_strcmp0 (toolbar->find_string, "")) - return; + if (!g_strcmp0 (toolbar->find_string, "")) + return; - if (direction == EPHY_FIND_DIRECTION_PREV) - options |= WEBKIT_FIND_OPTIONS_BACKWARDS; + if (direction == EPHY_FIND_DIRECTION_PREV) + options |= WEBKIT_FIND_OPTIONS_BACKWARDS; - webkit_find_controller_search (toolbar->controller, toolbar->find_string, options, G_MAXUINT); + webkit_find_controller_search (toolbar->controller, toolbar->find_string, options, G_MAXUINT); } static gboolean do_search (EphyFindToolbar *toolbar) { - toolbar->find_source_id = 0; + toolbar->find_source_id = 0; - real_find (toolbar, EPHY_FIND_DIRECTION_NEXT); + real_find (toolbar, EPHY_FIND_DIRECTION_NEXT); - return FALSE; + return FALSE; } static void found_text_cb (WebKitFindController *controller, - guint n_matches, - EphyFindToolbar *toolbar) + guint n_matches, + EphyFindToolbar *toolbar) { - WebKitFindOptions options; - EphyFindResult result; + WebKitFindOptions options; + EphyFindResult result; - options = webkit_find_controller_get_options (controller); - /* FIXME: it's not possible to remove the wrap flag, so the status is now always wrapped. */ - result = options & WEBKIT_FIND_OPTIONS_WRAP_AROUND ? EPHY_FIND_RESULT_FOUNDWRAPPED : EPHY_FIND_RESULT_FOUND; - set_status (toolbar, result); + options = webkit_find_controller_get_options (controller); + /* FIXME: it's not possible to remove the wrap flag, so the status is now always wrapped. */ + result = options & WEBKIT_FIND_OPTIONS_WRAP_AROUND ? EPHY_FIND_RESULT_FOUNDWRAPPED : EPHY_FIND_RESULT_FOUND; + set_status (toolbar, result); } static void failed_to_find_text_cb (WebKitFindController *controller, - EphyFindToolbar *toolbar) + EphyFindToolbar *toolbar) { - WebKitFindOptions options; + WebKitFindOptions options; - options = webkit_find_controller_get_options (controller); - if (options & WEBKIT_FIND_OPTIONS_WRAP_AROUND) { - set_status (toolbar, EPHY_FIND_RESULT_NOTFOUND); - return; - } + options = webkit_find_controller_get_options (controller); + if (options & WEBKIT_FIND_OPTIONS_WRAP_AROUND) { + set_status (toolbar, EPHY_FIND_RESULT_NOTFOUND); + return; + } - options |= WEBKIT_FIND_OPTIONS_WRAP_AROUND; - webkit_find_controller_search (controller, toolbar->find_string, options, G_MAXUINT); + options |= WEBKIT_FIND_OPTIONS_WRAP_AROUND; + webkit_find_controller_search (controller, toolbar->find_string, options, G_MAXUINT); } static void update_find_string (EphyFindToolbar *toolbar) { - g_free (toolbar->find_string); - toolbar->find_string = g_strdup (gtk_entry_get_text (GTK_ENTRY (toolbar->entry))); + g_free (toolbar->find_string); + toolbar->find_string = g_strdup (gtk_entry_get_text (GTK_ENTRY (toolbar->entry))); - if (toolbar->find_source_id != 0) { - g_source_remove (toolbar->find_source_id); - toolbar->find_source_id = 0; - } + if (toolbar->find_source_id != 0) { + g_source_remove (toolbar->find_source_id); + toolbar->find_source_id = 0; + } - if (strlen (toolbar->find_string) == 0) { - clear_status (toolbar); - return; - } + if (strlen (toolbar->find_string) == 0) { + clear_status (toolbar); + return; + } - toolbar->find_source_id = g_timeout_add (300, (GSourceFunc)do_search, toolbar); - g_source_set_name_by_id (toolbar->find_source_id, "[epiphany] do_search"); + toolbar->find_source_id = g_timeout_add (300, (GSourceFunc)do_search, toolbar); + g_source_set_name_by_id (toolbar->find_source_id, "[epiphany] do_search"); } static gboolean ephy_find_toolbar_activate_link (EphyFindToolbar *toolbar, - GdkModifierType mask) + GdkModifierType mask) { - return FALSE; + return FALSE; } static gboolean -entry_key_press_event_cb (GtkEntry *entry, - GdkEventKey *event, - EphyFindToolbar *toolbar) -{ - guint mask = gtk_accelerator_get_default_mod_mask (); - gboolean handled = FALSE; - - if ((event->state & mask) == 0) - { - handled = TRUE; - switch (event->keyval) - { - case GDK_KEY_Escape: - /* Hide the toolbar when ESC is pressed */ - ephy_find_toolbar_request_close (toolbar); - break; - default: - handled = FALSE; - break; - } - } - else if ((event->state & mask) == GDK_CONTROL_MASK && - (event->keyval == GDK_KEY_Return || - event->keyval == GDK_KEY_KP_Enter || - event->keyval == GDK_KEY_ISO_Enter)) - { - handled = ephy_find_toolbar_activate_link (toolbar, event->state); - } - else if ((event->state & mask) == GDK_SHIFT_MASK && - (event->keyval == GDK_KEY_Return || - event->keyval == GDK_KEY_KP_Enter || - event->keyval == GDK_KEY_ISO_Enter)) - { - handled = TRUE; - ephy_find_toolbar_find_previous (toolbar); - } - - return handled; +entry_key_press_event_cb (GtkEntry *entry, + GdkEventKey *event, + EphyFindToolbar *toolbar) +{ + guint mask = gtk_accelerator_get_default_mod_mask (); + gboolean handled = FALSE; + + if ((event->state & mask) == 0) { + handled = TRUE; + switch (event->keyval) { + case GDK_KEY_Escape: + /* Hide the toolbar when ESC is pressed */ + ephy_find_toolbar_request_close (toolbar); + break; + default: + handled = FALSE; + break; + } + } else if ((event->state & mask) == GDK_CONTROL_MASK && + (event->keyval == GDK_KEY_Return || + event->keyval == GDK_KEY_KP_Enter || + event->keyval == GDK_KEY_ISO_Enter)) { + handled = ephy_find_toolbar_activate_link (toolbar, event->state); + } else if ((event->state & mask) == GDK_SHIFT_MASK && + (event->keyval == GDK_KEY_Return || + event->keyval == GDK_KEY_KP_Enter || + event->keyval == GDK_KEY_ISO_Enter)) { + handled = TRUE; + ephy_find_toolbar_find_previous (toolbar); + } + + return handled; } static void -entry_activate_cb (GtkWidget *entry, - EphyFindToolbar *toolbar) -{ - if (toolbar->typing_ahead) - { - ephy_find_toolbar_activate_link (toolbar, 0); - } - else - { - ephy_find_toolbar_find_next (toolbar); - } +entry_activate_cb (GtkWidget *entry, + EphyFindToolbar *toolbar) +{ + if (toolbar->typing_ahead) { + ephy_find_toolbar_activate_link (toolbar, 0); + } else { + ephy_find_toolbar_find_next (toolbar); + } } static void ephy_find_toolbar_grab_focus (GtkWidget *widget) { - EphyFindToolbar *toolbar = EPHY_FIND_TOOLBAR (widget); + EphyFindToolbar *toolbar = EPHY_FIND_TOOLBAR (widget); - gtk_widget_grab_focus (toolbar->entry); + gtk_widget_grab_focus (toolbar->entry); } static gboolean ephy_find_toolbar_draw (GtkWidget *widget, - cairo_t *cr) + cairo_t *cr) { - GtkStyleContext *context; + GtkStyleContext *context; - context = gtk_widget_get_style_context (widget); + context = gtk_widget_get_style_context (widget); - gtk_style_context_save (context); - gtk_style_context_set_state (context, gtk_widget_get_state_flags (widget)); + gtk_style_context_save (context); + gtk_style_context_set_state (context, gtk_widget_get_state_flags (widget)); - gtk_render_background (context, cr, 0, 0, - gtk_widget_get_allocated_width (widget), - gtk_widget_get_allocated_height (widget)); + gtk_render_background (context, cr, 0, 0, + gtk_widget_get_allocated_width (widget), + gtk_widget_get_allocated_height (widget)); - gtk_render_frame (context, cr, 0, 0, - gtk_widget_get_allocated_width (widget), - gtk_widget_get_allocated_height (widget)); + gtk_render_frame (context, cr, 0, 0, + gtk_widget_get_allocated_width (widget), + gtk_widget_get_allocated_height (widget)); - gtk_style_context_restore (context); + gtk_style_context_restore (context); - return GTK_WIDGET_CLASS (ephy_find_toolbar_parent_class)->draw (widget, cr); + return GTK_WIDGET_CLASS (ephy_find_toolbar_parent_class)->draw (widget, cr); } static void @@ -345,159 +326,155 @@ search_entry_clear_cb (GtkEntry *entry, } static void -search_entry_changed_cb (GtkEntry *entry, +search_entry_changed_cb (GtkEntry *entry, EphyFindToolbar *toolbar) { - const char *str; - const char *primary_icon_name = "edit-find-symbolic"; - const char *secondary_icon_name = NULL; - gboolean primary_active = FALSE; - gboolean secondary_active = FALSE; - - str = gtk_entry_get_text (entry); - - if (str == NULL || *str == '\0') { - primary_icon_name = "edit-find-symbolic"; - } else { - secondary_icon_name = "edit-clear-symbolic"; - secondary_active = TRUE; - } - - g_object_set (entry, - "primary-icon-name", primary_icon_name, - "primary-icon-activatable", primary_active, - "primary-icon-sensitive", primary_active, - "secondary-icon-name", secondary_icon_name, - "secondary-icon-activatable", secondary_active, - "secondary-icon-sensitive", secondary_active, - NULL); - - update_find_string (toolbar); + const char *str; + const char *primary_icon_name = "edit-find-symbolic"; + const char *secondary_icon_name = NULL; + gboolean primary_active = FALSE; + gboolean secondary_active = FALSE; + + str = gtk_entry_get_text (entry); + + if (str == NULL || *str == '\0') { + primary_icon_name = "edit-find-symbolic"; + } else { + secondary_icon_name = "edit-clear-symbolic"; + secondary_active = TRUE; + } + + g_object_set (entry, + "primary-icon-name", primary_icon_name, + "primary-icon-activatable", primary_active, + "primary-icon-sensitive", primary_active, + "secondary-icon-name", secondary_icon_name, + "secondary-icon-activatable", secondary_active, + "secondary-icon-sensitive", secondary_active, + NULL); + + update_find_string (toolbar); } static void ephy_find_toolbar_load_changed_cb (WebKitWebView *web_view, - WebKitLoadEvent load_event, - EphyFindToolbar *toolbar) + WebKitLoadEvent load_event, + EphyFindToolbar *toolbar) { - if (load_event == WEBKIT_LOAD_STARTED && - gtk_search_bar_get_search_mode (GTK_SEARCH_BAR (toolbar))) - { - ephy_find_toolbar_close (toolbar); - } + if (load_event == WEBKIT_LOAD_STARTED && + gtk_search_bar_get_search_mode (GTK_SEARCH_BAR (toolbar))) { + ephy_find_toolbar_close (toolbar); + } } static void ephy_find_toolbar_init (EphyFindToolbar *toolbar) { - GtkWidget *box; - GtkSizeGroup *size_group; - - size_group = gtk_size_group_new (GTK_SIZE_GROUP_VERTICAL); - - box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); - gtk_style_context_add_class (gtk_widget_get_style_context (box), - GTK_STYLE_CLASS_RAISED); - gtk_style_context_add_class (gtk_widget_get_style_context (box), - GTK_STYLE_CLASS_LINKED); - gtk_container_add (GTK_CONTAINER (toolbar), box); - - toolbar->entry = gtk_entry_new (); - gtk_entry_set_width_chars (GTK_ENTRY (toolbar->entry), 32); - gtk_entry_set_max_length (GTK_ENTRY (toolbar->entry), 512); - gtk_entry_set_placeholder_text (GTK_ENTRY (toolbar->entry), _("Type to search…")); - gtk_container_add (GTK_CONTAINER (box), toolbar->entry); - - /* Prev */ - toolbar->prev = gtk_button_new_from_icon_name ("go-up-symbolic", GTK_ICON_SIZE_MENU); - gtk_widget_set_tooltip_text (toolbar->prev, - _("Find previous occurrence of the search string")); - gtk_container_add (GTK_CONTAINER (box), toolbar->prev); - gtk_widget_show_all (toolbar->prev); - gtk_widget_set_sensitive (toolbar->prev, FALSE); - - /* Next */ - toolbar->next = gtk_button_new_from_icon_name ("go-down-symbolic", GTK_ICON_SIZE_MENU); - gtk_widget_set_tooltip_text (toolbar->next, - _("Find next occurrence of the search string")); - gtk_container_add (GTK_CONTAINER (box), toolbar->next); - gtk_widget_set_sensitive (toolbar->next, FALSE); - - gtk_size_group_add_widget (size_group, toolbar->entry); - gtk_size_group_add_widget (size_group, toolbar->next); - gtk_size_group_add_widget (size_group, toolbar->prev); - g_object_unref (size_group); - - /* connect signals */ - g_signal_connect (toolbar->entry, "icon-release", - G_CALLBACK (search_entry_clear_cb), toolbar); - g_signal_connect (toolbar->entry, "key-press-event", - G_CALLBACK (entry_key_press_event_cb), toolbar); - g_signal_connect_after (toolbar->entry, "changed", - G_CALLBACK (search_entry_changed_cb), toolbar); - g_signal_connect (toolbar->entry, "activate", - G_CALLBACK (entry_activate_cb), toolbar); - g_signal_connect_swapped (toolbar->next, "clicked", - G_CALLBACK (ephy_find_toolbar_find_next), toolbar); - g_signal_connect_swapped (toolbar->prev, "clicked", - G_CALLBACK (ephy_find_toolbar_find_previous), toolbar); - gtk_search_bar_connect_entry (GTK_SEARCH_BAR (toolbar), - GTK_ENTRY (toolbar->entry)); - - search_entry_changed_cb (GTK_ENTRY (toolbar->entry), toolbar); - - gtk_widget_show_all (GTK_WIDGET (toolbar)); + GtkWidget *box; + GtkSizeGroup *size_group; + + size_group = gtk_size_group_new (GTK_SIZE_GROUP_VERTICAL); + + box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); + gtk_style_context_add_class (gtk_widget_get_style_context (box), + GTK_STYLE_CLASS_RAISED); + gtk_style_context_add_class (gtk_widget_get_style_context (box), + GTK_STYLE_CLASS_LINKED); + gtk_container_add (GTK_CONTAINER (toolbar), box); + + toolbar->entry = gtk_entry_new (); + gtk_entry_set_width_chars (GTK_ENTRY (toolbar->entry), 32); + gtk_entry_set_max_length (GTK_ENTRY (toolbar->entry), 512); + gtk_entry_set_placeholder_text (GTK_ENTRY (toolbar->entry), _("Type to search…")); + gtk_container_add (GTK_CONTAINER (box), toolbar->entry); + + /* Prev */ + toolbar->prev = gtk_button_new_from_icon_name ("go-up-symbolic", GTK_ICON_SIZE_MENU); + gtk_widget_set_tooltip_text (toolbar->prev, + _("Find previous occurrence of the search string")); + gtk_container_add (GTK_CONTAINER (box), toolbar->prev); + gtk_widget_show_all (toolbar->prev); + gtk_widget_set_sensitive (toolbar->prev, FALSE); + + /* Next */ + toolbar->next = gtk_button_new_from_icon_name ("go-down-symbolic", GTK_ICON_SIZE_MENU); + gtk_widget_set_tooltip_text (toolbar->next, + _("Find next occurrence of the search string")); + gtk_container_add (GTK_CONTAINER (box), toolbar->next); + gtk_widget_set_sensitive (toolbar->next, FALSE); + + gtk_size_group_add_widget (size_group, toolbar->entry); + gtk_size_group_add_widget (size_group, toolbar->next); + gtk_size_group_add_widget (size_group, toolbar->prev); + g_object_unref (size_group); + + /* connect signals */ + g_signal_connect (toolbar->entry, "icon-release", + G_CALLBACK (search_entry_clear_cb), toolbar); + g_signal_connect (toolbar->entry, "key-press-event", + G_CALLBACK (entry_key_press_event_cb), toolbar); + g_signal_connect_after (toolbar->entry, "changed", + G_CALLBACK (search_entry_changed_cb), toolbar); + g_signal_connect (toolbar->entry, "activate", + G_CALLBACK (entry_activate_cb), toolbar); + g_signal_connect_swapped (toolbar->next, "clicked", + G_CALLBACK (ephy_find_toolbar_find_next), toolbar); + g_signal_connect_swapped (toolbar->prev, "clicked", + G_CALLBACK (ephy_find_toolbar_find_previous), toolbar); + gtk_search_bar_connect_entry (GTK_SEARCH_BAR (toolbar), + GTK_ENTRY (toolbar->entry)); + + search_entry_changed_cb (GTK_ENTRY (toolbar->entry), toolbar); + + gtk_widget_show_all (GTK_WIDGET (toolbar)); } static void ephy_find_toolbar_dispose (GObject *object) { - EphyFindToolbar *toolbar = EPHY_FIND_TOOLBAR (object); + EphyFindToolbar *toolbar = EPHY_FIND_TOOLBAR (object); - if (toolbar->find_again_source_id != 0) - { - g_source_remove (toolbar->find_again_source_id); - toolbar->find_again_source_id = 0; - } + if (toolbar->find_again_source_id != 0) { + g_source_remove (toolbar->find_again_source_id); + toolbar->find_again_source_id = 0; + } - if (toolbar->find_source_id != 0) - { - g_source_remove (toolbar->find_source_id); - toolbar->find_source_id = 0; - } + if (toolbar->find_source_id != 0) { + g_source_remove (toolbar->find_source_id); + toolbar->find_source_id = 0; + } - G_OBJECT_CLASS (ephy_find_toolbar_parent_class)->dispose (object); + G_OBJECT_CLASS (ephy_find_toolbar_parent_class)->dispose (object); } #ifndef G_DISABLE_ASSERT G_GNUC_NORETURN #endif static void -ephy_find_toolbar_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) +ephy_find_toolbar_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) { - /* no readable properties */ - g_assert_not_reached (); + /* no readable properties */ + g_assert_not_reached (); } static void -ephy_find_toolbar_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) -{ - EphyFindToolbar *toolbar = EPHY_FIND_TOOLBAR (object); - - switch (prop_id) - { - case PROP_WEB_VIEW: - ephy_find_toolbar_set_web_view (toolbar, (WebKitWebView *) g_value_get_object (value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - } +ephy_find_toolbar_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + EphyFindToolbar *toolbar = EPHY_FIND_TOOLBAR (object); + + switch (prop_id) { + case PROP_WEB_VIEW: + ephy_find_toolbar_set_web_view (toolbar, (WebKitWebView *)g_value_get_object (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + } } static void @@ -513,32 +490,32 @@ ephy_find_toolbar_finalize (GObject *o) static void ephy_find_toolbar_class_init (EphyFindToolbarClass *klass) { - GObjectClass *object_class = G_OBJECT_CLASS (klass); - GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); - - object_class->dispose = ephy_find_toolbar_dispose; - object_class->finalize = ephy_find_toolbar_finalize; - object_class->get_property = ephy_find_toolbar_get_property; - object_class->set_property = ephy_find_toolbar_set_property; - - widget_class->draw = ephy_find_toolbar_draw; - widget_class->grab_focus = ephy_find_toolbar_grab_focus; - - signals[CLOSE] = - g_signal_new ("close", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, - 0, NULL, NULL, NULL, - G_TYPE_NONE, 0); - - obj_properties[PROP_WEB_VIEW] = - g_param_spec_object ("web-view", - "WebView", - "Parent web view", - WEBKIT_TYPE_WEB_VIEW, - G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); - - g_object_class_install_properties (object_class, LAST_PROP, obj_properties); + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + + object_class->dispose = ephy_find_toolbar_dispose; + object_class->finalize = ephy_find_toolbar_finalize; + object_class->get_property = ephy_find_toolbar_get_property; + object_class->set_property = ephy_find_toolbar_set_property; + + widget_class->draw = ephy_find_toolbar_draw; + widget_class->grab_focus = ephy_find_toolbar_grab_focus; + + signals[CLOSE] = + g_signal_new ("close", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, + 0, NULL, NULL, NULL, + G_TYPE_NONE, 0); + + obj_properties[PROP_WEB_VIEW] = + g_param_spec_object ("web-view", + "WebView", + "Parent web view", + WEBKIT_TYPE_WEB_VIEW, + G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (object_class, LAST_PROP, obj_properties); } /* public functions */ @@ -546,111 +523,105 @@ ephy_find_toolbar_class_init (EphyFindToolbarClass *klass) EphyFindToolbar * ephy_find_toolbar_new (WebKitWebView *web_view) { - return g_object_new (EPHY_TYPE_FIND_TOOLBAR, - "web-view", web_view, - NULL); + return g_object_new (EPHY_TYPE_FIND_TOOLBAR, + "web-view", web_view, + NULL); } const char * ephy_find_toolbar_get_text (EphyFindToolbar *toolbar) { - return gtk_entry_get_text (GTK_ENTRY (toolbar->entry)); + return gtk_entry_get_text (GTK_ENTRY (toolbar->entry)); } static void ephy_find_toolbar_set_web_view (EphyFindToolbar *toolbar, - WebKitWebView *web_view) -{ - if (toolbar->web_view == web_view) return; - - if (toolbar->web_view != NULL) - { - g_signal_handlers_disconnect_matched (toolbar->controller, - G_SIGNAL_MATCH_DATA, - 0, 0, NULL, NULL, toolbar); - } - - toolbar->web_view = web_view; - if (web_view != NULL) - { - toolbar->controller = webkit_web_view_get_find_controller (web_view); - g_signal_connect_object (toolbar->controller, "found-text", - G_CALLBACK (found_text_cb), - toolbar, 0); - g_signal_connect_object (toolbar->controller, "failed-to-find-text", - G_CALLBACK (failed_to_find_text_cb), - toolbar, 0); - g_signal_connect (web_view, "load-changed", - G_CALLBACK (ephy_find_toolbar_load_changed_cb), - toolbar); - - clear_status (toolbar); - - g_signal_connect_object (EPHY_WEB_VIEW (web_view), "search-key-press", - G_CALLBACK (tab_search_key_press_cb), - toolbar, 0); - } + WebKitWebView *web_view) +{ + if (toolbar->web_view == web_view) return; + + if (toolbar->web_view != NULL) { + g_signal_handlers_disconnect_matched (toolbar->controller, + G_SIGNAL_MATCH_DATA, + 0, 0, NULL, NULL, toolbar); + } + + toolbar->web_view = web_view; + if (web_view != NULL) { + toolbar->controller = webkit_web_view_get_find_controller (web_view); + g_signal_connect_object (toolbar->controller, "found-text", + G_CALLBACK (found_text_cb), + toolbar, 0); + g_signal_connect_object (toolbar->controller, "failed-to-find-text", + G_CALLBACK (failed_to_find_text_cb), + toolbar, 0); + g_signal_connect (web_view, "load-changed", + G_CALLBACK (ephy_find_toolbar_load_changed_cb), + toolbar); + + clear_status (toolbar); + + g_signal_connect_object (EPHY_WEB_VIEW (web_view), "search-key-press", + G_CALLBACK (tab_search_key_press_cb), + toolbar, 0); + } } void ephy_find_toolbar_find_next (EphyFindToolbar *toolbar) { - webkit_find_controller_search_next (toolbar->controller); + webkit_find_controller_search_next (toolbar->controller); } void ephy_find_toolbar_find_previous (EphyFindToolbar *toolbar) { - webkit_find_controller_search_previous (toolbar->controller); + webkit_find_controller_search_previous (toolbar->controller); } void ephy_find_toolbar_open (EphyFindToolbar *toolbar, - gboolean links_only, - gboolean typing_ahead) + gboolean links_only, + gboolean typing_ahead) { - g_return_if_fail (toolbar->web_view != NULL); + g_return_if_fail (toolbar->web_view != NULL); - toolbar->typing_ahead = typing_ahead; - toolbar->links_only = links_only; + toolbar->typing_ahead = typing_ahead; + toolbar->links_only = links_only; - clear_status (toolbar); + clear_status (toolbar); - gtk_editable_select_region (GTK_EDITABLE (toolbar->entry), 0, -1); + gtk_editable_select_region (GTK_EDITABLE (toolbar->entry), 0, -1); - gtk_search_bar_set_search_mode (GTK_SEARCH_BAR (toolbar), TRUE); - gtk_search_bar_set_show_close_button (GTK_SEARCH_BAR (toolbar), TRUE); - gtk_widget_grab_focus (toolbar->entry); + gtk_search_bar_set_search_mode (GTK_SEARCH_BAR (toolbar), TRUE); + gtk_search_bar_set_show_close_button (GTK_SEARCH_BAR (toolbar), TRUE); + gtk_widget_grab_focus (toolbar->entry); } void ephy_find_toolbar_close (EphyFindToolbar *toolbar) { - gtk_search_bar_set_search_mode (GTK_SEARCH_BAR (toolbar), FALSE); + gtk_search_bar_set_search_mode (GTK_SEARCH_BAR (toolbar), FALSE); - if (toolbar->web_view == NULL) return; + if (toolbar->web_view == NULL) return; - webkit_find_controller_search_finish (toolbar->controller); + webkit_find_controller_search_finish (toolbar->controller); } void ephy_find_toolbar_request_close (EphyFindToolbar *toolbar) { - if (gtk_search_bar_get_search_mode (GTK_SEARCH_BAR (toolbar))) - { - g_signal_emit (toolbar, signals[CLOSE], 0); - } + if (gtk_search_bar_get_search_mode (GTK_SEARCH_BAR (toolbar))) { + g_signal_emit (toolbar, signals[CLOSE], 0); + } } void ephy_find_toolbar_toggle_state (EphyFindToolbar *toolbar) { - if (gtk_search_bar_get_search_mode (GTK_SEARCH_BAR (toolbar))) - { - ephy_find_toolbar_close (toolbar); - } - else - { - ephy_find_toolbar_open (toolbar, FALSE, FALSE); - } + if (gtk_search_bar_get_search_mode (GTK_SEARCH_BAR (toolbar))) { + ephy_find_toolbar_close (toolbar); + } else { + ephy_find_toolbar_open (toolbar, FALSE, FALSE); + } } |