[epiphany/wip/exalm/gtk4] WIP: Port to GTK4
- From: Alexander Mikhaylenko <alexm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [epiphany/wip/exalm/gtk4] WIP: Port to GTK4
- Date: Fri, 3 Dec 2021 08:30:15 +0000 (UTC)
commit c34e9bbf48ac7bee00cff8ed6d38205f13d87a9f
Author: Alexander Mikhaylenko <alexm gnome org>
Date: Mon Nov 29 12:20:58 2021 +0500
WIP: Port to GTK4
Left out lib/widgets/ for now as that's a lot of work and I want to port enough
of the foundation to test it first.
Also left out:
- lib/ephy-dnd.c - gtk4 dnd api is completely different, this will need a lot of changes
- lib/ephy-gui.c - ephy_gui_get_current_event() is bad, this will need a rework everywhere
- lib/ephy-suggestion.c - no libdazzle in gtk4
FIXMEs:
- embed/ephy-download.c
- commented out the dialog
- need to replace the file chooser button
- unsure about gtk_box_pack_start() replacement
- event time -> monotonic time
- embed/ephy-embed.c
- commented out nautilus floating bar
- embed/ephy-find-toolbar.c
- commented out gd tagged entry
- shortcuts
- embed/ephy-web-view.c
- need to backport a leak fix
- event vfuncs
- lib/widgets/ephy-file-chooser.c
- removed preview, need to backport
- src/ephy-shell.c
- large parts commented out until the rest of src/ is there
- src/ephy-tab-view.c
- dnd
embed/ephy-about-handler.c | 67 +++-
embed/ephy-download.c | 14 +-
embed/ephy-embed-shell.c | 30 +-
embed/ephy-embed-shell.h | 6 +-
embed/ephy-embed.c | 61 ++-
embed/ephy-find-toolbar.c | 126 +++----
embed/ephy-find-toolbar.h | 4 +-
embed/ephy-reader-handler.c | 10 +-
embed/ephy-web-view.c | 179 ++++-----
embed/meson.build | 5 +-
lib/ephy-file-helpers.c | 12 +-
lib/ephy-file-helpers.h | 2 +-
lib/ephy-flatpak-utils.c | 2 +-
lib/ephy-gui.c | 21 +-
lib/ephy-notification-container.c | 45 +--
lib/ephy-notification-container.h | 4 +-
lib/ephy-notification.c | 22 +-
lib/ephy-notification.h | 4 +-
lib/meson.build | 6 +-
lib/widgets/ephy-download-widget.c | 31 +-
lib/widgets/ephy-download-widget.h | 4 +-
lib/widgets/ephy-downloads-popover.c | 66 ++--
lib/widgets/ephy-downloads-progress-icon.c | 28 +-
lib/widgets/ephy-file-chooser.c | 15 +-
lib/widgets/ephy-title-box.c | 55 ++-
lib/widgets/ephy-title-box.h | 5 +-
lib/widgets/meson.build | 24 +-
meson.build | 23 +-
org.gnome.Epiphany.json | 10 -
src/ephy-action-bar-end.c | 47 +--
src/ephy-action-bar-start.c | 43 +--
src/ephy-action-bar.c | 5 +-
src/ephy-action-bar.h | 4 +-
src/ephy-desktop-utils.c | 9 -
src/ephy-desktop-utils.h | 2 -
src/ephy-firefox-sync-dialog.h | 4 +-
src/ephy-fullscreen-box.c | 181 ++++-----
src/ephy-fullscreen-box.h | 2 +-
src/ephy-header-bar.c | 99 +++--
src/ephy-header-bar.h | 4 +-
src/ephy-history-dialog.c | 41 +--
src/ephy-history-dialog.h | 4 +-
src/ephy-link.c | 2 +
src/ephy-pages-button.c | 2 +-
src/ephy-session.c | 42 ++-
src/ephy-shell.c | 41 +--
src/ephy-tab-view.c | 180 +++++----
src/ephy-tab-view.h | 8 +-
src/ephy-web-extension-dialog.c | 95 ++---
src/ephy-web-extension-dialog.h | 2 +-
src/ephy-window.c | 510 ++++++++++++--------------
src/ephy-window.h | 4 +-
src/meson.build | 70 ++--
src/popup-commands.c | 13 +-
src/resources/gtk/action-bar-end.ui | 44 +--
src/resources/gtk/action-bar-start.ui | 67 +---
src/resources/gtk/action-bar.ui | 31 +-
src/resources/gtk/encoding-row.ui | 6 +-
src/resources/gtk/history-dialog.ui | 171 +++------
src/resources/gtk/page-menu-popover.ui | 482 ++++++++----------------
src/resources/gtk/pages-button.ui | 13 +-
src/resources/gtk/web-extensions-dialog.ui | 66 ++--
src/webextension/api/pageaction.c | 8 +-
src/webextension/ephy-web-extension-manager.c | 90 +++--
src/window-commands.c | 138 ++++---
tests/ephy-embed-shell-test.c | 4 +-
66 files changed, 1419 insertions(+), 1996 deletions(-)
---
diff --git a/embed/ephy-about-handler.c b/embed/ephy-about-handler.c
index fde68cb1f..1bfd8deff 100644
--- a/embed/ephy-about-handler.c
+++ b/embed/ephy-about-handler.c
@@ -163,14 +163,26 @@ ephy_about_handler_handle_about (EphyAboutHandler *handler,
{
char *data;
char *version;
- GtkIconInfo *icon_info;
+ g_autofree char *path = NULL;
+ GtkIconTheme *icon_theme;
+ g_autoptr (GtkIconPaintable) paintable = NULL;
version = g_strdup_printf (_("Version %s"), VERSION);
- icon_info = gtk_icon_theme_lookup_icon (gtk_icon_theme_get_default (),
+ icon_theme = gtk_icon_theme_get_for_display (gdk_display_get_default ());
+ paintable = gtk_icon_theme_lookup_icon (icon_theme,
APPLICATION_ID,
+ NULL,
256,
- GTK_ICON_LOOKUP_FORCE_SVG);
+ 1,
+ GTK_TEXT_DIR_LTR,
+ GTK_ICON_LOOKUP_FORCE_REGULAR);
+
+ if (paintable) {
+ g_autoptr (GFile) file = gtk_icon_paintable_get_file (paintable);
+
+ path = g_file_get_path (file);
+ }
data = g_strdup_printf ("<html><head><title>%s</title>"
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />"
@@ -187,7 +199,7 @@ ephy_about_handler_handle_about (EphyAboutHandler *handler,
"</table>"
"</div></div></body></html>",
_("About Web"),
- icon_info ? gtk_icon_info_get_filename (icon_info) : "",
+ path ? path : "",
#if !TECH_PREVIEW
_("Web"),
#else
@@ -197,8 +209,6 @@ ephy_about_handler_handle_about (EphyAboutHandler *handler,
_("A simple, clean, beautiful view of the web"),
"WebKitGTK", webkit_get_major_version (), webkit_get_minor_version (),
webkit_get_micro_version ());
g_free (version);
- if (icon_info)
- g_object_unref (icon_info);
ephy_about_handler_finish_request (request, data, -1);
@@ -280,8 +290,9 @@ handle_applications_finished_cb (EphyAboutHandler *handler,
g_string_append (data_str, "</table></div></body></html>");
} else {
- g_autoptr (GtkIconInfo) icon_info = NULL;
- g_autofree gchar *icon = g_strconcat ("application-x-addon-symbolic", NULL);
+ GtkIconTheme *icon_theme;
+ g_autoptr (GtkIconPaintable) paintable = NULL;
+ g_autofree char *path = NULL;
g_string_append_printf (data_str, "<html><head><title>%s</title>"
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />"
@@ -289,10 +300,21 @@ handle_applications_finished_cb (EphyAboutHandler *handler,
"</head><body class=\"applications-body\">",
_("Applications"));
- icon_info = gtk_icon_theme_lookup_icon (gtk_icon_theme_get_default (),
- icon,
+ icon_theme = gtk_icon_theme_get_for_display (gdk_display_get_default ());
+ paintable = gtk_icon_theme_lookup_icon (icon_theme,
+ "application-x-addon-symbolic",
+ NULL,
128,
+ 1,
+ GTK_TEXT_DIR_LTR,
0);
+
+ if (paintable) {
+ g_autoptr (GFile) file = gtk_icon_paintable_get_file (paintable);
+
+ path = g_file_get_path (file);
+ }
+
g_string_append_printf (data_str,
" <div id=\"overview\" class=\"overview-empty\">\n"
" <img src=\"file://%s\"/>\n"
@@ -300,7 +322,7 @@ handle_applications_finished_cb (EphyAboutHandler *handler,
" <div><p>%s</p></div>\n"
" </div>\n"
"</body></html>\n",
- icon_info ? gtk_icon_info_get_filename (icon_info) : "",
+ path ? path : "",
/* Displayed when opening applications without any installed web apps. */
_("Applications"), _("You can add your favorite website by clicking <b>Install
Site as Web Application…</b> within the page menu."));
}
@@ -378,13 +400,26 @@ history_service_query_urls_cb (EphyHistoryService *history,
list_length = g_list_length (urls);
if (list_length == 0 || !success) {
- GtkIconInfo *icon_info;
- g_autofree gchar *icon = g_strconcat (APPLICATION_ID, "-symbolic", NULL);
+ GtkIconTheme *icon_theme;
+ g_autoptr (GtkIconPaintable) paintable = NULL;
+ g_autofree char *path = NULL;
+ g_autofree char *icon = g_strconcat (APPLICATION_ID, "-symbolic", NULL);
- icon_info = gtk_icon_theme_lookup_icon (gtk_icon_theme_get_default (),
+ icon_theme = gtk_icon_theme_get_for_display (gdk_display_get_default ());
+ paintable = gtk_icon_theme_lookup_icon (icon_theme,
icon,
+ NULL,
128,
+ 1,
+ GTK_TEXT_DIR_LTR,
0);
+
+ if (paintable) {
+ g_autoptr (GFile) file = gtk_icon_paintable_get_file (paintable);
+
+ path = g_file_get_path (file);
+ }
+
g_string_append_printf (data_str,
" <div id=\"overview\" class=\"overview-empty\">\n"
" <img src=\"file://%s\"/>\n"
@@ -392,11 +427,9 @@ history_service_query_urls_cb (EphyHistoryService *history,
" <div><p>%s</p></div>\n"
" </div>\n"
"</body></html>\n",
- icon_info ? gtk_icon_info_get_filename (icon_info) : "",
+ path ? path : "",
/* Displayed when opening the browser for the first time. */
_("Welcome to Web"), _("Start browsing and your most-visited sites will appear
here."));
- if (icon_info)
- g_object_unref (icon_info);
goto out;
}
diff --git a/embed/ephy-download.c b/embed/ephy-download.c
index 6f982ead2..ece2ba5b8 100644
--- a/embed/ephy-download.c
+++ b/embed/ephy-download.c
@@ -621,7 +621,7 @@ ephy_download_init (EphyDownload *download)
download->action = EPHY_DOWNLOAD_ACTION_NONE;
- download->start_time = gtk_get_current_event_time ();
+ download->start_time = g_get_monotonic_time (); // FIXME not sure if this is correct
download->show_notification = TRUE;
}
@@ -793,6 +793,7 @@ typedef struct {
GtkFileChooser *file_chooser;
} SuggestedFilenameData;
+#if 0
static void
filename_suggested_dialog_cb (GtkDialog *dialog,
GtkResponseType response,
@@ -815,7 +816,7 @@ filename_suggested_dialog_cb (GtkDialog *dialog,
ephy_download_cancel (data->download);
}
- gtk_widget_destroy (GTK_WIDGET (dialog));
+ gtk_window_destroy (GTK_WINDOW (dialog));
g_free (data->suggested_filename);
g_free (data);
@@ -885,8 +886,6 @@ filename_suggested_cb (EphyDownload *download,
gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (filechooser), g_settings_get_string
(EPHY_SETTINGS_WEB, EPHY_PREFS_WEB_LAST_DOWNLOAD_DIRECTORY));
gtk_box_pack_start (GTK_BOX (box), filechooser, FALSE, TRUE, 0);
- gtk_widget_show_all (box);
-
data = g_new0 (SuggestedFilenameData, 1);
data->download = download;
data->webkit_download = webkit_download;
@@ -897,6 +896,7 @@ filename_suggested_cb (EphyDownload *download,
G_CALLBACK (filename_suggested_dialog_cb), data);
gtk_window_present (GTK_WINDOW (dialog));
}
+#endif
EphyDownload *
ephy_download_new_internal (WebKitDownload *download)
@@ -946,9 +946,9 @@ ephy_download_new (WebKitDownload *download)
ephy_download, 0);
if (!ephy_is_running_inside_flatpak () && g_settings_get_boolean (EPHY_SETTINGS_WEB,
EPHY_PREFS_WEB_ASK_ON_DOWNLOAD)) {
- g_signal_connect (ephy_download, "filename-suggested",
- G_CALLBACK (filename_suggested_cb),
- NULL);
+// g_signal_connect (ephy_download, "filename-suggested",
+// G_CALLBACK (filename_suggested_cb),
+// NULL);
}
return ephy_download;
diff --git a/embed/ephy-embed-shell.c b/embed/ephy-embed-shell.c
index 189370bd8..310dc830b 100644
--- a/embed/ephy-embed-shell.c
+++ b/embed/ephy-embed-shell.c
@@ -97,7 +97,7 @@ static EphyEmbedShell *embed_shell = NULL;
static void ephy_embed_shell_tabs_catalog_iface_init (EphyTabsCatalogInterface *iface);
-G_DEFINE_TYPE_WITH_CODE (EphyEmbedShell, ephy_embed_shell, DZL_TYPE_APPLICATION,
+G_DEFINE_TYPE_WITH_CODE (EphyEmbedShell, ephy_embed_shell, ADW_TYPE_APPLICATION,
G_ADD_PRIVATE (EphyEmbedShell)
G_IMPLEMENT_INTERFACE (EPHY_TYPE_TABS_CATALOG,
ephy_embed_shell_tabs_catalog_iface_init))
@@ -888,27 +888,6 @@ enable_itp_setting_changed_cb (GSettings *settings,
EPHY_PREFS_WEB_ENABLE_ITP));
}
-static void
-update_system_scrollbars (EphyEmbedShell *shell)
-{
- EphyEmbedShellPrivate *priv = ephy_embed_shell_get_instance_private (shell);
- const char *theme_name;
- gboolean enabled;
-
- g_object_get (gtk_settings_get_default (),
- "gtk-theme_name", &theme_name,
- NULL);
-
- /* Don't enable system scrollbars for Adwaita */
- enabled = g_strcmp0 (theme_name, "Adwaita") &&
- g_strcmp0 (theme_name, "Adwaita-dark") &&
- g_strcmp0 (theme_name, "HighContrast") &&
- g_strcmp0 (theme_name, "HighContrastInverse");
-
- webkit_web_context_set_use_system_appearance_for_scrollbars (priv->web_context,
- enabled);
-}
-
static void
ephy_embed_shell_startup (GApplication *application)
{
@@ -1001,13 +980,6 @@ ephy_embed_shell_startup (GApplication *application)
g_signal_connect_object (EPHY_SETTINGS_WEB, "changed::enable-itp",
G_CALLBACK (enable_itp_setting_changed_cb), shell, 0);
-
- update_system_scrollbars (shell);
-
- g_signal_connect_swapped (gtk_settings_get_default (),
- "notify::gtk-theme-name",
- G_CALLBACK (update_system_scrollbars),
- shell);
}
static void
diff --git a/embed/ephy-embed-shell.h b/embed/ephy-embed-shell.h
index 9464d42d4..2815c19bd 100644
--- a/embed/ephy-embed-shell.h
+++ b/embed/ephy-embed-shell.h
@@ -21,7 +21,7 @@
#pragma once
-#include <dazzle.h>
+#include <adwaita.h>
#include <webkit2/webkit2.h>
#include "ephy-downloads-manager.h"
@@ -38,7 +38,7 @@ typedef struct _EphyFiltersManager EphyFiltersManager;
#define EPHY_TYPE_EMBED_SHELL (ephy_embed_shell_get_type ())
-G_DECLARE_DERIVABLE_TYPE (EphyEmbedShell, ephy_embed_shell, EPHY, EMBED_SHELL, DzlApplication)
+G_DECLARE_DERIVABLE_TYPE (EphyEmbedShell, ephy_embed_shell, EPHY, EMBED_SHELL, AdwApplication)
typedef enum
{
@@ -54,7 +54,7 @@ typedef enum
struct _EphyEmbedShellClass
{
- DzlApplicationClass parent_class;
+ AdwApplicationClass parent_class;
void (* restored_window) (EphyEmbedShell *shell);
};
diff --git a/embed/ephy-embed.c b/embed/ephy-embed.c
index 3d81f8783..f1b2ac5d7 100644
--- a/embed/ephy-embed.c
+++ b/embed/ephy-embed.c
@@ -35,7 +35,7 @@
#include "ephy-settings.h"
#include "ephy-string.h"
#include "ephy-web-view.h"
-#include "nautilus-floating-bar.h"
+//#include "nautilus-floating-bar.h"
#include <glib/gi18n.h>
#include <webkit2/webkit2.h>
@@ -158,13 +158,13 @@ static void
ephy_embed_set_statusbar_label (EphyEmbed *embed,
const char *label)
{
- nautilus_floating_bar_set_primary_label (NAUTILUS_FLOATING_BAR (embed->floating_bar), label);
+/* nautilus_floating_bar_set_primary_label (NAUTILUS_FLOATING_BAR (embed->floating_bar), label);
if (label == NULL || label[0] == '\0') {
gtk_widget_hide (embed->floating_bar);
gtk_widget_set_halign (embed->floating_bar, GTK_ALIGN_START);
} else
- gtk_widget_show (embed->floating_bar);
+ gtk_widget_show (embed->floating_bar);*/
}
static void
@@ -245,7 +245,7 @@ ephy_embed_destroy_top_widgets (EphyEmbed *embed)
for (iter = embed->destroy_on_transition_list; iter; iter = iter->next) {
g_signal_handlers_disconnect_by_func (iter->data, remove_from_destroy_list_cb, embed);
- gtk_widget_destroy (GTK_WIDGET (iter->data));
+ gtk_box_remove (embed->top_widgets_vbox, GTK_WIDGET (iter->data));
}
embed->destroy_on_transition_list = NULL;
@@ -310,7 +310,7 @@ load_changed_cb (WebKitWebView *web_view,
}
}
-static void
+static gboolean
ephy_embed_grab_focus (GtkWidget *widget)
{
GtkWidget *child;
@@ -318,7 +318,9 @@ ephy_embed_grab_focus (GtkWidget *widget)
child = GTK_WIDGET (ephy_embed_get_web_view (EPHY_EMBED (widget)));
if (child)
- gtk_widget_grab_focus (child);
+ return gtk_widget_grab_focus (child);
+
+ return FALSE;
}
@@ -685,7 +687,7 @@ ephy_embed_mapped_cb (GtkWidget *widget,
{
ephy_embed_maybe_load_delayed_request ((EphyEmbed *)widget);
}
-
+/* FIXME
static gboolean
on_enter_notify_event (GtkWidget *widget,
GdkEventCrossing *event,
@@ -705,7 +707,7 @@ on_enter_notify_event (GtkWidget *widget,
return GDK_EVENT_PROPAGATE;
}
-
+*/
static void
ephy_embed_constructed (GObject *object)
{
@@ -722,33 +724,30 @@ ephy_embed_constructed (GObject *object)
/* Skeleton */
embed->overlay = gtk_overlay_new ();
- gtk_widget_add_events (embed->overlay,
- GDK_ENTER_NOTIFY_MASK |
- GDK_LEAVE_NOTIFY_MASK);
gtk_widget_set_vexpand (embed->overlay, TRUE);
- gtk_container_add (GTK_CONTAINER (embed->overlay), GTK_WIDGET (embed->web_view));
+ gtk_overlay_set_child (GTK_OVERLAY (embed->overlay), GTK_WIDGET (embed->web_view));
/* Floating message popup for fullscreen mode. */
embed->fullscreen_message_label = gtk_label_new (NULL);
gtk_widget_set_name (embed->fullscreen_message_label, "fullscreen-popup");
gtk_widget_set_halign (embed->fullscreen_message_label, GTK_ALIGN_CENTER);
gtk_widget_set_valign (embed->fullscreen_message_label, GTK_ALIGN_CENTER);
- gtk_widget_set_no_show_all (embed->fullscreen_message_label, TRUE);
+ gtk_widget_hide (embed->fullscreen_message_label);
gtk_overlay_add_overlay (GTK_OVERLAY (embed->overlay), embed->fullscreen_message_label);
ephy_embed_set_fullscreen_message (embed, FALSE);
/* statusbar is hidden by default */
- embed->floating_bar = nautilus_floating_bar_new ();
+/* embed->floating_bar = nautilus_floating_bar_new ();
gtk_widget_set_halign (embed->floating_bar, GTK_ALIGN_START);
gtk_widget_set_valign (embed->floating_bar, GTK_ALIGN_END);
- gtk_widget_set_no_show_all (embed->floating_bar, TRUE);
- g_signal_connect_object (embed->overlay, "enter-notify-event", G_CALLBACK (on_enter_notify_event), embed,
0);
+ gtk_widget_hide (embed->floating_bar);
+// FIXME g_signal_connect_object (embed->overlay, "enter-notify-event", G_CALLBACK (on_enter_notify_event),
embed, 0);
- gtk_overlay_add_overlay (GTK_OVERLAY (embed->overlay), embed->floating_bar);
+ gtk_overlay_add_overlay (GTK_OVERLAY (embed->overlay), embed->floating_bar);*/
if (embed->progress_bar_enabled) {
embed->progress = gtk_progress_bar_new ();
- gtk_style_context_add_class (gtk_widget_get_style_context (embed->progress), "osd");
+ gtk_widget_add_css_class (embed->progress, "osd");
gtk_widget_set_halign (embed->progress, GTK_ALIGN_FILL);
gtk_widget_set_valign (embed->progress, GTK_ALIGN_START);
gtk_overlay_add_overlay (GTK_OVERLAY (embed->overlay), embed->progress);
@@ -759,22 +758,14 @@ ephy_embed_constructed (GObject *object)
G_CALLBACK (ephy_embed_find_toolbar_close_cb),
embed);
- gtk_box_pack_start (GTK_BOX (embed),
- GTK_WIDGET (embed->find_toolbar),
- FALSE, TRUE, 0);
+ gtk_box_append (GTK_BOX (embed), GTK_WIDGET (embed->find_toolbar));
if (embed->progress_bar_enabled)
embed->progress_update_handler_id = g_signal_connect (embed->web_view, "notify::estimated-load-progress",
G_CALLBACK (progress_update), object);
- gtk_box_pack_start (GTK_BOX (embed),
- GTK_WIDGET (embed->top_widgets_vbox),
- FALSE, TRUE, 0);
- gtk_box_pack_start (GTK_BOX (embed), embed->overlay, FALSE, TRUE, 0);
-
- gtk_widget_show (GTK_WIDGET (embed->top_widgets_vbox));
- gtk_widget_show (GTK_WIDGET (embed->web_view));
- gtk_widget_show_all (embed->overlay);
+ gtk_box_append (GTK_BOX (embed), GTK_WIDGET (embed->top_widgets_vbox));
+ gtk_box_append (GTK_BOX (embed), GTK_WIDGET (embed->overlay));
g_object_connect (embed->web_view,
"signal::notify::title", G_CALLBACK (web_view_title_changed_cb), embed,
@@ -805,11 +796,9 @@ ephy_embed_constructed (GObject *object)
gtk_info_bar_set_message_type (GTK_INFO_BAR (info_bar), GTK_MESSAGE_INFO);
/* Translators: this means WebDriver control. */
label = gtk_label_new (_("Web is being controlled by automation."));
- gtk_box_pack_start (GTK_BOX (gtk_info_bar_get_content_area (GTK_INFO_BAR (info_bar))), label, FALSE,
TRUE, 0);
- gtk_widget_show (label);
+ gtk_info_bar_add_child (GTK_INFO_BAR (info_bar), label);
ephy_embed_add_top_widget (embed, info_bar, EPHY_EMBED_TOP_WIDGET_POLICY_RETAIN_ON_TRANSITION);
- gtk_widget_show (info_bar);
}
}
@@ -883,8 +872,7 @@ ephy_embed_add_top_widget (EphyEmbed *embed,
g_signal_connect (widget, "destroy", G_CALLBACK (remove_from_destroy_list_cb), embed);
}
- gtk_box_pack_end (embed->top_widgets_vbox,
- GTK_WIDGET (widget), FALSE, TRUE, 0);
+ gtk_box_prepend (embed->top_widgets_vbox, widget);
}
/**
@@ -910,8 +898,7 @@ ephy_embed_remove_top_widget (EphyEmbed *embed,
embed->destroy_on_transition_list = list;
}
- gtk_container_remove (GTK_CONTAINER (embed->top_widgets_vbox),
- GTK_WIDGET (widget));
+ gtk_box_remove (embed->top_widgets_vbox, widget);
}
/**
@@ -1005,6 +992,6 @@ ephy_embed_detach_notification_container (EphyEmbed *embed)
* notification widget, removing it from the container will destroy the
* singleton. To prevent this, add a reference to it before removing it
* from the container. */
- gtk_container_remove (GTK_CONTAINER (embed->overlay), g_object_ref (GTK_WIDGET (container)));
+ gtk_overlay_remove_overlay (GTK_OVERLAY (embed->overlay), g_object_ref (GTK_WIDGET (container)));
}
}
diff --git a/embed/ephy-find-toolbar.c b/embed/ephy-find-toolbar.c
index 45a71b8e0..2145be3f6 100644
--- a/embed/ephy-find-toolbar.c
+++ b/embed/ephy-find-toolbar.c
@@ -23,25 +23,26 @@
#include "ephy-find-toolbar.h"
#include "ephy-debug.h"
-#include "contrib/gd-tagged-entry.h"
+//#include "contrib/gd-tagged-entry.h"
#include <math.h>
+#include <adwaita.h>
#include <gdk/gdkkeysyms.h>
#include <glib/gi18n.h>
-#include <handy.h>
#include <string.h>
#include <webkit2/webkit2.h>
struct _EphyFindToolbar {
- GtkBin parent_instance;
+ AdwBin parent_instance;
GCancellable *cancellable;
WebKitWebView *web_view;
WebKitFindController *controller;
GtkWidget *search_bar;
- GdTaggedEntry *entry;
- GdTaggedEntryTag *entry_tag;
+ GtkWidget *entry;
+// GdTaggedEntry *entry;
+// GdTaggedEntryTag *entry_tag;
GtkWidget *next;
GtkWidget *prev;
guint num_matches;
@@ -53,7 +54,7 @@ struct _EphyFindToolbar {
gboolean typing_ahead;
};
-G_DEFINE_TYPE (EphyFindToolbar, ephy_find_toolbar, GTK_TYPE_BIN)
+G_DEFINE_TYPE (EphyFindToolbar, ephy_find_toolbar, ADW_TYPE_BIN)
enum {
PROP_0,
@@ -88,12 +89,12 @@ static void ephy_find_toolbar_set_web_view (EphyFindToolbar *toolbar,
static void
update_search_tag (EphyFindToolbar *toolbar)
-{
+{/*
g_autofree gchar *label = NULL;
label = g_strdup_printf ("%u/%u", toolbar->current_match, toolbar->num_matches);
gd_tagged_entry_tag_set_label (toolbar->entry_tag, label);
- gd_tagged_entry_add_tag (toolbar->entry, toolbar->entry_tag);
+ gd_tagged_entry_add_tag (toolbar->entry, toolbar->entry_tag);*/
}
static void
@@ -141,7 +142,7 @@ clear_status (EphyFindToolbar *toolbar)
"primary-icon-name", "edit-find-symbolic",
NULL);
- gd_tagged_entry_remove_tag (toolbar->entry, toolbar->entry_tag);
+// gd_tagged_entry_remove_tag (toolbar->entry, toolbar->entry_tag);
gtk_widget_set_sensitive (toolbar->prev, FALSE);
gtk_widget_set_sensitive (toolbar->next, FALSE);
@@ -213,7 +214,7 @@ 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)));
+ toolbar->find_string = g_strdup (gtk_editable_get_text (GTK_EDITABLE (toolbar->entry)));
g_clear_handle_id (&toolbar->find_source_id, g_source_remove);
@@ -232,7 +233,7 @@ ephy_find_toolbar_activate_link (EphyFindToolbar *toolbar,
{
return FALSE;
}
-
+#if 0 // FIXME
static gboolean
entry_key_press_event_cb (GtkEntry *entry,
GdkEventKey *event,
@@ -275,6 +276,7 @@ entry_key_press_event_cb (GtkEntry *entry,
return handled;
}
+#endif
static void
entry_activate_cb (GtkWidget *entry,
@@ -287,47 +289,23 @@ entry_activate_cb (GtkWidget *entry,
}
}
-static void
+static gboolean
ephy_find_toolbar_grab_focus (GtkWidget *widget)
{
EphyFindToolbar *toolbar = EPHY_FIND_TOOLBAR (widget);
- gtk_widget_grab_focus (GTK_WIDGET (toolbar->entry));
-}
-
-static gboolean
-ephy_find_toolbar_draw (GtkWidget *widget,
- cairo_t *cr)
-{
- GtkStyleContext *context;
-
- 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_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_style_context_restore (context);
-
- return GTK_WIDGET_CLASS (ephy_find_toolbar_parent_class)->draw (widget, cr);
+ return gtk_widget_grab_focus (GTK_WIDGET (toolbar->entry));
}
static void
-search_entry_clear_cb (GtkEntry *entry,
- gpointer user_data)
+search_entry_clear_cb (GtkEditable *entry,
+ gpointer user_data)
{
- gtk_entry_set_text (entry, "");
+ gtk_editable_set_text (entry, "");
}
static void
-search_entry_changed_cb (GtkEntry *entry,
+search_entry_changed_cb (GtkEditable *entry,
EphyFindToolbar *toolbar)
{
const char *str;
@@ -336,7 +314,7 @@ search_entry_changed_cb (GtkEntry *entry,
gboolean primary_active = FALSE;
gboolean secondary_active = FALSE;
- str = gtk_entry_get_text (entry);
+ str = gtk_editable_get_text (entry);
if (str == NULL || *str == '\0') {
primary_icon_name = "edit-find-symbolic";
@@ -363,7 +341,7 @@ ephy_find_toolbar_load_changed_cb (WebKitWebView *web_view,
EphyFindToolbar *toolbar)
{
if (load_event == WEBKIT_LOAD_STARTED &&
- hdy_search_bar_get_search_mode (HDY_SEARCH_BAR (toolbar->search_bar))) {
+ gtk_search_bar_get_search_mode (GTK_SEARCH_BAR (toolbar->search_bar))) {
ephy_find_toolbar_close (toolbar);
}
}
@@ -374,46 +352,49 @@ ephy_find_toolbar_init (EphyFindToolbar *toolbar)
GtkWidget *clamp;
GtkWidget *box;
- toolbar->search_bar = hdy_search_bar_new ();
- gtk_container_add (GTK_CONTAINER (toolbar), toolbar->search_bar);
+ toolbar->search_bar = gtk_search_bar_new ();
+ adw_bin_set_child (ADW_BIN (toolbar), toolbar->search_bar);
- clamp = GTK_WIDGET (hdy_clamp_new ());
- hdy_clamp_set_maximum_size (HDY_CLAMP (clamp), 400);
- hdy_clamp_set_tightening_threshold (HDY_CLAMP (clamp), 300);
- gtk_container_add (GTK_CONTAINER (toolbar->search_bar), clamp);
+ clamp = GTK_WIDGET (adw_clamp_new ());
+ gtk_widget_set_hexpand (clamp, TRUE);
+ adw_clamp_set_maximum_size (ADW_CLAMP (clamp), 400);
+ adw_clamp_set_tightening_threshold (ADW_CLAMP (clamp), 300);
+ gtk_search_bar_set_child (GTK_SEARCH_BAR (toolbar->search_bar), clamp);
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
- gtk_style_context_add_class (gtk_widget_get_style_context (box), "linked");
- gtk_container_add (GTK_CONTAINER (clamp), box);
+ gtk_widget_add_css_class (box, "linked");
+ adw_clamp_set_child (ADW_CLAMP (clamp), box);
- toolbar->entry = gd_tagged_entry_new ();
- toolbar->entry_tag = gd_tagged_entry_tag_new ("");
- gd_tagged_entry_tag_set_style (toolbar->entry_tag, "search-entry-occurrences-tag");
- gd_tagged_entry_tag_set_has_close_button (toolbar->entry_tag, FALSE);
+ // FIXME tagged entry
+ toolbar->entry = gtk_entry_new ();
+// toolbar->entry = gd_tagged_entry_new ();
+// toolbar->entry_tag = gd_tagged_entry_tag_new ("");
+// gd_tagged_entry_tag_set_style (toolbar->entry_tag, "search-entry-occurrences-tag");
+// gd_tagged_entry_tag_set_has_close_button (toolbar->entry_tag, FALSE);
gtk_widget_set_hexpand (GTK_WIDGET (toolbar->entry), TRUE);
gtk_entry_set_placeholder_text (GTK_ENTRY (toolbar->entry), _("Type to search…"));
- gtk_container_add (GTK_CONTAINER (box), GTK_WIDGET (toolbar->entry));
+ gtk_box_append (GTK_BOX (box), GTK_WIDGET (toolbar->entry));
/* Prev */
- toolbar->prev = gtk_button_new_from_icon_name ("go-up-symbolic", GTK_ICON_SIZE_MENU);
+ toolbar->prev = gtk_button_new_from_icon_name ("go-up-symbolic");
gtk_widget_set_tooltip_text (toolbar->prev,
_("Find previous occurrence of the search string"));
- gtk_container_add (GTK_CONTAINER (box), toolbar->prev);
+ gtk_box_append (GTK_BOX (box), 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);
+ toolbar->next = gtk_button_new_from_icon_name ("go-down-symbolic");
gtk_widget_set_tooltip_text (toolbar->next,
_("Find next occurrence of the search string"));
- gtk_container_add (GTK_CONTAINER (box), toolbar->next);
+ gtk_box_append (GTK_BOX (box), toolbar->next);
gtk_widget_set_sensitive (toolbar->next, FALSE);
/* 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 (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",
@@ -422,14 +403,12 @@ ephy_find_toolbar_init (EphyFindToolbar *toolbar)
G_CALLBACK (ephy_find_toolbar_find_next), toolbar);
g_signal_connect_swapped (toolbar->prev, "clicked",
G_CALLBACK (ephy_find_toolbar_find_previous), toolbar);
- hdy_search_bar_connect_entry (HDY_SEARCH_BAR (toolbar->search_bar),
- GTK_ENTRY (toolbar->entry));
+ gtk_search_bar_connect_entry (GTK_SEARCH_BAR (toolbar->search_bar),
+ GTK_EDITABLE (toolbar->entry));
- search_entry_changed_cb (GTK_ENTRY (toolbar->entry), toolbar);
+ search_entry_changed_cb (GTK_EDITABLE (toolbar->entry), toolbar);
toolbar->cancellable = g_cancellable_new ();
-
- gtk_widget_show_all (GTK_WIDGET (toolbar));
}
static void
@@ -506,7 +485,6 @@ ephy_find_toolbar_class_init (EphyFindToolbarClass *klass)
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] =
@@ -539,7 +517,7 @@ ephy_find_toolbar_new (WebKitWebView *web_view)
const char *
ephy_find_toolbar_get_text (EphyFindToolbar *toolbar)
{
- return gtk_entry_get_text (GTK_ENTRY (toolbar->entry));
+ return gtk_editable_get_text (GTK_EDITABLE (toolbar->entry));
}
static void
@@ -639,7 +617,7 @@ ephy_find_toolbar_selection_async (GObject *source_object,
if (exception) {
g_warning ("Error running javascript: %s", jsc_exception_get_message (exception));
} else if (strlen (str_value)) {
- gtk_entry_set_text (GTK_ENTRY (toolbar->entry), str_value);
+ gtk_editable_set_text (GTK_EDITABLE (toolbar->entry), str_value);
gtk_editable_select_region (GTK_EDITABLE (toolbar->entry), 0, -1);
}
}
@@ -659,15 +637,15 @@ ephy_find_toolbar_open (EphyFindToolbar *toolbar,
gtk_editable_select_region (GTK_EDITABLE (toolbar->entry), 0, -1);
- hdy_search_bar_set_search_mode (HDY_SEARCH_BAR (toolbar->search_bar), TRUE);
- hdy_search_bar_set_show_close_button (HDY_SEARCH_BAR (toolbar->search_bar), TRUE);
+ gtk_search_bar_set_search_mode (GTK_SEARCH_BAR (toolbar->search_bar), TRUE);
+ gtk_search_bar_set_show_close_button (GTK_SEARCH_BAR (toolbar->search_bar), TRUE);
gtk_widget_grab_focus (GTK_WIDGET (toolbar->entry));
}
void
ephy_find_toolbar_close (EphyFindToolbar *toolbar)
{
- hdy_search_bar_set_search_mode (HDY_SEARCH_BAR (toolbar->search_bar), FALSE);
+ gtk_search_bar_set_search_mode (GTK_SEARCH_BAR (toolbar->search_bar), FALSE);
if (toolbar->web_view == NULL) return;
@@ -677,7 +655,7 @@ ephy_find_toolbar_close (EphyFindToolbar *toolbar)
void
ephy_find_toolbar_request_close (EphyFindToolbar *toolbar)
{
- if (hdy_search_bar_get_search_mode (HDY_SEARCH_BAR (toolbar->search_bar))) {
+ if (gtk_search_bar_get_search_mode (GTK_SEARCH_BAR (toolbar->search_bar))) {
g_signal_emit (toolbar, signals[CLOSE], 0);
}
}
diff --git a/embed/ephy-find-toolbar.h b/embed/ephy-find-toolbar.h
index 829c6355d..7fabe3073 100644
--- a/embed/ephy-find-toolbar.h
+++ b/embed/ephy-find-toolbar.h
@@ -21,7 +21,7 @@
#pragma once
-#include <gtk/gtk.h>
+#include <adwaita.h>
#include "ephy-web-view.h"
@@ -29,7 +29,7 @@ G_BEGIN_DECLS
#define EPHY_TYPE_FIND_TOOLBAR (ephy_find_toolbar_get_type ())
-G_DECLARE_FINAL_TYPE (EphyFindToolbar, ephy_find_toolbar, EPHY, FIND_TOOLBAR, GtkBin)
+G_DECLARE_FINAL_TYPE (EphyFindToolbar, ephy_find_toolbar, EPHY, FIND_TOOLBAR, AdwBin)
EphyFindToolbar *ephy_find_toolbar_new (WebKitWebView *web_view);
diff --git a/embed/ephy-reader-handler.c b/embed/ephy-reader-handler.c
index 25adf90cb..98d81c5e8 100644
--- a/embed/ephy-reader-handler.c
+++ b/embed/ephy-reader-handler.c
@@ -27,9 +27,9 @@
#include "ephy-settings.h"
#include "ephy-web-view.h"
+#include <adwaita.h>
#include <gio/gio.h>
#include <glib/gi18n.h>
-#include <handy.h>
#include <string.h>
struct _EphyReaderHandler {
@@ -164,7 +164,7 @@ readability_js_finish_cb (GObject *object,
const gchar *title;
const gchar *font_style;
const gchar *color_scheme;
- HdyStyleManager *style_manager;
+ AdwStyleManager *style_manager;
js_result = webkit_web_view_run_javascript_finish (web_view, result, &error);
if (!js_result) {
@@ -184,10 +184,10 @@ readability_js_finish_cb (GObject *object,
g_settings_get_enum (EPHY_SETTINGS_READER,
EPHY_PREFS_READER_FONT_STYLE));
- style_manager = hdy_style_manager_get_default ();
+ style_manager = adw_style_manager_get_default ();
- if (hdy_style_manager_get_system_supports_color_schemes (style_manager))
- color_scheme = hdy_style_manager_get_dark (style_manager) ? "dark" : "light";
+ if (adw_style_manager_get_system_supports_color_schemes (style_manager))
+ color_scheme = adw_style_manager_get_dark (style_manager) ? "dark" : "light";
else
color_scheme = enum_nick (EPHY_TYPE_PREFS_READER_COLOR_SCHEME,
g_settings_get_enum (EPHY_SETTINGS_READER,
diff --git a/embed/ephy-web-view.c b/embed/ephy-web-view.c
index 12cd2455d..a95d94d8b 100644
--- a/embed/ephy-web-view.c
+++ b/embed/ephy-web-view.c
@@ -50,11 +50,11 @@
#include "ephy-web-app-utils.h"
#include "ephy-zoom.h"
+#include <adwaita.h>
#include <gio/gio.h>
#include <glib/gi18n.h>
#include <glib/gstdio.h>
#include <gtk/gtk.h>
-#include <handy.h>
/**
* SECTION:ephy-web-view
@@ -129,7 +129,7 @@ struct _EphyWebView {
EphyWebViewErrorPage error_page;
guint unresponsive_process_timeout_id;
- GtkWidget *unresponsive_process_dialog;
+ GtkWindow *unresponsive_process_dialog;
guint64 uid;
};
@@ -161,17 +161,27 @@ open_response_cb (GtkFileChooser *dialog,
WebKitFileChooserRequest *request)
{
if (response == GTK_RESPONSE_ACCEPT) {
- GSList *file_list = gtk_file_chooser_get_filenames (dialog);
+ g_autoptr (GListModel) files = gtk_file_chooser_get_files (dialog);
GPtrArray *file_array = g_ptr_array_new ();
+ g_autoptr (GFile) current_folder = NULL;
+ g_autofree char *current_folder_path = NULL;
+ guint i, n = g_list_model_get_n_items (files);
- for (GSList *file = file_list; file; file = g_slist_next (file))
- g_ptr_array_add (file_array, file->data);
+ for (i = 0; i < n; i++) {
+ g_autoptr (GFile) file = g_list_model_get_item (files, i);
+
+ g_ptr_array_add (file_array, file);
+ }
g_ptr_array_add (file_array, NULL);
webkit_file_chooser_request_select_files (request, (const char * const *)file_array->pdata);
- g_slist_free_full (file_list, g_free);
g_ptr_array_free (file_array, TRUE);
- g_settings_set_string (EPHY_SETTINGS_WEB, EPHY_PREFS_WEB_LAST_UPLOAD_DIRECTORY,
gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (dialog)));
+
+ current_folder = gtk_file_chooser_get_current_folder (dialog);
+ current_folder_path = g_file_get_path (current_folder);
+ g_settings_set_string (EPHY_SETTINGS_WEB,
+ EPHY_PREFS_WEB_LAST_UPLOAD_DIRECTORY,
+ current_folder_path);
} else {
webkit_file_chooser_request_cancel (request);
}
@@ -184,23 +194,30 @@ static gboolean
ephy_web_view_run_file_chooser (WebKitWebView *web_view,
WebKitFileChooserRequest *request)
{
- GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (web_view));
+ GtkRoot *root = gtk_widget_get_root(GTK_WIDGET (web_view));
GtkFileChooser *dialog;
gboolean allows_multiple_selection = webkit_file_chooser_request_get_select_multiple (request);
GtkFileFilter *filter = webkit_file_chooser_request_get_mime_types_filter (request);
+ g_autoptr (GFile) current_folder = NULL;
+ g_autoptr (GError) error = NULL;
dialog = ephy_create_file_chooser (_("Open"),
- GTK_WIDGET (toplevel),
+ GTK_WIDGET (root),
GTK_FILE_CHOOSER_ACTION_OPEN,
EPHY_FILE_FILTER_ALL);
if (filter) {
- gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
- gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (dialog), filter);
+ gtk_file_chooser_add_filter (dialog, filter);
+ gtk_file_chooser_set_filter (dialog, filter);
}
- gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), g_settings_get_string (EPHY_SETTINGS_WEB,
EPHY_PREFS_WEB_LAST_UPLOAD_DIRECTORY));
- gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (dialog), allows_multiple_selection);
+ current_folder = g_file_new_for_path (g_settings_get_string (EPHY_SETTINGS_WEB,
+ EPHY_PREFS_WEB_LAST_UPLOAD_DIRECTORY));
+ gtk_file_chooser_set_current_folder (dialog, current_folder, &error);
+ if (error)
+ g_info ("Failed to set current folder to: %s", error->message);
+
+ gtk_file_chooser_set_select_multiple (dialog, allows_multiple_selection);
g_signal_connect (dialog, "response",
G_CALLBACK (open_response_cb),
@@ -288,7 +305,7 @@ ephy_web_view_set_property (GObject *object,
break;
}
}
-
+/* FIXME the button one should be a controller, not sure about the key one
static gboolean
ephy_web_view_key_press_event (GtkWidget *widget,
GdkEventKey *event)
@@ -310,10 +327,10 @@ static gboolean
ephy_web_view_button_press_event (GtkWidget *widget,
GdkEventButton *event)
{
- /* These are the special cases WebkitWebView doesn't handle but we have an
- * interest in handling. */
+ *//* These are the special cases WebkitWebView doesn't handle but we have an
+ * interest in handling. *//*
- /* Handle typical back/forward mouse buttons. */
+ *//* Handle typical back/forward mouse buttons. *//*
if (event->button == 8) {
webkit_web_view_go_back (WEBKIT_WEB_VIEW (widget));
return TRUE;
@@ -324,9 +341,18 @@ ephy_web_view_button_press_event (GtkWidget *widget,
return TRUE;
}
- /* Let WebKitWebView handle this. */
+ *//* Let WebKitWebView handle this. *//*
return GTK_WIDGET_CLASS (ephy_web_view_parent_class)->button_press_event (widget, event);
}
+*/
+
+static inline void
+remove_info_bar (GtkWidget *info_bar)
+{
+ EphyEmbed *embed = EPHY_EMBED (gtk_widget_get_ancestor (info_bar, EPHY_TYPE_EMBED));
+
+ ephy_embed_remove_top_widget (embed, info_bar);
+}
static void
untrack_info_bar (GtkWidget **tracked_info_bar)
@@ -336,7 +362,7 @@ untrack_info_bar (GtkWidget **tracked_info_bar)
if (*tracked_info_bar) {
g_object_remove_weak_pointer (G_OBJECT (*tracked_info_bar), (gpointer *)tracked_info_bar);
- gtk_widget_destroy (*tracked_info_bar);
+ remove_info_bar (*tracked_info_bar);
*tracked_info_bar = NULL;
}
}
@@ -362,7 +388,6 @@ ephy_web_view_create_form_auth_save_confirmation_info_bar (EphyWebView *web_view
const char *username)
{
GtkWidget *info_bar;
- GtkWidget *content_area;
GtkWidget *label;
char *message;
@@ -379,13 +404,11 @@ ephy_web_view_create_form_auth_save_confirmation_info_bar (EphyWebView *web_view
*/
message = g_markup_printf_escaped (_("Do you want to save your password for “%s”?"), origin);
gtk_label_set_markup (GTK_LABEL (label), message);
- gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+ gtk_label_set_wrap (GTK_LABEL (label), TRUE);
gtk_label_set_xalign (GTK_LABEL (label), 0);
g_free (message);
- content_area = gtk_info_bar_get_content_area (GTK_INFO_BAR (info_bar));
- gtk_container_add (GTK_CONTAINER (content_area), label);
- gtk_widget_show (label);
+ gtk_info_bar_add_child (GTK_INFO_BAR (info_bar), label);
track_info_bar (info_bar, &web_view->password_info_bar);
@@ -419,7 +442,7 @@ info_bar_save_request_response_cb (GtkInfoBar *info_bar,
{
g_assert (data->callback);
data->callback (response_id, data->callback_data);
- gtk_widget_destroy (GTK_WIDGET (info_bar));
+ remove_info_bar (GTK_WIDGET (info_bar));
}
void
@@ -606,7 +629,6 @@ password_form_focused_cb (EphyEmbedShell *shell,
{
GtkWidget *info_bar;
GtkWidget *label;
- GtkWidget *content_area;
if (web_view->password_form_info_bar)
return;
@@ -617,15 +639,13 @@ password_form_focused_cb (EphyEmbedShell *shell,
/* Translators: Message appears when insecure password form is focused. */
label = gtk_label_new (_("Heads-up: this form is not secure. If you type your password, it will not be
kept private."));
- gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+ gtk_label_set_wrap (GTK_LABEL (label), TRUE);
gtk_label_set_xalign (GTK_LABEL (label), 0);
- gtk_widget_show (label);
info_bar = gtk_info_bar_new ();
gtk_info_bar_set_message_type (GTK_INFO_BAR (info_bar), GTK_MESSAGE_WARNING);
gtk_info_bar_set_show_close_button (GTK_INFO_BAR (info_bar), TRUE);
- content_area = gtk_info_bar_get_content_area (GTK_INFO_BAR (info_bar));
- gtk_container_add (GTK_CONTAINER (content_area), label);
+ gtk_info_bar_add_child (GTK_INFO_BAR (info_bar), label);
g_signal_connect (info_bar, "response", G_CALLBACK (gtk_widget_hide), NULL);
@@ -634,7 +654,6 @@ password_form_focused_cb (EphyEmbedShell *shell,
ephy_embed_add_top_widget (EPHY_GET_EMBED_FROM_EPHY_WEB_VIEW (web_view),
info_bar,
EPHY_EMBED_TOP_WIDGET_POLICY_DESTROY_ON_TRANSITION);
- gtk_widget_show (info_bar);
}
static void
@@ -864,7 +883,7 @@ on_unresponsive_dialog_response (GtkDialog *dialog,
(GSourceFunc)unresponsive_process_timeout_cb,
web_view,
NULL);
- g_clear_pointer (&web_view->unresponsive_process_dialog, gtk_widget_destroy);
+ g_clear_pointer (&web_view->unresponsive_process_dialog, gtk_window_destroy);
}
static gboolean
@@ -875,18 +894,19 @@ unresponsive_process_timeout_cb (gpointer user_data)
if (!gtk_widget_get_mapped (GTK_WIDGET (web_view)))
return G_SOURCE_CONTINUE;
- web_view->unresponsive_process_dialog = gtk_message_dialog_new (GTK_WINDOW (gtk_widget_get_toplevel
(GTK_WIDGET (web_view))),
- GTK_DIALOG_MODAL |
GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_USE_HEADER_BAR,
- GTK_MESSAGE_QUESTION,
- GTK_BUTTONS_NONE,
- _("The current page '%s' is unresponsive"),
- ephy_web_view_get_address (web_view));
+ web_view->unresponsive_process_dialog =
+ GTK_WINDOW (gtk_message_dialog_new (GTK_WINDOW (gtk_widget_get_root (GTK_WIDGET (web_view))),
+ GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT |
GTK_DIALOG_USE_HEADER_BAR,
+ GTK_MESSAGE_QUESTION,
+ GTK_BUTTONS_NONE,
+ _("The current page '%s' is unresponsive"),
+ ephy_web_view_get_address (web_view)));
gtk_dialog_add_button (GTK_DIALOG (web_view->unresponsive_process_dialog), _("_Wait"), GTK_RESPONSE_NO);
gtk_dialog_add_button (GTK_DIALOG (web_view->unresponsive_process_dialog), _("_Kill"), GTK_RESPONSE_YES);
g_signal_connect (web_view->unresponsive_process_dialog, "response", G_CALLBACK
(on_unresponsive_dialog_response), web_view);
- gtk_widget_show_all (web_view->unresponsive_process_dialog);
+ gtk_window_present (web_view->unresponsive_process_dialog);
web_view->unresponsive_process_timeout_id = 0;
@@ -904,7 +924,7 @@ is_web_process_responsive_changed_cb (EphyWebView *web_view,
if (web_view->unresponsive_process_dialog && responsive) {
g_signal_handlers_disconnect_by_func (web_view->unresponsive_process_dialog,
on_unresponsive_dialog_response, web_view);
- g_clear_pointer (&web_view->unresponsive_process_dialog, gtk_widget_destroy);
+ g_clear_pointer (&web_view->unresponsive_process_dialog, gtk_window_destroy);
}
if (!responsive) {
@@ -1091,7 +1111,7 @@ decide_on_permission_request (GtkWidget *info_bar,
}
g_object_weak_unref (G_OBJECT (info_bar), (GWeakNotify)permission_request_info_bar_destroyed_cb, data);
- gtk_widget_destroy (info_bar);
+ remove_info_bar (info_bar);
permission_request_data_free (data);
}
@@ -1102,7 +1122,6 @@ show_permission_request_info_bar (WebKitWebView *web_view,
{
PermissionRequestData *data;
GtkWidget *info_bar;
- GtkWidget *content_area;
GtkWidget *label;
char *message;
char *origin;
@@ -1152,13 +1171,10 @@ show_permission_request_info_bar (WebKitWebView *web_view,
label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label), message);
- gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+ gtk_label_set_wrap (GTK_LABEL (label), TRUE);
gtk_label_set_xalign (GTK_LABEL (label), 0);
- content_area = gtk_info_bar_get_content_area (GTK_INFO_BAR (info_bar));
- gtk_container_add (GTK_CONTAINER (content_area), label);
-
- gtk_widget_show_all (info_bar);
+ gtk_info_bar_add_child (GTK_INFO_BAR (info_bar), label);
data = permission_request_data_new (EPHY_WEB_VIEW (web_view), decision, origin);
@@ -1212,7 +1228,7 @@ decide_on_itp_permission_request (GtkWidget *info_bar,
}
g_object_set_data (G_OBJECT (info_bar), "ephy-itp-decision", NULL);
- gtk_widget_destroy (info_bar);
+ remove_info_bar (info_bar);
}
static void
@@ -1220,7 +1236,6 @@ ephy_web_view_show_itp_permission_info_bar (EphyWebView
WebKitWebsiteDataAccessPermissionRequest *decision)
{
GtkWidget *info_bar;
- GtkWidget *content_area;
GtkWidget *box;
GtkWidget *label;
g_autofree char *message = NULL;
@@ -1241,21 +1256,17 @@ ephy_web_view_show_itp_permission_info_bar (EphyWebView
markup = g_strdup_printf ("<span weight='bold'>%s</span>", message);
label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label), markup);
- gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+ gtk_label_set_wrap (GTK_LABEL (label), TRUE);
gtk_label_set_xalign (GTK_LABEL (label), 0);
- gtk_container_add (GTK_CONTAINER (box), label);
- gtk_widget_show (label);
+ gtk_box_append (GTK_BOX (box), label);
secondary_message = g_strdup_printf (_("This will allow “%s” to track your activity."), requesting_domain);
label = gtk_label_new (secondary_message);
- gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+ gtk_label_set_wrap (GTK_LABEL (label), TRUE);
gtk_label_set_xalign (GTK_LABEL (label), 0);
- gtk_container_add (GTK_CONTAINER (box), label);
- gtk_widget_show (label);
+ gtk_box_append (GTK_BOX (box), label);
- content_area = gtk_info_bar_get_content_area (GTK_INFO_BAR (info_bar));
- gtk_container_add (GTK_CONTAINER (content_area), box);
- gtk_widget_show (box);
+ gtk_info_bar_add_child (GTK_INFO_BAR (info_bar), box);
track_info_bar (info_bar, &web_view->itp_info_bar);
@@ -1267,7 +1278,6 @@ ephy_web_view_show_itp_permission_info_bar (EphyWebView
ephy_embed_add_top_widget (EPHY_GET_EMBED_FROM_EPHY_WEB_VIEW (web_view),
info_bar,
EPHY_EMBED_TOP_WIDGET_POLICY_DESTROY_ON_TRANSITION);
- gtk_widget_show (info_bar);
}
static gboolean
@@ -1503,7 +1513,7 @@ update_security_status_for_committed_load (EphyWebView *view,
{
EphySecurityLevel security_level = EPHY_SECURITY_LEVEL_NO_SECURITY;
EphyEmbed *embed = NULL;
- GtkWidget *toplevel;
+ GtkRoot *root;
WebKitWebContext *web_context;
WebKitSecurityManager *security_manager;
g_autoptr (GUri) guri = NULL;
@@ -1517,8 +1527,8 @@ update_security_status_for_committed_load (EphyWebView *view,
return;
}
- toplevel = gtk_widget_get_toplevel (GTK_WIDGET (view));
- if (EPHY_IS_EMBED_CONTAINER (toplevel))
+ root = gtk_widget_get_root (GTK_WIDGET (view));
+ if (EPHY_IS_EMBED_CONTAINER (root))
embed = EPHY_GET_EMBED_FROM_EPHY_WEB_VIEW (view);
web_context = webkit_web_view_get_context (WEBKIT_WEB_VIEW (view));
security_manager = webkit_web_context_get_security_manager (web_context);
@@ -2511,15 +2521,15 @@ close_web_view_cb (WebKitWebView *web_view,
gpointer user_data)
{
- GtkWidget *widget = gtk_widget_get_toplevel (GTK_WIDGET (web_view));
+ GtkRoot *root = gtk_widget_get_root (GTK_WIDGET (web_view));
LOG ("close web view");
- if (EPHY_IS_EMBED_CONTAINER (widget))
- ephy_embed_container_remove_child (EPHY_EMBED_CONTAINER (widget),
+ if (EPHY_IS_EMBED_CONTAINER (root))
+ ephy_embed_container_remove_child (EPHY_EMBED_CONTAINER (root),
EPHY_GET_EMBED_FROM_EPHY_WEB_VIEW (web_view));
else
- gtk_widget_destroy (widget);
+ gtk_window_destroy (GTK_WINDOW (root));
}
@@ -2579,7 +2589,7 @@ enum_nick (GType enum_type,
static void
reader_setting_changed_cb (EphyWebView *web_view)
{
- HdyStyleManager *style_manager;
+ AdwStyleManager *style_manager;
const gchar *font_style;
const gchar *color_scheme;
gchar *js_snippet;
@@ -2591,10 +2601,10 @@ reader_setting_changed_cb (EphyWebView *web_view)
g_settings_get_enum (EPHY_SETTINGS_READER,
EPHY_PREFS_READER_FONT_STYLE));
- style_manager = hdy_style_manager_get_default ();
+ style_manager = adw_style_manager_get_default ();
- if (hdy_style_manager_get_system_supports_color_schemes (style_manager))
- color_scheme = hdy_style_manager_get_dark (style_manager) ? "dark" : "light";
+ if (adw_style_manager_get_system_supports_color_schemes (style_manager))
+ color_scheme = adw_style_manager_get_dark (style_manager) ? "dark" : "light";
else
color_scheme = enum_nick (EPHY_TYPE_PREFS_READER_COLOR_SCHEME,
g_settings_get_enum (EPHY_SETTINGS_READER,
@@ -3585,26 +3595,29 @@ ephy_web_view_get_security_level (EphyWebView *view,
*errors = view->tls_errors;
}
+static void
+info_bar_response_cb (GtkInfoBar *info_bar,
+ int response_id,
+ EphyEmbed *embed)
+{
+ ephy_embed_remove_top_widget (embed, GTK_WIDGET (info_bar));
+}
+
static void
ephy_web_view_print_failed (EphyWebView *view,
GError *error)
{
GtkWidget *info_bar;
GtkWidget *label;
- GtkContainer *content_area;
EphyEmbed *embed = EPHY_GET_EMBED_FROM_EPHY_WEB_VIEW (view);
info_bar = gtk_info_bar_new_with_buttons (_("_OK"), GTK_RESPONSE_OK, NULL);
label = gtk_label_new (error->message);
- content_area = GTK_CONTAINER (gtk_info_bar_get_content_area (GTK_INFO_BAR (info_bar)));
- gtk_info_bar_set_message_type (GTK_INFO_BAR (info_bar), GTK_MESSAGE_ERROR);
- gtk_container_add (content_area, label);
- g_signal_connect (info_bar, "response",
- G_CALLBACK (gtk_widget_destroy), NULL);
+ gtk_info_bar_add_child (GTK_INFO_BAR (info_bar), label);
+ g_signal_connect (info_bar, "response", G_CALLBACK (info_bar_response_cb), embed);
ephy_embed_add_top_widget (embed, info_bar, EPHY_EMBED_TOP_WIDGET_POLICY_RETAIN_ON_TRANSITION);
- gtk_widget_show_all (info_bar);
}
static void
@@ -3911,7 +3924,7 @@ ephy_web_view_dispose (GObject *object)
g_clear_object (&view->certificate);
g_clear_object (&view->file_monitor);
g_clear_object (&view->icon);
- g_clear_pointer (&view->unresponsive_process_dialog, gtk_widget_destroy);
+ g_clear_pointer (&view->unresponsive_process_dialog, gtk_window_destroy);
if (view->cancellable) {
g_cancellable_cancel (view->cancellable);
@@ -4001,12 +4014,12 @@ ephy_web_view_init (EphyWebView *web_view)
G_CALLBACK (reader_setting_changed_cb),
web_view, G_CONNECT_SWAPPED);
- g_signal_connect_object (hdy_style_manager_get_default (),
+ g_signal_connect_object (adw_style_manager_get_default (),
"notify::system-supports-color-schemes",
G_CALLBACK (reader_setting_changed_cb),
web_view, G_CONNECT_SWAPPED);
- g_signal_connect_object (hdy_style_manager_get_default (),
+ g_signal_connect_object (adw_style_manager_get_default (),
"notify::dark",
G_CALLBACK (reader_setting_changed_cb),
web_view, G_CONNECT_SWAPPED);
@@ -4095,7 +4108,7 @@ static void
ephy_web_view_class_init (EphyWebViewClass *klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
- GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+// GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
WebKitWebViewClass *webkit_webview_class = WEBKIT_WEB_VIEW_CLASS (klass);
gobject_class->dispose = ephy_web_view_dispose;
@@ -4104,8 +4117,8 @@ ephy_web_view_class_init (EphyWebViewClass *klass)
gobject_class->set_property = ephy_web_view_set_property;
gobject_class->constructed = ephy_web_view_constructed;
- widget_class->button_press_event = ephy_web_view_button_press_event;
- widget_class->key_press_event = ephy_web_view_key_press_event;
+// widget_class->button_press_event = ephy_web_view_button_press_event;
+// FIXME widget_class->key_press_event = ephy_web_view_key_press_event;
webkit_webview_class->run_file_chooser = ephy_web_view_run_file_chooser;
diff --git a/embed/meson.build b/embed/meson.build
index 28b95859c..7d94b9864 100644
--- a/embed/meson.build
+++ b/embed/meson.build
@@ -11,7 +11,7 @@ enums = gnome.mkenums_simple('ephy-embed-type-builtins',
)
libephyembed_sources = [
- 'contrib/gd-tagged-entry.c',
+# 'contrib/gd-tagged-entry.c',
'ephy-about-handler.c',
'ephy-downloads-manager.c',
'ephy-download.c',
@@ -34,12 +34,11 @@ libephyembed_sources = [
libephyembed_deps = [
config_h,
- libdazzle_dep,
ephymisc_dep,
gio_dep,
glib_dep,
gtk_dep,
- libhandy_dep,
+ libadwaita_dep,
libsecret_dep,
libsoup_dep,
m_dep,
diff --git a/lib/ephy-file-helpers.c b/lib/ephy-file-helpers.c
index a2e3ab645..ebc7b2606 100644
--- a/lib/ephy-file-helpers.c
+++ b/lib/ephy-file-helpers.c
@@ -548,7 +548,6 @@ launch_application (GAppInfo *app,
g_autoptr (GdkAppLaunchContext) context = NULL;
g_autoptr (GError) error = NULL;
GdkDisplay *display;
- GdkScreen *screen;
gboolean res;
/* This is impossible to implement inside flatpak. Higher layers must
@@ -557,10 +556,8 @@ launch_application (GAppInfo *app,
g_assert (!ephy_is_running_inside_flatpak ());
display = gdk_display_get_default ();
- screen = gdk_screen_get_default ();
context = gdk_display_get_app_launch_context (display);
- gdk_app_launch_context_set_screen (context, screen);
gdk_app_launch_context_set_timestamp (context, user_time);
res = g_app_info_launch (app, files,
@@ -665,7 +662,7 @@ static gboolean
open_in_default_handler (const char *uri,
const char *mime_type,
guint32 timestamp,
- GdkScreen *screen,
+ GdkDisplay *display,
EphyFileHelpersNotFlatpakTag tag)
{
g_autoptr (GdkAppLaunchContext) context = NULL;
@@ -679,8 +676,7 @@ open_in_default_handler (const char *uri,
g_assert (tag == EPHY_FILE_HELPERS_I_UNDERSTAND_I_MUST_NOT_USE_THIS_FUNCTION_UNDER_FLATPAK);
g_assert (!ephy_is_running_inside_flatpak ());
- context = gdk_display_get_app_launch_context (screen ? gdk_screen_get_display (screen) :
gdk_display_get_default ());
- gdk_app_launch_context_set_screen (context, screen);
+ context = gdk_display_get_app_launch_context (display ? display : gdk_display_get_default ());
gdk_app_launch_context_set_timestamp (context, timestamp);
appinfo = g_app_info_get_default_for_type (mime_type, TRUE);
@@ -703,10 +699,10 @@ open_in_default_handler (const char *uri,
gboolean
ephy_file_open_uri_in_default_browser (const char *uri,
guint32 user_time,
- GdkScreen *screen,
+ GdkDisplay *display,
EphyFileHelpersNotFlatpakTag tag)
{
- return open_in_default_handler (uri, "x-scheme-handler/http", user_time, screen, tag);
+ return open_in_default_handler (uri, "x-scheme-handler/http", user_time, display, tag);
}
/**
diff --git a/lib/ephy-file-helpers.h b/lib/ephy-file-helpers.h
index c09d145c8..1a9eb3b25 100644
--- a/lib/ephy-file-helpers.h
+++ b/lib/ephy-file-helpers.h
@@ -82,7 +82,7 @@ gboolean ephy_file_launch_desktop_file (const char
EphyFileHelpersNotFlatpakTag tag);
gboolean ephy_file_open_uri_in_default_browser (const char *uri,
guint32 user_time,
- GdkScreen *screen,
+ GdkDisplay *screen,
EphyFileHelpersNotFlatpakTag tag);
gboolean ephy_file_browse_to (GFile *file,
guint32 user_time);
diff --git a/lib/ephy-flatpak-utils.c b/lib/ephy-flatpak-utils.c
index 818af95f4..70dfca8e4 100644
--- a/lib/ephy-flatpak-utils.c
+++ b/lib/ephy-flatpak-utils.c
@@ -29,7 +29,7 @@
#include <gio/gio.h>
#include <gio/gunixfdlist.h>
#if USE_LIBPORTAL
-#include <libportal/portal-gtk3.h>
+#include <libportal/portal-gtk4.h>
#endif
#include <string.h>
#include <sys/stat.h>
diff --git a/lib/ephy-gui.c b/lib/ephy-gui.c
index c342b23a0..12c5cce22 100644
--- a/lib/ephy-gui.c
+++ b/lib/ephy-gui.c
@@ -53,7 +53,6 @@ void
ephy_gui_help (GtkWidget *parent,
const char *page)
{
- GError *error = NULL;
char *url;
if (page)
@@ -61,27 +60,12 @@ ephy_gui_help (GtkWidget *parent,
else
url = g_strdup ("help:epiphany");
- gtk_show_uri_on_window (GTK_WINDOW (parent), url, gtk_get_current_event_time (), &error);
-
- if (error != NULL) {
- GtkWidget *dialog;
-
- dialog = gtk_message_dialog_new (GTK_WINDOW (parent),
- GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_OK,
- _("Could not display help: %s"),
- error->message);
- g_error_free (error);
-
- g_signal_connect (dialog, "response",
- G_CALLBACK (gtk_widget_destroy), NULL);
- gtk_widget_show (dialog);
- }
+ gtk_show_uri (GTK_WINDOW (parent), url, GDK_CURRENT_TIME);
g_free (url);
}
+#if 0
void
ephy_gui_get_current_event (GdkEventType *otype,
guint *ostate,
@@ -119,3 +103,4 @@ ephy_gui_get_current_event (GdkEventType *otype,
if (obutton)
*obutton = button;
}
+#endif
diff --git a/lib/ephy-notification-container.c b/lib/ephy-notification-container.c
index f0f31e736..8a02322f2 100644
--- a/lib/ephy-notification-container.c
+++ b/lib/ephy-notification-container.c
@@ -23,13 +23,13 @@
#include "ephy-notification-container.h"
struct _EphyNotificationContainer {
- GtkBin parent_instance;
+ AdwBin parent_instance;
GtkWidget *revealer;
GtkWidget *box;
};
-G_DEFINE_TYPE (EphyNotificationContainer, ephy_notification_container, GTK_TYPE_BIN);
+G_DEFINE_TYPE (EphyNotificationContainer, ephy_notification_container, ADW_TYPE_BIN);
static EphyNotificationContainer *notification_container = NULL;
@@ -46,10 +46,12 @@ ephy_notification_container_init (EphyNotificationContainer *self)
gtk_widget_set_valign (GTK_WIDGET (self), GTK_ALIGN_START);
self->revealer = gtk_revealer_new ();
- gtk_container_add (GTK_CONTAINER (self), self->revealer);
+ adw_bin_set_child (ADW_BIN (self), self->revealer);
self->box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
- gtk_container_add (GTK_CONTAINER (self->revealer), self->box);
+ gtk_revealer_set_child (GTK_REVEALER (self->revealer), self->box);
+
+ gtk_widget_hide (GTK_WIDGET (self));
}
static void
@@ -67,28 +69,13 @@ ephy_notification_container_get_default (void)
NULL);
}
-static guint
-get_num_children (EphyNotificationContainer *self)
-{
- GList *children;
- guint retval;
-
- g_assert (EPHY_IS_NOTIFICATION_CONTAINER (self));
-
- children = gtk_container_get_children (GTK_CONTAINER (self->box));
- retval = g_list_length (children);
- g_list_free (children);
-
- return retval;
-}
-
static void
notification_close_cb (EphyNotification *notification,
EphyNotificationContainer *self)
{
- gtk_container_remove (GTK_CONTAINER (self->box), GTK_WIDGET (notification));
+ gtk_box_remove (GTK_BOX (self->box), GTK_WIDGET (notification));
- if (get_num_children (self) == 0) {
+ if (!gtk_widget_get_first_child (self->box)) {
gtk_widget_hide (GTK_WIDGET (self));
gtk_revealer_set_reveal_child (GTK_REVEALER (self->revealer), FALSE);
}
@@ -98,24 +85,24 @@ void
ephy_notification_container_add_notification (EphyNotificationContainer *self,
GtkWidget *notification)
{
- g_autoptr (GList) children = NULL;
- GList *list;
+ GtkWidget *child;
g_assert (EPHY_IS_NOTIFICATION_CONTAINER (self));
g_assert (GTK_IS_WIDGET (notification));
- children = gtk_container_get_children (GTK_CONTAINER (self->box));
- for (list = children; list && list->data; list = list->next) {
- EphyNotification *child_notification = EPHY_NOTIFICATION (children->data);
+ for (child = gtk_widget_get_first_child (self->box);
+ child;
+ child = gtk_widget_get_next_sibling (child)) {
+ EphyNotification *child_notification = EPHY_NOTIFICATION (child);
if (ephy_notification_is_duplicate (child_notification, EPHY_NOTIFICATION (notification))) {
- gtk_widget_destroy (notification);
+ gtk_box_remove (GTK_BOX (self->box), notification);
return;
}
}
- gtk_container_add (GTK_CONTAINER (self->box), notification);
- gtk_widget_show_all (GTK_WIDGET (self));
+ gtk_box_append (GTK_BOX (self->box), notification);
+ gtk_widget_show (GTK_WIDGET (self));
gtk_revealer_set_reveal_child (GTK_REVEALER (self->revealer), TRUE);
g_signal_connect (notification, "close", G_CALLBACK (notification_close_cb), self);
diff --git a/lib/ephy-notification-container.h b/lib/ephy-notification-container.h
index 4444f83b7..df5fcdb36 100644
--- a/lib/ephy-notification-container.h
+++ b/lib/ephy-notification-container.h
@@ -20,13 +20,13 @@
#pragma once
-#include <gtk/gtk.h>
+#include <adwaita.h>
G_BEGIN_DECLS
#define EPHY_TYPE_NOTIFICATION_CONTAINER (ephy_notification_container_get_type ())
-G_DECLARE_FINAL_TYPE (EphyNotificationContainer, ephy_notification_container, EPHY, NOTIFICATION_CONTAINER,
GtkBin)
+G_DECLARE_FINAL_TYPE (EphyNotificationContainer, ephy_notification_container, EPHY, NOTIFICATION_CONTAINER,
AdwBin)
EphyNotificationContainer *ephy_notification_container_get_default (void);
diff --git a/lib/ephy-notification.c b/lib/ephy-notification.c
index 43746bab3..2f429ab64 100644
--- a/lib/ephy-notification.c
+++ b/lib/ephy-notification.c
@@ -24,7 +24,7 @@
#include "ephy-notification-container.h"
struct _EphyNotification {
- GtkBin parent_instance;
+ AdwBin parent_instance;
GtkWidget *grid;
@@ -49,7 +49,7 @@ enum {
static guint signals[LAST_SIGNAL];
-G_DEFINE_TYPE (EphyNotification, ephy_notification, GTK_TYPE_BIN);
+G_DEFINE_TYPE (EphyNotification, ephy_notification, ADW_TYPE_BIN);
static void
ephy_notification_constructed (GObject *object)
@@ -125,27 +125,22 @@ close_button_clicked_cb (GtkButton *button,
static void
ephy_notification_init (EphyNotification *self)
{
- GtkWidget *image;
- GtkStyleContext *context;
-
- self->grid = gtk_grid_new ();
- context = gtk_widget_get_style_context (self->grid);
- gtk_style_context_add_class (context, "app-notification");
- gtk_container_add (GTK_CONTAINER (self), self->grid);
+ gtk_widget_add_css_class (GTK_WIDGET (self), "app-notification");
+ adw_bin_set_child (ADW_BIN (self), self->grid);
self->head = gtk_label_new (NULL);
- gtk_label_set_line_wrap (GTK_LABEL (self->head), TRUE);
+ gtk_label_set_wrap (GTK_LABEL (self->head), TRUE);
gtk_label_set_xalign (GTK_LABEL (self->head), 0);
gtk_widget_set_hexpand (self->head, TRUE);
gtk_grid_attach (GTK_GRID (self->grid), self->head, 0, 0, 1, 1);
self->body = gtk_label_new (NULL);
- gtk_label_set_line_wrap (GTK_LABEL (self->body), TRUE);
+ gtk_label_set_wrap (GTK_LABEL (self->body), TRUE);
gtk_label_set_xalign (GTK_LABEL (self->body), 0);
gtk_widget_set_hexpand (self->body, TRUE);
gtk_grid_attach (GTK_GRID (self->grid), self->body, 0, 1, 1, 1);
- self->close_button = gtk_button_new ();
+ self->close_button = gtk_button_new_from_icon_name ("window-close-symbolic");
gtk_widget_set_focus_on_click (self->close_button, FALSE);
gtk_widget_set_margin_top (self->close_button, 6);
gtk_widget_set_margin_bottom (self->close_button, 6);
@@ -154,9 +149,6 @@ ephy_notification_init (EphyNotification *self)
gtk_style_context_add_class (gtk_widget_get_style_context (self->close_button), "flat");
gtk_grid_attach (GTK_GRID (self->grid), self->close_button, 1, 0, 1, 2);
- image = gtk_image_new_from_icon_name ("window-close-symbolic", GTK_ICON_SIZE_BUTTON);
- gtk_button_set_image (GTK_BUTTON (self->close_button), image);
-
g_signal_connect (self->close_button,
"clicked",
G_CALLBACK (close_button_clicked_cb),
diff --git a/lib/ephy-notification.h b/lib/ephy-notification.h
index d3226cb68..5947cbcad 100644
--- a/lib/ephy-notification.h
+++ b/lib/ephy-notification.h
@@ -21,13 +21,13 @@
#pragma once
#include <glib-object.h>
-#include <gtk/gtk.h>
+#include <adwaita.h>
G_BEGIN_DECLS
#define EPHY_TYPE_NOTIFICATION (ephy_notification_get_type ())
-G_DECLARE_FINAL_TYPE (EphyNotification, ephy_notification, EPHY, NOTIFICATION, GtkBin)
+G_DECLARE_FINAL_TYPE (EphyNotification, ephy_notification, EPHY, NOTIFICATION, AdwBin)
EphyNotification *ephy_notification_new (const char *head,
const char *body);
diff --git a/lib/meson.build b/lib/meson.build
index 894589a1a..76e42cea4 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -12,7 +12,7 @@ enums = gnome.mkenums_simple('ephy-lib-type-builtins',
libephymisc_sources = [
'contrib/gnome-languages.c',
'ephy-debug.c',
- 'ephy-dnd.c',
+# 'ephy-dnd.c',
'ephy-favicon-helpers.c',
'ephy-file-helpers.c',
'ephy-flatpak-utils.c',
@@ -31,7 +31,7 @@ libephymisc_sources = [
'ephy-sqlite-connection.c',
'ephy-sqlite-statement.c',
'ephy-string.c',
- 'ephy-suggestion.c',
+# 'ephy-suggestion.c',
'ephy-sync-utils.c',
'ephy-time-helpers.c',
'ephy-uri-helpers.c',
@@ -59,7 +59,7 @@ libephymisc_deps = [
gsettings_desktop_schemas,
gtk_dep,
json_glib_dep,
- libdazzle_dep,
+ libadwaita_dep,
libsecret_dep,
libsoup_dep,
libxml_dep,
diff --git a/lib/widgets/ephy-download-widget.c b/lib/widgets/ephy-download-widget.c
index b81c567a8..e7e484a1f 100644
--- a/lib/widgets/ephy-download-widget.c
+++ b/lib/widgets/ephy-download-widget.c
@@ -30,7 +30,7 @@
#include <webkit2/webkit2.h>
struct _EphyDownloadWidget {
- GtkEventBox parent_instance;
+ AdwBin parent_instance;
EphyDownload *download;
@@ -41,7 +41,7 @@ struct _EphyDownloadWidget {
GtkWidget *action_button;
};
-G_DEFINE_TYPE (EphyDownloadWidget, ephy_download_widget, GTK_TYPE_EVENT_BOX)
+G_DEFINE_TYPE (EphyDownloadWidget, ephy_download_widget, ADW_TYPE_BIN)
enum {
PROP_0,
@@ -135,7 +135,7 @@ update_download_icon (EphyDownloadWidget *widget)
} else
icon = g_icon_new_for_string ("package-x-generic-symbolic", NULL);
- gtk_image_set_from_gicon (GTK_IMAGE (widget->icon), icon, GTK_ICON_SIZE_MENU);
+ gtk_image_set_from_gicon (GTK_IMAGE (widget->icon), icon);
}
static void
@@ -211,9 +211,8 @@ download_finished_cb (EphyDownload *download,
{
gtk_widget_hide (widget->progress);
update_status_label (widget, _("Finished"));
- gtk_image_set_from_icon_name (GTK_IMAGE (gtk_button_get_image (GTK_BUTTON (widget->action_button))),
- "folder-open-symbolic",
- GTK_ICON_SIZE_MENU);
+ gtk_button_set_icon_name (GTK_BUTTON (widget->action_button),
+ "folder-open-symbolic");
}
static void
@@ -237,9 +236,8 @@ download_failed_cb (EphyDownload *download,
error_msg = g_strdup_printf (_("Error downloading: %s"), error->message);
update_status_label (widget, error_msg);
- gtk_image_set_from_icon_name (GTK_IMAGE (gtk_button_get_image (GTK_BUTTON (widget->action_button))),
- "list-remove-symbolic",
- GTK_ICON_SIZE_MENU);
+ gtk_button_set_icon_name (GTK_BUTTON (widget->action_button),
+ "list-remove-symbolic");
}
static void
@@ -273,7 +271,7 @@ widget_action_button_clicked_cb (EphyDownloadWidget *widget)
} else {
ephy_download_do_download_action (widget->download,
EPHY_DOWNLOAD_ACTION_BROWSE_TO,
- gtk_get_current_event_time ());
+ GDK_CURRENT_TIME);
}
}
@@ -285,6 +283,7 @@ download_destination_changed_cb (WebKitDownload *download,
update_download_destination (widget);
}
+/*
static void
download_drag_data_get (GtkWidget *widget,
GdkDragContext *context,
@@ -302,6 +301,7 @@ download_drag_data_get (GtkWidget *widget,
gtk_selection_data_set_uris (selection_data, uris);
g_free (uris[0]);
}
+*/
static void
ephy_download_widget_get_property (GObject *object,
@@ -383,7 +383,7 @@ ephy_download_widget_constructed (GObject *object)
gtk_widget_set_margin_end (GTK_WIDGET (grid), 12);
gtk_widget_set_margin_top (GTK_WIDGET (grid), 12);
gtk_widget_set_margin_bottom (GTK_WIDGET (grid), 12);
- gtk_container_add (GTK_CONTAINER (widget), grid);
+ adw_bin_set_child (ADW_BIN (widget), grid);
widget->icon = gtk_image_new ();
gtk_widget_set_margin_end (widget->icon, 4);
@@ -437,7 +437,7 @@ ephy_download_widget_constructed (GObject *object)
action_icon_name = "list-remove-symbolic";
else
action_icon_name = "window-close-symbolic";
- widget->action_button = gtk_button_new_from_icon_name (action_icon_name, GTK_ICON_SIZE_MENU);
+ widget->action_button = gtk_button_new_from_icon_name (action_icon_name);
g_signal_connect_swapped (widget->action_button, "clicked",
G_CALLBACK (widget_action_button_clicked_cb),
widget);
@@ -446,7 +446,6 @@ ephy_download_widget_constructed (GObject *object)
gtk_style_context_add_class (gtk_widget_get_style_context (widget->action_button),
"circular");
gtk_grid_attach (GTK_GRID (grid), widget->action_button, 3, 0, 1, 3);
- gtk_widget_show (widget->action_button);
download = ephy_download_get_webkit_download (widget->download);
g_signal_connect (download, "notify::estimated-progress",
@@ -468,9 +467,9 @@ ephy_download_widget_constructed (GObject *object)
G_CALLBACK (download_content_type_changed_cb),
widget);
- gtk_drag_source_set (GTK_WIDGET (widget), GDK_BUTTON1_MASK, NULL, 0, GDK_ACTION_COPY);
- gtk_drag_source_add_uri_targets (GTK_WIDGET (widget));
- g_signal_connect_object (widget, "drag-data-get", G_CALLBACK (download_drag_data_get), download, 0);
+// gtk_drag_source_set (GTK_WIDGET (widget), GDK_BUTTON1_MASK, NULL, 0, GDK_ACTION_COPY);
+// gtk_drag_source_add_uri_targets (GTK_WIDGET (widget));
+// g_signal_connect_object (widget, "drag-data-get", G_CALLBACK (download_drag_data_get), download, 0);
}
static void
diff --git a/lib/widgets/ephy-download-widget.h b/lib/widgets/ephy-download-widget.h
index f36bd053a..72f5369b1 100644
--- a/lib/widgets/ephy-download-widget.h
+++ b/lib/widgets/ephy-download-widget.h
@@ -20,14 +20,14 @@
#pragma once
-#include <glib-object.h>
+#include <adwaita.h>
#include "ephy-download.h"
G_BEGIN_DECLS
#define EPHY_TYPE_DOWNLOAD_WIDGET ephy_download_widget_get_type()
-G_DECLARE_FINAL_TYPE (EphyDownloadWidget, ephy_download_widget, EPHY, DOWNLOAD_WIDGET, GtkEventBox)
+G_DECLARE_FINAL_TYPE (EphyDownloadWidget, ephy_download_widget, EPHY, DOWNLOAD_WIDGET, AdwBin)
GtkWidget *ephy_download_widget_new (EphyDownload *ephy_download);
diff --git a/lib/widgets/ephy-downloads-popover.c b/lib/widgets/ephy-downloads-popover.c
index c91857671..06d4ef750 100644
--- a/lib/widgets/ephy-downloads-popover.c
+++ b/lib/widgets/ephy-downloads-popover.c
@@ -45,14 +45,14 @@ download_box_row_activated_cb (EphyDownloadsPopover *popover,
EphyDownloadWidget *widget;
EphyDownload *download;
- widget = EPHY_DOWNLOAD_WIDGET (gtk_bin_get_child (GTK_BIN (row)));
+ widget = EPHY_DOWNLOAD_WIDGET (gtk_list_box_row_get_child (GTK_LIST_BOX_ROW (row)));
download = ephy_download_widget_get_download (widget);
if (!ephy_download_succeeded (download))
return;
ephy_download_do_download_action (download,
EPHY_DOWNLOAD_ACTION_OPEN,
- gtk_get_current_event_time ());
+ GDK_CURRENT_TIME);
}
static void
@@ -78,7 +78,6 @@ download_added_cb (EphyDownloadsPopover *popover,
row = gtk_list_box_row_new ();
gtk_list_box_prepend (GTK_LIST_BOX (popover->downloads_box), row);
- gtk_widget_show (row);
widget = ephy_download_widget_new (download);
g_signal_connect_object (download, "completed",
@@ -87,41 +86,38 @@ download_added_cb (EphyDownloadsPopover *popover,
g_signal_connect_object (download, "error",
G_CALLBACK (download_failed_cb),
popover, G_CONNECT_SWAPPED);
- gtk_container_add (GTK_CONTAINER (row), widget);
- gtk_widget_show (widget);
+ gtk_list_box_row_set_child (GTK_LIST_BOX_ROW (row), widget);
}
static void
download_removed_cb (EphyDownloadsPopover *popover,
EphyDownload *download)
{
- g_autoptr (GList) children = NULL;
- GList *l;
EphyDownloadsManager *manager;
+ int i = 0;
- children = gtk_container_get_children (GTK_CONTAINER (popover->downloads_box));
-
- /* Hide the popover before removing the last download widget so it "crumples"
- * more smoothly */
- if (g_list_length (children) == 1)
- gtk_widget_hide (GTK_WIDGET (popover));
-
- for (l = children; l; l = g_list_next (l)) {
+ while (TRUE) {
+ GtkListBoxRow *row;
GtkWidget *widget;
- if (!GTK_IS_LIST_BOX_ROW (l->data))
+ row = gtk_list_box_get_row_at_index (GTK_LIST_BOX (popover->downloads_box), i++);
+
+ if (!GTK_IS_LIST_BOX_ROW (row))
continue;
- widget = gtk_bin_get_child (GTK_BIN (l->data));
+ widget = gtk_list_box_row_get_child (row);
if (!EPHY_IS_DOWNLOAD_WIDGET (widget))
continue;
if (ephy_download_widget_get_download (EPHY_DOWNLOAD_WIDGET (widget)) == download) {
- gtk_widget_destroy (l->data);
+ gtk_list_box_remove (GTK_LIST_BOX (popover->downloads_box), GTK_WIDGET (row));
break;
}
}
+ if (i == 1)
+ gtk_popover_popdown (GTK_POPOVER (popover));
+
manager = ephy_embed_shell_get_downloads_manager (ephy_embed_shell_get_default ());
gtk_widget_set_sensitive (popover->clear_button, !ephy_downloads_manager_has_active_downloads (manager));
}
@@ -129,31 +125,23 @@ download_removed_cb (EphyDownloadsPopover *popover,
static void
clear_button_clicked_cb (EphyDownloadsPopover *popover)
{
- g_autoptr (GList) children = NULL;
- GList *l;
EphyDownloadsManager *manager;
+ GtkListBoxRow *row;
gtk_widget_hide (GTK_WIDGET (popover));
manager = ephy_embed_shell_get_downloads_manager (ephy_embed_shell_get_default ());
g_signal_handlers_block_by_func (manager, download_removed_cb, popover);
- children = gtk_container_get_children (GTK_CONTAINER (popover->downloads_box));
- for (l = children; l; l = g_list_next (l)) {
+ while ((row = gtk_list_box_get_row_at_index (GTK_LIST_BOX (popover->downloads_box), 0))) {
GtkWidget *widget;
EphyDownload *download;
- if (!GTK_IS_LIST_BOX_ROW (l->data))
- continue;
-
- widget = gtk_bin_get_child (GTK_BIN (l->data));
- if (!EPHY_IS_DOWNLOAD_WIDGET (widget))
- continue;
-
+ widget = gtk_list_box_row_get_child (row);
download = ephy_download_widget_get_download (EPHY_DOWNLOAD_WIDGET (widget));
if (!ephy_download_is_active (download)) {
ephy_downloads_manager_remove_download (manager, download);
- gtk_widget_destroy (l->data);
+ gtk_list_box_remove (GTK_LIST_BOX (popover->downloads_box), GTK_WIDGET (row));
}
}
gtk_widget_set_sensitive (popover->clear_button, FALSE);
@@ -176,7 +164,7 @@ ephy_downloads_popover_init (EphyDownloadsPopover *popover)
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
- scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+ scrolled_window = gtk_scrolled_window_new ();
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
gtk_scrolled_window_set_min_content_height (GTK_SCROLLED_WINDOW (scrolled_window),
@@ -190,8 +178,7 @@ ephy_downloads_popover_init (EphyDownloadsPopover *popover)
gtk_list_box_set_selection_mode (GTK_LIST_BOX (popover->downloads_box), GTK_SELECTION_NONE);
gtk_style_context_add_class (gtk_widget_get_style_context (popover->downloads_box),
"background");
- gtk_container_add (GTK_CONTAINER (scrolled_window), popover->downloads_box);
- gtk_widget_show (popover->downloads_box);
+ gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (scrolled_window), popover->downloads_box);
downloads = ephy_downloads_manager_get_downloads (manager);
for (l = downloads; l != NULL; l = g_list_next (l)) {
@@ -208,11 +195,9 @@ ephy_downloads_popover_init (EphyDownloadsPopover *popover)
row = gtk_list_box_row_new ();
gtk_list_box_prepend (GTK_LIST_BOX (popover->downloads_box), row);
- gtk_widget_show (row);
widget = ephy_download_widget_new (download);
- gtk_container_add (GTK_CONTAINER (row), widget);
- gtk_widget_show (widget);
+ gtk_list_box_row_set_child (GTK_LIST_BOX_ROW (row), widget);
}
g_signal_connect_object (manager, "download-added",
@@ -222,8 +207,7 @@ ephy_downloads_popover_init (EphyDownloadsPopover *popover)
G_CALLBACK (download_removed_cb),
popover, G_CONNECT_SWAPPED);
- gtk_box_pack_start (GTK_BOX (vbox), scrolled_window, FALSE, TRUE, 0);
- gtk_widget_show (scrolled_window);
+ gtk_box_append (GTK_BOX (vbox), scrolled_window);
popover->clear_button = gtk_button_new_with_mnemonic (_("_Clear All"));
gtk_widget_set_sensitive (popover->clear_button, !ephy_downloads_manager_has_active_downloads (manager));
@@ -235,11 +219,9 @@ ephy_downloads_popover_init (EphyDownloadsPopover *popover)
gtk_widget_set_margin_end (popover->clear_button, 12);
gtk_widget_set_margin_top (popover->clear_button, 12);
gtk_widget_set_margin_bottom (popover->clear_button, 12);
- gtk_box_pack_start (GTK_BOX (vbox), popover->clear_button, FALSE, TRUE, 0);
- gtk_widget_show (popover->clear_button);
+ gtk_box_append (GTK_BOX (vbox), popover->clear_button);
- gtk_container_add (GTK_CONTAINER (popover), vbox);
- gtk_widget_show (vbox);
+ gtk_popover_set_child (GTK_POPOVER (popover), vbox);
}
GtkWidget *
diff --git a/lib/widgets/ephy-downloads-progress-icon.c b/lib/widgets/ephy-downloads-progress-icon.c
index 3a2eb1b8e..82fc347e7 100644
--- a/lib/widgets/ephy-downloads-progress-icon.c
+++ b/lib/widgets/ephy-downloads-progress-icon.c
@@ -30,24 +30,23 @@ struct _EphyDownloadsProgressIcon {
G_DEFINE_TYPE (EphyDownloadsProgressIcon, ephy_downloads_progress_icon, GTK_TYPE_DRAWING_AREA)
-static gboolean
-ephy_downloads_progress_icon_draw (GtkWidget *widget,
- cairo_t *cr)
+static void
+ephy_downloads_progress_icon_draw (GtkDrawingArea *area,
+ cairo_t *cr,
+ int width,
+ int height,
+ gpointer user_data)
{
- gint width, height;
EphyDownloadsManager *manager;
GtkStyleContext *style_context;
GdkRGBA color;
gdouble progress;
- width = gtk_widget_get_allocated_width (widget);
- height = gtk_widget_get_allocated_height (widget);
-
manager = ephy_embed_shell_get_downloads_manager (ephy_embed_shell_get_default ());
progress = ephy_downloads_manager_get_estimated_progress (manager);
- style_context = gtk_widget_get_style_context (widget);
- gtk_style_context_get_color (style_context, gtk_widget_get_state_flags (widget), &color);
+ style_context = gtk_widget_get_style_context (GTK_WIDGET (area));
+ gtk_style_context_get_color (style_context, &color);
color.alpha *= progress == 1 ? 1 : 0.2;
gdk_cairo_set_source_rgba (cr, &color);
@@ -68,22 +67,23 @@ ephy_downloads_progress_icon_draw (GtkWidget *widget,
cairo_rectangle (cr, 0, 0, width, height * progress);
cairo_fill (cr);
}
-
- return TRUE;
}
static void
ephy_downloads_progress_icon_class_init (EphyDownloadsProgressIconClass *klass)
{
- GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
-
- widget_class->draw = ephy_downloads_progress_icon_draw;
}
static void
ephy_downloads_progress_icon_init (EphyDownloadsProgressIcon *icon)
{
g_object_set (icon, "width-request", 16, "height-request", 16, NULL);
+
+ gtk_drawing_area_set_content_width (GTK_DRAWING_AREA (icon), 16);
+ gtk_drawing_area_set_content_height (GTK_DRAWING_AREA (icon), 16);
+ gtk_drawing_area_set_draw_func (GTK_DRAWING_AREA (icon),
+ ephy_downloads_progress_icon_draw,
+ NULL, NULL);
}
GtkWidget *
diff --git a/lib/widgets/ephy-file-chooser.c b/lib/widgets/ephy-file-chooser.c
index 1b6dd213c..1ce5f8592 100644
--- a/lib/widgets/ephy-file-chooser.c
+++ b/lib/widgets/ephy-file-chooser.c
@@ -98,27 +98,28 @@ ephy_create_file_chooser (const char *title,
GtkFileChooserAction action,
EphyFileFilterDefault default_filter)
{
- GtkWidget *toplevel_window = gtk_widget_get_toplevel (parent);
+ GtkRoot *root = gtk_widget_get_root (parent);
GtkFileChooser *dialog;
GtkFileFilter *filter[EPHY_FILE_FILTER_LAST];
- g_autofree char *downloads_dir = NULL;
+ g_autofree char *downloads_dir_path = NULL;
+ g_autoptr (GFile) downloads_dir = NULL;
- g_assert (GTK_IS_WINDOW (toplevel_window));
+ g_assert (GTK_IS_WINDOW (root));
g_assert (default_filter >= 0 && default_filter <= EPHY_FILE_FILTER_LAST);
dialog = GTK_FILE_CHOOSER (gtk_file_chooser_native_new (title,
- GTK_WINDOW (toplevel_window),
+ GTK_WINDOW (root),
action,
NULL,
_("_Cancel")));
gtk_native_dialog_set_modal (GTK_NATIVE_DIALOG (dialog), TRUE);
- downloads_dir = ephy_file_get_downloads_dir ();
+ downloads_dir_path = ephy_file_get_downloads_dir ();
+ downloads_dir = g_file_new_for_path (downloads_dir_path);
gtk_file_chooser_add_shortcut_folder (dialog, downloads_dir, NULL);
if (action == GTK_FILE_CHOOSER_ACTION_OPEN ||
- action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER ||
- action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER) {
+ action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER) {
gtk_file_chooser_native_set_accept_label (GTK_FILE_CHOOSER_NATIVE (dialog), _("_Open"));
} else if (action == GTK_FILE_CHOOSER_ACTION_SAVE) {
gtk_file_chooser_native_set_accept_label (GTK_FILE_CHOOSER_NATIVE (dialog), _("_Save"));
diff --git a/lib/widgets/ephy-title-box.c b/lib/widgets/ephy-title-box.c
index 8eecbfc5e..5a2fb0044 100644
--- a/lib/widgets/ephy-title-box.c
+++ b/lib/widgets/ephy-title-box.c
@@ -33,7 +33,7 @@ enum {
};
struct _EphyTitleBox {
- GtkEventBox parent_instance;
+ AdwBin parent_instance;
GtkWidget *lock_image;
GtkWidget *title;
@@ -44,78 +44,67 @@ struct _EphyTitleBox {
static void ephy_title_box_title_widget_interface_init (EphyTitleWidgetInterface *iface);
-G_DEFINE_TYPE_WITH_CODE (EphyTitleBox, ephy_title_box, GTK_TYPE_EVENT_BOX,
+G_DEFINE_TYPE_WITH_CODE (EphyTitleBox, ephy_title_box, ADW_TYPE_BIN,
G_IMPLEMENT_INTERFACE (EPHY_TYPE_TITLE_WIDGET,
ephy_title_box_title_widget_interface_init))
-static gboolean
-ephy_title_box_button_press_event (GtkWidget *widget,
- GdkEventButton *event)
+static void
+lock_pressed_cb (GtkGesture *gesture,
+ int n_click,
+ double x,
+ double y,
+ EphyTitleBox *title_box)
{
- EphyTitleBox *title_box = EPHY_TITLE_BOX (widget);
GtkAllocation lock_allocation;
- if (event->button != GDK_BUTTON_PRIMARY)
- return GDK_EVENT_PROPAGATE;
-
gtk_widget_get_allocation (title_box->lock_image, &lock_allocation);
- if (event->x >= lock_allocation.x &&
- event->x < lock_allocation.x + lock_allocation.width &&
- event->y >= lock_allocation.y &&
- event->y < lock_allocation.y + lock_allocation.height) {
- g_signal_emit_by_name (title_box, "lock-clicked", (GdkRectangle *)&lock_allocation);
- return GDK_EVENT_STOP;
- }
+ g_signal_emit_by_name (title_box, "lock-clicked", (GdkRectangle *)&lock_allocation);
- return GDK_EVENT_PROPAGATE;
+ gtk_gesture_set_state (gesture, GTK_EVENT_SEQUENCE_CLAIMED);
}
static void
ephy_title_box_constructed (GObject *object)
{
EphyTitleBox *title_box = EPHY_TITLE_BOX (object);
- GtkStyleContext *context;
GtkWidget *vbox;
GtkWidget *hbox;
+ GtkGesture *gesture;
G_OBJECT_CLASS (ephy_title_box_parent_class)->constructed (object);
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_widget_set_valign (vbox, GTK_ALIGN_CENTER);
- gtk_container_add (GTK_CONTAINER (title_box), vbox);
+ adw_bin_set_child (ADW_BIN (title_box), vbox);
title_box->title = gtk_label_new (NULL);
- context = gtk_widget_get_style_context (title_box->title);
- gtk_style_context_add_class (context, "title");
- gtk_label_set_line_wrap (GTK_LABEL (title_box->title), FALSE);
+ gtk_widget_add_css_class (title_box->title, "title");
gtk_label_set_single_line_mode (GTK_LABEL (title_box->title), TRUE);
gtk_label_set_ellipsize (GTK_LABEL (title_box->title), PANGO_ELLIPSIZE_END);
gtk_label_set_text (GTK_LABEL (title_box->title), g_get_application_name ());
- gtk_box_pack_start (GTK_BOX (vbox), title_box->title, FALSE, TRUE, 0);
+ gtk_box_append (GTK_BOX (vbox), title_box->title);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 4);
- context = gtk_widget_get_style_context (hbox);
- gtk_style_context_add_class (context, "subtitle");
+ gtk_widget_add_css_class (hbox, "subtitle");
gtk_widget_set_halign (hbox, GTK_ALIGN_CENTER);
gtk_widget_set_valign (hbox, GTK_ALIGN_BASELINE);
- gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0);
+ gtk_box_append (GTK_BOX (vbox), hbox);
title_box->lock_image = gtk_image_new ();
- g_object_set (title_box->lock_image, "icon-size", GTK_ICON_SIZE_MENU, NULL);
gtk_widget_set_valign (title_box->lock_image, GTK_ALIGN_BASELINE);
- gtk_box_pack_start (GTK_BOX (hbox), title_box->lock_image, FALSE, TRUE, 0);
+ gtk_box_append (GTK_BOX (hbox), title_box->lock_image);
title_box->subtitle = gtk_label_new (NULL);
gtk_widget_set_valign (title_box->subtitle, GTK_ALIGN_BASELINE);
- gtk_label_set_line_wrap (GTK_LABEL (title_box->subtitle), FALSE);
gtk_label_set_single_line_mode (GTK_LABEL (title_box->subtitle), TRUE);
gtk_label_set_ellipsize (GTK_LABEL (title_box->subtitle), PANGO_ELLIPSIZE_END);
gtk_label_set_selectable (GTK_LABEL (title_box->subtitle), TRUE);
- gtk_box_pack_start (GTK_BOX (hbox), title_box->subtitle, FALSE, TRUE, 0);
+ gtk_box_append (GTK_BOX (hbox), title_box->subtitle);
- gtk_widget_add_events (GTK_WIDGET (title_box), GDK_BUTTON_PRESS_MASK);
- gtk_widget_show_all (GTK_WIDGET (title_box));
+ gesture = gtk_gesture_click_new ();
+ g_signal_connect (gesture, "pressed", G_CALLBACK (lock_pressed_cb), title_box);
+ gtk_widget_add_controller (title_box->lock_image, GTK_EVENT_CONTROLLER (gesture));
}
static const char *
@@ -223,12 +212,10 @@ static void
ephy_title_box_class_init (EphyTitleBoxClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
- GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
object_class->constructed = ephy_title_box_constructed;
object_class->get_property = ephy_title_box_get_property;
object_class->set_property = ephy_title_box_set_property;
- widget_class->button_press_event = ephy_title_box_button_press_event;
g_object_class_override_property (object_class, PROP_ADDRESS, "address");
g_object_class_override_property (object_class, PROP_SECURITY_LEVEL, "security-level");
diff --git a/lib/widgets/ephy-title-box.h b/lib/widgets/ephy-title-box.h
index be6ab7c4e..5c5e8b1d9 100644
--- a/lib/widgets/ephy-title-box.h
+++ b/lib/widgets/ephy-title-box.h
@@ -21,8 +21,7 @@
#pragma once
-#include <gtk/gtk.h>
-#include <webkit2/webkit2.h>
+#include <adwaita.h>
#include "ephy-security-levels.h"
@@ -30,7 +29,7 @@ G_BEGIN_DECLS
#define EPHY_TYPE_TITLE_BOX (ephy_title_box_get_type ())
-G_DECLARE_FINAL_TYPE (EphyTitleBox, ephy_title_box, EPHY, TITLE_BOX, GtkEventBox)
+G_DECLARE_FINAL_TYPE (EphyTitleBox, ephy_title_box, EPHY, TITLE_BOX, AdwBin)
EphyTitleBox *ephy_title_box_new (void);
diff --git a/lib/widgets/meson.build b/lib/widgets/meson.build
index 453bc2d7f..8af44a2da 100644
--- a/lib/widgets/meson.build
+++ b/lib/widgets/meson.build
@@ -1,34 +1,32 @@
-types_headers = [
- 'ephy-location-entry.h'
-]
+#types_headers = [
+# 'ephy-location-entry.h'
+#]
-enums = gnome.mkenums_simple('ephy-widgets-type-builtins',
- sources: types_headers
-)
+#enums = gnome.mkenums_simple('ephy-widgets-type-builtins',
+# sources: types_headers
+#)
libephywidgets_sources = [
- 'contrib/nautilus-floating-bar.c',
- 'ephy-certificate-dialog.c',
+# 'contrib/nautilus-floating-bar.c',
+# 'ephy-certificate-dialog.c',
'ephy-downloads-popover.c',
'ephy-downloads-progress-icon.c',
'ephy-download-widget.c',
'ephy-file-chooser.c',
- 'ephy-location-entry.c',
- 'ephy-security-popover.c',
+# 'ephy-location-entry.c',
+# 'ephy-security-popover.c',
'ephy-title-box.c',
'ephy-title-widget.c',
- enums
+# enums
]
libephywidgets_deps = [
- libdazzle_dep,
ephymisc_dep,
gcr_dep,
gdk_pixbuf_dep,
gio_dep,
glib_dep,
gtk_dep,
- libdazzle_dep,
libsoup_dep,
webkit2gtk_dep,
]
diff --git a/meson.build b/meson.build
index 0b9f862b2..9a0189619 100644
--- a/meson.build
+++ b/meson.build
@@ -73,7 +73,7 @@ conf.set_quoted('GSB_API_KEY', gsb_api_key)
conf.set10('ENABLE_GSB', gsb_api_key != '')
glib_requirement = '>= 2.67.1'
-gtk_requirement = '>= 3.24.0'
+gtk_requirement = '>= 4.5.0'
nettle_requirement = '>= 3.4'
webkitgtk_requirement = '>= 2.33.2'
@@ -84,29 +84,22 @@ gio_dep = dependency('gio-2.0', version: glib_requirement)
gio_unix_dep = dependency('gio-unix-2.0', version: glib_requirement)
glib_dep = dependency('glib-2.0', version: glib_requirement)
gsettings_desktop_schemas = dependency('gsettings-desktop-schemas')
-gtk_dep = dependency('gtk+-3.0', version: gtk_requirement)
-gtk_unix_print_dep = dependency('gtk+-unix-print-3.0', version: gtk_requirement)
+gtk_dep = dependency('gtk4', version: gtk_requirement)
+gtk_unix_print_dep = dependency('gtk4-unix-print', version: gtk_requirement)
hogweed_dep = dependency('hogweed', version: nettle_requirement)
iso_codes_dep = dependency('iso-codes', version: '>= 0.35')
json_glib_dep = dependency('json-glib-1.0', version: '>= 1.6')
libarchive_dep = dependency('libarchive')
-libdazzle_dep = dependency('libdazzle-1.0', version: '>= 3.37.1')
-libhandy_dep = dependency('libhandy-1', version: '>= 1.5.0')
+libadwaita_dep = dependency('libadwaita-1', version: '>= 1.0.0')
libsecret_dep = dependency('libsecret-1', version: '>= 0.19.0')
libxml_dep = dependency('libxml-2.0', version: '>= 2.6.12')
nettle_dep = dependency('nettle', version: nettle_requirement)
portal_dep = dependency('libportal', version: '>= 0.0.2', required: get_option('libportal'))
sqlite3_dep = dependency('sqlite3', version: '>= 3.22')
-if get_option('soup2').enabled()
- libsoup_dep = dependency('libsoup-2.4', version: '>= 2.48.0')
- webkit2gtk_dep = dependency('webkit2gtk-4.0', version: webkitgtk_requirement)
- webkit2gtk_web_extension_dep = dependency('webkit2gtk-web-extension-4.0', version: webkitgtk_requirement)
-else
- libsoup_dep = dependency('libsoup-3.0', version: '>= 2.99.4')
- webkit2gtk_dep = dependency('webkit2gtk-4.1', version: webkitgtk_requirement)
- webkit2gtk_web_extension_dep = dependency('webkit2gtk-web-extension-4.1', version: webkitgtk_requirement)
-endif
+libsoup_dep = dependency('libsoup-3.0', version: '>= 2.99.4')
+webkit2gtk_dep = dependency('webkit2gtk-5.0', version: webkitgtk_requirement)
+webkit2gtk_web_extension_dep = dependency('webkit2gtk-web-extension-5.0', version: webkitgtk_requirement)
conf.set10('USE_LIBPORTAL', portal_dep.found())
@@ -148,7 +141,7 @@ subdir('third-party')
subdir('lib')
subdir('embed')
subdir('src')
-subdir('tests')
+#subdir('tests')
meson.add_install_script('post_install.py')
diff --git a/org.gnome.Epiphany.json b/org.gnome.Epiphany.json
index 9f37ea823..5798f7fe4 100644
--- a/org.gnome.Epiphany.json
+++ b/org.gnome.Epiphany.json
@@ -89,16 +89,6 @@
}
]
},
- {
- "name" : "libdazzle",
- "buildsystem" : "meson",
- "sources" : [
- {
- "type" : "git",
- "url" : "https://gitlab.gnome.org/GNOME/libdazzle.git"
- }
- ]
- },
{
"name" : "libportal",
"buildsystem" : "meson",
diff --git a/src/ephy-action-bar-end.c b/src/ephy-action-bar-end.c
index 0104fb336..436eb0a45 100644
--- a/src/ephy-action-bar-end.c
+++ b/src/ephy-action-bar-end.c
@@ -20,11 +20,10 @@
*/
#include "ephy-action-bar-end.h"
-#include "ephy-add-bookmark-popover.h"
+//#include "ephy-add-bookmark-popover.h"
#include "ephy-desktop-utils.h"
#include "ephy-downloads-popover.h"
#include "ephy-downloads-progress-icon.h"
-#include "ephy-location-entry.h"
#include "ephy-shell.h"
#include "ephy-window.h"
@@ -36,7 +35,6 @@ struct _EphyActionBarEnd {
GtkBox parent_instance;
GtkWidget *bookmark_button;
- GtkWidget *bookmark_image;
GtkWidget *bookmarks_button;
GtkWidget *downloads_revealer;
GtkWidget *downloads_button;
@@ -50,7 +48,7 @@ struct _EphyActionBarEnd {
G_DEFINE_TYPE (EphyActionBarEnd, ephy_action_bar_end, GTK_TYPE_BOX)
-static void begin_complete_theatrics (EphyActionBarEnd *self);
+//static void begin_complete_theatrics (EphyActionBarEnd *self);
static void
remove_downloads_button_attention_style (EphyActionBarEnd *self)
@@ -91,6 +89,7 @@ download_added_cb (EphyDownloadsManager *manager,
EphyDownload *download,
EphyActionBarEnd *action_bar_end)
{
+#if 0
GtkAllocation rect;
DzlBoxTheatric *theatric;
@@ -128,8 +127,10 @@ download_added_cb (EphyDownloadsManager *manager,
"alpha", 0.0,
NULL);
}
+#endif
}
+#if 0
static gboolean
begin_complete_theatrics_from_main (gpointer user_data)
{
@@ -188,14 +189,15 @@ begin_complete_theatrics (EphyActionBarEnd *self)
"alpha", 0.0,
NULL);
}
+#endif
static void
download_completed_cb (EphyDownloadsManager *manager,
EphyDownload *download,
EphyActionBarEnd *action_bar_end)
{
- if (gtk_widget_get_mapped (GTK_WIDGET (action_bar_end)))
- begin_complete_theatrics (action_bar_end);
+// if (gtk_widget_get_mapped (GTK_WIDGET (action_bar_end)))
+// begin_complete_theatrics (action_bar_end);
}
static void
@@ -235,9 +237,6 @@ ephy_action_bar_end_class_init (EphyActionBarEndClass *klass)
gtk_widget_class_bind_template_child (widget_class,
EphyActionBarEnd,
bookmark_button);
- gtk_widget_class_bind_template_child (widget_class,
- EphyActionBarEnd,
- bookmark_image);
gtk_widget_class_bind_template_child (widget_class,
EphyActionBarEnd,
bookmarks_button);
@@ -261,12 +260,12 @@ ephy_action_bar_end_class_init (EphyActionBarEndClass *klass)
static void
add_bookmark_button_clicked_cb (EphyActionBarEnd *action_bar_end)
{
- GtkWidget *window = gtk_widget_get_toplevel (GTK_WIDGET (action_bar_end->bookmark_button));
- GtkWidget *popover = ephy_add_bookmark_popover_new (GTK_WIDGET (action_bar_end->bookmark_button), window);
+// GtkRoot *window = gtk_widget_get_root (GTK_WIDGET (action_bar_end->bookmark_button));
+// GtkWidget *popover = ephy_add_bookmark_popover_new (GTK_WIDGET (action_bar_end->bookmark_button),
window);
- g_signal_connect_object (popover, "update-state", G_CALLBACK (ephy_window_sync_bookmark_state),
action_bar_end, G_CONNECT_SWAPPED);
+// g_signal_connect_object (popover, "update-state", G_CALLBACK (ephy_window_sync_bookmark_state),
action_bar_end, G_CONNECT_SWAPPED);
- ephy_add_bookmark_popover_show (EPHY_ADD_BOOKMARK_POPOVER (popover));
+// ephy_add_bookmark_popover_show (EPHY_ADD_BOOKMARK_POPOVER (popover));
}
static void
@@ -292,14 +291,10 @@ ephy_action_bar_end_init (EphyActionBarEnd *action_bar_end)
}
if (is_desktop_pantheon ()) {
- gtk_button_set_image (GTK_BUTTON (action_bar_end->bookmarks_button),
- gtk_image_new_from_icon_name ("user-bookmarks",
- GTK_ICON_SIZE_LARGE_TOOLBAR));
+ gtk_menu_button_set_icon_name (GTK_MENU_BUTTON (action_bar_end->bookmarks_button),
+ "user-bookmarks");
gtk_image_set_from_icon_name (GTK_IMAGE (action_bar_end->downloads_icon),
- "browser-download",
- GTK_ICON_SIZE_LARGE_TOOLBAR);
- gtk_style_context_add_class (gtk_widget_get_style_context (action_bar_end->downloads_button),
- "flat");
+ "browser-download");
}
g_signal_connect_object (downloads_manager, "download-added",
@@ -367,7 +362,7 @@ void
ephy_action_bar_end_add_browser_action (EphyActionBarEnd *action_bar_end,
GtkWidget *action)
{
- gtk_container_add (GTK_CONTAINER (action_bar_end->browser_action_box), action);
+ gtk_box_append (GTK_BOX (action_bar_end->browser_action_box), action);
}
void
@@ -390,15 +385,13 @@ ephy_action_bar_end_set_bookmark_icon_state (EphyActionBarEnd *action_bar_e
break;
case EPHY_BOOKMARK_ICON_EMPTY:
gtk_widget_set_visible (action_bar_end->bookmark_button, TRUE);
- gtk_image_set_from_icon_name (GTK_IMAGE (action_bar_end->bookmark_image),
- "non-starred-symbolic",
- GTK_ICON_SIZE_BUTTON);
+ gtk_button_set_icon_name (GTK_BUTTON (action_bar_end->bookmark_button),
+ "non-starred-symbolic");
break;
case EPHY_BOOKMARK_ICON_BOOKMARKED:
gtk_widget_set_visible (action_bar_end->bookmark_button, TRUE);
- gtk_image_set_from_icon_name (GTK_IMAGE (action_bar_end->bookmark_image),
- "starred-symbolic",
- GTK_ICON_SIZE_BUTTON);
+ gtk_button_set_icon_name (GTK_BUTTON (action_bar_end->bookmark_button),
+ "starred-symbolic");
break;
default:
g_assert_not_reached ();
diff --git a/src/ephy-action-bar-start.c b/src/ephy-action-bar-start.c
index 913700590..2fd4dabe6 100644
--- a/src/ephy-action-bar-start.c
+++ b/src/ephy-action-bar-start.c
@@ -43,7 +43,6 @@ struct _EphyActionBarStart {
GtkWidget *navigation_back;
GtkWidget *navigation_forward;
GtkWidget *combined_stop_reload_button;
- GtkWidget *combined_stop_reload_image;
GtkWidget *homepage_button;
GtkWidget *new_tab_button;
GtkWidget *placeholder;
@@ -63,6 +62,7 @@ typedef enum {
WEBKIT_HISTORY_FORWARD
} WebKitHistoryType;
+#if 0
typedef struct {
GtkWidget *button;
EphyWindow *window;
@@ -465,6 +465,7 @@ navigation_leave_notify_event_cb (GtkButton *button,
return GDK_EVENT_PROPAGATE;
}
+#endif
static void
homepage_url_changed (GSettings *settings,
@@ -515,7 +516,7 @@ ephy_action_bar_start_constructed (GObject *object)
G_OBJECT_CLASS (ephy_action_bar_start_parent_class)->constructed (object);
gtk_widget_init_template (GTK_WIDGET (action_bar_start));
-
+#if 0
/* Back */
g_signal_connect (action_bar_start->navigation_back, "button-press-event",
G_CALLBACK (navigation_button_press_event_cb), action_bar_start);
@@ -531,7 +532,7 @@ ephy_action_bar_start_constructed (GObject *object)
G_CALLBACK (navigation_button_release_event_cb), action_bar_start);
g_signal_connect (action_bar_start->navigation_forward, "leave-notify-event",
G_CALLBACK (navigation_leave_notify_event_cb), action_bar_start);
-
+#endif
/* Combined_stop_reload */
gtk_widget_set_tooltip_text (action_bar_start->combined_stop_reload_button, _(REFRESH_BUTTON_TOOLTIP));
@@ -547,25 +548,22 @@ ephy_action_bar_start_constructed (GObject *object)
} else {
gtk_widget_set_visible (action_bar_start->homepage_button, FALSE);
}
- g_signal_connect (action_bar_start->homepage_button, "button-release-event",
- G_CALLBACK (homepage_button_release_event_cb), action_bar_start);
+// g_signal_connect (action_bar_start->homepage_button, "button-release-event",
+// G_CALLBACK (homepage_button_release_event_cb), action_bar_start);
/* New Tab Button */
update_new_tab_button_visibility (action_bar_start);
- g_signal_connect (action_bar_start->new_tab_button, "button-release-event",
- G_CALLBACK (new_tab_button_release_event_cb), action_bar_start);
+// g_signal_connect (action_bar_start->new_tab_button, "button-release-event",
+// G_CALLBACK (new_tab_button_release_event_cb), action_bar_start);
if (is_desktop_pantheon ()) {
- gtk_button_set_image (GTK_BUTTON (action_bar_start->navigation_back),
- gtk_image_new_from_icon_name ("go-previous-symbolic",
- get_icon_size ()));
- gtk_button_set_image (GTK_BUTTON (action_bar_start->navigation_forward),
- gtk_image_new_from_icon_name ("go-next-symbolic",
- get_icon_size ()));
- gtk_button_set_image (GTK_BUTTON (action_bar_start->homepage_button),
- gtk_image_new_from_icon_name ("go-home-symbolic",
- get_icon_size ()));
+ gtk_button_set_icon_name (GTK_BUTTON (action_bar_start->navigation_back),
+ "go-previous-symbolic");
+ gtk_button_set_icon_name (GTK_BUTTON (action_bar_start->navigation_forward),
+ "go-next-symbolic");
+ gtk_button_set_icon_name (GTK_BUTTON (action_bar_start->homepage_button),
+ "go-home-symbolic");
}
if (ephy_profile_dir_is_web_application ()) {
@@ -599,9 +597,6 @@ ephy_action_bar_start_class_init (EphyActionBarStartClass *klass)
gtk_widget_class_bind_template_child (widget_class,
EphyActionBarStart,
combined_stop_reload_button);
- gtk_widget_class_bind_template_child (widget_class,
- EphyActionBarStart,
- combined_stop_reload_image);
gtk_widget_class_bind_template_child (widget_class,
EphyActionBarStart,
homepage_button);
@@ -636,16 +631,14 @@ ephy_action_bar_start_change_combined_stop_reload_state (EphyActionBarStart *act
gboolean loading)
{
if (loading) {
- gtk_image_set_from_icon_name (GTK_IMAGE (action_bar_start->combined_stop_reload_image),
- "process-stop-symbolic",
- get_icon_size ());
+ gtk_button_set_icon_name (GTK_BUTTON (action_bar_start->combined_stop_reload_button),
+ "process-stop-symbolic");
/* Translators: tooltip for the stop button */
gtk_widget_set_tooltip_text (action_bar_start->combined_stop_reload_button,
_("Stop loading the current page"));
} else {
- gtk_image_set_from_icon_name (GTK_IMAGE (action_bar_start->combined_stop_reload_image),
- "view-refresh-symbolic",
- get_icon_size ());
+ gtk_button_set_icon_name (GTK_BUTTON (action_bar_start->combined_stop_reload_button),
+ "view-refresh-symbolic");
gtk_widget_set_tooltip_text (action_bar_start->combined_stop_reload_button,
_(REFRESH_BUTTON_TOOLTIP));
}
diff --git a/src/ephy-action-bar.c b/src/ephy-action-bar.c
index 0245b6dc5..a381a8756 100644
--- a/src/ephy-action-bar.c
+++ b/src/ephy-action-bar.c
@@ -21,7 +21,6 @@
#include "ephy-action-bar.h"
#include "ephy-add-bookmark-popover.h"
-#include "ephy-location-entry.h"
#include "ephy-pages-button.h"
#include "ephy-settings.h"
#include "ephy-shell.h"
@@ -37,7 +36,7 @@ enum {
static GParamSpec *object_properties[N_PROPERTIES] = { NULL, };
struct _EphyActionBar {
- GtkBin parent_instance;
+ AdwBin parent_instance;
EphyWindow *window;
GtkRevealer *revealer;
@@ -49,7 +48,7 @@ struct _EphyActionBar {
gboolean can_reveal;
};
-G_DEFINE_TYPE (EphyActionBar, ephy_action_bar, GTK_TYPE_BIN)
+G_DEFINE_TYPE (EphyActionBar, ephy_action_bar, ADW_TYPE_BIN)
static void
sync_chromes_visibility (EphyActionBar *action_bar)
diff --git a/src/ephy-action-bar.h b/src/ephy-action-bar.h
index bf0309b4a..b261fd1f2 100644
--- a/src/ephy-action-bar.h
+++ b/src/ephy-action-bar.h
@@ -21,7 +21,7 @@
#pragma once
-#include <gtk/gtk.h>
+#include <adwaita.h>
#include "ephy-action-bar-end.h"
#include "ephy-action-bar-start.h"
@@ -32,7 +32,7 @@ G_BEGIN_DECLS
#define EPHY_TYPE_ACTION_BAR (ephy_action_bar_get_type ())
-G_DECLARE_FINAL_TYPE (EphyActionBar, ephy_action_bar, EPHY, ACTION_BAR, GtkBin);
+G_DECLARE_FINAL_TYPE (EphyActionBar, ephy_action_bar, EPHY, ACTION_BAR, AdwBin);
EphyActionBar *ephy_action_bar_new (EphyWindow *window);
EphyActionBarStart *ephy_action_bar_get_action_bar_start (EphyActionBar *action_bar);
diff --git a/src/ephy-desktop-utils.c b/src/ephy-desktop-utils.c
index 732f72ac2..d7e043a6d 100644
--- a/src/ephy-desktop-utils.c
+++ b/src/ephy-desktop-utils.c
@@ -46,15 +46,6 @@ is_desktop_gnome (void)
return strstr (xdg_current_desktop, "GNOME") != NULL;
}
-GtkIconSize
-get_icon_size (void)
-{
- if (is_desktop_pantheon ())
- return GTK_ICON_SIZE_LARGE_TOOLBAR;
-
- return GTK_ICON_SIZE_BUTTON;
-}
-
const char *
ephy_get_fallback_favicon_name (const char *uri,
EphyFaviconType type)
diff --git a/src/ephy-desktop-utils.h b/src/ephy-desktop-utils.h
index c162f3f5a..f30134aac 100644
--- a/src/ephy-desktop-utils.h
+++ b/src/ephy-desktop-utils.h
@@ -33,8 +33,6 @@ typedef enum {
gboolean is_desktop_pantheon (void);
gboolean is_desktop_gnome (void);
-GtkIconSize get_icon_size (void);
-
const char *ephy_get_fallback_favicon_name (const char *title, EphyFaviconType type);
G_END_DECLS
diff --git a/src/ephy-firefox-sync-dialog.h b/src/ephy-firefox-sync-dialog.h
index 9e20ed484..a0c3c2c90 100644
--- a/src/ephy-firefox-sync-dialog.h
+++ b/src/ephy-firefox-sync-dialog.h
@@ -21,13 +21,13 @@
#pragma once
#include <glib-object.h>
-#include <handy.h>
+#include <adwaita.h>
G_BEGIN_DECLS
#define EPHY_TYPE_FIREFOX_SYNC_DIALOG (ephy_firefox_sync_dialog_get_type ())
-G_DECLARE_FINAL_TYPE (EphyFirefoxSyncDialog, ephy_firefox_sync_dialog, EPHY, FIREFOX_SYNC_DIALOG, HdyWindow)
+G_DECLARE_FINAL_TYPE (EphyFirefoxSyncDialog, ephy_firefox_sync_dialog, EPHY, FIREFOX_SYNC_DIALOG, AdwWindow)
GtkWidget *ephy_firefox_sync_dialog_new ();
diff --git a/src/ephy-fullscreen-box.c b/src/ephy-fullscreen-box.c
index 5ace6fa49..c27cdf092 100644
--- a/src/ephy-fullscreen-box.c
+++ b/src/ephy-fullscreen-box.c
@@ -21,17 +21,15 @@
#include "config.h"
#include "ephy-fullscreen-box.h"
-#include <handy.h>
+#include <adwaita.h>
#define FULLSCREEN_HIDE_DELAY 300
#define SHOW_HEADERBAR_DISTANCE_PX 5
struct _EphyFullscreenBox {
- GtkEventBox parent_instance;
+ GtkWidget parent_instance;
- HdyFlap *flap;
- GtkEventController *controller;
- GtkGesture *gesture;
+ AdwFlap *flap;
gboolean fullscreen;
gboolean autohide;
@@ -45,7 +43,7 @@ struct _EphyFullscreenBox {
static void ephy_fullscreen_box_buildable_init (GtkBuildableIface *iface);
-G_DEFINE_TYPE_WITH_CODE (EphyFullscreenBox, ephy_fullscreen_box, GTK_TYPE_EVENT_BOX,
+G_DEFINE_TYPE_WITH_CODE (EphyFullscreenBox, ephy_fullscreen_box, GTK_TYPE_WIDGET,
G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE,
ephy_fullscreen_box_buildable_init))
@@ -66,7 +64,7 @@ show_ui (EphyFullscreenBox *self)
{
g_clear_handle_id (&self->timeout_id, g_source_remove);
- hdy_flap_set_reveal_flap (self->flap, TRUE);
+ adw_flap_set_reveal_flap (self->flap, TRUE);
}
static void
@@ -77,7 +75,7 @@ hide_ui (EphyFullscreenBox *self)
if (!self->fullscreen)
return;
- hdy_flap_set_reveal_flap (self->flap, FALSE);
+ adw_flap_set_reveal_flap (self->flap, FALSE);
gtk_widget_grab_focus (GTK_WIDGET (self->flap));
}
@@ -94,7 +92,7 @@ hide_timeout_cb (EphyFullscreenBox *self)
static void
start_hide_timeout (EphyFullscreenBox *self)
{
- if (!hdy_flap_get_reveal_flap (self->flap))
+ if (!adw_flap_get_reveal_flap (self->flap))
return;
if (self->timeout_id)
@@ -119,12 +117,9 @@ is_descendant_of (GtkWidget *widget,
parent = widget;
- while (parent && parent != target && !GTK_IS_POPOVER (parent))
+ while (parent && parent != target)
parent = gtk_widget_get_parent (parent);
- if (GTK_IS_POPOVER (parent))
- return is_descendant_of (gtk_popover_get_relative_to (GTK_POPOVER (parent)), target);
-
return parent == target;
}
@@ -133,8 +128,8 @@ get_titlebar_area_height (EphyFullscreenBox *self)
{
gdouble height;
- height = gtk_widget_get_allocated_height (hdy_flap_get_flap (self->flap));
- height *= hdy_flap_get_reveal_progress (self->flap);
+ height = gtk_widget_get_allocated_height (adw_flap_get_flap (self->flap));
+ height *= adw_flap_get_reveal_progress (self->flap);
height = MAX (height, SHOW_HEADERBAR_DISTANCE_PX);
return height;
@@ -154,7 +149,7 @@ update (EphyFullscreenBox *self,
}
if (self->last_focus && is_descendant_of (self->last_focus,
- hdy_flap_get_flap (self->flap)))
+ adw_flap_get_flap (self->flap)))
show_ui (self);
else if (hide_immediately)
hide_ui (self);
@@ -178,12 +173,6 @@ enter_cb (EphyFullscreenBox *self,
double x,
double y)
{
- g_autoptr (GdkEvent) event = gtk_get_current_event ();
-
- if (event->crossing.window != gtk_widget_get_window (GTK_WIDGET (self)) ||
- event->crossing.detail == GDK_NOTIFY_INFERIOR)
- return;
-
motion_cb (self, x, y);
}
@@ -191,9 +180,10 @@ static void
press_cb (EphyFullscreenBox *self,
int n_press,
double x,
- double y)
+ double y,
+ GtkGesture *gesture)
{
- gtk_gesture_set_state (self->gesture, GTK_EVENT_SEQUENCE_DENIED);
+ gtk_gesture_set_state (gesture, GTK_EVENT_SEQUENCE_DENIED);
self->is_touch = TRUE;
@@ -217,72 +207,38 @@ notify_reveal_cb (EphyFullscreenBox *self)
}
static void
-ephy_fullscreen_box_hierarchy_changed (GtkWidget *widget,
- GtkWidget *previous_toplevel)
+ephy_fullscreen_box_root (GtkWidget *widget)
{
EphyFullscreenBox *self = EPHY_FULLSCREEN_BOX (widget);
- GtkWidget *toplevel;
+ GtkRoot *root;
- if (previous_toplevel && GTK_IS_WINDOW (previous_toplevel))
- g_signal_handlers_disconnect_by_func (previous_toplevel, set_focus_cb, widget);
+ GTK_WIDGET_CLASS (ephy_fullscreen_box_parent_class)->root (widget);
- toplevel = gtk_widget_get_toplevel (widget);
+ root = gtk_widget_get_root (widget);
- if (toplevel && GTK_IS_WINDOW (toplevel)) {
- g_signal_connect_object (toplevel, "set-focus",
- G_CALLBACK (set_focus_cb), widget,
- G_CONNECT_SWAPPED);
+ if (root && GTK_IS_WINDOW (root)) {
+// g_signal_connect_object (root, "set-focus",
+// G_CALLBACK (set_focus_cb), widget,
+// G_CONNECT_SWAPPED);
- set_focus_cb (self, gtk_window_get_focus (GTK_WINDOW (toplevel)));
+ set_focus_cb (self, gtk_window_get_focus (GTK_WINDOW (root)));
} else {
set_focus_cb (self, NULL);
}
}
static void
-ephy_fullscreen_box_add (GtkContainer *container,
- GtkWidget *widget)
-{
- EphyFullscreenBox *self = EPHY_FULLSCREEN_BOX (container);
-
- if (!self->flap)
- GTK_CONTAINER_CLASS (ephy_fullscreen_box_parent_class)->add (container, widget);
- else
- gtk_container_add (GTK_CONTAINER (self->flap), widget);
-}
-
-static void
-ephy_fullscreen_box_remove (GtkContainer *container,
- GtkWidget *widget)
+ephy_fullscreen_box_unroot (GtkWidget *widget)
{
- EphyFullscreenBox *self = EPHY_FULLSCREEN_BOX (container);
+ EphyFullscreenBox *self = EPHY_FULLSCREEN_BOX (widget);
+ GtkRoot *root = gtk_widget_get_root (widget);
- if (widget == GTK_WIDGET (self->flap)) {
- GTK_CONTAINER_CLASS (ephy_fullscreen_box_parent_class)->remove (container, widget);
- self->flap = NULL;
- } else {
- gtk_container_remove (GTK_CONTAINER (self->flap), widget);
- }
-}
+ if (root && GTK_IS_WINDOW (root))
+ g_signal_handlers_disconnect_by_func (root, set_focus_cb, widget);
-static void
-ephy_fullscreen_box_forall (GtkContainer *container,
- gboolean include_internals,
- GtkCallback callback,
- gpointer callback_data)
-{
- EphyFullscreenBox *self = EPHY_FULLSCREEN_BOX (container);
+ set_focus_cb (self, NULL);
- if (include_internals) {
- GTK_CONTAINER_CLASS (ephy_fullscreen_box_parent_class)->forall (container,
- include_internals,
- callback,
- callback_data);
- } else {
- gtk_container_foreach (GTK_CONTAINER (self->flap),
- callback,
- callback_data);
- }
+ GTK_WIDGET_CLASS (ephy_fullscreen_box_parent_class)->unroot (widget);
}
static void
@@ -311,7 +267,7 @@ ephy_fullscreen_box_get_property (GObject *object,
break;
case PROP_REVEALED:
- g_value_set_boolean (value, hdy_flap_get_reveal_flap (self->flap));
+ g_value_set_boolean (value, adw_flap_get_reveal_flap (self->flap));
break;
default:
@@ -354,8 +310,7 @@ ephy_fullscreen_box_dispose (GObject *object)
{
EphyFullscreenBox *self = EPHY_FULLSCREEN_BOX (object);
- g_clear_object (&self->controller);
- g_clear_object (&self->gesture);
+ g_clear_pointer ((GtkWidget **) &self->flap, gtk_widget_unparent);
G_OBJECT_CLASS (ephy_fullscreen_box_parent_class)->dispose (object);
}
@@ -365,17 +320,13 @@ ephy_fullscreen_box_class_init (EphyFullscreenBoxClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
- GtkContainerClass *container_class = GTK_CONTAINER_CLASS (klass);
object_class->get_property = ephy_fullscreen_box_get_property;
object_class->set_property = ephy_fullscreen_box_set_property;
object_class->dispose = ephy_fullscreen_box_dispose;
- widget_class->hierarchy_changed = ephy_fullscreen_box_hierarchy_changed;
-
- container_class->add = ephy_fullscreen_box_add;
- container_class->remove = ephy_fullscreen_box_remove;
- container_class->forall = ephy_fullscreen_box_forall;
+ widget_class->root = ephy_fullscreen_box_root;
+ widget_class->unroot = ephy_fullscreen_box_unroot;
props[PROP_FULLSCREEN] =
g_param_spec_boolean ("fullscreen",
@@ -415,47 +366,49 @@ ephy_fullscreen_box_class_init (EphyFullscreenBoxClass *klass)
g_object_class_install_properties (object_class, LAST_PROP, props);
gtk_widget_class_set_css_name (widget_class, "fullscreenbox");
+ gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BIN_LAYOUT);
}
static void
ephy_fullscreen_box_init (EphyFullscreenBox *self)
{
- HdyFlap *flap;
+ AdwFlap *flap;
+ GtkEventController *controller;
+ GtkGesture *gesture;
self->autohide = TRUE;
- gtk_widget_add_events (GTK_WIDGET (self), GDK_ALL_EVENTS_MASK);
-
- flap = HDY_FLAP (hdy_flap_new ());
+ flap = ADW_FLAP (adw_flap_new ());
gtk_orientable_set_orientation (GTK_ORIENTABLE (flap), GTK_ORIENTATION_VERTICAL);
- hdy_flap_set_flap_position (flap, GTK_PACK_START);
- hdy_flap_set_fold_policy (flap, HDY_FLAP_FOLD_POLICY_NEVER);
- hdy_flap_set_locked (flap, TRUE);
- hdy_flap_set_modal (flap, FALSE);
- hdy_flap_set_swipe_to_open (flap, FALSE);
- hdy_flap_set_swipe_to_close (flap, FALSE);
- hdy_flap_set_transition_type (flap, HDY_FLAP_TRANSITION_TYPE_OVER);
- gtk_widget_show (GTK_WIDGET (flap));
+ adw_flap_set_flap_position (flap, GTK_PACK_START);
+ adw_flap_set_fold_policy (flap, ADW_FLAP_FOLD_POLICY_NEVER);
+ adw_flap_set_locked (flap, TRUE);
+ adw_flap_set_modal (flap, FALSE);
+ adw_flap_set_swipe_to_open (flap, FALSE);
+ adw_flap_set_swipe_to_close (flap, FALSE);
+ adw_flap_set_transition_type (flap, ADW_FLAP_TRANSITION_TYPE_OVER);
g_signal_connect_object (flap, "notify::reveal-flap",
G_CALLBACK (notify_reveal_cb), self, G_CONNECT_SWAPPED);
- gtk_container_add (GTK_CONTAINER (self), GTK_WIDGET (flap));
+ gtk_widget_set_parent (GTK_WIDGET (flap), GTK_WIDGET (self));
self->flap = flap;
- self->controller = gtk_event_controller_motion_new (GTK_WIDGET (self));
- gtk_event_controller_set_propagation_phase (self->controller, GTK_PHASE_CAPTURE);
- g_signal_connect_object (self->controller, "enter",
+ controller = gtk_event_controller_motion_new ();
+ gtk_event_controller_set_propagation_phase (controller, GTK_PHASE_CAPTURE);
+ g_signal_connect_object (controller, "enter",
G_CALLBACK (enter_cb), self, G_CONNECT_SWAPPED);
- g_signal_connect_object (self->controller, "motion",
+ g_signal_connect_object (controller, "motion",
G_CALLBACK (motion_cb), self, G_CONNECT_SWAPPED);
+ gtk_widget_add_controller (GTK_WIDGET (self), controller);
- self->gesture = gtk_gesture_multi_press_new (GTK_WIDGET (self));
- gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (self->gesture),
+ gesture = gtk_gesture_click_new ();
+ gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (gesture),
GTK_PHASE_CAPTURE);
- gtk_gesture_single_set_touch_only (GTK_GESTURE_SINGLE (self->gesture), TRUE);
- g_signal_connect_object (self->gesture, "pressed",
+ gtk_gesture_single_set_touch_only (GTK_GESTURE_SINGLE (gesture), TRUE);
+ g_signal_connect_object (gesture, "pressed",
G_CALLBACK (press_cb), self, G_CONNECT_SWAPPED);
+ gtk_widget_add_controller (GTK_WIDGET (self), GTK_EVENT_CONTROLLER (gesture));
}
static void
@@ -509,10 +462,10 @@ ephy_fullscreen_box_set_fullscreen (EphyFullscreenBox *self,
return;
if (fullscreen) {
- hdy_flap_set_fold_policy (self->flap, HDY_FLAP_FOLD_POLICY_ALWAYS);
+ adw_flap_set_fold_policy (self->flap, ADW_FLAP_FOLD_POLICY_ALWAYS);
update (self, FALSE);
} else {
- hdy_flap_set_fold_policy (self->flap, HDY_FLAP_FOLD_POLICY_NEVER);
+ adw_flap_set_fold_policy (self->flap, ADW_FLAP_FOLD_POLICY_NEVER);
show_ui (self);
}
@@ -556,7 +509,7 @@ ephy_fullscreen_box_get_titlebar (EphyFullscreenBox *self)
{
g_return_val_if_fail (EPHY_IS_FULLSCREEN_BOX (self), NULL);
- return hdy_flap_get_flap (self->flap);
+ return adw_flap_get_flap (self->flap);
}
void
@@ -564,12 +517,12 @@ ephy_fullscreen_box_set_titlebar (EphyFullscreenBox *self,
GtkWidget *titlebar)
{
g_return_if_fail (EPHY_IS_FULLSCREEN_BOX (self));
- g_return_if_fail (GTK_IS_WIDGET (titlebar) || titlebar == NULL);
+ g_return_if_fail (titlebar == NULL || GTK_IS_WIDGET (titlebar));
- if (hdy_flap_get_flap (self->flap) == titlebar)
+ if (adw_flap_get_flap (self->flap) == titlebar)
return;
- hdy_flap_set_flap (self->flap, titlebar);
+ adw_flap_set_flap (self->flap, titlebar);
g_object_notify_by_pspec (G_OBJECT (self), props[PROP_TITLEBAR]);
}
@@ -579,7 +532,7 @@ ephy_fullscreen_box_get_content (EphyFullscreenBox *self)
{
g_return_val_if_fail (EPHY_IS_FULLSCREEN_BOX (self), NULL);
- return hdy_flap_get_content (self->flap);
+ return adw_flap_get_content (self->flap);
}
void
@@ -587,12 +540,12 @@ ephy_fullscreen_box_set_content (EphyFullscreenBox *self,
GtkWidget *content)
{
g_return_if_fail (EPHY_IS_FULLSCREEN_BOX (self));
- g_return_if_fail (GTK_IS_WIDGET (content) || content == NULL);
+ g_return_if_fail (content == NULL || GTK_IS_WIDGET (content));
- if (hdy_flap_get_content (self->flap) == content)
+ if (adw_flap_get_content (self->flap) == content)
return;
- hdy_flap_set_content (self->flap, content);
+ adw_flap_set_content (self->flap, content);
g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CONTENT]);
}
diff --git a/src/ephy-fullscreen-box.h b/src/ephy-fullscreen-box.h
index ce85c8e42..fec2f31e2 100644
--- a/src/ephy-fullscreen-box.h
+++ b/src/ephy-fullscreen-box.h
@@ -26,7 +26,7 @@ G_BEGIN_DECLS
#define EPHY_TYPE_FULLSCREEN_BOX (ephy_fullscreen_box_get_type())
-G_DECLARE_FINAL_TYPE (EphyFullscreenBox, ephy_fullscreen_box, EPHY, FULLSCREEN_BOX, GtkEventBox)
+G_DECLARE_FINAL_TYPE (EphyFullscreenBox, ephy_fullscreen_box, EPHY, FULLSCREEN_BOX, GtkWidget)
EphyFullscreenBox *ephy_fullscreen_box_new (void);
diff --git a/src/ephy-header-bar.c b/src/ephy-header-bar.c
index 85ed3356c..f5607995c 100644
--- a/src/ephy-header-bar.c
+++ b/src/ephy-header-bar.c
@@ -28,15 +28,15 @@
#include "ephy-embed-utils.h"
#include "ephy-file-helpers.h"
#include "ephy-flatpak-utils.h"
-#include "ephy-location-entry.h"
+//#include "ephy-location-entry.h"
#include "ephy-settings.h"
#include "ephy-shell.h"
#include "ephy-title-box.h"
#include "ephy-title-widget.h"
#include "ephy-type-builtins.h"
+#include <adwaita.h>
#include <glib/gi18n.h>
-#include <handy.h>
#define POPOVER_HIDE_DELAY 300
@@ -52,7 +52,7 @@ static GParamSpec *object_properties[N_PROPERTIES] = { NULL, };
static const char *REFRESH_BUTTON_TOOLTIP = N_("Reload the current page");
struct _EphyHeaderBar {
- GtkBin parent_instance;
+ AdwBin parent_instance;
GtkWidget *header_bar;
EphyWindow *window;
@@ -65,13 +65,12 @@ struct _EphyHeaderBar {
GtkWidget *zoom_level_label;
GtkWidget *restore_button;
GtkWidget *combined_stop_reload_button;
- GtkWidget *combined_stop_reload_image;
GtkWidget *page_menu_popover;
guint popover_hide_timeout_id;
};
-G_DEFINE_TYPE (EphyHeaderBar, ephy_header_bar, GTK_TYPE_BIN)
+G_DEFINE_TYPE (EphyHeaderBar, ephy_header_bar, ADW_TYPE_BIN)
static void
ephy_header_bar_set_property (GObject *object,
@@ -125,7 +124,7 @@ sync_chromes_visibility (EphyHeaderBar *header_bar)
static gboolean
hide_timeout_cb (EphyHeaderBar *header_bar)
{
- gtk_popover_popdown (GTK_POPOVER (header_bar->page_menu_popover));
+ gtk_menu_button_popdown (GTK_MENU_BUTTON (header_bar->page_menu_button));
header_bar->popover_hide_timeout_id = 0;
@@ -137,9 +136,9 @@ fullscreen_changed_cb (EphyHeaderBar *header_bar)
{
gboolean fullscreen;
- g_object_get (header_bar->window, "fullscreen", &fullscreen, NULL);
+ g_object_get (header_bar->window, "fullscreened", &fullscreen, NULL);
- gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (header_bar->header_bar), !fullscreen);
+ gtk_header_bar_set_show_title_buttons (GTK_HEADER_BAR (header_bar->header_bar), !fullscreen);
gtk_widget_set_visible (header_bar->restore_button, fullscreen);
if (fullscreen) {
@@ -150,6 +149,7 @@ fullscreen_changed_cb (EphyHeaderBar *header_bar)
}
}
+#if 0
static void
add_bookmark_button_clicked_cb (EphyLocationEntry *entry,
gpointer *user_data)
@@ -176,6 +176,7 @@ restore_button_clicked_cb (GtkButton *button,
g_action_activate (action, NULL);
}
+#endif
static void
update_revealer_visibility (GtkRevealer *revealer)
@@ -200,26 +201,24 @@ ephy_header_bar_constructed (GObject *object)
g_signal_connect_object (header_bar->window, "notify::chrome",
G_CALLBACK (sync_chromes_visibility), header_bar,
G_CONNECT_SWAPPED);
- g_signal_connect_object (header_bar->window, "notify::fullscreen",
+ g_signal_connect_object (header_bar->window, "notify::fullscreened",
G_CALLBACK (fullscreen_changed_cb), header_bar,
G_CONNECT_SWAPPED);
/* Header bar */
header_bar->header_bar = gtk_header_bar_new ();
- gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (header_bar->header_bar), TRUE);
- gtk_widget_show (header_bar->header_bar);
- gtk_container_add (GTK_CONTAINER (header_bar), header_bar->header_bar);
+ gtk_header_bar_set_show_title_buttons (GTK_HEADER_BAR (header_bar->header_bar), TRUE);
+ adw_bin_set_child (ADW_BIN (header_bar), header_bar->header_bar);
/* Start action elements */
header_bar->action_bar_start = ephy_action_bar_start_new ();
- gtk_widget_show (GTK_WIDGET (header_bar->action_bar_start));
header_bar->start_revealer = GTK_REVEALER (gtk_revealer_new ());
g_signal_connect (header_bar->start_revealer, "notify::child-revealed",
G_CALLBACK (update_revealer_visibility), NULL);
g_signal_connect (header_bar->start_revealer, "notify::reveal-child",
G_CALLBACK (update_revealer_visibility), NULL);
gtk_revealer_set_transition_type (GTK_REVEALER (header_bar->start_revealer),
GTK_REVEALER_TRANSITION_TYPE_SLIDE_RIGHT);
- gtk_container_add (GTK_CONTAINER (header_bar->start_revealer), GTK_WIDGET (header_bar->action_bar_start));
+ gtk_revealer_set_child (GTK_REVEALER (header_bar->start_revealer), GTK_WIDGET
(header_bar->action_bar_start));
gtk_header_bar_pack_start (GTK_HEADER_BAR (header_bar->header_bar),
GTK_WIDGET (header_bar->start_revealer));
@@ -227,16 +226,13 @@ ephy_header_bar_constructed (GObject *object)
embed_shell = ephy_embed_shell_get_default ();
/* Title widget (location entry or title box) */
- if (ephy_embed_shell_get_mode (embed_shell) == EPHY_EMBED_SHELL_MODE_APPLICATION)
+ if (ephy_embed_shell_get_mode (embed_shell) == EPHY_EMBED_SHELL_MODE_APPLICATION || TRUE) // FIXME
header_bar->title_widget = EPHY_TITLE_WIDGET (ephy_title_box_new ());
- else {
- header_bar->title_widget = EPHY_TITLE_WIDGET (ephy_location_entry_new ());
- }
+// else
+// header_bar->title_widget = EPHY_TITLE_WIDGET (ephy_location_entry_new ());
- event_box = gtk_event_box_new ();
- gtk_widget_add_events (event_box, GDK_ALL_EVENTS_MASK);
- gtk_widget_show (event_box);
- gtk_header_bar_set_custom_title (GTK_HEADER_BAR (header_bar->header_bar), event_box);
+ event_box = adw_bin_new ();
+ gtk_header_bar_set_title_widget (GTK_HEADER_BAR (header_bar->header_bar), event_box);
gtk_widget_set_name (event_box, "title-box-container");
if (is_desktop_pantheon ()) {
@@ -245,22 +241,20 @@ ephy_header_bar_constructed (GObject *object)
gtk_widget_set_margin_start (GTK_WIDGET (header_bar->title_widget), 6);
gtk_widget_set_margin_end (GTK_WIDGET (header_bar->title_widget), 6);
- gtk_container_add (GTK_CONTAINER (event_box), GTK_WIDGET (header_bar->title_widget));
+ adw_bin_set_child (ADW_BIN (event_box), GTK_WIDGET (header_bar->title_widget));
} else {
GtkWidget *clamp;
- clamp = hdy_clamp_new ();
+ clamp = adw_clamp_new ();
gtk_widget_set_hexpand (GTK_WIDGET (clamp), TRUE);
- gtk_widget_show (clamp);
- hdy_clamp_set_maximum_size (HDY_CLAMP (clamp), 860);
- hdy_clamp_set_tightening_threshold (HDY_CLAMP (clamp), 560);
- gtk_container_add (GTK_CONTAINER (clamp), GTK_WIDGET (header_bar->title_widget));
+ adw_clamp_set_maximum_size (ADW_CLAMP (clamp), 860);
+ adw_clamp_set_tightening_threshold (ADW_CLAMP (clamp), 560);
+ adw_clamp_set_child (ADW_CLAMP (clamp), GTK_WIDGET (header_bar->title_widget));
- gtk_container_add (GTK_CONTAINER (event_box), clamp);
+ adw_bin_set_child (ADW_BIN (event_box), clamp);
}
- gtk_widget_show (GTK_WIDGET (header_bar->title_widget));
-
+#if 0
if (EPHY_IS_LOCATION_ENTRY (header_bar->title_widget)) {
EphyLocationEntry *lentry = EPHY_LOCATION_ENTRY (header_bar->title_widget);
GtkWidget *popover = ephy_add_bookmark_popover_new (ephy_location_entry_get_bookmark_widget (lentry),
GTK_WIDGET (header_bar->window));
@@ -274,25 +268,25 @@ ephy_header_bar_constructed (GObject *object)
header_bar,
0);
}
+#endif
/* Fullscreen restore button */
- header_bar->restore_button = gtk_button_new_from_icon_name ("view-restore-symbolic",
- GTK_ICON_SIZE_BUTTON);
- g_signal_connect_object (header_bar->restore_button, "clicked",
- G_CALLBACK (restore_button_clicked_cb),
- header_bar, 0);
+ header_bar->restore_button = gtk_button_new_from_icon_name ("view-restore-symbolic");
+ gtk_widget_hide (header_bar->restore_button);
+// g_signal_connect_object (header_bar->restore_button, "clicked",
+// G_CALLBACK (restore_button_clicked_cb),
+// header_bar, 0);
gtk_header_bar_pack_end (GTK_HEADER_BAR (header_bar->header_bar),
GTK_WIDGET (header_bar->restore_button));
/* Page Menu */
button = gtk_menu_button_new ();
header_bar->page_menu_button = button;
- gtk_button_set_image (GTK_BUTTON (button),
- gtk_image_new_from_icon_name ("open-menu-symbolic", GTK_ICON_SIZE_BUTTON));
- g_type_ensure (G_TYPE_THEMED_ICON);
+ gtk_menu_button_set_icon_name (GTK_MENU_BUTTON (button), "open-menu-symbolic");
builder = gtk_builder_new_from_resource ("/org/gnome/epiphany/gtk/page-menu-popover.ui");
header_bar->page_menu_popover = GTK_WIDGET (gtk_builder_get_object (builder, "page-menu-popover"));
header_bar->zoom_level_label = GTK_WIDGET (gtk_builder_get_object (builder, "zoom-level"));
+#if 0
if (ephy_embed_shell_get_mode (embed_shell) == EPHY_EMBED_SHELL_MODE_APPLICATION) {
gtk_widget_destroy (GTK_WIDGET (gtk_builder_get_object (builder, "new-window-separator")));
gtk_widget_destroy (GTK_WIDGET (gtk_builder_get_object (builder, "new-window-button")));
@@ -321,19 +315,17 @@ ephy_header_bar_constructed (GObject *object)
gtk_widget_destroy (GTK_WIDGET (gtk_builder_get_object (builder, "run-in-background-separator")));
gtk_widget_destroy (GTK_WIDGET (gtk_builder_get_object (builder, "run-in-background-button")));
}
+#endif
header_bar->combined_stop_reload_button = GTK_WIDGET (gtk_builder_get_object (builder,
"combined_stop_reload_button"));
- header_bar->combined_stop_reload_image = GTK_WIDGET (gtk_builder_get_object (builder,
"combined_stop_reload_image"));
gtk_widget_set_tooltip_text (header_bar->combined_stop_reload_button, _(REFRESH_BUTTON_TOOLTIP));
if (is_desktop_pantheon ()) {
- gtk_widget_destroy (GTK_WIDGET (gtk_builder_get_object (builder, "about-button")));
+// gtk_widget_destroy (GTK_WIDGET (gtk_builder_get_object (builder, "about-button")));
- gtk_button_set_image (GTK_BUTTON (button),
- gtk_image_new_from_icon_name ("open-menu",
- GTK_ICON_SIZE_LARGE_TOOLBAR));
+ gtk_button_set_icon_name (GTK_BUTTON (button), "open-menu");
}
- g_settings_bind (EPHY_SETTINGS_WEB, EPHY_PREFS_WEB_ENABLE_WEBEXTENSIONS, gtk_builder_get_object (builder,
"extensions-button"), "visible", G_SETTINGS_BIND_DEFAULT);
+// g_settings_bind (EPHY_SETTINGS_WEB, EPHY_PREFS_WEB_ENABLE_WEBEXTENSIONS, gtk_builder_get_object
(builder, "extensions-button"), "visible", G_SETTINGS_BIND_DEFAULT);
gtk_menu_button_set_popover (GTK_MENU_BUTTON (button), header_bar->page_menu_popover);
g_object_unref (builder);
@@ -342,14 +334,13 @@ ephy_header_bar_constructed (GObject *object)
/* End action elements */
header_bar->action_bar_end = ephy_action_bar_end_new ();
- gtk_widget_show (GTK_WIDGET (header_bar->action_bar_end));
header_bar->end_revealer = GTK_REVEALER (gtk_revealer_new ());
g_signal_connect (header_bar->end_revealer, "notify::child-revealed",
G_CALLBACK (update_revealer_visibility), NULL);
g_signal_connect (header_bar->end_revealer, "notify::reveal-child",
G_CALLBACK (update_revealer_visibility), NULL);
gtk_revealer_set_transition_type (GTK_REVEALER (header_bar->end_revealer),
GTK_REVEALER_TRANSITION_TYPE_SLIDE_LEFT);
- gtk_container_add (GTK_CONTAINER (header_bar->end_revealer), GTK_WIDGET (header_bar->action_bar_end));
+ gtk_revealer_set_child (GTK_REVEALER (header_bar->end_revealer), GTK_WIDGET (header_bar->action_bar_end));
gtk_header_bar_pack_end (GTK_HEADER_BAR (header_bar->header_bar),
GTK_WIDGET (header_bar->end_revealer));
@@ -468,8 +459,8 @@ ephy_header_bar_set_adaptive_mode (EphyHeaderBar *header_bar,
break;
}
- if (ephy_embed_shell_get_mode (ephy_embed_shell_get_default ()) != EPHY_EMBED_SHELL_MODE_APPLICATION)
- ephy_location_entry_set_adaptive_mode (EPHY_LOCATION_ENTRY (header_bar->title_widget), adaptive_mode);
+// if (ephy_embed_shell_get_mode (ephy_embed_shell_get_default ()) != EPHY_EMBED_SHELL_MODE_APPLICATION)
+// ephy_location_entry_set_adaptive_mode (EPHY_LOCATION_ENTRY (header_bar->title_widget), adaptive_mode);
}
void
@@ -477,16 +468,14 @@ ephy_header_bar_start_change_combined_stop_reload_state (EphyHeaderBar *header_b
gboolean loading)
{
if (loading) {
- gtk_image_set_from_icon_name (GTK_IMAGE (header_bar->combined_stop_reload_image),
- "process-stop-symbolic",
- get_icon_size ());
+ gtk_button_set_icon_name (GTK_BUTTON (header_bar->combined_stop_reload_button),
+ "process-stop-symbolic");
/* Translators: tooltip for the stop button */
gtk_widget_set_tooltip_text (header_bar->combined_stop_reload_button,
_("Stop loading the current page"));
} else {
- gtk_image_set_from_icon_name (GTK_IMAGE (header_bar->combined_stop_reload_image),
- "view-refresh-symbolic",
- get_icon_size ());
+ gtk_button_set_icon_name (GTK_BUTTON (header_bar->combined_stop_reload_button),
+ "view-refresh-symbolic");
gtk_widget_set_tooltip_text (header_bar->combined_stop_reload_button,
_(REFRESH_BUTTON_TOOLTIP));
}
diff --git a/src/ephy-header-bar.h b/src/ephy-header-bar.h
index f066de16d..c3eff87f1 100644
--- a/src/ephy-header-bar.h
+++ b/src/ephy-header-bar.h
@@ -20,7 +20,7 @@
#pragma once
-#include <gtk/gtk.h>
+#include <adwaita.h>
#include "ephy-action-bar-end.h"
#include "ephy-action-bar-start.h"
@@ -32,7 +32,7 @@ G_BEGIN_DECLS
#define EPHY_TYPE_HEADER_BAR (ephy_header_bar_get_type())
-G_DECLARE_FINAL_TYPE (EphyHeaderBar, ephy_header_bar, EPHY, HEADER_BAR, GtkBin)
+G_DECLARE_FINAL_TYPE (EphyHeaderBar, ephy_header_bar, EPHY, HEADER_BAR, AdwBin)
GtkWidget *ephy_header_bar_new (EphyWindow *window);
EphyTitleWidget *ephy_header_bar_get_title_widget (EphyHeaderBar *header_bar);
diff --git a/src/ephy-history-dialog.c b/src/ephy-history-dialog.c
index 89a279fb7..f8c610aca 100644
--- a/src/ephy-history-dialog.c
+++ b/src/ephy-history-dialog.c
@@ -35,17 +35,17 @@
#include "ephy-time-helpers.h"
#include "ephy-window.h"
+#include <adwaita.h>
#include <ctype.h>
#include <gtk/gtk.h>
#include <glib/gi18n.h>
-#include <handy.h>
#include <string.h>
#include <time.h>
#define NUM_FETCH_LIMIT 15
struct _EphyHistoryDialog {
- HdyWindow parent_instance;
+ AdwWindow parent_instance;
EphySnapshotService *snapshot_service;
EphyHistoryService *history_service;
@@ -88,7 +88,7 @@ struct _EphyHistoryDialog {
gboolean has_search_results;
};
-G_DEFINE_TYPE (EphyHistoryDialog, ephy_history_dialog, HDY_TYPE_WINDOW)
+G_DEFINE_TYPE (EphyHistoryDialog, ephy_history_dialog, ADW_TYPE_WINDOW)
enum {
PROP_0,
@@ -244,8 +244,8 @@ set_is_selection_empty (EphyHistoryDialog *self,
static EphyHistoryURL *
get_url_from_row (GtkListBoxRow *row)
{
- return ephy_history_url_new (hdy_action_row_get_subtitle (HDY_ACTION_ROW (row)),
- hdy_preferences_row_get_title (HDY_PREFERENCES_ROW (row)),
+ return ephy_history_url_new (adw_action_row_get_subtitle (ADW_ACTION_ROW (row)),
+ adw_preferences_row_get_title (ADW_PREFERENCES_ROW (row)),
0,
0,
0);
@@ -254,15 +254,10 @@ get_url_from_row (GtkListBoxRow *row)
static void
clear_listbox (GtkWidget *listbox)
{
- GList *children, *iter;
-
- children = gtk_container_get_children (GTK_CONTAINER (listbox));
-
- for (iter = children; iter; iter = g_list_next (iter)) {
- gtk_widget_destroy (GTK_WIDGET (iter->data));
- }
+ GtkWidget *row;
- g_list_free (children);
+ while ((row = gtk_list_box_get_row_at_index (GTK_LIST_BOX (listbox), 0)))
+ gtk_list_box_remove (GTK_LIST_BOX (listbox), row);
}
static void
@@ -435,9 +430,9 @@ create_row (EphyHistoryDialog *self,
GtkWidget *copy_url_button;
/* Row */
- row = hdy_action_row_new ();
- hdy_preferences_row_set_title (HDY_PREFERENCES_ROW (row), url->title);
- hdy_action_row_set_subtitle (HDY_ACTION_ROW (row), url->url);
+ row = adw_action_row_new ();
+ adw_preferences_row_set_title (ADW_PREFERENCES_ROW (row), url->title);
+ adw_action_row_set_subtitle (ADW_ACTION_ROW (row), url->url);
gtk_list_box_row_set_activatable (GTK_LIST_BOX_ROW (row), TRUE);
gtk_widget_set_tooltip_text (row, url->url);
@@ -465,8 +460,8 @@ create_row (EphyHistoryDialog *self,
gtk_widget_set_tooltip_text (copy_url_button, _("Copy URL"));
g_signal_connect (copy_url_button, "clicked", G_CALLBACK (row_copy_url_button_clicked), row);
- hdy_action_row_add_prefix (HDY_ACTION_ROW (row), check_button);
- hdy_action_row_add_prefix (HDY_ACTION_ROW (row), separator);
+ adw_action_row_add_prefix (ADW_ACTION_ROW (row), check_button);
+ adw_action_row_add_prefix (ADW_ACTION_ROW (row), separator);
gtk_container_add (GTK_CONTAINER (row), date);
gtk_container_add (GTK_CONTAINER (row), copy_url_button);
@@ -611,7 +606,7 @@ on_key_press_event (EphyHistoryDialog *self,
gpointer user_data)
{
GdkEventKey *key = (GdkEventKey *)event;
- HdySearchBar *search_bar = HDY_SEARCH_BAR (self->search_bar);
+ AdwSearchBar *search_bar = ADW_SEARCH_BAR (self->search_bar);
/* Keep track internally of the Shift modifier needed for the
* interval selection logic */
@@ -619,7 +614,7 @@ on_key_press_event (EphyHistoryDialog *self,
self->shift_modifier_active = TRUE;
/* Check if event can be handled by the search bar */
- if (hdy_search_bar_handle_event (search_bar, event) == GDK_EVENT_STOP)
+ if (adw_search_bar_handle_event (search_bar, event) == GDK_EVENT_STOP)
return GDK_EVENT_STOP;
if (key->keyval == GDK_KEY_Down || key->keyval == GDK_KEY_Page_Down) {
@@ -635,7 +630,7 @@ on_key_press_event (EphyHistoryDialog *self,
}
if (key->keyval == GDK_KEY_Escape &&
- !hdy_search_bar_get_search_mode (search_bar)) {
+ !adw_search_bar_get_search_mode (search_bar)) {
if (self->selection_active)
set_selection_active (self, FALSE);
else
@@ -969,7 +964,7 @@ ephy_history_dialog_init (EphyHistoryDialog *self)
self->sorter_source = 0;
self->is_selection_empty = TRUE;
- hdy_search_bar_connect_entry (HDY_SEARCH_BAR (self->search_bar), GTK_ENTRY (self->search_entry));
+ adw_search_bar_connect_entry (ADW_SEARCH_BAR (self->search_bar), GTK_ENTRY (self->search_entry));
ephy_gui_ensure_window_group (GTK_WINDOW (self));
@@ -984,6 +979,6 @@ ephy_history_dialog_init (EphyHistoryDialog *self)
gtk_widget_set_tooltip_text (self->clear_all_button, tooltip);
set_is_loading (self, TRUE);
- hdy_status_page_set_icon_name (HDY_STATUS_PAGE (self->empty_history_message),
+ adw_status_page_set_icon_name (ADW_STATUS_PAGE (self->empty_history_message),
APPLICATION_ID "-symbolic");
}
diff --git a/src/ephy-history-dialog.h b/src/ephy-history-dialog.h
index d77e45d8d..74a4252d0 100644
--- a/src/ephy-history-dialog.h
+++ b/src/ephy-history-dialog.h
@@ -20,7 +20,7 @@
#pragma once
-#include <handy.h>
+#include <adwaita.h>
#include "ephy-history-service.h"
@@ -28,7 +28,7 @@ G_BEGIN_DECLS
#define EPHY_TYPE_HISTORY_DIALOG (ephy_history_dialog_get_type ())
-G_DECLARE_FINAL_TYPE (EphyHistoryDialog, ephy_history_dialog, EPHY, HISTORY_DIALOG, HdyWindow)
+G_DECLARE_FINAL_TYPE (EphyHistoryDialog, ephy_history_dialog, EPHY, HISTORY_DIALOG, AdwWindow)
GtkWidget *ephy_history_dialog_new (EphyHistoryService *history_service);
diff --git a/src/ephy-link.c b/src/ephy-link.c
index cc7f69386..93c6a0009 100644
--- a/src/ephy-link.c
+++ b/src/ephy-link.c
@@ -94,6 +94,7 @@ ephy_link_open (EphyLink *link,
return new_embed;
}
+#if 0
EphyLinkFlags
ephy_link_flags_from_current_event (void)
{
@@ -122,3 +123,4 @@ ephy_link_flags_from_current_event (void)
return flags;
}
+#endif
diff --git a/src/ephy-pages-button.c b/src/ephy-pages-button.c
index 757a7f79e..4a4b683c6 100644
--- a/src/ephy-pages-button.c
+++ b/src/ephy-pages-button.c
@@ -92,7 +92,7 @@ update_icon (EphyPagesButton *self)
gtk_widget_set_visible (GTK_WIDGET (self->pages_label), !is_overflow);
gtk_label_set_text (self->pages_label, label_text);
- gtk_image_set_from_icon_name (self->pages_icon, icon_name, GTK_ICON_SIZE_BUTTON);
+ gtk_image_set_from_icon_name (self->pages_icon, icon_name);
}
EphyPagesButton *
diff --git a/src/ephy-session.c b/src/ephy-session.c
index af2df8f3c..fa8016955 100644
--- a/src/ephy-session.c
+++ b/src/ephy-session.c
@@ -255,7 +255,7 @@ ephy_session_undo_close_tab (EphySession *session)
flags |= EPHY_NEW_TAB_FIRST;
}
- window = EPHY_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (tab_view)));
+ window = EPHY_WINDOW (gtk_widget_get_root (GTK_WIDGET (tab_view)));
new_tab = ephy_shell_new_tab (ephy_shell_get_default (),
window, embed,
flags);
@@ -278,7 +278,7 @@ ephy_session_undo_close_tab (EphySession *session)
}
gtk_widget_grab_focus (GTK_WIDGET (new_tab));
- gtk_window_present_with_time (GTK_WINDOW (window), gtk_get_current_event_time ());
+ gtk_window_present (GTK_WINDOW (window));
closed_tab_free (tab);
@@ -325,24 +325,24 @@ ephy_session_get_can_undo_tab_closed (EphySession *session)
}
static void
-tab_view_page_attached_cb (HdyTabView *tab_view,
- HdyTabPage *page,
+tab_view_page_attached_cb (AdwTabView *tab_view,
+ AdwTabPage *page,
guint position,
EphySession *session)
{
- EphyEmbed *embed = EPHY_EMBED (hdy_tab_page_get_child (page));
+ EphyEmbed *embed = EPHY_EMBED (adw_tab_page_get_child (page));
g_signal_connect (ephy_embed_get_web_view (embed), "load-changed",
G_CALLBACK (load_changed_cb), session);
}
static void
-tab_view_page_detached_cb (HdyTabView *tab_view,
- HdyTabPage *page,
+tab_view_page_detached_cb (AdwTabView *tab_view,
+ AdwTabPage *page,
gint position,
EphySession *session)
{
- EphyEmbed *embed = EPHY_EMBED (hdy_tab_page_get_child (page));
+ EphyEmbed *embed = EPHY_EMBED (adw_tab_page_get_child (page));
EphyTabView *ephy_tab_view = EPHY_TAB_VIEW (g_object_get_data (G_OBJECT (tab_view), "ephy-tab-view"));
ephy_session_save (session);
@@ -355,8 +355,8 @@ tab_view_page_detached_cb (HdyTabView *tab_view,
}
static void
-tab_view_page_reordered_cb (HdyTabView *tab_view,
- HdyTabPage *page,
+tab_view_page_reordered_cb (AdwTabView *tab_view,
+ AdwTabPage *page,
guint position,
EphySession *session)
{
@@ -364,7 +364,7 @@ tab_view_page_reordered_cb (HdyTabView *tab_view,
}
static void
-tab_view_notify_selected_page_cb (HdyTabView *tab_view,
+tab_view_notify_selected_page_cb (AdwTabView *tab_view,
GParamSpec *pspec,
EphySession *session)
{
@@ -391,7 +391,7 @@ window_added_cb (GtkApplication *application,
EphySession *session)
{
EphyWindow *ephy_window;
- HdyTabView *tab_view;
+ AdwTabView *tab_view;
ephy_session_save (session);
@@ -1136,6 +1136,14 @@ session_parser_context_free (SessionParserContext *context)
g_free (context);
}
+static void
+window_destroyed (GtkWidget *widget,
+ GtkWidget **widget_pointer)
+{
+ if (widget_pointer)
+ *widget_pointer = NULL;
+}
+
static void
session_parse_window (SessionParserContext *context,
const gchar **names,
@@ -1152,7 +1160,7 @@ session_parse_window (SessionParserContext *context,
}
context->window = ephy_window_new ();
- context->destroy_id = g_signal_connect (context->window, "destroy", G_CALLBACK (gtk_widget_destroyed),
&context->window);
+ context->destroy_id = g_signal_connect (context->window, "destroy", G_CALLBACK (window_destroyed),
&context->window);
for (i = 0; names[i]; i++) {
gulong int_value;
@@ -1198,7 +1206,7 @@ session_parse_embed (SessionParserContext *context,
const gchar **names,
const gchar **values)
{
- HdyTabView *tab_view;
+ AdwTabView *tab_view;
const char *url = NULL;
const char *title = NULL;
const char *history = NULL;
@@ -1265,8 +1273,8 @@ session_parse_embed (SessionParserContext *context,
context->window, NULL, flags,
0);
- hdy_tab_view_set_page_pinned (tab_view,
- hdy_tab_view_get_page (tab_view, GTK_WIDGET (embed)),
+ adw_tab_view_set_page_pinned (tab_view,
+ adw_tab_view_get_page (tab_view, GTK_WIDGET (embed)),
is_pin);
web_view = ephy_embed_get_web_view (embed);
@@ -1796,7 +1804,7 @@ ephy_session_clear (EphySession *session)
shell = ephy_shell_get_default ();
windows = g_list_copy (gtk_application_get_windows (GTK_APPLICATION (shell)));
for (p = windows; p; p = p->next)
- gtk_widget_destroy (GTK_WIDGET (p->data));
+ gtk_window_destroy (GTK_WINDOW (p->data));
g_list_free (windows);
g_queue_foreach (session->closed_tabs,
(GFunc)closed_tab_free, NULL);
diff --git a/src/ephy-shell.c b/src/ephy-shell.c
index 0ace095aa..b2d1da396 100644
--- a/src/ephy-shell.c
+++ b/src/ephy-shell.c
@@ -28,15 +28,15 @@
#include "ephy-embed-container.h"
#include "ephy-embed-utils.h"
#include "ephy-file-helpers.h"
-#include "ephy-firefox-sync-dialog.h"
+//#include "ephy-firefox-sync-dialog.h"
#include "ephy-gui.h"
#include "ephy-header-bar.h"
-#include "ephy-history-dialog.h"
+//#include "ephy-history-dialog.h"
#include "ephy-link.h"
#include "ephy-lockdown.h"
#include "ephy-notification.h"
#include "ephy-prefs.h"
-#include "ephy-prefs-dialog.h"
+//#include "ephy-prefs-dialog.h"
#include "ephy-session.h"
#include "ephy-settings.h"
#include "ephy-sync-utils.h"
@@ -50,7 +50,6 @@
#include <glib/gi18n.h>
#include <gtk/gtk.h>
-#include <handy.h>
struct _EphyShell {
EphyEmbedShell parent_instance;
@@ -232,6 +231,7 @@ import_passwords (GSimpleAction *action,
window_cmd_import_passwords (NULL, NULL, EPHY_WINDOW (window));
}
+/*
static void
show_history (GSimpleAction *action,
GVariant *parameter,
@@ -267,6 +267,7 @@ show_preferences (GSimpleAction *action,
window_cmd_show_preferences (NULL, NULL, EPHY_WINDOW (window));
}
+*/
static void
show_shortcuts (GSimpleAction *action,
@@ -339,7 +340,7 @@ launch_app (GSimpleAction *action,
* is disabled when running under flatpak.
*/
ephy_file_launch_desktop_file (desktop_file,
- gtk_get_current_event_time (),
+ g_get_monotonic_time (),
EPHY_FILE_HELPERS_I_UNDERSTAND_I_MUST_NOT_USE_THIS_FUNCTION_UNDER_FLATPAK);
}
@@ -363,9 +364,9 @@ static GActionEntry app_entries[] = {
{ "import-bookmarks", import_bookmarks, NULL, NULL, NULL },
{ "export-bookmarks", export_bookmarks, NULL, NULL, NULL },
{ "import-passwords", import_passwords, NULL, NULL, NULL },
- { "history", show_history, NULL, NULL, NULL },
- { "firefox-sync-dialog", show_firefox_sync, NULL, NULL, NULL },
- { "preferences", show_preferences, NULL, NULL, NULL },
+// { "history", show_history, NULL, NULL, NULL },
+// { "firefox-sync-dialog", show_firefox_sync, NULL, NULL, NULL },
+// { "preferences", show_preferences, NULL, NULL, NULL },
{ "shortcuts", show_shortcuts, NULL, NULL, NULL },
{ "help", show_help, NULL, NULL, NULL },
{ "about", show_about, NULL, NULL, NULL },
@@ -380,8 +381,8 @@ static GActionEntry non_incognito_extra_app_entries[] = {
};
static GActionEntry app_mode_app_entries[] = {
- { "history", show_history, NULL, NULL, NULL },
- { "preferences", show_preferences, NULL, NULL, NULL },
+// { "history", show_history, NULL, NULL, NULL },
+// { "preferences", show_preferences, NULL, NULL, NULL },
{ "about", show_about, NULL, NULL, NULL },
{ "quit", quit_application, NULL, NULL, NULL },
{ "run-in-background", NULL, NULL, "false", NULL},
@@ -493,11 +494,6 @@ ephy_shell_startup (GApplication *application)
G_APPLICATION_CLASS (ephy_shell_parent_class)->startup (application);
- hdy_init ();
-
- hdy_style_manager_set_color_scheme (hdy_style_manager_get_default (),
- HDY_COLOR_SCHEME_PREFER_LIGHT);
-
/* If we are under Pantheon set the icon-theme and cursor-theme accordingly. */
if (is_desktop_pantheon ()) {
GtkSettings *settings = gtk_settings_get_default ();
@@ -795,6 +791,7 @@ ephy_shell_before_emit (GApplication *application,
platform_data);
}
+#if 0
static GObject *
ephy_shell_get_lockdown (EphyShell *shell)
{
@@ -805,6 +802,7 @@ ephy_shell_get_lockdown (EphyShell *shell)
return G_OBJECT (shell->session);
}
+#endif
static void
ephy_shell_constructed (GObject *object)
@@ -819,12 +817,12 @@ ephy_shell_constructed (GObject *object)
}
if (ephy_embed_shell_get_mode (EPHY_EMBED_SHELL (object)) == EPHY_EMBED_SHELL_MODE_APPLICATION) {
- dzl_application_add_resources (DZL_APPLICATION (object),
- "resource:///org/gnome/Epiphany");
+// dzl_application_add_resources (DZL_APPLICATION (object),
+// "resource:///org/gnome/Epiphany");
}
/* FIXME: not sure if this is the best place to put this stuff. */
- ephy_shell_get_lockdown (EPHY_SHELL (object));
+// ephy_shell_get_lockdown (EPHY_SHELL (object));
if (G_OBJECT_CLASS (ephy_shell_parent_class)->constructed)
G_OBJECT_CLASS (ephy_shell_parent_class)->constructed (object);
@@ -876,7 +874,7 @@ ephy_shell_dispose (GObject *object)
g_clear_object (&shell->session);
g_clear_object (&shell->lockdown);
- g_clear_pointer (&shell->history_dialog, gtk_widget_destroy);
+ g_clear_pointer ((GtkWindow **) &shell->history_dialog, gtk_window_destroy);
g_clear_object (&shell->prefs_dialog);
g_clear_object (&shell->network_monitor);
g_clear_object (&shell->sync_service);
@@ -1169,7 +1167,6 @@ ephy_shell_get_bookmarks_manager (EphyShell *shell)
return shell->bookmarks_manager;
}
-
/**
* ephy_shell_get_history_manager:
* @shell: the #EphyShell
@@ -1220,6 +1217,7 @@ ephy_shell_get_net_monitor (EphyShell *shell)
return shell->network_monitor;
}
+#if 0
/**
* ephy_shell_get_history_dialog:
*
@@ -1283,6 +1281,7 @@ ephy_shell_get_prefs_dialog (EphyShell *shell)
return shell->prefs_dialog;
}
+#endif
void
_ephy_shell_create_instance (EphyEmbedShellMode mode)
@@ -1359,7 +1358,7 @@ ephy_shell_close_all_windows (EphyShell *shell)
windows = windows->next;
if (ephy_window_close (window))
- gtk_widget_destroy (GTK_WIDGET (window));
+ gtk_window_destroy (GTK_WINDOW (window));
else
retval = FALSE;
}
diff --git a/src/ephy-tab-view.c b/src/ephy-tab-view.c
index e2c785892..65f39c18d 100644
--- a/src/ephy-tab-view.c
+++ b/src/ephy-tab-view.c
@@ -22,7 +22,7 @@
#include "ephy-tab-view.h"
#include "ephy-desktop-utils.h"
-#include "ephy-dnd.h"
+//#include "ephy-dnd.h"
#include "ephy-embed-utils.h"
#include "ephy-link.h"
#include "ephy-settings.h"
@@ -31,14 +31,14 @@
#define MAX_NUMBER_OF_URLS 20
struct _EphyTabView {
- GtkBin parent_instance;
+ AdwBin parent_instance;
- HdyTabView *tab_view;
- HdyTabBar *tab_bar;
- HdyTabPage *current_page;
+ AdwTabView *tab_view;
+ AdwTabBar *tab_bar;
+ AdwTabPage *current_page;
};
-G_DEFINE_TYPE (EphyTabView, ephy_tab_view, GTK_TYPE_BIN)
+G_DEFINE_TYPE (EphyTabView, ephy_tab_view, ADW_TYPE_BIN)
enum {
PROP_0,
@@ -58,19 +58,19 @@ notify_n_pages_cb (EphyTabView *self)
static void
notify_selected_page_cb (EphyTabView *self)
{
- HdyTabPage *page = hdy_tab_view_get_selected_page (self->tab_view);
+ AdwTabPage *page = adw_tab_view_get_selected_page (self->tab_view);
if (page)
- hdy_tab_page_set_needs_attention (page, FALSE);
+ adw_tab_page_set_needs_attention (page, FALSE);
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_SELECTED_INDEX]);
}
static void
indicator_activated_cb (EphyTabView *self,
- HdyTabPage *page)
+ AdwTabPage *page)
{
- EphyEmbed *embed = EPHY_EMBED (hdy_tab_page_get_child (page));
+ EphyEmbed *embed = EPHY_EMBED (adw_tab_page_get_child (page));
EphyWebView *view = ephy_embed_get_web_view (embed);
gboolean muted = webkit_web_view_get_is_muted (WEBKIT_WEB_VIEW (view));
@@ -79,18 +79,18 @@ indicator_activated_cb (EphyTabView *self,
static void
setup_menu_cb (EphyTabView *self,
- HdyTabPage *page)
+ AdwTabPage *page)
{
self->current_page = page;
}
-static HdyTabPage *
+static AdwTabPage *
get_current_page (EphyTabView *self)
{
if (self->current_page)
return self->current_page;
- return hdy_tab_view_get_selected_page (self->tab_view);
+ return adw_tab_view_get_selected_page (self->tab_view);
}
static void
@@ -150,12 +150,11 @@ ephy_tab_view_class_init (EphyTabViewClass *klass)
static void
ephy_tab_view_init (EphyTabView *self)
{
- self->tab_view = HDY_TAB_VIEW (hdy_tab_view_new ());
- gtk_widget_show (GTK_WIDGET (self->tab_view));
+ self->tab_view = ADW_TAB_VIEW (adw_tab_view_new ());
g_object_set_data (G_OBJECT (self->tab_view), "ephy-tab-view", self);
- gtk_container_add (GTK_CONTAINER (self), GTK_WIDGET (self->tab_view));
+ adw_bin_set_child (ADW_BIN (self), GTK_WIDGET (self->tab_view));
g_signal_connect_object (self->tab_view,
"notify::n-pages",
@@ -191,52 +190,52 @@ ephy_tab_view_new (void)
void
ephy_tab_view_next (EphyTabView *self)
{
- hdy_tab_view_select_next_page (self->tab_view);
+ adw_tab_view_select_next_page (self->tab_view);
}
void
ephy_tab_view_pin (EphyTabView *self)
{
- hdy_tab_view_set_page_pinned (self->tab_view, get_current_page (self), TRUE);
+ adw_tab_view_set_page_pinned (self->tab_view, get_current_page (self), TRUE);
}
void
ephy_tab_view_unpin (EphyTabView *self)
{
- hdy_tab_view_set_page_pinned (self->tab_view, get_current_page (self), FALSE);
+ adw_tab_view_set_page_pinned (self->tab_view, get_current_page (self), FALSE);
}
void
ephy_tab_view_close (EphyTabView *self,
GtkWidget *widget)
{
- HdyTabPage *page = hdy_tab_view_get_page (self->tab_view, widget);
+ AdwTabPage *page = adw_tab_view_get_page (self->tab_view, widget);
- hdy_tab_view_close_page (self->tab_view, page);
+ adw_tab_view_close_page (self->tab_view, page);
}
void
ephy_tab_view_close_selected (EphyTabView *self)
{
- hdy_tab_view_close_page (self->tab_view, get_current_page (self));
+ adw_tab_view_close_page (self->tab_view, get_current_page (self));
}
void
ephy_tab_view_close_left (EphyTabView *self)
{
- hdy_tab_view_close_pages_before (self->tab_view, get_current_page (self));
+ adw_tab_view_close_pages_before (self->tab_view, get_current_page (self));
}
void
ephy_tab_view_close_right (EphyTabView *self)
{
- hdy_tab_view_close_pages_after (self->tab_view, get_current_page (self));
+ adw_tab_view_close_pages_after (self->tab_view, get_current_page (self));
}
void
ephy_tab_view_close_other (EphyTabView *self)
{
- hdy_tab_view_close_other_pages (self->tab_view, get_current_page (self));
+ adw_tab_view_close_other_pages (self->tab_view, get_current_page (self));
}
void
@@ -246,67 +245,67 @@ ephy_tab_view_foreach (EphyTabView *self,
{
int i, n;
- n = hdy_tab_view_get_n_pages (self->tab_view);
+ n = adw_tab_view_get_n_pages (self->tab_view);
for (i = 0; i < n; i++) {
- HdyTabPage *page = hdy_tab_view_get_nth_page (self->tab_view, i);
+ AdwTabPage *page = adw_tab_view_get_nth_page (self->tab_view, i);
- callback (hdy_tab_page_get_child (page), user_data);
+ callback (adw_tab_page_get_child (page), user_data);
}
}
int
ephy_tab_view_get_n_pages (EphyTabView *self)
{
- return hdy_tab_view_get_n_pages (self->tab_view);
+ return adw_tab_view_get_n_pages (self->tab_view);
}
int
ephy_tab_view_get_selected_index (EphyTabView *self)
{
- HdyTabPage *page = hdy_tab_view_get_selected_page (self->tab_view);
+ AdwTabPage *page = adw_tab_view_get_selected_page (self->tab_view);
if (!page)
return -1;
- return hdy_tab_view_get_page_position (self->tab_view, page);
+ return adw_tab_view_get_page_position (self->tab_view, page);
}
int
ephy_tab_view_get_page_index (EphyTabView *self,
GtkWidget *widget)
{
- HdyTabPage *page = hdy_tab_view_get_page (self->tab_view, widget);
+ AdwTabPage *page = adw_tab_view_get_page (self->tab_view, widget);
- return hdy_tab_view_get_page_position (self->tab_view, page);
+ return adw_tab_view_get_page_position (self->tab_view, page);
}
GtkWidget *
ephy_tab_view_get_nth_page (EphyTabView *self,
int index)
{
- HdyTabPage *page = hdy_tab_view_get_nth_page (self->tab_view, index);
+ AdwTabPage *page = adw_tab_view_get_nth_page (self->tab_view, index);
- return hdy_tab_page_get_child (page);
+ return adw_tab_page_get_child (page);
}
void
ephy_tab_view_select_nth_page (EphyTabView *self,
int index)
{
- HdyTabPage *page = hdy_tab_view_get_nth_page (self->tab_view, index);
+ AdwTabPage *page = adw_tab_view_get_nth_page (self->tab_view, index);
- hdy_tab_view_set_selected_page (self->tab_view, page);
+ adw_tab_view_set_selected_page (self->tab_view, page);
}
gboolean
ephy_tab_view_select_page (EphyTabView *self,
GtkWidget *widget)
{
- HdyTabPage *page = hdy_tab_view_get_page (self->tab_view, widget);
+ AdwTabPage *page = adw_tab_view_get_page (self->tab_view, widget);
if (page)
- hdy_tab_view_set_selected_page (self->tab_view, page);
+ adw_tab_view_set_selected_page (self->tab_view, page);
return !!page;
}
@@ -314,15 +313,15 @@ ephy_tab_view_select_page (EphyTabView *self,
GtkWidget *
ephy_tab_view_get_selected_page (EphyTabView *self)
{
- HdyTabPage *page = hdy_tab_view_get_selected_page (self->tab_view);
+ AdwTabPage *page = adw_tab_view_get_selected_page (self->tab_view);
if (!page)
return NULL;
- return hdy_tab_page_get_child (page);
+ return adw_tab_page_get_child (page);
}
-HdyTabView *
+AdwTabView *
ephy_tab_view_get_tab_view (EphyTabView *self)
{
return self->tab_view;
@@ -334,11 +333,11 @@ ephy_tab_view_get_pages (EphyTabView *self)
GList *list = NULL;
int i, n;
- n = hdy_tab_view_get_n_pages (self->tab_view);
+ n = adw_tab_view_get_n_pages (self->tab_view);
for (i = 0; i < n; i++) {
- HdyTabPage *page = hdy_tab_view_get_nth_page (self->tab_view, i);
- GtkWidget *content = hdy_tab_page_get_child (page);
+ AdwTabPage *page = adw_tab_view_get_nth_page (self->tab_view, i);
+ GtkWidget *content = adw_tab_page_get_child (page);
list = g_list_prepend (list, content);
}
@@ -350,26 +349,26 @@ gboolean
ephy_tab_view_get_is_pinned (EphyTabView *self,
GtkWidget *widget)
{
- HdyTabPage *page = hdy_tab_view_get_page (self->tab_view, widget);
+ AdwTabPage *page = adw_tab_view_get_page (self->tab_view, widget);
- return hdy_tab_page_get_pinned (page);
+ return adw_tab_page_get_pinned (page);
}
static void
-update_title_cb (HdyTabPage *page)
+update_title_cb (AdwTabPage *page)
{
- EphyEmbed *embed = EPHY_EMBED (hdy_tab_page_get_child (page));
+ EphyEmbed *embed = EPHY_EMBED (adw_tab_page_get_child (page));
EphyWebView *view = ephy_embed_get_web_view (embed);
const char *title = ephy_embed_get_title (embed);
const char *address;
if (!ephy_embed_has_load_pending (embed) &&
- !hdy_tab_page_get_selected (page) &&
- hdy_tab_page_get_pinned (page))
- hdy_tab_page_set_needs_attention (page, TRUE);
+ !adw_tab_page_get_selected (page) &&
+ adw_tab_page_get_pinned (page))
+ adw_tab_page_set_needs_attention (page, TRUE);
if (title && strlen (title)) {
- hdy_tab_page_set_title (page, title);
+ adw_tab_page_set_title (page, title);
return;
}
@@ -377,20 +376,20 @@ update_title_cb (HdyTabPage *page)
if (ephy_web_view_is_loading (view) &&
!ephy_embed_utils_is_no_show_address (address))
- hdy_tab_page_set_title (page, address);
+ adw_tab_page_set_title (page, address);
}
static void
-update_icon_cb (HdyTabPage *page)
+update_icon_cb (AdwTabPage *page)
{
- EphyEmbed *embed = EPHY_EMBED (hdy_tab_page_get_child (page));
+ EphyEmbed *embed = EPHY_EMBED (adw_tab_page_get_child (page));
EphyWebView *view = ephy_embed_get_web_view (embed);
GIcon *icon = G_ICON (ephy_web_view_get_icon (view));
g_autoptr (GIcon) placeholder_icon = NULL;
const char *uri, *favicon_name;
if (icon) {
- hdy_tab_page_set_icon (page, icon);
+ adw_tab_page_set_icon (page, icon);
return;
}
@@ -400,13 +399,13 @@ update_icon_cb (HdyTabPage *page)
if (favicon_name)
placeholder_icon = g_themed_icon_new (favicon_name);
- hdy_tab_page_set_icon (page, placeholder_icon);
+ adw_tab_page_set_icon (page, placeholder_icon);
}
static void
-update_indicator_cb (HdyTabPage *page)
+update_indicator_cb (AdwTabPage *page)
{
- EphyEmbed *embed = EPHY_EMBED (hdy_tab_page_get_child (page));
+ EphyEmbed *embed = EPHY_EMBED (adw_tab_page_get_child (page));
EphyWebView *view = ephy_embed_get_web_view (embed);
g_autoptr (GIcon) icon = NULL;
@@ -417,7 +416,7 @@ update_indicator_cb (HdyTabPage *page)
icon = G_ICON (g_themed_icon_new ("ephy-audio-playing-symbolic"));
}
- hdy_tab_page_set_indicator_icon (page, icon);
+ adw_tab_page_set_indicator_icon (page, icon);
}
int
@@ -427,26 +426,26 @@ ephy_tab_view_add_tab (EphyTabView *self,
int position,
gboolean jump_to)
{
- HdyTabPage *page;
+ AdwTabPage *page;
EphyWebView *view;
if (parent) {
- HdyTabPage *parent_page;
+ AdwTabPage *parent_page;
- parent_page = hdy_tab_view_get_page (self->tab_view, GTK_WIDGET (parent));
- page = hdy_tab_view_add_page (self->tab_view, GTK_WIDGET (embed), parent_page);
+ parent_page = adw_tab_view_get_page (self->tab_view, GTK_WIDGET (parent));
+ page = adw_tab_view_add_page (self->tab_view, GTK_WIDGET (embed), parent_page);
} else if (position < 0) {
- page = hdy_tab_view_append (self->tab_view, GTK_WIDGET (embed));
+ page = adw_tab_view_append (self->tab_view, GTK_WIDGET (embed));
} else {
- page = hdy_tab_view_insert (self->tab_view, GTK_WIDGET (embed), position);
+ page = adw_tab_view_insert (self->tab_view, GTK_WIDGET (embed), position);
}
if (jump_to)
- hdy_tab_view_set_selected_page (self->tab_view, page);
+ adw_tab_view_set_selected_page (self->tab_view, page);
view = ephy_embed_get_web_view (embed);
- hdy_tab_page_set_indicator_activatable (page, TRUE);
+ adw_tab_page_set_indicator_activatable (page, TRUE);
g_object_bind_property (view, "is-loading", page, "loading", G_BINDING_SYNC_CREATE);
@@ -473,23 +472,23 @@ ephy_tab_view_add_tab (EphyTabView *self,
update_icon_cb (page);
update_indicator_cb (page);
- return hdy_tab_view_get_page_position (self->tab_view, page);
+ return adw_tab_view_get_page_position (self->tab_view, page);
}
GtkWidget *
ephy_tab_view_get_current_page (EphyTabView *self)
{
- HdyTabPage *page = get_current_page (self);
+ AdwTabPage *page = get_current_page (self);
if (!page)
return NULL;
- return hdy_tab_page_get_child (page);
+ return adw_tab_page_get_child (page);
}
-
+#if 0
static void
drag_data_received_cb (EphyTabView *self,
- HdyTabPage *page,
+ AdwTabPage *page,
GdkDragContext *context,
GtkSelectionData *selection_data,
guint info,
@@ -508,7 +507,7 @@ drag_data_received_cb (EphyTabView *self,
if (gtk_selection_data_get_length (selection_data) <= 0 || data)
return;
- embed = EPHY_EMBED (hdy_tab_page_get_child (page));
+ embed = EPHY_EMBED (adw_tab_page_get_child (page));
target = gtk_selection_data_get_target (selection_data);
window = gtk_widget_get_toplevel (GTK_WIDGET (self));
@@ -546,7 +545,7 @@ drag_data_received_cb (EphyTabView *self,
}
}
}
-
+#endif
static void
visibility_policy_changed_cb (EphyTabView *self)
{
@@ -561,7 +560,7 @@ visibility_policy_changed_cb (EphyTabView *self)
policy = g_settings_get_enum (EPHY_SETTINGS_UI,
EPHY_PREFS_UI_TABS_BAR_VISIBILITY_POLICY);
- hdy_tab_bar_set_autohide (self->tab_bar,
+ adw_tab_bar_set_autohide (self->tab_bar,
policy != EPHY_PREFS_UI_TABS_BAR_VISIBILITY_POLICY_ALWAYS);
gtk_widget_set_visible (GTK_WIDGET (self->tab_bar),
mode != EPHY_EMBED_SHELL_MODE_APPLICATION &&
@@ -574,7 +573,7 @@ expand_changed_cb (EphyTabView *self)
gboolean expand = g_settings_get_boolean (EPHY_SETTINGS_UI,
EPHY_PREFS_UI_EXPAND_TABS_BAR);
- hdy_tab_bar_set_expand_tabs (self->tab_bar, expand);
+ adw_tab_bar_set_expand_tabs (self->tab_bar, expand);
}
static gboolean
@@ -599,46 +598,45 @@ is_layout_reversed (void)
static void
notify_decoration_layout_cb (EphyTabView *self)
{
- hdy_tab_bar_set_inverted (self->tab_bar, is_layout_reversed ());
+ adw_tab_bar_set_inverted (self->tab_bar, is_layout_reversed ());
}
void
ephy_tab_view_set_tab_bar (EphyTabView *self,
- HdyTabBar *tab_bar)
+ AdwTabBar *tab_bar)
{
- g_autoptr (GtkTargetList) target_list = NULL;
+// g_autoptr (GtkTargetList) target_list = NULL;
GtkSettings *settings;
- static const GtkTargetEntry url_drag_types [] = {
+/* static const GtkTargetEntry url_drag_types [] = {
{ (char *)EPHY_DND_URI_LIST_TYPE, 0, 0 },
{ (char *)EPHY_DND_URL_TYPE, 0, 1 },
- };
+ };*/
self->tab_bar = tab_bar;
-
+/*
target_list = gtk_target_list_new (url_drag_types,
G_N_ELEMENTS (url_drag_types));
gtk_target_list_add_text_targets (target_list, 0);
- hdy_tab_bar_set_extra_drag_dest_targets (self->tab_bar, target_list);
+ adw_tab_bar_set_extra_drag_dest_targets (self->tab_bar, target_list);
g_signal_connect_object (tab_bar, "extra-drag-data-received",
G_CALLBACK (drag_data_received_cb), self,
G_CONNECT_SWAPPED);
-
+*/
if (is_desktop_pantheon ()) {
GtkWidget *button;
- hdy_tab_bar_set_autohide (tab_bar, FALSE);
- hdy_tab_bar_set_expand_tabs (tab_bar, FALSE);
+ adw_tab_bar_set_autohide (tab_bar, FALSE);
+ adw_tab_bar_set_expand_tabs (tab_bar, FALSE);
- button = gtk_button_new_from_icon_name ("list-add-symbolic", GTK_ICON_SIZE_MENU);
+ button = gtk_button_new_from_icon_name ("list-add-symbolic");
/* Translators: tooltip for the new tab button */
gtk_widget_set_tooltip_text (button, _("Open a new tab"));
gtk_actionable_set_action_name (GTK_ACTIONABLE (button), "win.new-tab");
gtk_style_context_add_class (gtk_widget_get_style_context (button), "flat");
- gtk_widget_show (button);
- hdy_tab_bar_set_start_action_widget (tab_bar, button);
+ adw_tab_bar_set_start_action_widget (tab_bar, button);
} else {
g_signal_connect_object (EPHY_SETTINGS_UI,
"changed::" EPHY_PREFS_UI_TABS_BAR_VISIBILITY_POLICY,
diff --git a/src/ephy-tab-view.h b/src/ephy-tab-view.h
index b95d1c85f..fd6c04484 100644
--- a/src/ephy-tab-view.h
+++ b/src/ephy-tab-view.h
@@ -22,13 +22,13 @@
#include "ephy-embed.h"
-#include <handy.h>
+#include <adwaita.h>
G_BEGIN_DECLS
#define EPHY_TYPE_TAB_VIEW (ephy_tab_view_get_type())
-G_DECLARE_FINAL_TYPE (EphyTabView, ephy_tab_view, EPHY, TAB_VIEW, GtkBin)
+G_DECLARE_FINAL_TYPE (EphyTabView, ephy_tab_view, EPHY, TAB_VIEW, AdwBin)
typedef void (*EphyTabViewCallback) (GtkWidget *widget,
gpointer data);
@@ -66,7 +66,7 @@ gboolean ephy_tab_view_select_page (EphyTabView *self,
GtkWidget *ephy_tab_view_get_selected_page (EphyTabView *self);
-HdyTabView *ephy_tab_view_get_tab_view (EphyTabView *self);
+AdwTabView *ephy_tab_view_get_tab_view (EphyTabView *self);
GList *ephy_tab_view_get_pages (EphyTabView *self);
@@ -82,6 +82,6 @@ gint ephy_tab_view_add_tab (EphyTabView *self,
GtkWidget *ephy_tab_view_get_current_page (EphyTabView *self);
void ephy_tab_view_set_tab_bar (EphyTabView *self,
- HdyTabBar *tab_bar);
+ AdwTabBar *tab_bar);
G_END_DECLS
diff --git a/src/ephy-web-extension-dialog.c b/src/ephy-web-extension-dialog.c
index b8255f2e5..d660dd5d4 100644
--- a/src/ephy-web-extension-dialog.c
+++ b/src/ephy-web-extension-dialog.c
@@ -26,10 +26,11 @@
#include "ephy-web-extension-dialog.h"
#include "ephy-web-extension-manager.h"
+#include <adwaita.h>
#include <gtk/gtk.h>
struct _EphyWebExtensionDialog {
- HdyWindow parent_instance;
+ GtkWindow parent_instance;
EphyWebExtensionManager *web_extension_manager;
@@ -37,20 +38,7 @@ struct _EphyWebExtensionDialog {
GtkStack *stack;
};
-G_DEFINE_TYPE (EphyWebExtensionDialog, ephy_web_extension_dialog, HDY_TYPE_WINDOW)
-
-static void
-clear_listbox (GtkWidget *listbox)
-{
- GList *children, *iter;
-
- children = gtk_container_get_children (GTK_CONTAINER (listbox));
-
- for (iter = children; iter && iter->data; iter = g_list_next (iter))
- gtk_widget_destroy (GTK_WIDGET (iter->data));
-
- g_list_free (children);
-}
+G_DEFINE_TYPE (EphyWebExtensionDialog, ephy_web_extension_dialog, GTK_TYPE_WINDOW)
static void
on_remove_confirmed (GtkDialog *dialog,
@@ -59,9 +47,9 @@ on_remove_confirmed (GtkDialog *dialog,
{
GtkListBoxRow *row = user_data;
EphyWebExtensionDialog *self =
- EPHY_WEB_EXTENSION_DIALOG (gtk_widget_get_toplevel (GTK_WIDGET (row)));
+ EPHY_WEB_EXTENSION_DIALOG (gtk_widget_get_root (GTK_WIDGET (row)));
- gtk_widget_destroy (GTK_WIDGET (dialog));
+ gtk_window_destroy (GTK_WINDOW (dialog));
if (response == GTK_RESPONSE_OK) {
EphyWebExtension *web_extension = g_object_get_data (G_OBJECT (row), "web_extension");
@@ -115,20 +103,15 @@ toggle_state_set_cb (GtkSwitch *widget,
}
static void
-homepage_activated_cb (HdyActionRow *row,
+homepage_activated_cb (AdwActionRow *row,
gpointer user_data)
{
EphyWebExtensionDialog *self = EPHY_WEB_EXTENSION_DIALOG (user_data);
EphyWebExtension *web_extension = g_object_get_data (G_OBJECT (row), "web_extension");
- g_autoptr (GError) error = NULL;
-
- gtk_show_uri_on_window (GTK_WINDOW (self),
- ephy_web_extension_get_homepage_url (web_extension),
- GDK_CURRENT_TIME,
- &error);
- if (error)
- g_warning ("Couldn't to open homepage: %s", error->message);
+ gtk_show_uri (GTK_WINDOW (self),
+ ephy_web_extension_get_homepage_url (web_extension),
+ GDK_CURRENT_TIME);
}
static GtkWidget *
@@ -146,7 +129,7 @@ create_row (EphyWebExtensionDialog *self,
g_autoptr (GdkPixbuf) icon = NULL;
EphyWebExtensionManager *manager = ephy_shell_get_web_extension_manager (ephy_shell_get_default ());
- row = hdy_expander_row_new ();
+ row = adw_expander_row_new ();
g_object_set_data (G_OBJECT (row), "web_extension", web_extension);
/* Tooltip */
@@ -154,66 +137,64 @@ create_row (EphyWebExtensionDialog *self,
/* Icon */
icon = ephy_web_extension_get_icon (web_extension, 32);
- image = icon ? gtk_image_new_from_pixbuf (icon) : gtk_image_new_from_icon_name
("application-x-addon-symbolic", GTK_ICON_SIZE_DND);
+ image = icon ? gtk_image_new_from_pixbuf (icon) : gtk_image_new_from_icon_name
("application-x-addon-symbolic");
gtk_image_set_pixel_size (GTK_IMAGE (image), 32);
- hdy_expander_row_add_prefix (HDY_EXPANDER_ROW (row), image);
+ adw_expander_row_add_prefix (ADW_EXPANDER_ROW (row), image);
/* Titles */
- hdy_preferences_row_set_title (HDY_PREFERENCES_ROW (row), ephy_web_extension_get_name (web_extension));
- hdy_expander_row_set_subtitle (HDY_EXPANDER_ROW (row), ephy_web_extension_get_description (web_extension));
- hdy_expander_row_set_show_enable_switch (HDY_EXPANDER_ROW (row), FALSE);
+ adw_preferences_row_set_title (ADW_PREFERENCES_ROW (row), ephy_web_extension_get_name (web_extension));
+ adw_expander_row_set_subtitle (ADW_EXPANDER_ROW (row), ephy_web_extension_get_description (web_extension));
+ adw_expander_row_set_show_enable_switch (ADW_EXPANDER_ROW (row), FALSE);
toggle = gtk_switch_new ();
gtk_switch_set_active (GTK_SWITCH (toggle), ephy_web_extension_manager_is_active (manager, web_extension));
g_signal_connect (toggle, "state-set", G_CALLBACK (toggle_state_set_cb), web_extension);
gtk_widget_set_valign (toggle, GTK_ALIGN_CENTER);
- hdy_expander_row_add_action (HDY_EXPANDER_ROW (row), toggle);
+ adw_expander_row_add_action (ADW_EXPANDER_ROW (row), toggle);
/* Author */
if (ephy_web_extension_get_author (web_extension)) {
- sub_row = hdy_action_row_new ();
- gtk_container_add (GTK_CONTAINER (row), sub_row);
- hdy_preferences_row_set_title (HDY_PREFERENCES_ROW (sub_row), _("Author"));
+ sub_row = adw_action_row_new ();
+ adw_expander_row_add_row (ADW_EXPANDER_ROW (row), sub_row);
+ adw_preferences_row_set_title (ADW_PREFERENCES_ROW (sub_row), _("Author"));
author = gtk_label_new (ephy_web_extension_get_author (web_extension));
- gtk_label_set_line_wrap (GTK_LABEL (author), TRUE);
- gtk_container_add (GTK_CONTAINER (sub_row), author);
+ gtk_label_set_wrap (GTK_LABEL (author), TRUE);
+ adw_action_row_add_suffix (ADW_ACTION_ROW (sub_row), author);
}
/* Version */
- sub_row = hdy_action_row_new ();
- gtk_container_add (GTK_CONTAINER (row), sub_row);
- hdy_preferences_row_set_title (HDY_PREFERENCES_ROW (sub_row), _("Version"));
+ sub_row = adw_action_row_new ();
+ adw_expander_row_add_row (ADW_EXPANDER_ROW (row), sub_row);
+ adw_preferences_row_set_title (ADW_PREFERENCES_ROW (sub_row), _("Version"));
version = gtk_label_new (ephy_web_extension_get_version (web_extension));
- dzl_gtk_widget_add_style_class (version, "dim-label");
- gtk_container_add (GTK_CONTAINER (sub_row), version);
+ gtk_widget_add_css_class (version, "dim-label");
+ adw_action_row_add_suffix (ADW_ACTION_ROW (sub_row), version);
/* Homepage url */
if (ephy_web_extension_get_homepage_url (web_extension)) {
- sub_row = hdy_action_row_new ();
- gtk_container_add (GTK_CONTAINER (row), sub_row);
- hdy_preferences_row_set_title (HDY_PREFERENCES_ROW (sub_row), _("Homepage"));
+ sub_row = adw_action_row_new ();
+ adw_expander_row_add_row (ADW_EXPANDER_ROW (row), sub_row);
+ adw_preferences_row_set_title (ADW_PREFERENCES_ROW (sub_row), _("Homepage"));
gtk_list_box_row_set_activatable (GTK_LIST_BOX_ROW (sub_row), TRUE);
g_signal_connect (sub_row, "activated", G_CALLBACK (homepage_activated_cb), self);
- homepage_icon = gtk_image_new_from_icon_name ("ephy-open-link-symbolic", GTK_ICON_SIZE_BUTTON);
- dzl_gtk_widget_add_style_class (homepage_icon, "dim-label");
- gtk_container_add (GTK_CONTAINER (sub_row), homepage_icon);
+ homepage_icon = gtk_image_new_from_icon_name ("ephy-open-link-symbolic");
+ gtk_widget_add_css_class (homepage_icon, "dim-label");
+ adw_action_row_add_suffix (ADW_ACTION_ROW (sub_row), homepage_icon);
g_object_set_data (G_OBJECT (sub_row), "web_extension", web_extension);
}
/* Remove button */
- sub_row = hdy_action_row_new ();
- gtk_container_add (GTK_CONTAINER (row), sub_row);
+ sub_row = adw_action_row_new ();
+ adw_expander_row_add_row (ADW_EXPANDER_ROW (row), sub_row);
button = gtk_button_new_with_mnemonic (_("_Remove"));
gtk_widget_set_valign (GTK_WIDGET (button), GTK_ALIGN_CENTER);
- dzl_gtk_widget_add_style_class (button, "destructive-action");
+ gtk_widget_add_css_class (button, "destructive-action");
g_signal_connect (button, "clicked", G_CALLBACK (on_remove_button_clicked), self);
gtk_widget_set_tooltip_text (button, _("Remove selected WebExtension"));
- gtk_container_add (GTK_CONTAINER (sub_row), button);
+ adw_action_row_add_suffix (ADW_ACTION_ROW (sub_row), button);
g_object_set_data (G_OBJECT (button), "row", row);
- gtk_widget_show_all (GTK_WIDGET (row));
-
return GTK_WIDGET (row);
}
@@ -222,8 +203,10 @@ ephy_web_extension_dialog_refresh_listbox (EphyWebExtensionDialog *self)
{
GList *extensions = ephy_web_extension_manager_get_web_extensions (self->web_extension_manager);
gboolean empty = TRUE;
+ GtkListBoxRow *row;
- clear_listbox (self->listbox);
+ while ((row = gtk_list_box_get_row_at_index (GTK_LIST_BOX (self->listbox), 0)))
+ gtk_list_box_remove (GTK_LIST_BOX (self->listbox), GTK_WIDGET (row));
for (GList *tmp = extensions; tmp && tmp->data; tmp = tmp->next) {
EphyWebExtension *web_extension = tmp->data;
diff --git a/src/ephy-web-extension-dialog.h b/src/ephy-web-extension-dialog.h
index b8418f0f8..8f3f4b3c6 100644
--- a/src/ephy-web-extension-dialog.h
+++ b/src/ephy-web-extension-dialog.h
@@ -28,7 +28,7 @@ G_BEGIN_DECLS
#define EPHY_TYPE_WEB_EXTENSION_DIALOG (ephy_web_extension_dialog_get_type ())
-G_DECLARE_FINAL_TYPE (EphyWebExtensionDialog, ephy_web_extension_dialog, EPHY, WEB_EXTENSION_DIALOG,
HdyWindow)
+G_DECLARE_FINAL_TYPE (EphyWebExtensionDialog, ephy_web_extension_dialog, EPHY, WEB_EXTENSION_DIALOG,
GtkWindow)
GtkWidget *ephy_web_extension_dialog_new (void);
diff --git a/src/ephy-window.c b/src/ephy-window.c
index 2866b76e5..3377fa03c 100644
--- a/src/ephy-window.c
+++ b/src/ephy-window.c
@@ -44,7 +44,7 @@
#include "ephy-gui.h"
#include "ephy-header-bar.h"
#include "ephy-link.h"
-#include "ephy-location-entry.h"
+//#include "ephy-location-entry.h"
#include "ephy-mouse-gesture-controller.h"
#include "ephy-pages-popover.h"
#include "ephy-pages-view.h"
@@ -147,18 +147,17 @@ const struct {
#define SETTINGS_CONNECTION_DATA_KEY "EphyWindowSettings"
struct _EphyWindow {
- HdyApplicationWindow parent_instance;
+ AdwApplicationWindow parent_instance;
- GtkWidget *main_deck;
+ GtkWidget *main_leaflet;
EphyFullscreenBox *fullscreen_box;
- GtkWidget *window_handle;
GtkBox *titlebar_box;
GtkWidget *header_bar;
EphyPagesView *pages_view;
EphyBookmarksManager *bookmarks_manager;
GHashTable *action_labels;
EphyTabView *tab_view;
- HdyTabBar *tab_bar;
+ AdwTabBar *tab_bar;
GtkRevealer *tab_bar_revealer;
GtkRevealer *pages_menu_revealer;
EphyPagesPopover *pages_popover;
@@ -185,7 +184,6 @@ struct _EphyWindow {
gint current_y;
guint has_default_size : 1;
- guint has_default_position : 1;
guint is_maximized : 1;
guint is_fullscreen : 1;
guint closing : 1;
@@ -195,8 +193,6 @@ struct _EphyWindow {
guint checking_modified_forms : 1;
guint confirmed_close_with_multiple_tabs : 1;
guint present_on_insert : 1;
-
- guint32 present_on_insert_user_time;
};
enum {
@@ -204,7 +200,6 @@ enum {
PROP_ACTIVE_CHILD,
PROP_CHROME,
PROP_SINGLE_TAB_MODE,
- PROP_FULLSCREEN
};
/* Make sure not to overlap with those in ephy-lockdown.c */
@@ -352,7 +347,7 @@ ephy_window_open_link (EphyLink *link,
EPHY_LINK_NEW_TAB |
EPHY_LINK_NEW_WINDOW)) {
EphyNewTabFlags ntflags = 0;
- EphyWindow *target_window = EPHY_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (embed)));
+ EphyWindow *target_window = EPHY_WINDOW (gtk_widget_get_root (GTK_WIDGET (embed)));
if (flags & EPHY_LINK_JUMP_TO) {
ntflags |= EPHY_NEW_TAB_JUMP;
@@ -398,7 +393,7 @@ ephy_window_link_iface_init (EphyLinkInterface *iface)
iface->open_link = ephy_window_open_link;
}
-G_DEFINE_TYPE_WITH_CODE (EphyWindow, ephy_window, HDY_TYPE_APPLICATION_WINDOW,
+G_DEFINE_TYPE_WITH_CODE (EphyWindow, ephy_window, ADW_TYPE_APPLICATION_WINDOW,
G_IMPLEMENT_INTERFACE (EPHY_TYPE_LINK,
ephy_window_link_iface_init)
G_IMPLEMENT_INTERFACE (EPHY_TYPE_EMBED_CONTAINER,
@@ -447,6 +442,7 @@ sync_tab_load_status (EphyWebView *view,
loading = ephy_web_view_is_loading (view);
+#if 0
action_group = gtk_widget_get_action_group (GTK_WIDGET (window), "win");
/* disable print while loading, see bug #116344 */
@@ -464,6 +460,7 @@ sync_tab_load_status (EphyWebView *view,
action = g_action_map_lookup_action (G_ACTION_MAP (action_group),
"combined-stop-reload");
g_action_change_state (action, g_variant_new_boolean (loading));
+#endif
}
static void
@@ -492,21 +489,21 @@ update_adaptive_mode (EphyWindow *window)
EphyAdaptiveMode adaptive_mode;
gint width, height;
GdkDisplay *display;
- GdkWindow *surface;
+ GdkSurface *surface;
GdkMonitor *monitor = NULL;
GdkRectangle geometry = {};
- gtk_window_get_size (GTK_WINDOW (window),
- &width,
- &height);
+ gtk_window_get_default_size (GTK_WINDOW (window),
+ &width,
+ &height);
/* Get the monitor to guess whether we are on a mobile or not. If not found,
* fallback to the window size.
*/
display = gtk_widget_get_display (GTK_WIDGET (window));
- surface = gtk_widget_get_window (GTK_WIDGET (window));
+ surface = gtk_native_get_surface (GTK_NATIVE (window));
if (display != NULL && surface != NULL)
- monitor = gdk_display_get_monitor_at_window (display, surface);
+ monitor = gdk_display_get_monitor_at_surface (display, surface);
if (monitor != NULL)
gdk_monitor_get_geometry (monitor, &geometry);
else
@@ -538,32 +535,47 @@ update_adaptive_mode (EphyWindow *window)
}
static void
-ephy_window_fullscreen (EphyWindow *window)
+notify_fullscreen_cb (EphyWindow *window)
{
EphyEmbed *embed;
+ gboolean fullscreen = gtk_window_is_fullscreen (GTK_WINDOW (window));;
+// GAction *action;
+// GActionGroup *action_group;
- window->is_fullscreen = TRUE;
- g_object_notify (G_OBJECT (window), "fullscreen");
+ window->is_fullscreen = fullscreen;
- /* sync status */
embed = window->active_embed;
- sync_tab_load_status (ephy_embed_get_web_view (embed), WEBKIT_LOAD_STARTED, window);
- sync_tab_security (ephy_embed_get_web_view (embed), NULL, window);
+
+ if (embed && fullscreen) {
+ /* sync status */
+ sync_tab_load_status (ephy_embed_get_web_view (embed), WEBKIT_LOAD_STARTED, window);
+ sync_tab_security (ephy_embed_get_web_view (embed), NULL, window);
+ }
update_adaptive_mode (window);
- ephy_embed_entering_fullscreen (embed);
-}
-static void
-ephy_window_unfullscreen (EphyWindow *window)
-{
- window->is_fullscreen = FALSE;
- g_object_notify (G_OBJECT (window), "fullscreen");
+ if (embed) {
+ if (fullscreen)
+ ephy_embed_entering_fullscreen (embed);
+ else
+ ephy_embed_leaving_fullscreen (embed);
+ }
- update_adaptive_mode (window);
- ephy_embed_leaving_fullscreen (window->active_embed);
+ ephy_fullscreen_box_set_fullscreen (window->fullscreen_box,
+ fullscreen && window->show_fullscreen_header_bar);
+ gtk_widget_set_visible (GTK_WIDGET (window->titlebar_box),
+ !fullscreen || window->show_fullscreen_header_bar);
+
+ window->show_fullscreen_header_bar = FALSE;
+
+// action_group = gtk_widget_get_action_group (GTK_WIDGET (window), "win");
+// action = g_action_map_lookup_action (G_ACTION_MAP (action_group), "fullscreen");
+
+// g_simple_action_set_state (G_SIMPLE_ACTION (action),
+// g_variant_new_boolean (fullscreen));
}
+#if 0
static gboolean
ephy_window_should_view_receive_key_press_event (EphyWindow *window,
GdkEventKey *event)
@@ -681,9 +693,11 @@ ephy_window_delete_event (GtkWidget *widget,
return FALSE;
}
+#endif
#define MAX_SPELL_CHECK_GUESSES 4
+#if 0
static void
update_link_actions_sensitivity (EphyWindow *window,
gboolean link_has_web_scheme)
@@ -770,10 +784,12 @@ update_edit_actions_sensitivity (EphyWindow *window,
update_edit_action_sensitivity (window, "undo", can_undo, hide);
update_edit_action_sensitivity (window, "redo", can_redo, hide);
}
+#endif
static void
enable_edit_actions_sensitivity (EphyWindow *window)
{
+#if 0
GActionGroup *action_group;
GAction *action;
@@ -792,6 +808,7 @@ enable_edit_actions_sensitivity (EphyWindow *window)
g_simple_action_set_enabled (G_SIMPLE_ACTION (action), TRUE);
action = g_action_map_lookup_action (G_ACTION_MAP (action_group), "redo");
g_simple_action_set_enabled (G_SIMPLE_ACTION (action), TRUE);
+#endif
}
static void
@@ -817,16 +834,16 @@ change_combined_stop_reload_state (GSimpleAction *action,
static const GActionEntry window_entries [] = {
{ "page-menu", window_cmd_page_menu },
{ "new-tab", window_cmd_new_tab },
- { "open", window_cmd_open },
- { "save-as", window_cmd_save_as },
- { "save-as-application", window_cmd_save_as_application },
+// { "open", window_cmd_open },
+// { "save-as", window_cmd_save_as },
+// { "save-as-application", window_cmd_save_as_application },
{ "open-application-manager", window_cmd_open_application_manager },
- { "undo", window_cmd_undo },
- { "redo", window_cmd_redo },
- { "cut", window_cmd_cut },
- { "copy", window_cmd_copy },
- { "paste", window_cmd_paste },
- { "paste-as-plain-text", window_cmd_paste_as_plain_text },
+// { "undo", window_cmd_undo },
+// { "redo", window_cmd_redo },
+// { "cut", window_cmd_cut },
+// { "copy", window_cmd_copy },
+// { "paste", window_cmd_paste },
+// { "paste-as-plain-text", window_cmd_paste_as_plain_text },
{ "delete", window_cmd_delete },
{ "zoom-in", window_cmd_zoom_in },
{ "zoom-out", window_cmd_zoom_out },
@@ -835,11 +852,11 @@ static const GActionEntry window_entries [] = {
{ "find", window_cmd_find },
{ "find-prev", window_cmd_find_prev },
{ "find-next", window_cmd_find_next },
- { "open-bookmark", window_cmd_open_bookmark, "s" },
- { "bookmark-page", window_cmd_bookmark_page },
- { "bookmarks", window_cmd_bookmarks },
+// { "open-bookmark", window_cmd_open_bookmark, "s" },
+// { "bookmark-page", window_cmd_bookmark_page },
+// { "bookmarks", window_cmd_bookmarks },
{ "show-downloads", window_cmd_show_downloads },
- { "encoding", window_cmd_encoding },
+// { "encoding", window_cmd_encoding },
{ "page-source", window_cmd_page_source },
{ "toggle-inspector", window_cmd_toggle_inspector },
{ "toggle-reader-mode", window_cmd_toggle_reader_mode },
@@ -849,13 +866,13 @@ static const GActionEntry window_entries [] = {
{ "send-to", window_cmd_send_to },
{ "location", window_cmd_go_location },
- { "location-search", window_cmd_location_search },
+// { "location-search", window_cmd_location_search },
{ "home", window_cmd_go_home },
{ "content", window_cmd_go_content },
{ "tabs-view", window_cmd_go_tabs_view },
/* Toggle actions */
- { "browse-with-caret", NULL, NULL, "false", window_cmd_change_browse_with_caret_state },
+// { "browse-with-caret", NULL, NULL, "false", window_cmd_change_browse_with_caret_state },
{ "fullscreen", NULL, NULL, "false", window_cmd_change_fullscreen_state },
};
@@ -883,11 +900,11 @@ static const GActionEntry toolbar_entries [] = {
{ "reload", window_cmd_reload },
{ "reload-bypass-cache", window_cmd_reload_bypass_cache },
{ "always-stop", window_cmd_stop },
- { "combined-stop-reload", window_cmd_combined_stop_reload, NULL, "false",
change_combined_stop_reload_state }
+// { "combined-stop-reload", window_cmd_combined_stop_reload, NULL, "false",
change_combined_stop_reload_state }
};
static const GActionEntry popup_entries [] = {
- { "context-bookmark-page", window_cmd_bookmark_page },
+// { "context-bookmark-page", window_cmd_bookmark_page },
/* Links. */
{ "open-link-in-new-window", popup_cmd_link_in_new_window },
@@ -1007,6 +1024,7 @@ _ephy_window_set_default_actions_sensitive (EphyWindow *window,
guint flags,
gboolean set)
{
+#if 0
GActionGroup *action_group;
GAction *action;
int i;
@@ -1042,6 +1060,7 @@ _ephy_window_set_default_actions_sensitive (EphyWindow *window,
"combined-stop-reload");
ephy_action_change_sensitivity_flags (G_SIMPLE_ACTION (action),
flags, set);
+#endif
}
static void
@@ -1103,15 +1122,15 @@ sync_tab_zoom (WebKitWebView *web_view,
can_zoom_normal = TRUE;
}
- action_group = gtk_widget_get_action_group (GTK_WIDGET (window),
- "win");
+// action_group = gtk_widget_get_action_group (GTK_WIDGET (window),
+// "win");
- action = g_action_map_lookup_action (G_ACTION_MAP (action_group), "zoom-in");
- g_simple_action_set_enabled (G_SIMPLE_ACTION (action), can_zoom_in);
- action = g_action_map_lookup_action (G_ACTION_MAP (action_group), "zoom-out");
- g_simple_action_set_enabled (G_SIMPLE_ACTION (action), can_zoom_out);
- action = g_action_map_lookup_action (G_ACTION_MAP (action_group), "zoom-normal");
- g_simple_action_set_enabled (G_SIMPLE_ACTION (action), can_zoom_normal);
+// action = g_action_map_lookup_action (G_ACTION_MAP (action_group), "zoom-in");
+// g_simple_action_set_enabled (G_SIMPLE_ACTION (action), can_zoom_in);
+// action = g_action_map_lookup_action (G_ACTION_MAP (action_group), "zoom-out");
+// g_simple_action_set_enabled (G_SIMPLE_ACTION (action), can_zoom_out);
+// action = g_action_map_lookup_action (G_ACTION_MAP (action_group), "zoom-normal");
+// g_simple_action_set_enabled (G_SIMPLE_ACTION (action), can_zoom_normal);
}
static void
@@ -1135,6 +1154,7 @@ sync_tab_document_type (EphyWebView *view,
is_image = type == EPHY_WEB_VIEW_DOCUMENT_IMAGE;
disable = (type != EPHY_WEB_VIEW_DOCUMENT_HTML);
+#if 0
action_group = gtk_widget_get_action_group (GTK_WIDGET (window),
"win");
@@ -1148,6 +1168,7 @@ sync_tab_document_type (EphyWebView *view,
ephy_action_change_sensitivity_flags (G_SIMPLE_ACTION (action), SENS_FLAG_DOCUMENT, !can_find);
action = g_action_map_lookup_action (G_ACTION_MAP (action_group), "find-next");
ephy_action_change_sensitivity_flags (G_SIMPLE_ACTION (action), SENS_FLAG_DOCUMENT, !can_find);
+#endif
if (!can_find) {
ephy_find_toolbar_request_close (ephy_embed_get_find_toolbar (window->active_embed));
@@ -1158,6 +1179,7 @@ static void
_ephy_window_set_navigation_flags (EphyWindow *window,
EphyWebViewNavigationFlags flags)
{
+#if 0
GActionGroup *action_group;
GAction *action;
@@ -1167,6 +1189,7 @@ _ephy_window_set_navigation_flags (EphyWindow *window,
g_simple_action_set_enabled (G_SIMPLE_ACTION (action), flags & EPHY_WEB_VIEW_NAV_BACK);
action = g_action_map_lookup_action (G_ACTION_MAP (action_group), "navigation-forward");
g_simple_action_set_enabled (G_SIMPLE_ACTION (action), flags & EPHY_WEB_VIEW_NAV_FORWARD);
+#endif
}
static void
@@ -1198,18 +1221,18 @@ void
ephy_window_sync_bookmark_state (GtkWidget *widget,
EphyBookmarkIconState state)
{
- GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (widget));
- EphyWindow *window = EPHY_WINDOW (toplevel);
+ GtkRoot *root = gtk_widget_get_root (GTK_WIDGET (widget));
+ EphyWindow *window = EPHY_WINDOW (root);
EphyActionBarEnd *action_bar_end = ephy_action_bar_get_action_bar_end (EPHY_ACTION_BAR
(window->action_bar));
- GtkWidget *lentry;
+// GtkWidget *lentry;
if (action_bar_end)
ephy_action_bar_end_set_bookmark_icon_state (EPHY_ACTION_BAR_END (action_bar_end), state);
- lentry = GTK_WIDGET (ephy_header_bar_get_title_widget (EPHY_HEADER_BAR (window->header_bar)));
+// lentry = GTK_WIDGET (ephy_header_bar_get_title_widget (EPHY_HEADER_BAR (window->header_bar)));
- if (EPHY_IS_LOCATION_ENTRY (lentry))
- ephy_location_entry_set_bookmark_icon_state (EPHY_LOCATION_ENTRY (lentry), state);
+// if (EPHY_IS_LOCATION_ENTRY (lentry))
+// ephy_location_entry_set_bookmark_icon_state (EPHY_LOCATION_ENTRY (lentry), state);
}
static void
@@ -1228,8 +1251,8 @@ sync_tab_bookmarked_status (EphyWebView *view,
widget = GTK_WIDGET (ephy_header_bar_get_title_widget (EPHY_HEADER_BAR (window->header_bar)));
- if (!EPHY_IS_LOCATION_ENTRY (widget))
- return;
+// if (!EPHY_IS_LOCATION_ENTRY (widget))
+// return;
address = ephy_web_view_get_address (view);
mode = ephy_embed_shell_get_mode (shell);
@@ -1246,7 +1269,7 @@ sync_tab_bookmarked_status (EphyWebView *view,
}
ephy_action_bar_end_set_bookmark_icon_state (EPHY_ACTION_BAR_END (action_bar_end), state);
- ephy_location_entry_set_bookmark_icon_state (EPHY_LOCATION_ENTRY (widget), state);
+// ephy_location_entry_set_bookmark_icon_state (EPHY_LOCATION_ENTRY (widget), state);
}
static void
@@ -1494,6 +1517,7 @@ populate_context_menu (WebKitWebView *web_view,
WebKitHitTestResult *hit_test_result,
EphyWindow *window)
{
+#if 0
WebKitContextMenuItem *input_methods_item = NULL;
WebKitContextMenuItem *insert_emoji_item = NULL;
WebKitContextMenuItem *copy_image_item = NULL;
@@ -1810,6 +1834,7 @@ populate_context_menu (WebKitWebView *web_view,
webkit_context_menu_append (context_menu,
webkit_context_menu_item_new_from_stock_action
(WEBKIT_CONTEXT_MENU_ACTION_INSPECT_ELEMENT));
}
+#endif
return GDK_EVENT_PROPAGATE;
}
@@ -1887,6 +1912,7 @@ ephy_window_set_is_popup (EphyWindow *window,
g_object_notify (G_OBJECT (window), "is-popup");
}
+#if 0
static void
window_properties_geometry_changed (WebKitWindowProperties *properties,
GParamSpec *pspec,
@@ -1942,6 +1968,7 @@ ephy_window_configure_for_view (EphyWindow *window,
G_CALLBACK (window_properties_geometry_changed),
window);
}
+#endif
static gboolean
web_view_ready_cb (WebKitWebView *web_view,
@@ -1950,13 +1977,13 @@ web_view_ready_cb (WebKitWebView *web_view,
EphyWindow *window, *parent_view_window;
gboolean using_new_window;
- window = EPHY_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (web_view)));
- parent_view_window = EPHY_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (parent_web_view)));
+ window = EPHY_WINDOW (gtk_widget_get_root (GTK_WIDGET (web_view)));
+ parent_view_window = EPHY_WINDOW (gtk_widget_get_root (GTK_WIDGET (parent_web_view)));
using_new_window = window != parent_view_window;
if (using_new_window) {
- ephy_window_configure_for_view (window, web_view);
+// ephy_window_configure_for_view (window, web_view);
g_signal_emit_by_name (parent_web_view, "new-window", web_view);
}
@@ -2101,12 +2128,7 @@ decide_navigation_policy (WebKitWebView *web_view,
uri = webkit_uri_request_get_uri (request);
if (!ephy_embed_utils_address_has_web_scheme (uri) && webkit_navigation_action_is_user_gesture
(navigation_action)) {
- g_autoptr (GError) error = NULL;
- gtk_show_uri_on_window (GTK_WINDOW (window), uri, GDK_CURRENT_TIME, &error);
- if (error) {
- LOG ("failed to handle non-web scheme: %s", error->message);
- return accept_navigation_policy_decision (window, decision, uri);
- }
+ gtk_show_uri (GTK_WINDOW (window), uri, GDK_CURRENT_TIME);
webkit_policy_decision_ignore (decision);
return TRUE;
@@ -2130,11 +2152,11 @@ decide_navigation_policy (WebKitWebView *web_view,
* executes in web app mode.
*/
ephy_file_open_uri_in_default_browser (uri, GDK_CURRENT_TIME,
- gtk_window_get_screen (GTK_WINDOW (window)),
+ gdk_surface_get_display (gtk_native_get_surface (GTK_NATIVE
(window))),
EPHY_FILE_HELPERS_I_UNDERSTAND_I_MUST_NOT_USE_THIS_FUNCTION_UNDER_FLATPAK);
webkit_policy_decision_ignore (decision);
- gtk_widget_destroy (GTK_WIDGET (window));
+ gtk_window_destroy (GTK_WINDOW (window));
return TRUE;
}
@@ -2149,7 +2171,7 @@ decide_navigation_policy (WebKitWebView *web_view,
* executes in web app mode.
*/
ephy_file_open_uri_in_default_browser (uri, GDK_CURRENT_TIME,
- gtk_window_get_screen (GTK_WINDOW (window)),
+ gdk_surface_get_display (gtk_native_get_surface (GTK_NATIVE
(window))),
EPHY_FILE_HELPERS_I_UNDERSTAND_I_MUST_NOT_USE_THIS_FUNCTION_UNDER_FLATPAK);
webkit_policy_decision_ignore (decision);
@@ -2190,7 +2212,7 @@ decide_navigation_policy (WebKitWebView *web_view,
inherit_session = TRUE;
}
/* Alt+click means download URI */
- else if (button == GDK_BUTTON_PRIMARY && state == GDK_MOD1_MASK) {
+ else if (button == GDK_BUTTON_PRIMARY && state == GDK_ALT_MASK) {
if (save_target_uri (window, web_view)) {
webkit_policy_decision_ignore (decision);
return TRUE;
@@ -2375,7 +2397,7 @@ progress_update (WebKitWebView *web_view,
loading = FALSE;
title_widget = ephy_header_bar_get_title_widget (EPHY_HEADER_BAR (window->header_bar));
- ephy_location_entry_set_progress (EPHY_LOCATION_ENTRY (title_widget), progress, loading);
+// ephy_location_entry_set_progress (EPHY_LOCATION_ENTRY (title_widget), progress, loading);
}
@@ -2397,8 +2419,8 @@ ephy_window_connect_active_embed (EphyWindow *window)
title_widget = ephy_header_bar_get_title_widget (EPHY_HEADER_BAR (window->header_bar));
- if (EPHY_IS_LOCATION_ENTRY (title_widget))
- ephy_location_entry_set_reader_mode_state (EPHY_LOCATION_ENTRY (title_widget),
ephy_web_view_get_reader_mode_state (view));
+// if (EPHY_IS_LOCATION_ENTRY (title_widget))
+// ephy_location_entry_set_reader_mode_state (EPHY_LOCATION_ENTRY (title_widget),
ephy_web_view_get_reader_mode_state (view));
sync_tab_security (view, NULL, window);
sync_tab_document_type (view, NULL, window);
@@ -2413,7 +2435,7 @@ ephy_window_connect_active_embed (EphyWindow *window)
sync_tab_zoom (web_view, NULL, window);
sync_tab_page_action (view, NULL, window);
- if (EPHY_IS_LOCATION_ENTRY (title_widget)) {
+/* if (EPHY_IS_LOCATION_ENTRY (title_widget)) {
gdouble progress = webkit_web_view_get_estimated_load_progress (web_view);
gboolean loading = ephy_web_view_is_loading (EPHY_WEB_VIEW (web_view));
@@ -2421,7 +2443,7 @@ ephy_window_connect_active_embed (EphyWindow *window)
g_signal_connect_object (web_view, "notify::estimated-load-progress",
G_CALLBACK (progress_update),
window, 0);
- }
+ }*/
g_signal_connect_object (web_view, "notify::zoom-level",
G_CALLBACK (sync_tab_zoom),
@@ -2458,9 +2480,9 @@ ephy_window_connect_active_embed (EphyWindow *window)
g_signal_connect_object (view, "notify::is-blank",
G_CALLBACK (sync_tab_is_blank),
window, 0);
- g_signal_connect_object (view, "context-menu",
- G_CALLBACK (populate_context_menu),
- window, 0);
+// g_signal_connect_object (view, "context-menu",
+// G_CALLBACK (populate_context_menu),
+// window, 0);
g_signal_connect_object (view, "mouse-target-changed",
G_CALLBACK (ephy_window_mouse_target_changed_cb),
window, 0);
@@ -2468,7 +2490,7 @@ ephy_window_connect_active_embed (EphyWindow *window)
G_CALLBACK (web_process_terminated_cb),
window, 0);
- ephy_mouse_gesture_controller_set_web_view (window->mouse_gesture_controller, web_view);
+// ephy_mouse_gesture_controller_set_web_view (window->mouse_gesture_controller, web_view);
g_object_notify (G_OBJECT (window), "active-child");
}
@@ -2488,7 +2510,7 @@ ephy_window_disconnect_active_embed (EphyWindow *window)
ephy_embed_detach_notification_container (window->active_embed);
- ephy_mouse_gesture_controller_unset_web_view (window->mouse_gesture_controller);
+// ephy_mouse_gesture_controller_unset_web_view (window->mouse_gesture_controller);
g_signal_handlers_disconnect_by_func (web_view,
G_CALLBACK (progress_update),
@@ -2523,9 +2545,9 @@ ephy_window_disconnect_active_embed (EphyWindow *window)
g_signal_handlers_disconnect_by_func (view,
G_CALLBACK (sync_tab_address),
window);
- g_signal_handlers_disconnect_by_func (view,
- G_CALLBACK (populate_context_menu),
- window);
+// g_signal_handlers_disconnect_by_func (view,
+// G_CALLBACK (populate_context_menu),
+// window);
g_signal_handlers_disconnect_by_func (view,
G_CALLBACK (ephy_window_mouse_target_changed_cb),
window);
@@ -2541,7 +2563,7 @@ ephy_window_set_active_tab (EphyWindow *window,
EphyEmbed *old_embed;
g_assert (EPHY_IS_WINDOW (window));
- g_assert (gtk_widget_get_toplevel (GTK_WIDGET (new_embed)) == GTK_WIDGET (window));
+ g_assert (gtk_widget_get_root (GTK_WIDGET (new_embed)) == GTK_ROOT (window));
old_embed = window->active_embed;
@@ -2558,10 +2580,11 @@ ephy_window_set_active_tab (EphyWindow *window,
}
static void
-tab_view_setup_menu_cb (HdyTabView *tab_view,
- HdyTabPage *page,
+tab_view_setup_menu_cb (AdwTabView *tab_view,
+ AdwTabPage *page,
EphyWindow *window)
{
+#if 0
EphyWebView *view;
GActionGroup *action_group;
GAction *action;
@@ -2573,12 +2596,12 @@ tab_view_setup_menu_cb (HdyTabView *tab_view,
gboolean muted;
if (page) {
- n_pages = hdy_tab_view_get_n_pages (tab_view);
- n_pinned_pages = hdy_tab_view_get_n_pinned_pages (tab_view);
- position = hdy_tab_view_get_page_position (tab_view, page);
- pinned = hdy_tab_page_get_pinned (page);
+ n_pages = adw_tab_view_get_n_pages (tab_view);
+ n_pinned_pages = adw_tab_view_get_n_pinned_pages (tab_view);
+ position = adw_tab_view_get_page_position (tab_view, page);
+ pinned = adw_tab_page_get_pinned (page);
- view = ephy_embed_get_web_view (EPHY_EMBED (hdy_tab_page_get_child (page)));
+ view = ephy_embed_get_web_view (EPHY_EMBED (adw_tab_page_get_child (page)));
audio_playing = webkit_web_view_is_playing_audio (WEBKIT_WEB_VIEW (view));
muted = webkit_web_view_get_is_muted (WEBKIT_WEB_VIEW (view));
}
@@ -2620,15 +2643,13 @@ tab_view_setup_menu_cb (HdyTabView *tab_view,
action = g_action_map_lookup_action (G_ACTION_MAP (action_group),
"close");
g_simple_action_set_enabled (G_SIMPLE_ACTION (action), !page || !pinned);
+#endif
}
static gboolean
present_on_idle_cb (GtkWindow *window)
{
- EphyWindow *ephy_window = EPHY_WINDOW (window);
-
- gtk_window_present_with_time (window, ephy_window->present_on_insert_user_time);
- ephy_window->present_on_insert_user_time = 0;
+ gtk_window_present (window);
return FALSE;
}
@@ -2637,7 +2658,7 @@ static gboolean
delayed_remove_child (gpointer data)
{
GtkWidget *widget = GTK_WIDGET (data);
- EphyEmbedContainer *container = EPHY_EMBED_CONTAINER (gtk_widget_get_toplevel (widget));
+ EphyEmbedContainer *container = EPHY_EMBED_CONTAINER (gtk_widget_get_root (widget));
ephy_embed_container_remove_child (container, EPHY_EMBED (widget));
@@ -2663,6 +2684,7 @@ static void
update_reader_mode (EphyWindow *window,
EphyWebView *view)
{
+/*
EphyEmbed *embed = ephy_embed_container_get_active_child (EPHY_EMBED_CONTAINER (window));
EphyWebView *active_view = ephy_embed_get_web_view (embed);
gboolean available = ephy_web_view_is_reader_mode_available (view);
@@ -2679,7 +2701,7 @@ update_reader_mode (EphyWindow *window,
ephy_location_entry_set_reader_mode_visible (lentry, available);
if (available)
- ephy_location_entry_set_reader_mode_state (lentry, ephy_web_view_get_reader_mode_state (view));
+ ephy_location_entry_set_reader_mode_state (lentry, ephy_web_view_get_reader_mode_state (view));*/
}
static void
@@ -2691,12 +2713,12 @@ reader_mode_cb (EphyWebView *view,
}
static void
-tab_view_page_attached_cb (HdyTabView *tab_view,
- HdyTabPage *page,
+tab_view_page_attached_cb (AdwTabView *tab_view,
+ AdwTabPage *page,
gint position,
EphyWindow *window)
{
- GtkWidget *content = hdy_tab_page_get_child (page);
+ GtkWidget *content = adw_tab_page_get_child (page);
EphyEmbed *embed;
g_assert (EPHY_IS_EMBED (content));
@@ -2718,12 +2740,12 @@ tab_view_page_attached_cb (HdyTabView *tab_view,
}
static void
-tab_view_page_detached_cb (HdyTabView *tab_view,
- HdyTabPage *page,
+tab_view_page_detached_cb (AdwTabView *tab_view,
+ AdwTabPage *page,
gint position,
EphyWindow *window)
{
- GtkWidget *content = hdy_tab_page_get_child (page);
+ GtkWidget *content = adw_tab_page_get_child (page);
LOG ("page-detached tab view %p embed %p position %d\n", tab_view, content, position);
@@ -2786,19 +2808,19 @@ ephy_window_close_tab (EphyWindow *window,
* tab, even if it wasn't at the start of this function.
*/
if (!window->closing && ephy_tab_view_get_n_pages (window->tab_view) == 0)
- gtk_widget_destroy (GTK_WIDGET (window));
+ gtk_window_destroy (GTK_WINDOW (window));
}
typedef struct {
EphyWindow *window;
EphyEmbed *embed;
- HdyTabPage *page;
+ AdwTabPage *page;
} TabHasModifiedFormsData;
static TabHasModifiedFormsData *
tab_has_modified_forms_data_new (EphyWindow *window,
EphyEmbed *embed,
- HdyTabPage *page)
+ AdwTabPage *page)
{
TabHasModifiedFormsData *data = g_new (TabHasModifiedFormsData, 1);
data->window = window;
@@ -2823,9 +2845,9 @@ tab_has_modified_forms_dialog_cb (GtkDialog *dialog,
GtkResponseType response,
TabHasModifiedFormsData *data)
{
- HdyTabView *tab_view = ephy_tab_view_get_tab_view (data->window->tab_view);
+ AdwTabView *tab_view = ephy_tab_view_get_tab_view (data->window->tab_view);
- gtk_widget_destroy (GTK_WIDGET (dialog));
+ gtk_window_destroy (GTK_WINDOW (dialog));
if (response == GTK_RESPONSE_ACCEPT) {
/* It's safe to close the tab immediately because we are only checking a
@@ -2833,10 +2855,10 @@ tab_has_modified_forms_dialog_cb (GtkDialog *dialog,
* codepath for checking modified forms when closing the whole window,
* see ephy_window_check_modified_forms().
*/
- hdy_tab_view_close_page_finish (tab_view, data->page, TRUE);
+ adw_tab_view_close_page_finish (tab_view, data->page, TRUE);
ephy_window_close_tab (data->window, data->embed);
} else
- hdy_tab_view_close_page_finish (tab_view, data->page, FALSE);
+ adw_tab_view_close_page_finish (tab_view, data->page, FALSE);
tab_has_modified_forms_data_free (data);
}
@@ -2853,10 +2875,10 @@ tab_has_modified_forms_cb (EphyWebView *view,
if (data->window != NULL &&
data->embed != NULL &&
data->page != NULL) {
- HdyTabView *tab_view = ephy_tab_view_get_tab_view (data->window->tab_view);
+ AdwTabView *tab_view = ephy_tab_view_get_tab_view (data->window->tab_view);
if (!has_modified_forms) {
- hdy_tab_view_close_page_finish (tab_view, data->page, TRUE);
+ adw_tab_view_close_page_finish (tab_view, data->page, TRUE);
ephy_window_close_tab (data->window, data->embed);
} else {
GtkWidget *dialog;
@@ -2900,19 +2922,19 @@ run_downloads_in_background (EphyWindow *window,
}
static gboolean
-tab_view_close_page_cb (HdyTabView *tab_view,
- HdyTabPage *page,
+tab_view_close_page_cb (AdwTabView *tab_view,
+ AdwTabPage *page,
EphyWindow *window)
{
- EphyEmbed *embed = EPHY_EMBED (hdy_tab_page_get_child (page));
+ EphyEmbed *embed = EPHY_EMBED (adw_tab_page_get_child (page));
- if (hdy_tab_page_get_pinned (page))
+ if (adw_tab_page_get_pinned (page))
return GDK_EVENT_PROPAGATE;
if (ephy_tab_view_get_n_pages (window->tab_view) == 1) {
if (g_settings_get_boolean (EPHY_SETTINGS_LOCKDOWN,
EPHY_PREFS_LOCKDOWN_QUIT)) {
- hdy_tab_view_close_page_finish (tab_view, page, FALSE);
+ adw_tab_view_close_page_finish (tab_view, page, FALSE);
return GDK_EVENT_STOP;
}
@@ -2928,7 +2950,7 @@ tab_view_close_page_cb (HdyTabView *tab_view,
if (ephy_downloads_manager_has_active_downloads (manager)) {
GList *list = ephy_downloads_manager_get_downloads (manager);
run_downloads_in_background (window, g_list_length (list));
- hdy_tab_view_close_page_finish (tab_view, page, FALSE);
+ adw_tab_view_close_page_finish (tab_view, page, FALSE);
return GDK_EVENT_STOP;
}
}
@@ -2957,8 +2979,8 @@ tab_view_close_page_cb (HdyTabView *tab_view,
return GDK_EVENT_PROPAGATE;
}
-static HdyTabView *
-tab_view_create_window_cb (HdyTabView *tab_view,
+static AdwTabView *
+tab_view_create_window_cb (AdwTabView *tab_view,
EphyWindow *window)
{
EphyWindow *new_window;
@@ -2966,7 +2988,6 @@ tab_view_create_window_cb (HdyTabView *tab_view,
new_window = ephy_window_new ();
new_window->present_on_insert = TRUE;
- new_window->present_on_insert_user_time = gtk_get_current_event_time ();
return ephy_tab_view_get_tab_view (new_window->tab_view);
}
@@ -2986,10 +3007,12 @@ ephy_window_update_entry_focus (EphyWindow *window,
return;
title_widget = GTK_WIDGET (ephy_header_bar_get_title_widget (EPHY_HEADER_BAR (window->header_bar)));
+/*
if (EPHY_IS_LOCATION_ENTRY (title_widget)) {
entry = ephy_location_entry_get_entry (EPHY_LOCATION_ENTRY (title_widget));
gtk_entry_grab_focus_without_selecting (GTK_ENTRY (entry));
}
+*/
}
static void
@@ -3030,15 +3053,14 @@ static EphyTabView *
setup_tab_view (EphyWindow *window)
{
EphyTabView *tab_view = ephy_tab_view_new ();
- HdyTabView *view = ephy_tab_view_get_tab_view (tab_view);
+ AdwTabView *view = ephy_tab_view_get_tab_view (tab_view);
g_autoptr (GtkBuilder) builder = NULL;
gtk_widget_set_vexpand (GTK_WIDGET (tab_view), TRUE);
builder = gtk_builder_new_from_resource ("/org/gnome/epiphany/gtk/notebook-context-menu.ui");
- hdy_tab_view_set_menu_model (view, G_MENU_MODEL (gtk_builder_get_object (builder, "notebook-menu")));
- hdy_tab_view_set_shortcut_widget (view, GTK_WIDGET (window));
+ adw_tab_view_set_menu_model (view, G_MENU_MODEL (gtk_builder_get_object (builder, "notebook-menu")));
g_signal_connect_object (view, "notify::selected-page",
G_CALLBACK (tab_view_notify_selected_page_cb),
@@ -3145,15 +3167,13 @@ ephy_window_get_property (GObject *object,
case PROP_SINGLE_TAB_MODE:
g_value_set_boolean (value, window->is_popup);
break;
- case PROP_FULLSCREEN:
- g_value_set_boolean (value, window->is_fullscreen);
- break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
+#if 0
static gboolean
ephy_window_state_event (GtkWidget *widget,
GdkEventWindowState *event)
@@ -3161,32 +3181,8 @@ ephy_window_state_event (GtkWidget *widget,
EphyWindow *window = EPHY_WINDOW (widget);
gboolean result = GDK_EVENT_PROPAGATE;
- if (event->changed_mask & GDK_WINDOW_STATE_FULLSCREEN) {
- GActionGroup *action_group;
- GAction *action;
- gboolean fullscreen;
-
- fullscreen = !!(event->new_window_state & GDK_WINDOW_STATE_FULLSCREEN);
-
- if (fullscreen) {
- ephy_window_fullscreen (window);
- } else {
- ephy_window_unfullscreen (window);
- }
-
- ephy_fullscreen_box_set_fullscreen (window->fullscreen_box, fullscreen &&
window->show_fullscreen_header_bar);
- gtk_widget_set_visible (GTK_WIDGET (window->titlebar_box), !fullscreen ||
window->show_fullscreen_header_bar);
-
- window->show_fullscreen_header_bar = FALSE;
-
- action_group = gtk_widget_get_action_group (GTK_WIDGET (window), "win");
- action = g_action_map_lookup_action (G_ACTION_MAP (action_group), "fullscreen");
-
- g_simple_action_set_state (G_SIMPLE_ACTION (action),
- g_variant_new_boolean (fullscreen));
- } else if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED) {
+ if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED)
window->is_maximized = !!(event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED);
- }
update_adaptive_mode (window);
@@ -3195,6 +3191,7 @@ ephy_window_state_event (GtkWidget *widget,
return result;
}
+#endif
void
ephy_window_set_default_size (EphyWindow *window,
@@ -3210,8 +3207,6 @@ ephy_window_set_default_position (EphyWindow *window,
gint x,
gint y)
{
- gtk_window_move (GTK_WINDOW (window), x, y);
- window->has_default_position = TRUE;
}
static void
@@ -3228,20 +3223,6 @@ ephy_window_show (GtkWidget *widget)
if (window->is_maximized)
gtk_window_maximize (GTK_WINDOW (window));
else {
- if (!window->has_default_position) {
- g_settings_get (EPHY_SETTINGS_STATE,
- "window-position", "(ii)",
- &window->current_x,
- &window->current_y);
- if (window->current_x >= 0 && window->current_y >= 0) {
- gtk_window_move (GTK_WINDOW (window),
- window->current_x,
- window->current_y);
- }
-
- window->has_default_position = TRUE;
- }
-
if (!window->has_default_size) {
g_settings_get (EPHY_SETTINGS_STATE,
"window-size", "(ii)",
@@ -3249,9 +3230,9 @@ ephy_window_show (GtkWidget *widget)
&window->current_height);
if (window->current_width > 0 && window->current_height > 0) {
- gtk_window_resize (GTK_WINDOW (window),
- window->current_width,
- window->current_height);
+ gtk_window_set_default_size (GTK_WINDOW (window),
+ window->current_width,
+ window->current_height);
}
window->has_default_size = TRUE;
@@ -3263,6 +3244,7 @@ ephy_window_show (GtkWidget *widget)
GTK_WIDGET_CLASS (ephy_window_parent_class)->show (widget);
}
+#if 0
static gboolean
ephy_window_should_save_state (EphyWindow *window)
{
@@ -3294,6 +3276,7 @@ ephy_window_destroy (GtkWidget *widget)
GTK_WIDGET_CLASS (ephy_window_parent_class)->destroy (widget);
}
+#endif
static void
ephy_window_finalize (GObject *object)
@@ -3303,6 +3286,7 @@ ephy_window_finalize (GObject *object)
LOG ("EphyWindow finalised %p", object);
}
+#if 0
static void
sync_user_input_cb (EphyLocationController *action,
GParamSpec *pspec,
@@ -3363,6 +3347,7 @@ title_widget_lock_clicked_cb (EphyTitleWidget *title_widget,
gtk_popover_set_position (GTK_POPOVER (security_popover), GTK_POS_BOTTOM);
gtk_popover_popup (GTK_POPOVER (security_popover));
}
+#endif
static GtkWidget *
setup_header_bar (EphyWindow *window)
@@ -3370,19 +3355,11 @@ setup_header_bar (EphyWindow *window)
GtkWidget *header_bar;
EphyTitleWidget *title_widget;
- window->window_handle = hdy_window_handle_new ();
header_bar = ephy_header_bar_new (window);
- gtk_container_add (GTK_CONTAINER (window->window_handle), header_bar);
-
- gtk_widget_show (window->window_handle);
- gtk_widget_show (header_bar);
-
- gtk_style_context_add_class (gtk_widget_get_style_context (header_bar), "titlebar");
-
- title_widget = ephy_header_bar_get_title_widget (EPHY_HEADER_BAR (header_bar));
- g_signal_connect (title_widget, "lock-clicked",
- G_CALLBACK (title_widget_lock_clicked_cb), window);
+// title_widget = ephy_header_bar_get_title_widget (EPHY_HEADER_BAR (header_bar));
+// g_signal_connect (title_widget, "lock-clicked",
+// G_CALLBACK (title_widget_lock_clicked_cb), window);
return header_bar;
}
@@ -3391,7 +3368,7 @@ static void
update_pages_menu_revealer (EphyWindow *window)
{
gtk_revealer_set_reveal_child (window->pages_menu_revealer,
- hdy_tab_bar_get_is_overflowing (window->tab_bar) ||
+ adw_tab_bar_get_is_overflowing (window->tab_bar) ||
gtk_widget_get_visible (GTK_WIDGET (window->pages_popover)));
}
@@ -3405,32 +3382,31 @@ setup_tabs_menu (EphyWindow *window)
revealer = GTK_REVEALER (gtk_revealer_new ());
gtk_revealer_set_transition_type (revealer,
GTK_REVEALER_TRANSITION_TYPE_SLIDE_LEFT);
- hdy_tab_bar_set_end_action_widget (window->tab_bar, GTK_WIDGET (revealer));
+ adw_tab_bar_set_end_action_widget (window->tab_bar, GTK_WIDGET (revealer));
window->pages_menu_revealer = revealer;
menu_button = gtk_menu_button_new ();
- gtk_button_set_relief (GTK_BUTTON (menu_button), GTK_RELIEF_NONE);
+ gtk_widget_add_css_class (menu_button, "flat");
/* Translators: tooltip for the tab switcher menu button */
gtk_widget_set_tooltip_text (menu_button, _("View open tabs"));
gtk_widget_set_margin_start (menu_button, 1);
- gtk_container_add (GTK_CONTAINER (revealer), menu_button);
+ gtk_revealer_set_child (revealer, menu_button);
- popover = ephy_pages_popover_new (menu_button);
- ephy_pages_popover_set_tab_view (popover, window->tab_view);
- gtk_menu_button_set_popover (GTK_MENU_BUTTON (menu_button),
- GTK_WIDGET (popover));
- window->pages_popover = popover;
+// popover = ephy_pages_popover_new (menu_button);
+// ephy_pages_popover_set_tab_view (popover, window->tab_view);
+// gtk_menu_button_set_popover (GTK_MENU_BUTTON (menu_button),
+// GTK_WIDGET (popover));
+// window->pages_popover = popover;
g_signal_connect_object (window->tab_bar, "notify::is-overflowing",
G_CALLBACK (update_pages_menu_revealer), window,
G_CONNECT_SWAPPED);
- g_signal_connect_object (window->pages_popover, "notify::visible",
- G_CALLBACK (update_pages_menu_revealer), window,
- G_CONNECT_SWAPPED);
-
- gtk_widget_show_all (GTK_WIDGET (revealer));
+// g_signal_connect_object (window->pages_popover, "notify::visible",
+// G_CALLBACK (update_pages_menu_revealer), window,
+// G_CONNECT_SWAPPED);
}
+#if 0
static EphyLocationController *
setup_location_controller (EphyWindow *window,
EphyHeaderBar *header_bar)
@@ -3449,6 +3425,7 @@ setup_location_controller (EphyWindow *window,
return location_controller;
}
+#endif
static GtkWidget *
setup_action_bar (EphyWindow *window)
@@ -3456,7 +3433,6 @@ setup_action_bar (EphyWindow *window)
GtkWidget *action_bar;
action_bar = GTK_WIDGET (ephy_action_bar_new (window));
- gtk_widget_show (action_bar);
g_object_bind_property (window->fullscreen_box, "revealed",
action_bar, "can-reveal",
@@ -3520,6 +3496,7 @@ set_as_default_browser ()
}
}
+#if 0
static void
on_default_browser_question_response (GtkInfoBar *info_bar,
gint response_id,
@@ -3561,9 +3538,8 @@ add_default_browser_question (GtkBox *box)
g_signal_connect (info_bar, "response", G_CALLBACK (on_default_browser_question_response), NULL);
gtk_box_pack_start (box, info_bar, FALSE, TRUE, 0);
-
- gtk_widget_show (info_bar);
}
+#endif
static gboolean
is_browser_default (void)
@@ -3598,14 +3574,15 @@ download_completed_cb (EphyDownload *download,
g_application_quit (G_APPLICATION (shell));
}
+#if 0
static void
-notify_deck_child_cb (EphyWindow *window)
+notify_leaflet_child_cb (EphyWindow *window)
{
GActionGroup *action_group;
GAction *action;
gboolean pages_open;
- pages_open = hdy_deck_get_visible_child (HDY_DECK (window->main_deck)) == GTK_WIDGET (window->pages_view);
+ pages_open = adw_leaflet_get_visible_child (ADW_LEAFLET (window->main_leaflet)) == GTK_WIDGET
(window->pages_view);
action_group = gtk_widget_get_action_group (GTK_WIDGET (window), "win");
action = g_action_map_lookup_action (G_ACTION_MAP (action_group), "content");
@@ -3614,17 +3591,23 @@ notify_deck_child_cb (EphyWindow *window)
action = g_action_map_lookup_action (G_ACTION_MAP (action_group), "tabs-view");
g_simple_action_set_enabled (G_SIMPLE_ACTION (action), !pages_open);
}
+#endif
static void
-ephy_window_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation)
+ephy_window_size_allocate (GtkWidget *widget,
+ int width,
+ int height,
+ int baseline)
{
EphyWindow *window = EPHY_WINDOW (widget);
- GTK_WIDGET_CLASS (ephy_window_parent_class)->size_allocate (widget, allocation);
+ GTK_WIDGET_CLASS (ephy_window_parent_class)->size_allocate (widget, width,
+ height, baseline);
- if (!(window->is_maximized || window->is_fullscreen))
- gtk_window_get_size (GTK_WINDOW (widget), &window->current_width, &window->current_height);
+ if (!(window->is_maximized || window->is_fullscreen)) {
+ window->current_width = width;
+ window->current_height = height;
+ }
update_adaptive_mode (window);
}
@@ -3710,21 +3693,25 @@ ephy_window_constructed (GObject *object)
accels_navigation_ltr_rtl[i].accelerators);
}
+ g_signal_connect (window, "notify::fullscreened",
+ G_CALLBACK (notify_fullscreen_cb), NULL);
+
ephy_gui_ensure_window_group (GTK_WINDOW (window));
window->tab_view = setup_tab_view (window);
- window->tab_bar = hdy_tab_bar_new ();
+ window->tab_bar = adw_tab_bar_new ();
window->tab_bar_revealer = GTK_REVEALER (gtk_revealer_new ());
- window->main_deck = hdy_deck_new ();
+ window->main_leaflet = adw_leaflet_new ();
window->fullscreen_box = ephy_fullscreen_box_new ();
- window->pages_view = ephy_pages_view_new ();
+// window->pages_view = ephy_pages_view_new ();
- g_signal_connect_swapped (window->main_deck, "notify::visible-child",
- G_CALLBACK (notify_deck_child_cb), window);
+ adw_leaflet_set_can_unfold (ADW_LEAFLET (window->main_leaflet), FALSE);
+// g_signal_connect_swapped (window->main_leaflet, "notify::visible-child",
+// G_CALLBACK (notify_leaflet_child_cb), window);
gtk_revealer_set_transition_type (window->tab_bar_revealer, GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN);
- hdy_tab_bar_set_view (window->tab_bar, ephy_tab_view_get_tab_view (window->tab_view));
- ephy_pages_view_set_tab_view (window->pages_view, window->tab_view);
+ adw_tab_bar_set_view (window->tab_bar, ephy_tab_view_get_tab_view (window->tab_view));
+// ephy_pages_view_set_tab_view (window->pages_view, window->tab_view);
setup_tabs_menu (window);
@@ -3739,41 +3726,34 @@ ephy_window_constructed (GObject *object)
/* Setup the toolbar. */
window->header_bar = setup_header_bar (window);
- window->location_controller = setup_location_controller (window, EPHY_HEADER_BAR (window->header_bar));
+// window->location_controller = setup_location_controller (window, EPHY_HEADER_BAR (window->header_bar));
window->action_bar = setup_action_bar (window);
box = GTK_BOX (gtk_box_new (GTK_ORIENTATION_VERTICAL, 0));
window->titlebar_box = GTK_BOX (gtk_box_new (GTK_ORIENTATION_VERTICAL, 0));
- if (g_settings_get_boolean (EPHY_SETTINGS_MAIN, EPHY_PREFS_ASK_FOR_DEFAULT) &&
- !is_browser_default () &&
- !ephy_profile_dir_is_web_application ())
- add_default_browser_question (box);
+// if (g_settings_get_boolean (EPHY_SETTINGS_MAIN, EPHY_PREFS_ASK_FOR_DEFAULT) &&
+// !is_browser_default () &&
+// !ephy_profile_dir_is_web_application ())
+// add_default_browser_question (box);
- gtk_container_add (GTK_CONTAINER (window->tab_bar_revealer), GTK_WIDGET (window->tab_bar));
- gtk_box_pack_start (window->titlebar_box, GTK_WIDGET (window->window_handle), FALSE, TRUE, 0);
- gtk_box_pack_start (window->titlebar_box, GTK_WIDGET (window->tab_bar_revealer), FALSE, TRUE, 0);
- gtk_box_pack_start (box, GTK_WIDGET (window->tab_view), FALSE, TRUE, 0);
- gtk_box_pack_start (box, GTK_WIDGET (window->action_bar), FALSE, TRUE, 0);
+ gtk_revealer_set_child (window->tab_bar_revealer, GTK_WIDGET (window->tab_bar));
+ gtk_box_append (window->titlebar_box, GTK_WIDGET (window->header_bar));
+ gtk_box_append (window->titlebar_box, GTK_WIDGET (window->tab_bar_revealer));
+ gtk_box_append (box, GTK_WIDGET (window->tab_view));
+ gtk_box_append (box, GTK_WIDGET (window->action_bar));
ephy_fullscreen_box_set_content (window->fullscreen_box, GTK_WIDGET (box));
ephy_fullscreen_box_set_titlebar (window->fullscreen_box, GTK_WIDGET (window->titlebar_box));
- gtk_container_add (GTK_CONTAINER (window->main_deck), GTK_WIDGET (window->fullscreen_box));
- gtk_container_add (GTK_CONTAINER (window->main_deck), GTK_WIDGET (window->pages_view));
- gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (window->main_deck));
- gtk_widget_show (GTK_WIDGET (window->main_deck));
- gtk_widget_show (GTK_WIDGET (window->pages_view));
- gtk_widget_show (GTK_WIDGET (window->fullscreen_box));
- gtk_widget_show (GTK_WIDGET (window->titlebar_box));
- gtk_widget_show (GTK_WIDGET (box));
- gtk_widget_show (GTK_WIDGET (window->tab_view));
- gtk_widget_show (GTK_WIDGET (window->tab_bar));
- gtk_widget_show (GTK_WIDGET (window->tab_bar_revealer));
+ adw_leaflet_append (ADW_LEAFLET (window->main_leaflet), GTK_WIDGET (window->fullscreen_box));
+// adw_leaflet_append (ADW_LEAFLET (window->main_leaflet), GTK_WIDGET (window->pages_view));
+ adw_application_window_set_content (ADW_APPLICATION_WINDOW (window), GTK_WIDGET (window->main_leaflet));
ephy_tab_view_set_tab_bar (window->tab_view, window->tab_bar);
- hdy_deck_set_visible_child (HDY_DECK (window->main_deck), GTK_WIDGET (window->fullscreen_box));
- hdy_deck_set_can_swipe_back (HDY_DECK (window->main_deck), TRUE);
+ adw_leaflet_set_visible_child (ADW_LEAFLET (window->main_leaflet), GTK_WIDGET (window->fullscreen_box));
+ adw_leaflet_set_can_navigate_back (ADW_LEAFLET (window->main_leaflet), TRUE);
+#if 0
/* other notifiers */
action_group = gtk_widget_get_action_group (GTK_WIDGET (window), "win");
action = g_action_map_lookup_action (G_ACTION_MAP (action_group),
@@ -3834,6 +3814,7 @@ ephy_window_constructed (GObject *object)
}
window->mouse_gesture_controller = ephy_mouse_gesture_controller_new (window);
+#endif
ephy_window_set_chrome (window, chrome);
@@ -3853,11 +3834,11 @@ ephy_window_class_init (EphyWindowClass *klass)
object_class->get_property = ephy_window_get_property;
object_class->set_property = ephy_window_set_property;
- widget_class->key_press_event = ephy_window_key_press_event;
- widget_class->window_state_event = ephy_window_state_event;
+// widget_class->key_press_event = ephy_window_key_press_event;
+// widget_class->window_state_event = ephy_window_state_event;
widget_class->show = ephy_window_show;
- widget_class->destroy = ephy_window_destroy;
- widget_class->delete_event = ephy_window_delete_event;
+// widget_class->destroy = ephy_window_destroy;
+// widget_class->delete_event = ephy_window_delete_event;
widget_class->size_allocate = ephy_window_size_allocate;
g_object_class_override_property (object_class,
@@ -3878,15 +3859,6 @@ ephy_window_class_init (EphyWindowClass *klass)
G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS));
- g_object_class_install_property (object_class,
- PROP_FULLSCREEN,
- g_param_spec_boolean ("fullscreen",
- NULL,
- NULL,
- FALSE,
- G_PARAM_READABLE |
- G_PARAM_STATIC_STRINGS));
-
manager = ephy_embed_shell_get_downloads_manager (EPHY_EMBED_SHELL (ephy_shell_get_default ()));
g_signal_connect (manager, "download-completed", G_CALLBACK (download_completed_cb), NULL);
}
@@ -3943,7 +3915,7 @@ ephy_window_open_pages_view (EphyWindow *window)
{
g_assert (EPHY_IS_WINDOW (window));
- hdy_deck_navigate (HDY_DECK (window->main_deck), HDY_NAVIGATION_DIRECTION_FORWARD);
+ adw_leaflet_navigate (ADW_LEAFLET (window->main_leaflet), ADW_NAVIGATION_DIRECTION_FORWARD);
}
/**
@@ -3957,7 +3929,7 @@ ephy_window_close_pages_view (EphyWindow *window)
{
g_assert (EPHY_IS_WINDOW (window));
- hdy_deck_navigate (HDY_DECK (window->main_deck), HDY_NAVIGATION_DIRECTION_BACK);
+ adw_leaflet_navigate (ADW_LEAFLET (window->main_leaflet), ADW_NAVIGATION_DIRECTION_BACK);
}
/**
@@ -4011,10 +3983,11 @@ ephy_window_activate_location (EphyWindow *window)
title_widget = ephy_header_bar_get_title_widget (EPHY_HEADER_BAR (window->header_bar));
- if (EPHY_IS_LOCATION_ENTRY (title_widget))
- ephy_location_entry_focus (EPHY_LOCATION_ENTRY (title_widget));
+// if (EPHY_IS_LOCATION_ENTRY (title_widget))
+// ephy_location_entry_focus (EPHY_LOCATION_ENTRY (title_widget));
}
+#if 0
/**
* ephy_window_location_search:
* @window: an #EphyWindow
@@ -4042,6 +4015,7 @@ ephy_window_location_search (EphyWindow *window)
g_free (entry_text);
g_free (search_engine_name);
}
+#endif
/**
* ephy_window_set_zoom:
@@ -4098,6 +4072,7 @@ ephy_window_get_context_event (EphyWindow *window)
return window->context_event;
}
+#if 0
/**
* ephy_window_get_location:
* @window: an #EphyWindow widget
@@ -4111,6 +4086,7 @@ ephy_window_get_location (EphyWindow *window)
{
return ephy_location_controller_get_address (window->location_controller);
}
+#endif
/**
* ephy_window_set_location:
@@ -4127,10 +4103,11 @@ ephy_window_set_location (EphyWindow *window,
return;
window->updating_address = TRUE;
- ephy_location_controller_set_address (window->location_controller, address);
+// ephy_location_controller_set_address (window->location_controller, address);
window->updating_address = FALSE;
}
+#if 0
/**
* ephy_window_get_location_controller:
* @window: an #EphyWindow
@@ -4146,6 +4123,7 @@ ephy_window_get_location_controller (EphyWindow *window)
return window->location_controller;
}
+#endif
/**
* ephy_window_get_header_bar:
@@ -4186,7 +4164,7 @@ finish_window_close_after_modified_forms_check (WindowHasModifiedFormsData *data
should_close = ephy_window_close (data->window);
data->window->force_close = FALSE;
if (should_close)
- gtk_widget_destroy (GTK_WIDGET (data->window));
+ gtk_window_destroy (GTK_WINDOW (data->window));
window_has_modified_forms_data_free (data);
}
@@ -4196,7 +4174,7 @@ confirm_close_window_with_modified_forms_cb (GtkDialog *dialog,
GtkResponseType response,
WindowHasModifiedFormsData *data)
{
- gtk_widget_destroy (GTK_WIDGET (dialog));
+ gtk_window_destroy (GTK_WINDOW (dialog));
if (response == GTK_RESPONSE_ACCEPT)
finish_window_close_after_modified_forms_check (data);
@@ -4301,7 +4279,7 @@ window_close_with_multiple_tabs_cb (GtkDialog *dialog,
GtkResponseType response,
EphyWindow *window)
{
- gtk_widget_destroy (GTK_WIDGET (dialog));
+ gtk_window_destroy (GTK_WINDOW (dialog));
if (response == GTK_RESPONSE_ACCEPT) {
window->confirmed_close_with_multiple_tabs = TRUE;
diff --git a/src/ephy-window.h b/src/ephy-window.h
index 35997a3d9..bee8e20c5 100644
--- a/src/ephy-window.h
+++ b/src/ephy-window.h
@@ -27,13 +27,13 @@
#include "ephy-tab-view.h"
#include "ephy-web-view.h"
-#include <handy.h>
+#include <adwaita.h>
G_BEGIN_DECLS
#define EPHY_TYPE_WINDOW (ephy_window_get_type ())
-G_DECLARE_FINAL_TYPE (EphyWindow, ephy_window, EPHY, WINDOW, HdyApplicationWindow)
+G_DECLARE_FINAL_TYPE (EphyWindow, ephy_window, EPHY, WINDOW, AdwApplicationWindow)
typedef enum
{
diff --git a/src/meson.build b/src/meson.build
index eaee92180..7f6618d22 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -1,5 +1,5 @@
types_headers = [
- 'bookmarks/ephy-bookmark-properties.h',
+# 'bookmarks/ephy-bookmark-properties.h',
'ephy-link.h',
'ephy-session.h',
'ephy-shell.h',
@@ -13,52 +13,52 @@ enums = gnome.mkenums_simple('ephy-type-builtins',
subdir('webextension')
libephymain_sources = [
- 'bookmarks/ephy-add-bookmark-popover.c',
+# 'bookmarks/ephy-add-bookmark-popover.c',
'bookmarks/ephy-bookmark.c',
- 'bookmarks/ephy-bookmark-properties.c',
- 'bookmarks/ephy-bookmark-row.c',
+# 'bookmarks/ephy-bookmark-properties.c',
+# 'bookmarks/ephy-bookmark-row.c',
'bookmarks/ephy-bookmarks-export.c',
'bookmarks/ephy-bookmarks-import.c',
'bookmarks/ephy-bookmarks-manager.c',
- 'bookmarks/ephy-bookmarks-popover.c',
+# 'bookmarks/ephy-bookmarks-popover.c',
'ephy-action-bar.c',
'ephy-action-bar-end.c',
'ephy-action-bar-start.c',
'ephy-action-helper.c',
'ephy-desktop-utils.c',
- 'ephy-encoding-dialog.c',
+# 'ephy-encoding-dialog.c',
'ephy-encoding-row.c',
- 'ephy-firefox-sync-dialog.c',
+# 'ephy-firefox-sync-dialog.c',
'ephy-fullscreen-box.c',
'ephy-header-bar.c',
- 'ephy-history-dialog.c',
+# 'ephy-history-dialog.c',
'ephy-link.c',
- 'ephy-location-controller.c',
- 'ephy-lockdown.c',
- 'ephy-mouse-gesture-controller.c',
- 'ephy-page-row.c',
+# 'ephy-location-controller.c',
+# 'ephy-lockdown.c',
+# 'ephy-mouse-gesture-controller.c',
+# 'ephy-page-row.c',
'ephy-pages-button.c',
- 'ephy-pages-popover.c',
- 'ephy-pages-view.c',
+# 'ephy-pages-popover.c',
+# 'ephy-pages-view.c',
'ephy-session.c',
'ephy-shell.c',
- 'ephy-suggestion-model.c',
+# 'ephy-suggestion-model.c',
'ephy-tab-view.c',
'ephy-web-extension-dialog.c',
'ephy-window.c',
'popup-commands.c',
- 'preferences/clear-data-view.c',
- 'preferences/ephy-data-view.c',
- 'preferences/ephy-lang-row.c',
- 'preferences/ephy-prefs-dialog.c',
- 'preferences/passwords-view.c',
- 'preferences/ephy-search-engine-listbox.c',
- 'preferences/ephy-search-engine-row.c',
- 'preferences/prefs-appearance-page.c',
- 'preferences/prefs-general-page.c',
- 'preferences/prefs-privacy-page.c',
- 'preferences/webapp-additional-urls-dialog.c',
- 'synced-tabs-dialog.c',
+# 'preferences/clear-data-view.c',
+# 'preferences/ephy-data-view.c',
+# 'preferences/ephy-lang-row.c',
+# 'preferences/ephy-prefs-dialog.c',
+# 'preferences/passwords-view.c',
+# 'preferences/ephy-search-engine-listbox.c',
+# 'preferences/ephy-search-engine-row.c',
+# 'preferences/prefs-appearance-page.c',
+# 'preferences/prefs-general-page.c',
+# 'preferences/prefs-privacy-page.c',
+# 'preferences/webapp-additional-urls-dialog.c',
+# 'synced-tabs-dialog.c',
'window-commands.c',
ephywebextension_src,
compile_schemas,
@@ -73,7 +73,7 @@ libephymain_deps = [
ephywidgets_dep,
gvdb_dep,
libarchive_dep,
- libhandy_dep
+ libadwaita_dep
]
libephymain_includes = include_directories(
@@ -123,13 +123,13 @@ search_provider_sources = [
codegen
]
-executable('epiphany-search-provider',
- search_provider_sources,
- dependencies: ephymain_dep,
- install: true,
- install_dir: libexecdir,
- install_rpath: pkglibdir
-)
+#executable('epiphany-search-provider',
+# search_provider_sources,
+# dependencies: ephymain_dep,
+# install: true,
+# install_dir: libexecdir,
+# install_rpath: pkglibdir
+#)
resource_files = files('resources/epiphany.gresource.xml')
diff --git a/src/popup-commands.c b/src/popup-commands.c
index dc3ccfbbc..2e8432266 100644
--- a/src/popup-commands.c
+++ b/src/popup-commands.c
@@ -107,8 +107,9 @@ static void
popup_cmd_copy_to_clipboard (EphyWindow *window,
const char *text)
{
- gtk_clipboard_set_text (gtk_clipboard_get_default (gdk_display_get_default ()),
- text, -1);
+ GdkClipboard *clipboard = gtk_widget_get_clipboard (GTK_WIDGET (window));
+
+ gdk_clipboard_set_text (clipboard, text);
}
void
@@ -149,6 +150,7 @@ typedef struct {
EphyDownload *download;
} SavePropertyURLData;
+#if 0
static void
filename_confirmed_cb (GtkFileChooser *dialog,
GtkResponseType response,
@@ -207,6 +209,7 @@ filename_suggested_cb (EphyDownload *download,
G_CALLBACK (filename_confirmed_cb), data);
gtk_native_dialog_show (GTK_NATIVE_DIALOG (dialog));
}
+#endif
static void
save_property_url (const char *title,
@@ -227,9 +230,9 @@ save_property_url (const char *title,
data->title = g_strdup (title);
data->window = g_object_ref (window);
data->download = download;
- g_signal_connect (download, "filename-suggested",
- G_CALLBACK (filename_suggested_cb),
- data);
+// g_signal_connect (download, "filename-suggested",
+// G_CALLBACK (filename_suggested_cb),
+// data);
}
void
diff --git a/src/resources/gtk/action-bar-end.ui b/src/resources/gtk/action-bar-end.ui
index 2c74b14bd..811e5235e 100644
--- a/src/resources/gtk/action-bar-end.ui
+++ b/src/resources/gtk/action-bar-end.ui
@@ -4,27 +4,26 @@
<property name="spacing">6</property>
<child>
<object class="GtkBox" id="browser_action_box">
- <property name="visible">True</property>
<property name="spacing">6</property>
</object>
</child>
<child>
<object class="GtkRevealer" id="downloads_revealer">
- <property name="visible">True</property>
<property name="transition-type">crossfade</property>
<child>
<object class="GtkMenuButton" id="downloads_button">
<!-- Translators: tooltip for the downloads button -->
<property name="tooltip_text" translatable="yes">View downloads</property>
- <property name="visible">True</property>
<property name="receives_default">True</property>
+ <style>
+ <class name="image-button"/>
+ </style>
<child>
<object class="GtkOverlay">
- <property name="visible">True</property>
<property name="valign">center</property>
+ <property name="can-target">False</property>
<child>
<object class="GtkImage" id="downloads_icon">
- <property name="visible">True</property>
<property name="icon_name">ephy-download-symbolic</property>
<style>
<class name="download_icon"/>
@@ -33,15 +32,11 @@
</child>
<child type="overlay">
<object class="GtkProgressBar" id="downloads_progress">
- <property name="visible">True</property>
<property name="valign">end</property>
<style>
<class name="download_progress"/>
</style>
</object>
- <packing>
- <property name="pass-through">True</property>
- </packing>
</child>
</object>
</child>
@@ -51,41 +46,20 @@
</child>
<child>
<object class="GtkButton" id="bookmark_button">
- <property name="visible">True</property>
<!-- Translators: tooltip for the bookmark button -->
<property name="tooltip_text" translatable="yes">Bookmark page</property>
- <child>
- <object class="GtkImage" id="bookmark_image">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon_name">non-starred-symbolic</property>
- </object>
- </child>
- <style>
- <class name="image-button"/>
- </style>
+ <property name="icon_name">non-starred-symbolic</property>
</object>
</child>
<child>
<object class="GtkMenuButton" id="bookmarks_button">
- <property name="visible">True</property>
<!-- Translators: tooltip for the bookmarks popover button -->
<property name="tooltip_text" translatable="yes">View and manage your bookmarks</property>
- <property name="popover">bookmarks_popover</property>
- <style>
- <class name="image-button"/>
- </style>
- <child>
- <object class="GtkImage" id="bookmarks_image">
- <property name="visible">True</property>
- <property name="icon-name">ephy-library-symbolic</property>
- <property name="icon-size">1</property>
- </object>
- </child>
+ <property name="icon-name">ephy-library-symbolic</property>
+<!-- <property name="popover">
+ <object class="EphyBookmarksPopover" id="bookmarks_popover"/>
+ </property>-->
</object>
</child>
</template>
- <object class="EphyBookmarksPopover" id="bookmarks_popover">
- <property name="visible">True</property>
- </object>
</interface>
diff --git a/src/resources/gtk/action-bar-start.ui b/src/resources/gtk/action-bar-start.ui
index 3c8b22a10..0163b8127 100644
--- a/src/resources/gtk/action-bar-start.ui
+++ b/src/resources/gtk/action-bar-start.ui
@@ -4,106 +4,53 @@
<property name="spacing">6</property>
<child>
<object class="GtkBox" id="navigation_box">
- <property name="visible">True</property>
<property name="orientation">horizontal</property>
+ <property name="spacing">6</property>
<style>
- <class name="linked"/>
<class name="navigation-box"/>
</style>
<child>
<object class="GtkButton" id="navigation_back">
- <property name="visible">True</property>
<property name="action-name">toolbar.navigation-back</property>
+ <property name="icon-name">go-previous-symbolic</property>
<!-- Translators: tooltip for the back button -->
<property name="tooltip_text" translatable="yes">Go back to the previous page</property>
- <style>
- <class name="image-button"/>
- </style>
- <child>
- <object class="GtkImage" id="back_image">
- <property name="visible">True</property>
- <property name="icon-name">go-previous-symbolic</property>
- <property name="icon-size">1</property>
- </object>
- </child>
</object>
</child>
<child>
<object class="GtkButton" id="navigation_forward">
- <property name="visible">True</property>
<property name="action-name">toolbar.navigation-forward</property>
+ <property name="icon-name">go-next-symbolic</property>
<!-- Translators: tooltip for the forward button -->
<property name="tooltip_text" translatable="yes">Go forward to the next page</property>
- <style>
- <class name="image-button"/>
- </style>
- <child>
- <object class="GtkImage" id="forward_image">
- <property name="visible">True</property>
- <property name="icon-name">go-next-symbolic</property>
- <property name="icon-size">1</property>
- </object>
- </child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkButton" id="combined_stop_reload_button">
- <property name="visible">True</property>
<property name="action-name">toolbar.combined-stop-reload</property>
- <style>
- <class name="image-button"/>
- </style>
- <child>
- <object class="GtkImage" id="combined_stop_reload_image">
- <property name="visible">True</property>
- <property name="icon-name">view-refresh-symbolic</property>
- <property name="icon-size">1</property>
- </object>
- </child>
+ <property name="icon-name">view-refresh-symbolic</property>
</object>
</child>
<child>
<object class="GtkButton" id="homepage_button">
- <property name="visible">True</property>
<property name="action-name">win.home</property>
+ <property name="icon-name">go-home-symbolic</property>
<!-- Translators: tooltip for the secret homepage button -->
<property name="tooltip_text" translatable="yes">Go to your homepage</property>
- <style>
- <class name="image-button"/>
- </style>
- <child>
- <object class="GtkImage" id="homepage_image">
- <property name="visible">True</property>
- <property name="icon-name">go-home-symbolic</property>
- <property name="icon-size">1</property>
- </object>
- </child>
</object>
</child>
<child>
<object class="GtkButton" id="new_tab_button">
- <property name="visible">True</property>
<property name="action-name">win.new-tab</property>
+ <property name="icon-name">tab-new-symbolic</property>
<!-- Translators: tooltip for the new tab button -->
<property name="tooltip_text" translatable="yes">Open a new tab</property>
- <style>
- <class name="image-button"/>
- </style>
- <child>
- <object class="GtkImage" id="new_tab_image">
- <property name="visible">True</property>
- <property name="icon-name">tab-new-symbolic</property>
- <property name="icon-size">1</property>
- </object>
- </child>
</object>
</child>
<child>
- <object class="GtkBox" id="placeholder">
- <property name="visible">True</property>
- </object>
+ <object class="GtkBox" id="placeholder"/>
</child>
</template>
</interface>
diff --git a/src/resources/gtk/action-bar.ui b/src/resources/gtk/action-bar.ui
index 102cd5f71..dc1851c20 100644
--- a/src/resources/gtk/action-bar.ui
+++ b/src/resources/gtk/action-bar.ui
@@ -1,42 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <template class="EphyActionBar" parent="GtkBin">
+ <template class="EphyActionBar" parent="AdwBin">
<child>
<object class="GtkRevealer" id="revealer">
- <property name="visible">True</property>
<property name="transition-type">slide-up</property>
<child>
<object class="GtkActionBar" id="action_bar">
- <property name="visible">True</property>
- <child>
- <object class="EphyActionBarStart" id="action_bar_start">
- <property name="visible">True</property>
- </object>
- <packing>
- <property name="pack-type">start</property>
- </packing>
+ <child type="start">
+ <object class="EphyActionBarStart" id="action_bar_start"/>
</child>
- <child>
+ <child type="end">
<object class="EphyPagesButton" id="pages_button">
- <property name="visible">True</property>
<!-- Translators: tooltip for the page switcher button -->
<property name="tooltip_text" translatable="yes">View open pages</property>
<property name="action_name">win.tabs-view</property>
- <style>
- <class name="image-button"/>
- </style>
</object>
- <packing>
- <property name="pack-type">end</property>
- </packing>
</child>
- <child>
- <object class="EphyActionBarEnd" id="action_bar_end">
- <property name="visible">True</property>
- </object>
- <packing>
- <property name="pack-type">end</property>
- </packing>
+ <child type="end">
+ <object class="EphyActionBarEnd" id="action_bar_end"/>
</child>
</object>
</child>
diff --git a/src/resources/gtk/encoding-row.ui b/src/resources/gtk/encoding-row.ui
index 966a1017f..d22827a8d 100644
--- a/src/resources/gtk/encoding-row.ui
+++ b/src/resources/gtk/encoding-row.ui
@@ -2,17 +2,15 @@
<interface>
<!-- interface-requires gtk+ 3.0 -->
<template class="EphyEncodingRow" parent="GtkBox">
- <property name="visible">True</property> <!-- TODO remove when never called manually -->
<property name="halign">center</property>
<property name="height-request">30</property>
<property name="spacing">8</property>
<child>
- <object class="GtkLabel" id="encoding_label">
- <property name="visible">True</property>
- </object>
+ <object class="GtkLabel" id="encoding_label"/>
</child>
<child>
<object class="GtkImage" id="selected_image">
+ <property name="visible">False</property>
<property name="icon-name">object-select-symbolic</property>
</object>
</child>
diff --git a/src/resources/gtk/history-dialog.ui b/src/resources/gtk/history-dialog.ui
index 89830749b..718c02684 100644
--- a/src/resources/gtk/history-dialog.ui
+++ b/src/resources/gtk/history-dialog.ui
@@ -2,139 +2,73 @@
<interface>
<requires lib="gtk+" version="3.20"/>
<requires lib="libhandy" version="0.0"/>
- <template class="EphyHistoryDialog" parent="HdyWindow">
- <!--property name="search_description" translatable="yes">Search history</property-->
+ <template class="EphyHistoryDialog" parent="AdwWindow">
<property name="modal">True</property>
- <property name="window-position">center-on-parent</property>
<property name="default-width">640</property>
<property name="default-height">800</property>
<property name="destroy-with_parent">True</property>
- <property name="type-hint">dialog</property>
+ <property name="title" translatable="yes">History</property>
<signal name="key-press-event" handler="on_key_press_event" swapped="no"/>
<signal name="key-release-event" handler="on_key_release_event"/>
<child>
<object class="GtkBox">
- <property name="visible">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkStack" id="header_bars_stack">
- <property name="visible">True</property>
- <property name="transition-type">GTK_STACK_TRANSITION_TYPE_CROSSFADE</property>
+ <property name="transition-type">crossfade</property>
<child>
- <object class="HdyHeaderBar" id="window_header_bar">
- <property name="visible">True</property>
- <property name="show_close_button">True</property>
- <property name="title" translatable="yes">History</property>
- <child>
+ <object class="GtkHeaderBar" id="window_header_bar">
+ <child type="end">
<object class="GtkButton" id="selection_button">
- <property name="visible">True</property>
- <property name="valign">center</property>
<property name="use-underline">True</property>
+ <property name="icon-name">selection-mode-symbolic</property>
+ <property name="tooltip-text" translatable="yes">Select Items</property>
<signal name="clicked" handler="on_selection_button_clicked"/>
- <style>
- <class name="image-button"/>
- </style>
- <child internal-child="accessible">
- <object class="AtkObject" id="a11y-button3">
- <property name="accessible-name" translatable="yes">Select Items</property>
- </object>
- </child>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="icon-name">object-select-symbolic</property>
- <property name="icon-size">1</property>
- </object>
- </child>
</object>
- <packing>
- <property name="pack-type">end</property>
- </packing>
</child>
- <child>
+ <child type="end">
<object class="GtkToggleButton" id="search_button">
- <property name="visible">True</property>
- <property name="receives_default">True</property>
- <property name="always_show_image">True</property>
+ <property name="icon-name">edit-find-symbolic</property>
+ <property name="tooltip-text" translatable="yes">Search</property>
<property name="active" bind-source="search_bar" bind-property="search-mode-enabled"
bind-flags="sync-create|bidirectional"/>
<accelerator key="F" modifiers="GDK_CONTROL_MASK" signal="clicked"/>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="icon_name">edit-find-symbolic</property>
- </object>
- </child>
- <child internal-child="accessible">
- <object class="AtkObject">
- <property name="AtkObject::accessible-name" translatable="yes">Search</property>
- </object>
- </child>
</object>
- <packing>
- <property name="pack_type">end</property>
- </packing>
</child>
</object>
</child>
<child>
- <object class="HdyHeaderBar" id="selection_header_bar">
- <property name="visible">True</property>
- <property name="title" translatable="yes">History</property>
+ <object class="GtkHeaderBar" id="selection_header_bar">
<style>
<class name="selection-mode"/>
</style>
- <child>
+ <child type="end">
<object class="GtkButton" id="selection_cancel_button">
- <property name="visible">True</property>
- <property name="valign">center</property>
<property name="use-underline">True</property>
<property name="label" translatable="yes">_Cancel</property>
<signal name="clicked" handler="on_selection_cancel_button_clicked"/>
- <style>
- <class name="text-button"/>
- </style>
</object>
- <packing>
- <property name="pack-type">end</property>
- </packing>
</child>
- <child>
+ <child type="end">
<object class="GtkToggleButton" id="selection_search_button">
- <property name="visible">True</property>
+ <property name="icon-name">edit-find-symbolic</property>
+ <property name="tooltip-text" translatable="yes">Search</property>
<property name="active" bind-source="search_bar" bind-property="search-mode-enabled"
bind-flags="sync-create|bidirectional"/>
<accelerator key="F" modifiers="GDK_CONTROL_MASK" signal="clicked"/>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="icon_name">edit-find-symbolic</property>
- </object>
- </child>
- <child internal-child="accessible">
- <object class="AtkObject">
- <property name="AtkObject::accessible-name" translatable="yes">Search</property>
- </object>
- </child>
</object>
- <packing>
- <property name="pack_type">end</property>
- </packing>
</child>
</object>
</child>
</object>
</child>
<child>
- <object class="HdySearchBar" id="search_bar">
- <property name="visible">True</property>
+ <object class="GtkSearchBar" id="search_bar">
<property name="search_mode_enabled">False</property>
<child>
- <object class="HdyClamp">
- <property name="visible">True</property>
+ <object class="GtkClamp">
<property name="maximum_size">400</property>
<property name="tightening_threshold">300</property>
<child>
<object class="GtkSearchEntry" id="search_entry">
- <property name="visible">True</property>
<property name="placeholder-text" translatable="yes">Search history</property>
<property name="primary_icon_name">edit-find-symbolic</property>
<property name="primary_icon_activatable">False</property>
@@ -148,31 +82,32 @@
</child>
<child>
<object class="GtkStack" id="history_presentation_stack">
- <property name="visible">True</property>
<property name="vexpand">True</property>
<child>
<object class="GtkScrolledWindow" id="history_scrolled_window">
- <property name="visible">True</property>
<signal name="edge-reached" handler="on_edge_reached" object="EphyHistoryDialog"
swapped="no"/>
<child>
- <object class="HdyClamp">
- <property name="visible">True</property>
- <property name="margin_start">6</property>
- <property name="margin_end">6</property>
- <property name="maximum_size">1024</property>
+ <object class="GtkViewport">
+ <property name="scroll-to-focus">True</property>
<child>
- <object class="GtkListBox" id="listbox">
- <property name="visible">True</property>
- <property name="margin_top">6</property>
- <property name="margin_bottom">6</property>
- <property name="valign">start</property>
- <property name="selection_mode">none</property>
- <property name="activate_on_single_click">True</property>
- <signal name="key-press-event" handler="on_listbox_key_press_event" swapped="no"/>
- <signal name="row-activated" handler="on_listbox_row_activated"/>
- <style>
- <class name="content"/>
- </style>
+ <object class="AdwClamp">
+ <property name="margin_start">6</property>
+ <property name="margin_end">6</property>
+ <property name="maximum_size">1024</property>
+ <child>
+ <object class="GtkListBox" id="listbox">
+ <property name="margin_top">6</property>
+ <property name="margin_bottom">6</property>
+ <property name="valign">start</property>
+ <property name="selection_mode">none</property>
+ <property name="activate_on_single_click">True</property>
+ <signal name="key-press-event" handler="on_listbox_key_press_event"
swapped="no"/>
+ <signal name="row-activated" handler="on_listbox_row_activated"/>
+ <style>
+ <class name="boxed-list"/>
+ </style>
+ </object>
+ </child>
</object>
</child>
</object>
@@ -180,20 +115,16 @@
</object>
</child>
<child>
- <object class="GtkSpinner" id="loading_spinner">
- <property name="visible">True</property>
- </object>
+ <object class="GtkSpinner" id="loading_spinner"/>
</child>
<child>
- <object class="HdyStatusPage" id="empty_history_message">
- <property name="visible">True</property>
+ <object class="AdwStatusPage" id="empty_history_message">
<property name="title" translatable="yes">The History is Empty</property>
<property name="description" translatable="yes">Visited pages will be listed here</property>
</object>
</child>
<child>
- <object class="HdyStatusPage" id="no_search_results_message">
- <property name="visible">True</property>
+ <object class="AdwStatusPage" id="no_search_results_message">
<property name="icon_name">edit-find-symbolic</property>
<property name="title" translatable="yes">No Results Found</property>
<property name="description" translatable="yes">Try a different search</property>
@@ -203,37 +134,26 @@
</child>
<child>
<object class="GtkStack" id="action_bars_stack">
- <property name="visible">True</property>
- <property name="transition-type">GTK_STACK_TRANSITION_TYPE_CROSSFADE</property>
+ <property name="transition-type">crossfade</property>
<child>
<object class="GtkActionBar" id="regular_action_bar">
- <property name="visible">True</property>
- <child>
+ <child type="end">
<object class="GtkButton" id="clear_all_button">
- <property name="visible">True</property>
- <property name="receives_default">True</property>
<property name="use-underline">True</property>
<property name="label" translatable="yes">_Clear All</property>
<signal name="clicked" handler="on_clear_all_button_clicked"/>
<accelerator key="Delete" modifiers="GDK_SHIFT_MASK" signal="clicked"/>
<style>
<class name="destructive-action"/>
- <class name="image-button"/>
</style>
</object>
- <packing>
- <property name="pack-type">end</property>
- </packing>
</child>
</object>
</child>
<child>
<object class="GtkActionBar" id="selection_action_bar">
- <property name="visible">True</property>
- <child>
+ <child type="end">
<object class="GtkButton" id="selection_delete_button">
- <property name="visible">True</property>
- <property name="receives_default">True</property>
<property name="sensitive">False</property>
<property name="use_underline">True</property>
<property name="label" translatable="yes">_Delete</property>
@@ -242,14 +162,9 @@
<class name="destructive-action"/>
</style>
</object>
- <packing>
- <property name="pack-type">end</property>
- </packing>
</child>
<child>
<object class="GtkButton" id="selection_open_button">
- <property name="visible">True</property>
- <property name="receives_default">True</property>
<property name="sensitive">False</property>
<property name="use_underline">True</property>
<property name="label" translatable="yes">_Open</property>
diff --git a/src/resources/gtk/page-menu-popover.ui b/src/resources/gtk/page-menu-popover.ui
index 0e1b5b786..592844f92 100644
--- a/src/resources/gtk/page-menu-popover.ui
+++ b/src/resources/gtk/page-menu-popover.ui
@@ -1,374 +1,178 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
+ <menu id="menu">
+ <section>
+ <item>
+ <attribute name="custom">zoom</attribute>
+ </item>
+ <item>
+ <attribute name="custom">header</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">_Run in Background</attribute>
+ <attribute name="action">app.run-in-background</attribute>
+ <attribute name="hidden-when">action-disabled</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">_New Window</attribute>
+ <attribute name="action">app.new-window</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">New _Incognito Window</attribute>
+ <attribute name="action">app.new-incognito</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Reopen Closed _Tab</attribute>
+ <attribute name="action">app.reopen-closed-tab</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_History</attribute>
+ <attribute name="action">app.history</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Firefox _Sync</attribute>
+ <attribute name="action">app.firefox-sync-dialog</attribute>
+ </item>
+ <submenu>
+ <attribute name="label" translatable="yes">I_mport and Export</attribute>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">I_mport Bookmarks…</attribute>
+ <attribute name="action">app.import-bookmarks</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">E_xport Bookmarks…</attribute>
+ <attribute name="action">app.export-bookmarks</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Import _Passwords…</attribute>
+ <attribute name="action">app.import-passwords</attribute>
+ </item>
+ </section>
+ </submenu>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Install Site as Web _Application…</attribute>
+ <attribute name="action">win.save-as-application</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Open Appli_cation Manager</attribute>
+ <attribute name="action">win.open-application-manager</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">E_xtensions</attribute>
+ <attribute name="action">win.extensions</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">_Override Text Encoding…</attribute>
+ <attribute name="action">win.encoding</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Pr_eferences</attribute>
+ <attribute name="action">app.preferences</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_Keyboard Shortcuts</attribute>
+ <attribute name="action">app.shortcuts</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_Help</attribute>
+ <attribute name="action">app.help</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_About Web</attribute>
+ <attribute name="action">app.about</attribute>
+ </item>
+ </section>
+ </menu>
<object class="GtkPopoverMenu" id="page-menu-popover">
- <child>
- <object class="GtkBox">
- <property name="margin-top">12</property>
- <property name="orientation">vertical</property>
- <property name="visible">True</property>
- <property name="spacing">6</property>
+ <property name="menu-model">menu</property>
+ <child type="zoom">
+ <object class="GtkBox" id="zoom-box">
+ <property name="orientation">horizontal</property>
+ <property name="homogeneous">True</property>
+ <style>
+ <class name="linked"/>
+ <class name="page-menu-zoom-box"/>
+ </style>
<child>
- <object class="GtkBox" id="zoom-box">
- <property name="visible">True</property>
- <property name="orientation">horizontal</property>
- <property name="homogeneous">True</property>
- <property name="margin-start">12</property>
- <property name="margin-end">12</property>
- <style>
- <class name="linked"/>
- <class name="page-menu-zoom-box"/>
- </style>
- <child>
- <object class="GtkButton">
- <property name="tooltip_text" translatable="yes" context="tooltip">Zoom Out</property>
- <property name="action-name">win.zoom-out</property>
- <property name="visible">True</property>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="icon_name">zoom-out-symbolic</property>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkButton">
- <property name="tooltip_text" translatable="yes">Restore Zoom</property>
- <property name="action-name">win.zoom-normal</property>
- <property name="visible">True</property>
- <child>
- <object class="GtkLabel" id="zoom-level">
- <property name="visible">True</property>
- <property name="width-chars">5</property>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkButton">
- <property name="tooltip_text" translatable="yes" context="tooltip">Zoom In</property>
- <property name="action-name">win.zoom-in</property>
- <property name="visible">True</property>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="icon_name">zoom-in-symbolic</property>
- </object>
- </child>
- </object>
- </child>
+ <object class="GtkButton">
+ <property name="tooltip_text" translatable="yes" context="tooltip">Zoom Out</property>
+ <property name="icon_name">zoom-out-symbolic</property>
+ <property name="action-name">win.zoom-out</property>
</object>
</child>
<child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="orientation">horizontal</property>
- <property name="spacing">6</property>
- <property name="homogeneous">True</property>
- <property name="margin-start">12</property>
- <property name="margin-end">12</property>
+ <object class="GtkButton">
+ <property name="tooltip_text" translatable="yes">Restore Zoom</property>
+ <property name="action-name">win.zoom-normal</property>
<child>
- <object class="GtkModelButton">
- <property name="tooltip_text" translatable="yes">Print…</property>
- <property name="action-name">win.print</property>
- <property name="iconic">True</property>
- <property name="centered">True</property>
- <property name="icon">print</property>
+ <object class="GtkLabel" id="zoom-level">
<property name="visible">True</property>
- </object>
- </child>
- <child>
- <object class="GtkModelButton">
- <property name="tooltip_text" translatable="yes">Find…</property>
- <property name="action-name">win.find</property>
- <property name="iconic">True</property>
- <property name="centered">True</property>
- <property name="icon">find</property>
- <property name="visible">True</property>
- </object>
- </child>
- <child>
- <object class="GtkModelButton">
- <property name="tooltip_text" translatable="yes">Fullscreen</property>
- <property name="action-name">win.fullscreen</property>
- <property name="iconic">True</property>
- <property name="centered">True</property>
- <property name="icon">fullscreen</property>
- <property name="visible">True</property>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="combined_stop_reload_button">
- <property name="tooltip_text" translatable="yes">Reload</property>
- <property name="action-name">toolbar.combined-stop-reload</property>
- <property name="visible">True</property>
- <style>
- <class name="image-button"/>
- </style>
- <child>
- <object class="GtkImage" id="combined_stop_reload_image">
- <property name="visible">True</property>
- <property name="icon-name">view-refresh-symbolic</property>
- <property name="icon-size">1</property>
- </object>
- </child>
+ <property name="width-chars">5</property>
</object>
</child>
</object>
</child>
<child>
- <object class="GtkBox">
- <property name="orientation">vertical</property>
- <property name="visible">True</property>
- <style>
- <class name="page-menu-contents"/>
- </style>
-
- <!-- FRAGILE: These buttons are manually removed for non app mode in ephy-header-bar.c. -->
- <child>
- <object class="GtkSeparator" id="run-in-background-separator">
- <property name="orientation">horizontal</property>
- <property name="margin-top">6</property>
- <property name="margin-bottom">6</property>
- <property name="visible">True</property>
- </object>
- </child>
- <child>
- <object class="GtkModelButton" id="run-in-background-button">
- <property name="text" translatable="yes">_Run in Background</property>
- <property name="action-name">app.run-in-background</property>
- <property name="visible">True</property>
- </object>
- </child>
-
- <!-- FRAGILE: These buttons are manually removed for app mode in ephy-header-bar.c. -->
- <child>
- <object class="GtkSeparator" id="new-window-separator">
- <property name="orientation">horizontal</property>
- <property name="margin-top">6</property>
- <property name="margin-bottom">6</property>
- <property name="visible">True</property>
- </object>
- </child>
- <child>
- <object class="GtkModelButton" id="new-window-button">
- <property name="text" translatable="yes">_New Window</property>
- <property name="action-name">app.new-window</property>
- <property name="visible">True</property>
- </object>
- </child>
- <child>
- <object class="GtkModelButton" id="new-incognito-window-button">
- <property name="text" translatable="yes">New _Incognito Window</property>
- <property name="action-name">app.new-incognito</property>
- <property name="visible">True</property>
- </object>
- </child>
- <child>
- <object class="GtkSeparator">
- <property name="orientation">horizontal</property>
- <property name="margin-top">6</property>
- <property name="margin-bottom">6</property>
- <property name="visible">True</property>
- </object>
- </child>
- <!-- FRAGILE: This button is manually removed for app mode in ephy-header-bar.c. -->
- <child>
- <object class="GtkModelButton" id="reopen-closed-tab-button">
- <property name="text" translatable="yes">Reopen Closed _Tab</property>
- <property name="action-name">app.reopen-closed-tab</property>
- <property name="visible">True</property>
- </object>
- </child>
- <child>
- <object class="GtkModelButton">
- <property name="text" translatable="yes">_History</property>
- <property name="action-name">app.history</property>
- <property name="visible">True</property>
- </object>
- </child>
- <!-- FRAGILE: These buttons are manually removed for app mode in ephy-header-bar.c. -->
- <child>
- <object class="GtkSeparator" id="firefox-sync-separator">
- <property name="orientation">horizontal</property>
- <property name="margin-top">6</property>
- <property name="margin-bottom">6</property>
- <property name="visible">True</property>
- </object>
- </child>
- <child>
- <object class="GtkModelButton" id="firefox-sync-button">
- <property name="text" translatable="yes">Firefox _Sync</property>
- <property name="action-name">app.firefox-sync-dialog</property>
- <property name="visible">True</property>
- </object>
- </child>
- <child>
- <object class="GtkModelButton" id="import-export-menu">
- <property name="text" translatable="yes">I_mport and Export</property>
- <property name="visible">True</property>
- <property name="menu-name">import_export</property>
- </object>
- </child>
- <!-- FRAGILE: These buttons are manually removed for app mode in ephy-header-bar.c. -->
- <child>
- <object class="GtkSeparator" id="save-as-application-separator">
- <property name="orientation">horizontal</property>
- <property name="margin-top">6</property>
- <property name="margin-bottom">6</property>
- <property name="visible">True</property>
- </object>
- </child>
- <child>
- <object class="GtkModelButton" id="save-as-application-button">
- <property name="text" translatable="yes">Install Site as Web _Application…</property>
- <property name="action-name">win.save-as-application</property>
- <property name="visible">True</property>
- </object>
- </child>
- <child>
- <object class="GtkModelButton" id="application-manager-button">
- <property name="text" translatable="yes">Open Appli_cation Manager</property>
- <property name="action-name">win.open-application-manager</property>
- <property name="visible">True</property>
- </object>
- </child>
- <child>
- <object class="GtkModelButton" id="extensions-button">
- <property name="text" translatable="yes">E_xtensions</property>
- <property name="action-name">win.extensions</property>
- <property name="visible">True</property>
- </object>
- </child>
- <!-- FRAGILE: These buttons are manually removed for app mode in ephy-header-bar.c. -->
- <child>
- <object class="GtkSeparator" id="override-text-encoding-separator">
- <property name="orientation">horizontal</property>
- <property name="margin-top">6</property>
- <property name="margin-bottom">6</property>
- <property name="visible">True</property>
- </object>
- </child>
- <child>
- <object class="GtkModelButton" id="override-text-encoding-button">
- <property name="text" translatable="yes">_Override Text Encoding…</property>
- <property name="action-name">win.encoding</property>
- <property name="visible">True</property>
- </object>
- </child>
- <child>
- <object class="GtkSeparator">
- <property name="orientation">horizontal</property>
- <property name="margin-top">6</property>
- <property name="margin-bottom">6</property>
- <property name="visible">True</property>
- </object>
- </child>
- <child>
- <object class="GtkModelButton">
- <property name="text" translatable="yes">Pr_eferences</property>
- <property name="action-name">app.preferences</property>
- <property name="visible">True</property>
- </object>
- </child>
- <!-- FRAGILE: This button is manually removed for app mode in ephy-header-bar.c. -->
- <child>
- <object class="GtkModelButton" id="keyboard-shortcuts-button">
- <property name="text" translatable="yes">_Keyboard Shortcuts</property>
- <property name="action-name">app.shortcuts</property>
- <property name="visible">True</property>
- </object>
- </child>
- <!-- FRAGILE: This button is manually removed for app mode/Pantheon in ephy-header-bar.c. -->
- <child>
- <object class="GtkModelButton" id="help-button">
- <property name="text" translatable="yes">_Help</property>
- <property name="action-name">app.help</property>
- <property name="visible">True</property>
- </object>
- </child>
- <!-- FRAGILE: This button is manually removed for Pantheon in ephy-header-bar.c. -->
- <child>
- <object class="GtkModelButton" id="about-button">
- <property name="text" translatable="yes">_About Web</property>
- <property name="action-name">app.about</property>
- <property name="visible">True</property>
- </object>
- </child>
-
+ <object class="GtkButton">
+ <property name="tooltip_text" translatable="yes" context="tooltip">Zoom In</property>
+ <property name="icon_name">zoom-in-symbolic</property>
+ <property name="action-name">win.zoom-in</property>
</object>
</child>
</object>
- <packing>
- <property name="submenu">main</property>
- </packing>
</child>
- <child>
+ <child type="header">
<object class="GtkBox">
- <property name="margin-top">12</property>
- <property name="orientation">vertical</property>
- <property name="visible">True</property>
- <style>
- <class name="page-menu-contents"/>
- </style>
- <child>
- <object class="GtkModelButton">
- <property name="text" translatable="yes">Import and Export</property>
- <property name="visible">True</property>
- <property name="centered">True</property>
- <property name="menu-name">main</property>
- <property name="inverted">True</property>
- <property name="margin-bottom">6</property>
- </object>
- </child>
+ <property name="orientation">horizontal</property>
+ <property name="spacing">6</property>
+ <property name="homogeneous">True</property>
+ <property name="margin-top">6</property>
<child>
- <object class="GtkModelButton">
- <property name="text" translatable="yes">I_mport Bookmarks…</property>
- <property name="action-name">app.import-bookmarks</property>
- <property name="visible">True</property>
+ <object class="GtkButton">
+ <property name="tooltip_text" translatable="yes">Print…</property>
+ <property name="icon-name">document-print-symbolic</property>
+ <property name="action-name">win.print</property>
</object>
</child>
<child>
- <object class="GtkModelButton">
- <property name="text" translatable="yes">E_xport Bookmarks…</property>
- <property name="action-name">app.export-bookmarks</property>
- <property name="visible">True</property>
+ <object class="GtkButton">
+ <property name="tooltip_text" translatable="yes">Find…</property>
+ <property name="icon-name">edit-find-symbolic</property>
+ <property name="action-name">win.find</property>
</object>
</child>
<child>
- <object class="GtkSeparator">
- <property name="orientation">horizontal</property>
- <property name="margin-top">6</property>
- <property name="margin-bottom">6</property>
- <property name="visible">True</property>
+ <object class="GtkButton">
+ <property name="tooltip_text" translatable="yes">Fullscreen</property>
+ <property name="icon-name">view-fullscreen-symbolic</property>
+ <property name="action-name">win.fullscreen</property>
</object>
</child>
<child>
- <object class="GtkModelButton">
- <property name="text" translatable="yes">Import _Passwords…</property>
- <property name="action-name">app.import-passwords</property>
- <property name="visible">True</property>
+ <object class="GtkButton" id="combined_stop_reload_button">
+ <property name="tooltip_text" translatable="yes">Reload</property>
+ <property name="icon-name">view-refresh-symbolic</property>
+ <property name="action-name">toolbar.combined-stop-reload</property>
</object>
</child>
</object>
- <packing>
- <property name="submenu">import_export</property>
- </packing>
</child>
</object>
- <object class="GThemedIcon" id="zoom_out">
- <property name="name">zoom-out-symbolic</property>
- </object>
- <object class="GThemedIcon" id="zoom_in">
- <property name="name">zoom-in-symbolic</property>
- </object>
- <object class="GThemedIcon" id="print">
- <property name="name">document-print-symbolic</property>
- </object>
- <object class="GThemedIcon" id="find">
- <property name="name">system-search-symbolic</property>
- </object>
- <object class="GThemedIcon" id="fullscreen">
- <property name="name">view-fullscreen-symbolic</property>
- </object>
</interface>
diff --git a/src/resources/gtk/pages-button.ui b/src/resources/gtk/pages-button.ui
index b08d4c320..c42512a02 100644
--- a/src/resources/gtk/pages-button.ui
+++ b/src/resources/gtk/pages-button.ui
@@ -2,17 +2,17 @@
<interface>
<!-- interface-requires gtk+ 3.16 -->
<template class="EphyPagesButton" parent="GtkButton">
+ <style>
+ <class name="image-button"/>
+ </style>
<child>
<object class="GtkOverlay">
- <property name="visible">True</property>
+ <property name="can-focus">False</property>
<child>
- <object class="GtkImage" id="pages_icon">
- <property name="visible">True</property>
- </object>
+ <object class="GtkImage" id="pages_icon"/>
</child>
<child type="overlay">
<object class="GtkLabel" id="pages_label">
- <property name="visible">True</property>
<property name="width-chars">2</property>
<attributes>
<attribute name="font-features" value="tnum=1"/>
@@ -20,9 +20,6 @@
<attribute name="weight" value="ultrabold"/>
</attributes>
</object>
- <packing>
- <property name="pass_through">True</property>
- </packing>
</child>
</object>
</child>
diff --git a/src/resources/gtk/web-extensions-dialog.ui b/src/resources/gtk/web-extensions-dialog.ui
index 67dd0b025..85087bdb6 100644
--- a/src/resources/gtk/web-extensions-dialog.ui
+++ b/src/resources/gtk/web-extensions-dialog.ui
@@ -2,70 +2,56 @@
<!-- Generated with glade 3.38.0 -->
<interface>
<requires lib="gtk+" version="3.20"/>
- <template class="EphyWebExtensionDialog" parent="HdyWindow">
+ <template class="EphyWebExtensionDialog" parent="GtkWindow">
<property name="modal">True</property>
- <property name="window-position">center-on-parent</property>
<property name="default-width">640</property>
<property name="default-height">400</property>
<property name="destroy-with_parent">True</property>
- <property name="type-hint">dialog</property>
<property name="title" translatable="yes">Extensions</property>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
+ <child type="titlebar">
+ <object class="GtkHeaderBar">
<child>
- <object class="HdyHeaderBar">
- <property name="visible">True</property>
- <property name="show-close-button">True</property>
- <property name="title" translatable="yes">Extensions</property>
- <child>
- <object class="GtkButton" id="add_button">
- <property name="visible">True</property>
- <property name="use-underline">True</property>
- <property name="label" translatable="yes">_Add…</property>
- <signal name="clicked" handler="on_add_button_clicked"/>
- </object>
- </child>
+ <object class="GtkButton" id="add_button">
+ <property name="icon-name">list-add-symbolic</property>
+ <property name="tooltip-text" translatable="yes">Add an Extension</property>
+ <signal name="clicked" handler="on_add_button_clicked"/>
</object>
</child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkStack" id="stack">
<child>
- <object class="GtkStack" id="stack">
- <property name="visible">True</property>
- <property name="vexpand">True</property>
- <child>
- <object class="HdyStatusPage">
- <property name="visible">True</property>
+ <object class="GtkStackPage">
+ <property name="name">empty</property>
+ <property name="child">
+ <object class="AdwStatusPage">
<property name="icon-name">application-x-addon-symbolic</property>
<property name="title" translatable="yes">No Extensions Installed</property>
<property name="description" translatable="yes">Add some extensions to display them
here.</property>
</object>
- <packing>
- <property name="name">empty</property>
- </packing>
- </child>
- <child>
- <object class="HdyPreferencesPage">
- <property name="visible">True</property>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">list</property>
+ <property name="child">
+ <object class="AdwPreferencesPage">
<child>
- <object class="HdyPreferencesGroup">
- <property name="visible">True</property>
+ <object class="AdwPreferencesGroup">
<child>
<object class="GtkListBox" id="listbox">
- <property name="visible">True</property>
<property name="selection-mode">none</property>
<style>
- <class name="content"/>
+ <class name="boxed-list"/>
</style>
</object>
</child>
</object>
</child>
</object>
- <packing>
- <property name="name">list</property>
- </packing>
- </child>
+ </property>
</object>
</child>
</object>
diff --git a/src/webextension/api/pageaction.c b/src/webextension/api/pageaction.c
index 1f2d53ff4..7ee94ec90 100644
--- a/src/webextension/api/pageaction.c
+++ b/src/webextension/api/pageaction.c
@@ -57,6 +57,7 @@ pageaction_handler_seticon (EphyWebExtension *self,
GtkWidget *action;
g_autoptr (JSCValue) path = NULL;
g_autoptr (GdkPixbuf) pixbuf = NULL;
+ GtkWidget *child;
action = pageaction_get_action (self, args);
if (!action)
@@ -65,7 +66,10 @@ pageaction_handler_seticon (EphyWebExtension *self,
path = jsc_value_object_get_property (args, "path");
pixbuf = ephy_web_extension_load_pixbuf (self, jsc_value_to_string (path));
- gtk_image_set_from_pixbuf (GTK_IMAGE (gtk_bin_get_child (GTK_BIN (action))), pixbuf);
+ /* action can be a GtkButton or GtkMenuButton. They both have a "child" property */
+ g_object_get (action, "child", &child, NULL);
+
+ gtk_image_set_from_pixbuf (GTK_IMAGE (child), pixbuf);
return NULL;
}
@@ -94,7 +98,7 @@ pageaction_handler_gettitle (EphyWebExtension *self,
JSCValue *args)
{
GtkWidget *action;
- g_autofree char *title = NULL;
+ const char *title = NULL;
action = pageaction_get_action (self, args);
if (!action)
diff --git a/src/webextension/ephy-web-extension-manager.c b/src/webextension/ephy-web-extension-manager.c
index 4aaa9f9fe..db78f8697 100644
--- a/src/webextension/ephy-web-extension-manager.c
+++ b/src/webextension/ephy-web-extension-manager.c
@@ -26,7 +26,7 @@
#include "ephy-embed-utils.h"
#include "ephy-file-helpers.h"
#include "ephy-header-bar.h"
-#include "ephy-location-entry.h"
+//#include "ephy-location-entry.h"
#include "ephy-notification.h"
#include "ephy-settings.h"
#include "ephy-shell.h"
@@ -40,6 +40,7 @@
#include "api/runtime.h"
#include "api/tabs.h"
+#include <adwaita.h>
#include <json-glib/json-glib.h>
struct _EphyWebExtensionManager {
@@ -149,6 +150,16 @@ ephy_web_extension_manager_scan_directory (EphyWebExtensionManager *self,
}
}
+static void
+destroy_action (GtkWidget *action)
+{
+ GtkWidget *parent = gtk_widget_get_parent (action);
+
+ g_assert (GTK_IS_BOX (parent));
+
+ gtk_box_remove (GTK_BOX (parent), action);
+}
+
static void
ephy_web_extension_manager_constructed (GObject *object)
{
@@ -157,7 +168,7 @@ ephy_web_extension_manager_constructed (GObject *object)
self->background_web_views = g_hash_table_new (NULL, NULL);
self->page_action_map = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify)g_hash_table_destroy);
- self->browser_action_map = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify)gtk_widget_destroy);
+ self->browser_action_map = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify)destroy_action);
self->web_extensions = NULL;
ephy_web_extension_manager_scan_directory (self, dir);
@@ -282,11 +293,11 @@ ephy_web_extension_manager_uninstall (EphyWebExtensionManager *self,
ephy_web_extension_remove (web_extension);
ephy_web_extension_manager_remove_from_list (self, web_extension);
}
-
void
ephy_web_extension_manager_update_location_entry (EphyWebExtensionManager *self,
EphyWindow *window)
{
+/*
GtkWidget *title_widget;
EphyLocationEntry *lentry;
EphyTabView *tab_view = ephy_window_get_tab_view (EPHY_WINDOW (window));
@@ -312,6 +323,7 @@ ephy_web_extension_manager_update_location_entry (EphyWebExtensionManager *self,
if (action)
ephy_location_entry_page_action_add (lentry, action);
}
+*/
}
EphyWebView *
@@ -329,10 +341,12 @@ ephy_web_extension_manager_set_background_web_view (EphyWebExtensionManager *sel
g_hash_table_insert (self->background_web_views, web_extension, web_view);
}
-static gboolean
-page_action_clicked (GtkWidget *event_box,
- GdkEventButton *event,
- gpointer user_data)
+static void
+page_action_clicked (GtkGesture *gesture,
+ int n_press,
+ double x,
+ double y,
+ gpointer user_data)
{
EphyWebExtension *web_extension = EPHY_WEB_EXTENSION (user_data);
EphyShell *shell = ephy_shell_get_default ();
@@ -344,6 +358,8 @@ page_action_clicked (GtkWidget *event_box,
EphyWebExtensionManager *self = ephy_shell_get_web_extension_manager (shell);
WebKitWebView *web_view = WEBKIT_WEB_VIEW (ephy_web_extension_manager_get_background_web_view (self,
web_extension));
+ gtk_gesture_set_state (gesture, GTK_EVENT_SEQUENCE_CLAIMED);
+
json_builder_begin_object (builder);
json_builder_set_member_name (builder, "url");
json_builder_add_string_value (builder, ephy_web_view_get_address (view));
@@ -362,8 +378,6 @@ page_action_clicked (GtkWidget *event_box,
NULL,
NULL,
NULL);
-
- return GDK_EVENT_STOP;
}
static GtkWidget *
@@ -372,17 +386,20 @@ create_page_action_widget (EphyWebExtensionManager *self,
{
GtkWidget *image;
GtkWidget *event_box;
- GtkStyleContext *context;
+ GtkGesture *gesture;
/* Create new event box with page action */
- event_box = gtk_event_box_new ();
+ // FIXME: the bin is here so if some code does get_parent(), it won't fall
+ // apart. Remove this once we know nothing is doing this
+ event_box = adw_bin_new ();
image = gtk_image_new ();
- gtk_container_add (GTK_CONTAINER (event_box), image);
- g_signal_connect_object (event_box, "button_press_event", G_CALLBACK (page_action_clicked), web_extension,
0);
- gtk_widget_show_all (event_box);
+ adw_bin_set_child (ADW_BIN (event_box), image);
+ gtk_widget_add_css_class (image, "entry_icon");
- context = gtk_widget_get_style_context (image);
- gtk_style_context_add_class (context, "entry_icon");
+ gesture = gtk_gesture_click_new ();
+ g_signal_connect_object (gesture, "released",
+ G_CALLBACK (page_action_clicked), web_extension, 0);
+ gtk_widget_add_controller (image, GTK_EVENT_CONTROLLER (gesture));
return g_object_ref (event_box);
}
@@ -536,7 +553,7 @@ ephy_web_extension_manager_add_web_extension_to_webview (EphyWebExtensionManager
EphyWindow *window,
EphyWebView *web_view)
{
- GtkWidget *title_widget = GTK_WIDGET (ephy_header_bar_get_title_widget (EPHY_HEADER_BAR
(ephy_window_get_header_bar (window))));
+/* GtkWidget *title_widget = GTK_WIDGET (ephy_header_bar_get_title_widget (EPHY_HEADER_BAR
(ephy_window_get_header_bar (window))));
EphyLocationEntry *lentry = NULL;
if (EPHY_IS_LOCATION_ENTRY (title_widget)) {
@@ -554,22 +571,22 @@ ephy_web_extension_manager_add_web_extension_to_webview (EphyWebExtensionManager
g_hash_table_insert (table, web_view, g_steal_pointer (&page_action));
}
- }
+ }*/
update_translations (web_extension);
add_content_scripts (web_extension, web_view);
}
static void
-page_attached_cb (HdyTabView *tab_view,
- HdyTabPage *page,
+page_attached_cb (AdwTabView *tab_view,
+ AdwTabPage *page,
gint position,
gpointer user_data)
{
EphyWebExtension *web_extension = EPHY_WEB_EXTENSION (user_data);
- GtkWidget *child = hdy_tab_page_get_child (page);
+ GtkWidget *child = adw_tab_page_get_child (page);
EphyWebView *web_view = ephy_embed_get_web_view (EPHY_EMBED (child));
- EphyWindow *window = EPHY_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (tab_view)));
+ EphyWindow *window = EPHY_WINDOW (gtk_widget_get_root (GTK_WIDGET (tab_view)));
EphyWebExtensionManager *self = ephy_shell_get_web_extension_manager (ephy_shell_get_default ());
ephy_web_extension_manager_add_web_extension_to_webview (self, web_extension, window, web_view);
@@ -671,7 +688,7 @@ create_browser_popup (EphyWebExtension *web_extension)
g_autofree char *dir_name = NULL;
const char *popup;
- popover = gtk_popover_new (NULL);
+ popover = gtk_popover_new ();
web_view = create_web_extensions_webview (web_extension, TRUE);
@@ -680,8 +697,7 @@ create_browser_popup (EphyWebExtension *web_extension)
base_uri = g_strdup_printf ("ephy-webextension:///%s/", dir_name);
data = ephy_web_extension_get_resource_as_string (web_extension, popup);
webkit_web_view_load_html (WEBKIT_WEB_VIEW (web_view), (char *)data, base_uri);
- gtk_container_add (GTK_CONTAINER (popover), web_view);
- gtk_widget_show_all (web_view);
+ gtk_popover_set_child (GTK_POPOVER (popover), web_view);
return popover;
}
@@ -728,8 +744,7 @@ create_browser_action (EphyWebExtension *web_extension)
popover = create_browser_popup (web_extension);
gtk_menu_button_set_popover (GTK_MENU_BUTTON (button), popover);
- gtk_button_set_image (GTK_BUTTON (button), image);
- gtk_widget_set_visible (button, TRUE);
+ gtk_menu_button_set_child (GTK_MENU_BUTTON (button), image);
} else {
GdkPixbuf *pixbuf = ephy_web_extension_browser_action_get_icon (web_extension, 16);
@@ -738,11 +753,10 @@ create_browser_action (EphyWebExtension *web_extension)
if (pixbuf)
image = gtk_image_new_from_pixbuf (pixbuf);
else
- image = gtk_image_new_from_icon_name ("application-x-addon-symbolic", GTK_ICON_SIZE_BUTTON);
+ image = gtk_image_new_from_icon_name ("application-x-addon-symbolic");
g_signal_connect_object (button, "clicked", G_CALLBACK (on_browser_action_clicked), web_extension, 0);
- gtk_button_set_image (GTK_BUTTON (button), image);
- gtk_widget_set_visible (button, TRUE);
+ gtk_button_set_child (GTK_BUTTON (button), image);
}
return button;
@@ -754,7 +768,7 @@ ephy_web_extension_manager_add_web_extension_to_window (EphyWebExtensionManager
EphyWindow *window)
{
EphyTabView *tab_view = ephy_window_get_tab_view (EPHY_WINDOW (window));
- HdyTabView *view = ephy_tab_view_get_tab_view (tab_view);
+ AdwTabView *view = ephy_tab_view_get_tab_view (tab_view);
if (!ephy_web_extension_manager_is_active (self, web_extension))
return;
@@ -791,14 +805,14 @@ ephy_web_extension_manager_remove_web_extension_from_webview (EphyWebExtensionMa
EphyWindow *window,
EphyWebView *web_view)
{
- GtkWidget *title_widget = GTK_WIDGET (ephy_header_bar_get_title_widget (EPHY_HEADER_BAR
(ephy_window_get_header_bar (window))));
- EphyLocationEntry *lentry = NULL;
+// GtkWidget *title_widget = GTK_WIDGET (ephy_header_bar_get_title_widget (EPHY_HEADER_BAR
(ephy_window_get_header_bar (window))));
+// EphyLocationEntry *lentry = NULL;
GHashTableIter iter;
gpointer key;
GHashTable *table;
- if (EPHY_IS_LOCATION_ENTRY (title_widget))
- lentry = EPHY_LOCATION_ENTRY (title_widget);
+// if (EPHY_IS_LOCATION_ENTRY (title_widget))
+// lentry = EPHY_LOCATION_ENTRY (title_widget);
g_hash_table_iter_init (&iter, self->page_action_map);
while (g_hash_table_iter_next (&iter, &key, (gpointer) & table)) {
@@ -808,8 +822,8 @@ ephy_web_extension_manager_remove_web_extension_from_webview (EphyWebExtensionMa
g_hash_table_foreach_remove (table, remove_page_action, web_view);
}
- if (lentry)
- ephy_location_entry_page_action_clear (lentry);
+// if (lentry)
+// ephy_location_entry_page_action_clear (lentry);
remove_content_scripts (web_extension, web_view);
remove_custom_css (web_extension, web_view);
@@ -821,7 +835,7 @@ ephy_web_extension_manager_remove_web_extension_from_window (EphyWebExtensionMan
EphyWindow *window)
{
EphyTabView *tab_view = ephy_window_get_tab_view (EPHY_WINDOW (window));
- HdyTabView *view = ephy_tab_view_get_tab_view (tab_view);
+ AdwTabView *view = ephy_tab_view_get_tab_view (tab_view);
GtkWidget *browser_action_widget;
if (ephy_web_extension_manager_is_active (self, web_extension))
diff --git a/src/window-commands.c b/src/window-commands.c
index d101f0d93..86f1c3578 100644
--- a/src/window-commands.c
+++ b/src/window-commands.c
@@ -25,10 +25,10 @@
#include "window-commands.h"
-#include "ephy-add-bookmark-popover.h"
+//#include "ephy-add-bookmark-popover.h"
#include "ephy-bookmarks-export.h"
#include "ephy-bookmarks-import.h"
-#include "ephy-bookmarks-manager.h"
+//#include "ephy-bookmarks-manager.h"
#include "ephy-debug.h"
#include "ephy-embed-container.h"
#include "ephy-embed-prefs.h"
@@ -43,9 +43,9 @@
#include "ephy-flatpak-utils.h"
#include "ephy-gui.h"
#include "ephy-header-bar.h"
-#include "ephy-history-dialog.h"
+//#include "ephy-history-dialog.h"
#include "ephy-link.h"
-#include "ephy-location-entry.h"
+//#include "ephy-location-entry.h"
#include "ephy-password-import.h"
#include "ephy-prefs.h"
#include "ephy-session.h"
@@ -252,10 +252,10 @@ show_import_export_result (GtkWindow *parent,
if (destroy_parent)
g_signal_connect_swapped (info_dialog, "response",
- G_CALLBACK (gtk_widget_destroy), parent);
+ G_CALLBACK (gtk_window_destroy), parent);
g_signal_connect (info_dialog, "response",
- G_CALLBACK (gtk_widget_destroy), NULL);
+ G_CALLBACK (gtk_window_destroy), NULL);
gtk_window_present (GTK_WINDOW (info_dialog));
}
@@ -275,11 +275,11 @@ show_firefox_profile_selector_cb (GtkDialog *selector,
list_box = g_object_get_data (G_OBJECT (selector), "list_box");
row = gtk_list_box_get_selected_row (GTK_LIST_BOX (list_box));
- row_widget = gtk_bin_get_child (GTK_BIN (row));
+ row_widget = gtk_list_box_row_get_child (GTK_LIST_BOX_ROW (row));
selected_profile = g_object_steal_data (G_OBJECT (row_widget), "profile_path");
}
- gtk_widget_destroy (GTK_WIDGET (selector));
+ gtk_window_destroy (GTK_WINDOW (selector));
/* If there are multiple profiles, but the user didn't select one in
* the profile (he pressed Cancel), don't display the import info dialog
@@ -332,11 +332,9 @@ show_firefox_profile_selector (GtkWindow *parent,
gtk_widget_set_margin_bottom (label, 6);
gtk_list_box_insert (GTK_LIST_BOX (list_box), label, -1);
}
- gtk_container_add (GTK_CONTAINER (content_area), list_box);
+ gtk_box_append (GTK_BOX (content_area), list_box);
g_object_set_data (G_OBJECT (selector), "list_box", list_box);
- gtk_widget_show_all (content_area);
-
g_signal_connect (selector, "response",
G_CALLBACK (show_firefox_profile_selector_cb),
parent);
@@ -351,6 +349,7 @@ dialog_bookmarks_import_file_chooser_cb (GtkNativeDialog *file_chooser_dialog,
{
EphyBookmarksManager *manager = ephy_shell_get_bookmarks_manager (ephy_shell_get_default ());
g_autoptr (GError) error = NULL;
+ g_autoptr (GFile) file = NULL;
g_autofree char *filename = NULL;
gboolean imported;
@@ -359,7 +358,8 @@ dialog_bookmarks_import_file_chooser_cb (GtkNativeDialog *file_chooser_dialog,
if (response != GTK_RESPONSE_ACCEPT)
return;
- filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (file_chooser_dialog));
+ file = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (file_chooser_dialog));
+ filename = g_file_get_path (file);
imported = ephy_bookmarks_import (manager, filename, &error);
show_import_export_result (parent, imported, imported, error,
@@ -396,6 +396,7 @@ dialog_bookmarks_import_from_html_file_chooser_cb (GtkNativeDialog *file_chooser
{
EphyBookmarksManager *manager = ephy_shell_get_bookmarks_manager (ephy_shell_get_default ());
g_autoptr (GError) error = NULL;
+ g_autoptr (GFile) file = NULL;
g_autofree char *filename = NULL;
gboolean imported;
@@ -404,7 +405,8 @@ dialog_bookmarks_import_from_html_file_chooser_cb (GtkNativeDialog *file_chooser
if (response != GTK_RESPONSE_ACCEPT)
return;
- filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (file_chooser_dialog));
+ file = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (file_chooser_dialog));
+ filename = g_file_get_path (file);
imported = ephy_bookmarks_import_from_html (manager, filename, &error);
show_import_export_result (parent, imported, imported, error,
@@ -522,7 +524,7 @@ dialog_bookmarks_import_cb (GtkWindow *parent,
g_assert_not_reached ();
}
} else if (response == GTK_RESPONSE_CANCEL) {
- gtk_widget_destroy (GTK_WIDGET (parent));
+ gtk_window_destroy (GTK_WINDOW (parent));
}
}
@@ -562,9 +564,10 @@ window_cmd_import_bookmarks (GSimpleAction *action,
gtk_widget_set_margin_end (content_area, 30);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
+ gtk_widget_set_vexpand (hbox, TRUE);
label = gtk_label_new (_("From:"));
- gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0);
+ gtk_box_append (GTK_BOX (hbox), label);
tree_model = create_tree_model ();
combo_box = gtk_combo_box_new_with_model (GTK_TREE_MODEL (tree_model));
@@ -580,16 +583,16 @@ window_cmd_import_bookmarks (GSimpleAction *action,
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_box), cell_renderer, TRUE);
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo_box), cell_renderer,
"text", 0, NULL);
- gtk_box_pack_start (GTK_BOX (hbox), combo_box, FALSE, TRUE, 0);
+ gtk_box_append (GTK_BOX (hbox), combo_box);
- gtk_container_add (GTK_CONTAINER (content_area), hbox);
+ gtk_box_append (GTK_BOX (content_area), hbox);
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
g_signal_connect (dialog, "response",
G_CALLBACK (dialog_bookmarks_import_cb),
GTK_COMBO_BOX (combo_box));
- gtk_widget_show_all (dialog);
+ gtk_window_present (GTK_WINDOW (dialog));
}
static void
@@ -617,6 +620,7 @@ export_bookmarks_file_chooser_cb (GtkNativeDialog *dialog,
GtkWindow *parent)
{
EphyBookmarksManager *manager = ephy_shell_get_bookmarks_manager (ephy_shell_get_default ());
+ g_autoptr (GFile) file = NULL;
g_autofree char *filename = NULL;
gtk_native_dialog_destroy (dialog);
@@ -624,7 +628,8 @@ export_bookmarks_file_chooser_cb (GtkNativeDialog *dialog,
if (response != GTK_RESPONSE_ACCEPT)
return;
- filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
+ file = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (dialog));
+ filename = g_file_get_path (file);
ephy_bookmarks_export (g_object_ref (manager),
filename,
NULL,
@@ -646,7 +651,6 @@ window_cmd_export_bookmarks (GSimpleAction *action,
GTK_FILE_CHOOSER_ACTION_SAVE,
_("_Save"),
_("_Cancel")));
- gtk_file_chooser_set_show_hidden (dialog, TRUE);
/* Translators: Only translate the part before ".html" (e.g. "bookmarks") */
gtk_file_chooser_set_current_name (dialog, _("bookmarks.html"));
@@ -748,7 +752,7 @@ dialog_passwords_import_cb (GtkDialog *dialog,
g_assert_not_reached ();
}
} else {
- gtk_widget_destroy (GTK_WIDGET (dialog));
+ gtk_window_destroy (GTK_WINDOW (dialog));
}
}
@@ -804,9 +808,10 @@ window_cmd_import_passwords (GSimpleAction *action,
gtk_widget_set_margin_end (content_area, 30);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
+ gtk_widget_set_vexpand (hbox, TRUE);
label = gtk_label_new (_("From:"));
- gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0);
+ gtk_box_append (GTK_BOX (hbox), label);
tree_model = create_import_passwords_tree_model ();
@@ -829,19 +834,20 @@ window_cmd_import_passwords (GSimpleAction *action,
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_box), cell_renderer, TRUE);
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo_box), cell_renderer,
"text", 0, NULL);
- gtk_box_pack_start (GTK_BOX (hbox), combo_box, FALSE, TRUE, 0);
+ gtk_box_append (GTK_BOX (hbox), combo_box);
- gtk_container_add (GTK_CONTAINER (content_area), hbox);
+ gtk_box_append (GTK_BOX (content_area), hbox);
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
g_signal_connect (dialog, "response",
G_CALLBACK (dialog_passwords_import_cb),
GTK_COMBO_BOX (combo_box));
- gtk_widget_show_all (dialog);
+ gtk_window_present (GTK_WINDOW (dialog));
}
+/*
void
window_cmd_show_history (GSimpleAction *action,
GVariant *parameter,
@@ -854,7 +860,7 @@ window_cmd_show_history (GSimpleAction *action,
if (GTK_WINDOW (user_data) != gtk_window_get_transient_for (GTK_WINDOW (dialog)))
gtk_window_set_transient_for (GTK_WINDOW (dialog),
GTK_WINDOW (user_data));
- gtk_window_present_with_time (GTK_WINDOW (dialog), gtk_get_current_event_time ());
+ gtk_window_present (GTK_WINDOW (dialog));
}
void
@@ -869,7 +875,7 @@ window_cmd_show_firefox_sync (GSimpleAction *action,
if (GTK_WINDOW (user_data) != gtk_window_get_transient_for (GTK_WINDOW (dialog)))
gtk_window_set_transient_for (GTK_WINDOW (dialog),
GTK_WINDOW (user_data));
- gtk_window_present_with_time (GTK_WINDOW (dialog), gtk_get_current_event_time ());
+ gtk_window_present (GTK_WINDOW (dialog));
}
void
@@ -885,7 +891,15 @@ window_cmd_show_preferences (GSimpleAction *action,
gtk_window_set_transient_for (dialog,
GTK_WINDOW (user_data));
- gtk_window_present_with_time (dialog, gtk_get_current_event_time ());
+ gtk_window_present (dialog);
+}
+*/
+static void
+window_destroyed (GtkWidget *widget,
+ GtkWidget **widget_pointer)
+{
+ if (widget_pointer)
+ *widget_pointer = NULL;
}
void
@@ -922,7 +936,7 @@ window_cmd_show_shortcuts (GSimpleAction *action,
g_signal_connect (shortcuts_window,
"destroy",
- G_CALLBACK (gtk_widget_destroyed),
+ G_CALLBACK (window_destroyed),
&shortcuts_window);
g_object_unref (builder);
@@ -931,7 +945,7 @@ window_cmd_show_shortcuts (GSimpleAction *action,
if (gtk_window_get_transient_for (GTK_WINDOW (shortcuts_window)) != GTK_WINDOW (user_data))
gtk_window_set_transient_for (GTK_WINDOW (shortcuts_window), GTK_WINDOW (user_data));
- gtk_window_present_with_time (GTK_WINDOW (shortcuts_window), gtk_get_current_event_time ());
+ gtk_window_present (GTK_WINDOW (shortcuts_window));
}
void
@@ -1045,7 +1059,7 @@ window_cmd_show_about (GSimpleAction *action,
gtk_about_dialog_set_translator_credits (dialog, _("translator-credits"));
g_signal_connect (dialog, "response",
- G_CALLBACK (gtk_widget_destroy), NULL);
+ G_CALLBACK (gtk_window_destroy), NULL);
gtk_window_present (GTK_WINDOW (dialog));
g_free (comments);
@@ -1123,7 +1137,7 @@ window_cmd_navigation_new_tab (GSimpleAction *action,
back_uri = webkit_back_forward_list_item_get_original_uri (back_item);
embed = ephy_shell_new_tab (ephy_shell_get_default (),
- EPHY_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (embed))),
+ EPHY_WINDOW (gtk_widget_get_root (GTK_WIDGET (embed))),
NULL,
0);
@@ -1143,7 +1157,7 @@ window_cmd_navigation_new_tab (GSimpleAction *action,
forward_uri = webkit_back_forward_list_item_get_original_uri (forward_item);
embed = ephy_shell_new_tab (ephy_shell_get_default (),
- EPHY_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (embed))),
+ EPHY_WINDOW (gtk_widget_get_root (GTK_WIDGET (embed))),
embed,
0);
@@ -1176,7 +1190,7 @@ check_tab_has_modified_forms_confirm_cb (GtkDialog *dialog,
{
WebKitWebView *view = EPHY_GET_WEBKIT_WEB_VIEW_FROM_EMBED (embed);
- gtk_widget_destroy (GTK_WIDGET (dialog));
+ gtk_window_destroy (GTK_WINDOW (dialog));
if (response == GTK_RESPONSE_ACCEPT) {
gtk_widget_grab_focus (GTK_WIDGET (embed));
@@ -1191,7 +1205,7 @@ check_tab_has_modified_forms_and_reload_cb (EphyWebView *view,
GAsyncResult *result,
EphyEmbed *embed)
{
- EphyWindow *window = EPHY_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (view)));
+ EphyWindow *window = EPHY_WINDOW (gtk_widget_get_root (GTK_WIDGET (view)));
GtkWidget *dialog;
GtkWidget *button;
gboolean has_modified_forms;
@@ -1263,6 +1277,7 @@ window_cmd_reload_bypass_cache (GSimpleAction *action,
webkit_web_view_reload_bypass_cache (view);
}
+#if 0
void
window_cmd_combined_stop_reload (GSimpleAction *action,
GVariant *parameter,
@@ -1285,6 +1300,7 @@ window_cmd_combined_stop_reload (GSimpleAction *action,
g_variant_unref (state);
}
+#endif
void
window_cmd_page_menu (GSimpleAction *action,
@@ -1295,12 +1311,10 @@ window_cmd_page_menu (GSimpleAction *action,
EphyWindow *window = EPHY_WINDOW (user_data);
EphyHeaderBar *header_bar;
GtkMenuButton *button;
- GtkPopover *popover;
header_bar = EPHY_HEADER_BAR (ephy_window_get_header_bar (window));
button = GTK_MENU_BUTTON (ephy_header_bar_get_page_menu_button (header_bar));
- popover = gtk_menu_button_get_popover (button);
- gtk_popover_popup (popover);
+ gtk_menu_button_popup (button);
}
void
@@ -1324,6 +1338,7 @@ window_cmd_new_tab (GSimpleAction *action,
g_free (url);
}
+#if 0
static void
open_response_cb (GtkNativeDialog *dialog,
int response,
@@ -2218,6 +2233,7 @@ window_cmd_redo (GSimpleAction *action,
}
}
}
+
void
window_cmd_cut (GSimpleAction *action,
GVariant *parameter,
@@ -2296,6 +2312,7 @@ window_cmd_paste_as_plain_text (GSimpleAction *action,
webkit_web_view_execute_editing_command (EPHY_GET_WEBKIT_WEB_VIEW_FROM_EMBED (embed),
WEBKIT_EDITING_COMMAND_PASTE_AS_PLAIN_TEXT);
}
}
+#endif
void
window_cmd_delete (GSimpleAction *action,
@@ -2374,6 +2391,7 @@ window_cmd_find_next (GSimpleAction *action,
ephy_find_toolbar_find_next (toolbar);
}
+#if 0
void
window_cmd_open_bookmark (GSimpleAction *action,
GVariant *parameter,
@@ -2419,6 +2437,7 @@ window_cmd_bookmarks (GSimpleAction *action,
action_bar_end = EPHY_ACTION_BAR_END (ephy_header_bar_get_action_bar_end (header_bar));
ephy_action_bar_end_show_bookmarks (action_bar_end);
}
+#endif
void
window_cmd_show_downloads (GSimpleAction *action,
@@ -2463,6 +2482,7 @@ window_cmd_zoom_normal (GSimpleAction *action,
ephy_window_set_zoom (window, 0.0);
}
+#if 0
void
window_cmd_encoding (GSimpleAction *action,
GVariant *parameter,
@@ -2475,6 +2495,7 @@ window_cmd_encoding (GSimpleAction *action,
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (window));
gtk_window_present (GTK_WINDOW (dialog));
}
+#endif
void
window_cmd_page_source (GSimpleAction *action,
@@ -2518,7 +2539,7 @@ window_cmd_page_source (GSimpleAction *action,
new_embed = ephy_shell_new_tab
(ephy_shell_get_default (),
- EPHY_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (embed))),
+ EPHY_WINDOW (gtk_widget_get_root (GTK_WIDGET (embed))),
embed,
EPHY_NEW_TAB_JUMP | EPHY_NEW_TAB_APPEND_AFTER);
@@ -2585,7 +2606,6 @@ window_cmd_send_to (GSimpleAction *action,
EphyEmbed *embed;
char *command, *subject, *body;
const char *location, *title;
- GError *error = NULL;
embed = ephy_embed_container_get_active_child
(EPHY_EMBED_CONTAINER (window));
@@ -2604,10 +2624,7 @@ window_cmd_send_to (GSimpleAction *action,
g_free (subject);
g_free (body);
- if (!gtk_show_uri_on_window (GTK_WINDOW (window), command, gtk_get_current_event_time (), &error)) {
- g_warning ("Unable to send link by email: %s\n", error->message);
- g_error_free (error);
- }
+ gtk_show_uri (GTK_WINDOW (window), command, GDK_CURRENT_TIME);
g_free (command);
}
@@ -2620,6 +2637,7 @@ window_cmd_go_location (GSimpleAction *action,
ephy_window_activate_location (user_data);
}
+#if 0
void
window_cmd_location_search (GSimpleAction *action,
GVariant *parameter,
@@ -2627,6 +2645,7 @@ window_cmd_location_search (GSimpleAction *action,
{
ephy_window_location_search (user_data);
}
+#endif
void
window_cmd_go_home (GSimpleAction *action,
@@ -2654,6 +2673,7 @@ window_cmd_go_tabs_view (GSimpleAction *action,
ephy_window_open_pages_view (EPHY_WINDOW (user_data));
}
+#if 0
static void
enable_browse_with_caret_state_cb (GtkMessageDialog *dialog,
GtkResponseType response,
@@ -2717,6 +2737,7 @@ window_cmd_change_browse_with_caret_state (GSimpleAction *action,
g_settings_set_boolean (EPHY_SETTINGS_MAIN,
EPHY_PREFS_ENABLE_CARET_BROWSING, active);
}
+#endif
void
window_cmd_change_fullscreen_state (GSimpleAction *action,
@@ -2904,7 +2925,7 @@ window_cmd_homepage_new_tab (GSimpleAction *action,
g_assert (embed != NULL);
embed = ephy_shell_new_tab (ephy_shell_get_default (),
- EPHY_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (embed))),
+ EPHY_WINDOW (gtk_widget_get_root (GTK_WIDGET (embed))),
NULL,
0);
@@ -2917,18 +2938,26 @@ window_cmd_homepage_new_tab (GSimpleAction *action,
}
static void
-clipboard_text_received_cb (GtkClipboard *clipboard,
- const gchar *text,
+clipboard_text_received_cb (GdkClipboard *clipboard,
+ GAsyncResult *res,
EphyWindow *window)
{
EphyEmbed *embed;
EphyWebView *web_view;
+ g_autoptr (GError) error = NULL;
+ g_autofree char *text;
+
+ text = gdk_clipboard_read_text_finish (clipboard, res, &error);
+ if (error) {
+ g_warning ("Failed to the URL from clipboard: %s", error->message);
+ return;
+ }
embed = ephy_embed_container_get_active_child (EPHY_EMBED_CONTAINER (window));
g_assert (embed != NULL);
embed = ephy_shell_new_tab (ephy_shell_get_default (),
- EPHY_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (embed))),
+ EPHY_WINDOW (gtk_widget_get_root (GTK_WIDGET (embed))),
NULL,
0);
@@ -2947,12 +2976,13 @@ window_cmd_new_tab_from_clipboard (GSimpleAction *action,
gpointer user_data)
{
EphyWindow *ephy_window = EPHY_WINDOW (user_data);
- GtkClipboard *clipboard;
+ GdkClipboard *clipboard;
- clipboard = gtk_clipboard_get_default (gdk_display_get_default ());
- gtk_clipboard_request_text (clipboard,
- (GtkClipboardTextReceivedFunc)clipboard_text_received_cb,
- g_object_ref (ephy_window));
+ clipboard = gtk_widget_get_clipboard (GTK_WIDGET (ephy_window));
+ gdk_clipboard_read_text_async (clipboard,
+ NULL,
+ (GAsyncReadyCallback) clipboard_text_received_cb,
+ g_object_ref (ephy_window));
}
void
@@ -3010,5 +3040,5 @@ window_cmd_extensions (GSimpleAction *action,
dialog = ephy_web_extension_dialog_new ();
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (window));
- gtk_widget_show_all (dialog);
+ gtk_window_present (GTK_WINDOW (dialog));
}
diff --git a/tests/ephy-embed-shell-test.c b/tests/ephy-embed-shell-test.c
index a3107dac9..335bab82a 100644
--- a/tests/ephy-embed-shell-test.c
+++ b/tests/ephy-embed-shell-test.c
@@ -50,9 +50,9 @@ test_ephy_embed_shell_web_view_created (void)
g_signal_connect (embed_shell, "web-view-created",
G_CALLBACK (web_view_created_cb), &web_view_created);
- view = ephy_web_view_new ();
+ view = g_object_ref_sink (ephy_web_view_new ());
g_assert_true (web_view_created);
- gtk_widget_destroy (view);
+ g_object_unref (view);
}
int
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]