diff options
author | Tomasz Gąsior | 2017-06-03 02:27:11 +0200 |
---|---|---|
committer | Tomasz Gąsior | 2017-06-03 02:27:11 +0200 |
commit | cff3d30cbf155624177f7d43213e6f4b18c76b38 (patch) | |
tree | e70d85459290a5fc1084c3fc72a830d08d300c0e | |
parent | 63045ef08fbcfb406b34d28a3f0433442b392906 (diff) | |
download | aur-cff3d30cbf155624177f7d43213e6f4b18c76b38.tar.gz |
Package update, new patches.
- File chooser typeahead patch.
- Button icons patch.
- Menu button popover patch.
- Patches contain more code lines.
-rw-r--r-- | .SRCINFO | 19 | ||||
-rw-r--r-- | PKGBUILD | 50 | ||||
-rw-r--r-- | csd.patch | 362 | ||||
-rw-r--r-- | file-chooser.patch | 489 | ||||
-rw-r--r-- | general.patch | 66 | ||||
-rw-r--r-- | icons.patch | 75 | ||||
-rw-r--r-- | others.patch | 264 | ||||
-rw-r--r-- | print-dialog.patch | 96 |
8 files changed, 1259 insertions, 162 deletions
@@ -1,7 +1,7 @@ pkgbase = gtk3-mushrooms pkgdesc = GTK3 library with my modifications (see README). pkgver = 3.22.15 - pkgrel = 1 + pkgrel = 2 url = http://www.gtk.org/ install = gtk3.install arch = i686 @@ -10,8 +10,6 @@ pkgbase = gtk3-mushrooms makedepends = gobject-introspection makedepends = libcanberra makedepends = gtk-doc - makedepends = git - makedepends = colord makedepends = rest makedepends = libcups makedepends = glib2-docs @@ -29,30 +27,29 @@ pkgbase = gtk3-mushrooms depends = pango depends = shared-mime-info depends = at-spi2-atk - depends = wayland depends = libxkbcommon depends = adwaita-icon-theme depends = json-glib depends = librsvg - depends = wayland-protocols depends = desktop-file-utils depends = mesa - optdepends = libcanberra: gtk3-widget-factory demo optdepends = gtk3-print-backends: Printing provides = gtk3=3.22.15 conflicts = gtk3 source = csd.patch source = file-chooser.patch + source = icons.patch + source = others.patch source = print-dialog.patch - source = general.patch source = smaller-adwaita.css source = https://github.com/GNOME/gtk/archive/3.22.15.zip source = settings.ini source = gtk-query-immodules-3.0.hook - sha256sums = 0578c66a82b72dedf2fb5bc9c34c7218f73e40d32aa080ecdc5d4d545434df8a - sha256sums = cf284c35f6726a9d742bd701dde7541072021b0a02e0edf3dfac0ffce9304b41 - sha256sums = 77754d974a35797aae3c3513bf2a350ea207f8e8c5e02d4a2edbd162a3289e5a - sha256sums = d551b4d0710f680374298756171ecc2d6047e0660fd575de4e69cfbb2a19cd3d + sha256sums = b0b1cb2dc65e91acd473d7c3c966867ef9945ebf376268e41ce870e725e291c2 + sha256sums = b7d5da21262fe46275131799d3403489e803c8a303b3ee1650e88a4ddb6cae11 + sha256sums = cfb3121fb174ea8718a0dc184417338c5dfd819237e233d78bf43fb51bb06c91 + sha256sums = ac119908c6a763ece6114ae3b5cd5d8c232207ce734d975e0ada22379610fc7d + sha256sums = be7800734fc59e49c34ee2f806738eba8b606d46ac61bc3f50fa3cc69ae594f0 sha256sums = 1784e29ce5b811ed8673a29a89903751abb8bf68b3793f2e635c99851c165245 sha256sums = c3ab786779a6a74765a56e31aaa0fe9123feee222185f0c3ae94acfb2e61a0dd sha256sums = 01fc1d81dc82c4a052ac6e25bf9a04e7647267cc3017bc91f9ce3e63e5eb9202 @@ -1,11 +1,11 @@ # Maintainer: Tomasz Gąsior <tomaszgasior.pl> -# This file is based on original PKGBUILD of GTK3 package. +# This file is based on original PKGBUILD of GTK3 package. # https://git.archlinux.org/svntogit/packages.git/plain/trunk/PKGBUILD?h=packages/gtk3 pkgname=gtk3-mushrooms pkgver=3.22.15 -pkgrel=1 +pkgrel=2 pkgdesc="GTK3 library with my modifications (see README)." url="http://www.gtk.org/" install=gtk3.install @@ -15,21 +15,21 @@ arch=(i686 x86_64) license=(LGPL) depends=( atk cairo libxcursor libxinerama libxrandr libxi libepoxy gdk-pixbuf2 dconf - libxcomposite libxdamage pango shared-mime-info at-spi2-atk wayland libxkbcommon - adwaita-icon-theme json-glib librsvg wayland-protocols desktop-file-utils mesa + libxcomposite libxdamage pango shared-mime-info at-spi2-atk libxkbcommon + adwaita-icon-theme json-glib librsvg desktop-file-utils mesa ) optdepends=( - 'libcanberra: gtk3-widget-factory demo' 'gtk3-print-backends: Printing' ) makedepends=( - gobject-introspection libcanberra gtk-doc git colord rest libcups glib2-docs + gobject-introspection libcanberra gtk-doc rest libcups glib2-docs ) source=( "csd.patch" "file-chooser.patch" + "icons.patch" + "others.patch" "print-dialog.patch" - "general.patch" "smaller-adwaita.css" "https://github.com/GNOME/gtk/archive/$pkgver.zip" @@ -37,10 +37,11 @@ source=( "gtk-query-immodules-3.0.hook" ) sha256sums=( - "0578c66a82b72dedf2fb5bc9c34c7218f73e40d32aa080ecdc5d4d545434df8a" - "cf284c35f6726a9d742bd701dde7541072021b0a02e0edf3dfac0ffce9304b41" - "77754d974a35797aae3c3513bf2a350ea207f8e8c5e02d4a2edbd162a3289e5a" - "d551b4d0710f680374298756171ecc2d6047e0660fd575de4e69cfbb2a19cd3d" + "b0b1cb2dc65e91acd473d7c3c966867ef9945ebf376268e41ce870e725e291c2" + "b7d5da21262fe46275131799d3403489e803c8a303b3ee1650e88a4ddb6cae11" + "cfb3121fb174ea8718a0dc184417338c5dfd819237e233d78bf43fb51bb06c91" + "ac119908c6a763ece6114ae3b5cd5d8c232207ce734d975e0ada22379610fc7d" + "be7800734fc59e49c34ee2f806738eba8b606d46ac61bc3f50fa3cc69ae594f0" "1784e29ce5b811ed8673a29a89903751abb8bf68b3793f2e635c99851c165245" "c3ab786779a6a74765a56e31aaa0fe9123feee222185f0c3ae94acfb2e61a0dd" @@ -50,12 +51,13 @@ sha256sums=( prepare() { cd "$srcdir/gtk-$pkgver/gtk" - + patch -p 3 -i "$srcdir/csd.patch" patch -p 3 -i "$srcdir/file-chooser.patch" + patch -p 3 -i "$srcdir/icons.patch" + patch -p 3 -i "$srcdir/others.patch" patch -p 3 -i "$srcdir/print-dialog.patch" - patch -p 3 -i "$srcdir/general.patch" - + cat "$srcdir/smaller-adwaita.css" >> "theme/Adwaita/gtk.css" cat "$srcdir/smaller-adwaita.css" >> "theme/Adwaita/gtk-dark.css" @@ -67,21 +69,33 @@ build() { cd "$srcdir/gtk-$pkgver" CXX=/bin/false ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \ - --disable-schemas-compile --enable-x11-backend --enable-wayland-backend + --enable-x11-backend --disable-schemas-compile --disable-gtk-doc-html \ + --disable-installed-tests --disable-colord --disable-maintainer-mode \ + --disable-cups --disable-cloudprint --disable-papi --disable-man #https://bugzilla.gnome.org/show_bug.cgi?id=655517 sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool - make + # Make GTK building faster by skipping tests and examples. + IFS=; while read -r line; do + if [[ $line = "SUBDIRS = po po-properties \$(SRC_SUBDIRS) docs m4macros build" ]]; then + echo "SUBDIRS = po po-properties gdk gtk libgail-util modules m4macros build" + else + echo $line + fi; + done < Makefile > Makefile.modified + mv Makefile Makefile.original + mv Makefile.modified Makefile + + make -j 15 } package() { cd "$srcdir/gtk-$pkgver" - make DESTDIR="$pkgdir" install + make -j 15 DESTDIR="$pkgdir" install install -Dm644 ../settings.ini "$pkgdir/usr/share/gtk-3.0/settings.ini" install -Dm644 ../gtk-query-immodules-3.0.hook "$pkgdir/usr/share/libalpm/hooks/gtk-query-immodules-3.0.hook" rm "$pkgdir/usr/bin/gtk-update-icon-cache" - rm `find "$pkgdir/usr/lib/gtk-3.0/3.0.0/printbackends/"* | grep -v "\-lpr.so" | grep -v "\-file.so"` } diff --git a/csd.patch b/csd.patch index 1f433a9d27fd..45f997c4bb7b 100644 --- a/csd.patch +++ b/csd.patch @@ -1,19 +1,135 @@ -diff -U 5 -r -Z -B ./org/gtk/gtkheaderbar.c ./mod/gtk/gtkheaderbar.c ---- ./org/gtk/gtkheaderbar.c 2017-05-10 20:57:00.000000000 +0200 -+++ ./mod/gtk/gtkheaderbar.c 2017-05-11 18:54:47.870268717 +0200 -@@ -264,10 +264,11 @@ - } +diff -U 25 -r -Z -B ./org/gtk/gtkheaderbar.c ./mod/gtk/gtkheaderbar.c +--- ./org/gtk/gtkheaderbar.c 2017-05-11 21:09:33.000000000 +0200 ++++ ./mod/gtk/gtkheaderbar.c 2017-06-02 03:04:08.330400587 +0200 +@@ -301,51 +301,51 @@ + + direction = gtk_widget_get_direction (widget); + + g_object_get (gtk_widget_get_settings (widget), + "gtk-shell-shows-app-menu", &shown_by_shell, + "gtk-decoration-layout", &layout_desc, + NULL); + + if (priv->decoration_layout_set) + { + g_free (layout_desc); + layout_desc = g_strdup (priv->decoration_layout); + } + + window = GTK_WINDOW (toplevel); + + if (!shown_by_shell && gtk_window_get_application (window)) + menu = gtk_application_get_app_menu (gtk_window_get_application (window)); + else + menu = NULL; + + is_sovereign_window = (!gtk_window_get_modal (window) && + gtk_window_get_transient_for (window) == NULL && + gtk_window_get_type_hint (window) == GDK_WINDOW_TYPE_HINT_NORMAL); + +- tokens = g_strsplit (layout_desc, ":", 2); ++ tokens = g_strsplit ("menu", ":", 2); + if (tokens) + { + for (i = 0; i < 2; i++) + { + GtkWidget *box; + GtkWidget *separator; + int n_children = 0; + + if (tokens[i] == NULL) + break; + t = g_strsplit (tokens[i], ",", -1); + + separator = gtk_separator_new (GTK_ORIENTATION_VERTICAL); + gtk_widget_set_no_show_all (separator, TRUE); + gtk_style_context_add_class (gtk_widget_get_style_context (separator), "titlebutton"); + + box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, priv->spacing); + + for (j = 0; t[j]; j++) + { + GtkWidget *button = NULL; + GtkWidget *image = NULL; + AtkObject *accessible; + +@@ -362,52 +362,52 @@ + if (!_gtk_header_bar_update_window_icon (bar, window)) + { + gtk_widget_destroy (button); + priv->titlebar_icon = NULL; + button = NULL; + } + } + else if (strcmp (t[j], "menu") == 0 && + menu != NULL && + is_sovereign_window) + { + button = gtk_menu_button_new (); + gtk_widget_set_valign (button, GTK_ALIGN_CENTER); + gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (button), menu); + gtk_menu_button_set_use_popover (GTK_MENU_BUTTON (button), TRUE); + gtk_style_context_add_class (gtk_widget_get_style_context (button), "titlebutton"); + gtk_style_context_add_class (gtk_widget_get_style_context (button), "appmenu"); + image = gtk_image_new (); + gtk_container_add (GTK_CONTAINER (button), image); + gtk_widget_set_can_focus (button, FALSE); + gtk_widget_show_all (button); + accessible = gtk_widget_get_accessible (button); + if (GTK_IS_ACCESSIBLE (accessible)) + atk_object_set_name (accessible, _("Application menu")); + priv->titlebar_icon = image; +- if (!_gtk_header_bar_update_window_icon (bar, window)) +- gtk_image_set_from_icon_name (GTK_IMAGE (priv->titlebar_icon), "process-stop-symbolic", GTK_ICON_SIZE_MENU); ++ if (TRUE || !_gtk_header_bar_update_window_icon (bar, window)) ++ gtk_image_set_from_icon_name (GTK_IMAGE (priv->titlebar_icon), "view-more-symbolic", GTK_ICON_SIZE_MENU); + } + else if (strcmp (t[j], "minimize") == 0 && + is_sovereign_window) + { + button = gtk_button_new (); + gtk_widget_set_valign (button, GTK_ALIGN_CENTER); + gtk_style_context_add_class (gtk_widget_get_style_context (button), "titlebutton"); + gtk_style_context_add_class (gtk_widget_get_style_context (button), "minimize"); + image = gtk_image_new_from_icon_name ("window-minimize-symbolic", GTK_ICON_SIZE_MENU); + g_object_set (image, "use-fallback", TRUE, NULL); + gtk_container_add (GTK_CONTAINER (button), image); + gtk_widget_set_can_focus (button, FALSE); + gtk_widget_show_all (button); + g_signal_connect_swapped (button, "clicked", + G_CALLBACK (gtk_window_iconify), window); + accessible = gtk_widget_get_accessible (button); + if (GTK_IS_ACCESSIBLE (accessible)) + atk_object_set_name (accessible, _("Minimize")); + } + else if (strcmp (t[j], "maximize") == 0 && + gtk_window_get_resizable (window) && + is_sovereign_window) + { + const gchar *icon_name; + gboolean maximized = gtk_window_is_maximized (window); +@@ -1262,52 +1262,51 @@ + * gtk_header_bar_set_title: + * @bar: a #GtkHeaderBar + * @title: (allow-none): a title, or %NULL + * + * Sets the title of the #GtkHeaderBar. The title should help a user + * identify the current view. A good title should not include the + * application name. + * + * Since: 3.10 + */ void - _gtk_header_bar_update_window_buttons (GtkHeaderBar *bar) + gtk_header_bar_set_title (GtkHeaderBar *bar, + const gchar *title) { -+ return; GtkHeaderBarPrivate *priv = gtk_header_bar_get_instance_private (bar); - GtkWidget *widget = GTK_WIDGET (bar), *toplevel; - GtkWindow *window; - GtkTextDirection direction; - gchar *layout_desc; -@@ -1282,12 +1283,11 @@ + gchar *new_title; + + g_return_if_fail (GTK_IS_HEADER_BAR (bar)); + + new_title = g_strdup (title); g_free (priv->title); priv->title = new_title; @@ -27,10 +143,50 @@ diff -U 5 -r -Z -B ./org/gtk/gtkheaderbar.c ./mod/gtk/gtkheaderbar.c g_object_notify_by_pspec (G_OBJECT (bar), header_bar_props[PROP_TITLE]); } -diff -U 5 -r -Z -B ./org/gtk/gtkstylecontext.h ./mod/gtk/gtkstylecontext.h ---- ./org/gtk/gtkstylecontext.h 2017-05-10 20:57:00.000000000 +0200 -+++ ./mod/gtk/gtkstylecontext.h 2017-05-11 18:55:14.410270032 +0200 -@@ -816,11 +816,11 @@ + /** + * gtk_header_bar_get_title: + * @bar: a #GtkHeaderBar + * + * Retrieves the title of the header. See gtk_header_bar_set_title(). + * + * Returns: (nullable): the title of the header, or %NULL if none has + * been set explicitly. The returned string is owned by the widget + * and must not be modified or freed. + * + * Since: 3.10 + */ + const gchar * + gtk_header_bar_get_title (GtkHeaderBar *bar) + { + GtkHeaderBarPrivate *priv = gtk_header_bar_get_instance_private (bar); + + g_return_val_if_fail (GTK_IS_HEADER_BAR (bar), NULL); + + return priv->title; +diff -U 25 -r -Z -B ./org/gtk/gtkstylecontext.h ./mod/gtk/gtkstylecontext.h +--- ./org/gtk/gtkstylecontext.h 2017-05-11 21:09:33.000000000 +0200 ++++ ./mod/gtk/gtkstylecontext.h 2017-06-02 03:04:08.330400587 +0200 +@@ -796,51 +796,51 @@ + */ + #define GTK_STYLE_CLASS_TITLEBAR "titlebar" + + /** + * GTK_STYLE_CLASS_TITLE: + * + * A CSS class used for the title label in a titlebar in + * a toplevel window. + * + * Refer to individual widget documentation for used style classes. + * + * Since: 3.14 + */ + #define GTK_STYLE_CLASS_TITLE "title" + + /** + * GTK_STYLE_CLASS_SUBTITLE: + * + * A CSS class used for the subtitle label in a titlebar in + * a toplevel window. * * Refer to individual widget documentation for used style classes. * @@ -43,10 +199,50 @@ diff -U 5 -r -Z -B ./org/gtk/gtkstylecontext.h ./mod/gtk/gtkstylecontext.h * GTK_STYLE_CLASS_NEEDS_ATTENTION: * * A CSS class used when an element needs the user attention, -diff -U 5 -r -Z -B ./org/gtk/gtkwindow.c ./mod/gtk/gtkwindow.c ---- ./org/gtk/gtkwindow.c 2017-05-10 20:57:00.000000000 +0200 -+++ ./mod/gtk/gtkwindow.c 2017-05-11 18:57:30.303610098 +0200 -@@ -4118,10 +4118,11 @@ + * for instance a button in a stack switcher corresponding to + * a hidden page that changed state. + * + * Refer to individual widget documentation for used style classes. + * + * Since: 3.12 + */ + #define GTK_STYLE_CLASS_NEEDS_ATTENTION "needs-attention" + + /** + * GTK_STYLE_CLASS_SUGGESTED_ACTION: + * + * A CSS class used when an action (usually a button) is the + * primary suggested action in a specific context. + * + * Refer to individual widget documentation for used style classes. + * + * Since: 3.12 + */ + #define GTK_STYLE_CLASS_SUGGESTED_ACTION "suggested-action" +diff -U 25 -r -Z -B ./org/gtk/gtkwindow.c ./mod/gtk/gtkwindow.c +--- ./org/gtk/gtkwindow.c 2017-05-11 21:09:33.000000000 +0200 ++++ ./mod/gtk/gtkwindow.c 2017-06-02 03:04:08.333733920 +0200 +@@ -4098,50 +4098,51 @@ + visual = gdk_screen_get_rgba_visual (screen); + if (!visual) + return FALSE; + } + #endif + + #ifdef GDK_WINDOWING_WIN32 + if (GDK_IS_WIN32_DISPLAY (display)) + { + if (!gdk_screen_is_composited (screen)) + return FALSE; + + /* We need a visual with alpha */ + visual = gdk_screen_get_rgba_visual (screen); + if (!visual) + return FALSE; + } + #endif + + return TRUE; } static void @@ -58,7 +254,47 @@ diff -U 5 -r -Z -B ./org/gtk/gtkwindow.c ./mod/gtk/gtkwindow.c GdkVisual *visual; /* We need a visual with alpha for client shadows */ -@@ -6065,10 +6066,11 @@ + if (priv->use_client_shadow) + { + visual = gdk_screen_get_rgba_visual (gtk_widget_get_screen (widget)); + if (visual != NULL) + gtk_widget_set_visual (widget, visual); + + gtk_style_context_add_class (gtk_widget_get_style_context (widget), GTK_STYLE_CLASS_CSD); + } + else + { + gtk_style_context_add_class (gtk_widget_get_style_context (widget), "solid-csd"); + } + + priv->client_decorated = TRUE; + } + + static void + on_titlebar_title_notify (GtkHeaderBar *titlebar, + GParamSpec *pspec, + GtkWindow *self) +@@ -6045,50 +6046,51 @@ + + titlebar = gtk_header_bar_new (); + g_object_set (titlebar, + "title", priv->title ? priv->title : get_default_title (), + "has-subtitle", FALSE, + "show-close-button", TRUE, + NULL); + context = gtk_widget_get_style_context (titlebar); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_TITLEBAR); + gtk_style_context_add_class (context, "default-decoration"); + + return titlebar; + } + + void + _gtk_window_request_csd (GtkWindow *window) + { + GtkWindowPrivate *priv = window->priv; + + priv->csd_requested = TRUE; } static gboolean @@ -70,39 +306,75 @@ diff -U 5 -r -Z -B ./org/gtk/gtkwindow.c ./mod/gtk/gtkwindow.c if (priv->csd_requested) return TRUE; -@@ -8999,17 +9001,21 @@ - state = gtk_window_get_state (window); - - iconified = (state & GDK_WINDOW_STATE_ICONIFIED) == GDK_WINDOW_STATE_ICONIFIED; - maximized = priv->maximized && !iconified; - -- priv->popup_menu = gtk_menu_new (); -+ if ( !priv->application || !gtk_application_get_app_menu(priv->application) ) -+ return; -+ priv->popup_menu = gtk_menu_new_from_model (gtk_application_get_app_menu(priv->application)); - gtk_style_context_add_class (gtk_widget_get_style_context (priv->popup_menu), - GTK_STYLE_CLASS_CONTEXT_MENU); - - gtk_menu_attach_to_widget (GTK_MENU (priv->popup_menu), - GTK_WIDGET (window), - popup_menu_detach); -+ gtk_menu_popup_at_pointer (GTK_MENU (priv->popup_menu), (GdkEvent *) event); -+ return; - menuitem = gtk_menu_item_new_with_label (_("Restore")); + if (!priv->decorated) + return FALSE; + + if (priv->type == GTK_WINDOW_POPUP) + return FALSE; + + csd_env = g_getenv ("GTK_CSD"); + + #ifdef GDK_WINDOWING_BROADWAY + if (GDK_IS_BROADWAY_DISPLAY (gtk_widget_get_display (GTK_WIDGET (window)))) + return TRUE; + #endif + + #ifdef GDK_WINDOWING_WAYLAND + if (GDK_IS_WAYLAND_DISPLAY (gtk_widget_get_display (GTK_WIDGET (window)))) + return TRUE; + #endif + + #ifdef GDK_WINDOWING_MIR +@@ -9071,50 +9073,51 @@ + if (maximized) + gtk_widget_set_sensitive (menuitem, FALSE); + gtk_widget_show (menuitem); + g_signal_connect (G_OBJECT (menuitem), "activate", + G_CALLBACK (ontop_window_clicked), window); + gtk_menu_shell_append (GTK_MENU_SHELL (priv->popup_menu), menuitem); + + menuitem = gtk_separator_menu_item_new (); gtk_widget_show (menuitem); - /* "Restore" means "Unmaximize" or "Unminimize" - * (yes, some WMs allow window menu to be shown for minimized windows). -@@ -9091,11 +9097,11 @@ + gtk_menu_shell_append (GTK_MENU_SHELL (priv->popup_menu), menuitem); + + menuitem = gtk_menu_item_new_with_label (_("Close")); + gtk_widget_show (menuitem); + if (!priv->deletable) + gtk_widget_set_sensitive (menuitem, FALSE); + g_signal_connect (G_OBJECT (menuitem), "activate", + G_CALLBACK (close_window_clicked), window); + gtk_menu_shell_append (GTK_MENU_SHELL (priv->popup_menu), menuitem); + gtk_menu_popup_at_pointer (GTK_MENU (priv->popup_menu), (GdkEvent *) event); + } static void gtk_window_do_popup (GtkWindow *window, GdkEventButton *event) { -- if (!gdk_window_show_window_menu (_gtk_widget_get_window (GTK_WIDGET (window)), -+ if (TRUE || !gdk_window_show_window_menu (_gtk_widget_get_window (GTK_WIDGET (window)), ++ return; + if (!gdk_window_show_window_menu (_gtk_widget_get_window (GTK_WIDGET (window)), (GdkEvent *) event)) gtk_window_do_popup_fallback (window, event); } /********************************* + * Functions related to resizing * + *********************************/ + + static void + geometry_size_to_pixels (GdkGeometry *geometry, + guint flags, + gint *width, + gint *height) + { + gint base_width = 0; + gint base_height = 0; + gint min_width = 0; + gint min_height = 0; + gint width_inc = 1; + gint height_inc = 1; + + if (flags & GDK_HINT_BASE_SIZE) + { + base_width = geometry->base_width; diff --git a/file-chooser.patch b/file-chooser.patch index 679ee4583c70..95804f556965 100644 --- a/file-chooser.patch +++ b/file-chooser.patch @@ -1,7 +1,83 @@ -diff -U 5 -r -Z -B ./org/gtk/gtkfilechooserwidget.c ./mod/gtk/gtkfilechooserwidget.c ---- ./org/gtk/gtkfilechooserwidget.c 2017-05-10 20:57:00.000000000 +0200 -+++ ./mod/gtk/gtkfilechooserwidget.c 2017-05-11 19:03:17.373627295 +0200 -@@ -2420,11 +2420,11 @@ +diff -U 25 -r -Z -B ./org/gtk/gtkfilechooserdialog.c ./mod/gtk/gtkfilechooserdialog.c +--- ./org/gtk/gtkfilechooserdialog.c 2017-05-11 21:09:33.000000000 +0200 ++++ ./mod/gtk/gtkfilechooserdialog.c 2017-06-02 01:38:38.023479724 +0200 +@@ -472,52 +472,50 @@ + + static void + setup_search (GtkFileChooserDialog *dialog) + { + gboolean use_header; + + if (dialog->priv->search_setup) + return; + + dialog->priv->search_setup = TRUE; + + g_object_get (dialog, "use-header-bar", &use_header, NULL); + if (use_header) + { + GtkWidget *button; + GtkWidget *image; + GtkWidget *header; + + button = gtk_toggle_button_new (); + gtk_widget_set_focus_on_click (button, FALSE); + gtk_widget_set_valign (button, GTK_ALIGN_CENTER); + image = gtk_image_new_from_icon_name ("edit-find-symbolic", GTK_ICON_SIZE_MENU); + gtk_container_add (GTK_CONTAINER (button), image); + gtk_style_context_add_class (gtk_widget_get_style_context (button), "image-button"); + gtk_style_context_remove_class (gtk_widget_get_style_context (button), "text-button"); +- gtk_widget_show (image); +- gtk_widget_show (button); + + header = gtk_dialog_get_header_bar (GTK_DIALOG (dialog)); + gtk_header_bar_pack_end (GTK_HEADER_BAR (header), button); + + g_object_bind_property (button, "active", + dialog->priv->widget, "search-mode", + G_BINDING_BIDIRECTIONAL); + g_object_bind_property (dialog->priv->widget, "subtitle", + header, "subtitle", + G_BINDING_SYNC_CREATE); + + gtk_container_forall (GTK_CONTAINER (header), add_button, dialog); + } + } + + static void + setup_save_entry (GtkFileChooserDialog *dialog) + { + gboolean use_header; + GtkFileChooserAction action; + gboolean need_entry; + GtkWidget *header; + + g_object_get (dialog, + "use-header-bar", &use_header, +diff -U 25 -r -Z -B ./org/gtk/gtkfilechooserwidget.c ./mod/gtk/gtkfilechooserwidget.c +--- ./org/gtk/gtkfilechooserwidget.c 2017-05-11 21:09:33.000000000 +0200 ++++ ./mod/gtk/gtkfilechooserwidget.c 2017-06-02 01:38:51.116813706 +0200 +@@ -2400,51 +2400,51 @@ + } + + /* Callback used when a button is pressed on the file list. We trap button 3 to + * bring up a popup menu. + */ + static gboolean + list_button_press_event_cb (GtkWidget *widget, + GdkEventButton *event, + GtkFileChooserWidget *impl) + { + GtkFileChooserWidgetPrivate *priv = impl->priv; + static gboolean in_press = FALSE; + GtkTreePath *path; + GtkTreeViewColumn *column; + GdkDevice *device; + gboolean modify, extend, is_touchscreen; + + if (in_press) + return FALSE; + device = gdk_event_get_source_device ((GdkEvent *) event); is_touchscreen = gtk_simulate_touchscreen () || gdk_device_get_source (device) == GDK_SOURCE_TOUCHSCREEN; @@ -14,10 +90,207 @@ diff -U 5 -r -Z -B ./org/gtk/gtkfilechooserwidget.c ./mod/gtk/gtkfilechooserwidg event->button == GDK_BUTTON_PRIMARY && gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (priv->browse_files_tree_view), event->x, event->y, -diff -U 5 -r -Z -B ./org/gtk/gtkplacessidebar.c ./mod/gtk/gtkplacessidebar.c ---- ./org/gtk/gtkplacessidebar.c 2017-05-10 20:57:00.000000000 +0200 -+++ ./mod/gtk/gtkplacessidebar.c 2017-05-11 19:03:58.446962664 +0200 -@@ -594,10 +594,11 @@ + &path, &column, NULL, NULL)) + { + GtkTreeSelection *selection; + + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->browse_files_tree_view)); + if (gtk_tree_selection_path_is_selected (selection, path)) + { + list_row_activated (GTK_TREE_VIEW (priv->browse_files_tree_view), path, column, impl); + gtk_tree_path_free (path); + return TRUE; + } + + gtk_tree_path_free (path); + } + + if (!gdk_event_triggers_context_menu ((GdkEvent *) event)) + return FALSE; + + in_press = TRUE; + gtk_widget_event (priv->browse_files_tree_view, (GdkEvent *) event); +@@ -2456,51 +2456,50 @@ + } + + static void + long_press_cb (GtkGesture *gesture, + gdouble x, + gdouble y, + GtkFileChooserWidget *impl) + { + file_list_show_popover (impl, x, y); + } + + typedef struct { + OperationMode operation_mode; + gint general_column; + gint model_column; + } ColumnMap; + + /* Sets the sort column IDs for the file list; needs to be done whenever we + * change the model on the treeview. + */ + static void + file_list_set_sort_column_ids (GtkFileChooserWidget *impl) + { + GtkFileChooserWidgetPrivate *priv = impl->priv; + +- gtk_tree_view_set_search_column (GTK_TREE_VIEW (priv->browse_files_tree_view), -1); + + gtk_tree_view_column_set_sort_column_id (priv->list_name_column, MODEL_COL_NAME); + gtk_tree_view_column_set_sort_column_id (priv->list_time_column, MODEL_COL_TIME); + gtk_tree_view_column_set_sort_column_id (priv->list_size_column, MODEL_COL_SIZE); + gtk_tree_view_column_set_sort_column_id (priv->list_location_column, MODEL_COL_LOCATION_TEXT); + } + + static gboolean + file_list_query_tooltip_cb (GtkWidget *widget, + gint x, + gint y, + gboolean keyboard_tip, + GtkTooltip *tooltip, + gpointer user_data) + { + GtkFileChooserWidget *impl = user_data; + GtkFileChooserWidgetPrivate *priv = impl->priv; + GtkTreeModel *model; + GtkTreePath *path; + GtkTreeIter iter; + GFile *file; + gchar *filename; + + if (priv->operation_mode == OPERATION_MODE_BROWSE) + return FALSE; +@@ -3226,50 +3225,52 @@ + operation_mode_set (GtkFileChooserWidget *impl, OperationMode mode) + { + GtkFileChooserWidgetPrivate *priv = impl->priv; + OperationMode old_mode; + + operation_mode_stop (impl, priv->operation_mode); + + old_mode = priv->operation_mode; + priv->operation_mode = mode; + + switch (priv->operation_mode) + { + case OPERATION_MODE_ENTER_LOCATION: + operation_mode_set_enter_location (impl); + break; + + case OPERATION_MODE_OTHER_LOCATIONS: + operation_mode_set_other_locations (impl); + break; + + case OPERATION_MODE_BROWSE: + operation_mode_set_browse (impl); + break; + + case OPERATION_MODE_SEARCH: ++ priv->operation_mode = old_mode; ++ return; + operation_mode_set_search (impl); + break; + + case OPERATION_MODE_RECENT: + operation_mode_set_recent (impl); + break; + + default: + g_assert_not_reached (); + return; + } + + if ((old_mode == OPERATION_MODE_SEARCH) != (mode == OPERATION_MODE_SEARCH)) + g_object_notify (G_OBJECT (impl), "search-mode"); + + g_object_notify (G_OBJECT (impl), "subtitle"); + } + + /* This function is basically a do_all function. + * + * It sets the visibility on all the widgets based on the current state, and + * moves the custom_widget if needed. + */ + static void + update_appearance (GtkFileChooserWidget *impl) +@@ -7497,51 +7498,50 @@ + + _gtk_file_system_model_set_filter (priv->recent_model, priv->current_filter); + gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (priv->recent_model), + recent_sort_func, + impl, NULL); + gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (priv->recent_model), + GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, + GTK_SORT_DESCENDING); + } + + typedef struct + { + GtkFileChooserWidget *impl; + GList *items; + } RecentLoadData; + + static void + recent_idle_cleanup (gpointer data) + { + RecentLoadData *load_data = data; + GtkFileChooserWidget *impl = load_data->impl; + GtkFileChooserWidgetPrivate *priv = impl->priv; + + gtk_tree_view_set_model (GTK_TREE_VIEW (priv->browse_files_tree_view), + GTK_TREE_MODEL (priv->recent_model)); +- gtk_tree_view_set_search_column (GTK_TREE_VIEW (priv->browse_files_tree_view), -1); + + gtk_tree_view_column_set_sort_column_id (priv->list_name_column, -1); + gtk_tree_view_column_set_sort_column_id (priv->list_time_column, -1); + gtk_tree_view_column_set_sort_column_id (priv->list_size_column, -1); + gtk_tree_view_column_set_sort_column_id (priv->list_location_column, -1); + + update_columns (impl, TRUE, _("Accessed")); + + set_busy_cursor (impl, FALSE); + + priv->load_recent_id = 0; + + g_free (load_data); + } + + /* Populates the file system model with the GtkRecentInfo* items + * in the provided list; frees the items + */ + static void + populate_model_with_recent_items (GtkFileChooserWidget *impl, + GList *items) + { + GtkFileChooserWidgetPrivate *priv = impl->priv; + gint limit; + GList *l; +diff -U 25 -r -Z -B ./org/gtk/gtkplacessidebar.c ./mod/gtk/gtkplacessidebar.c +--- ./org/gtk/gtkplacessidebar.c 2017-05-11 21:09:33.000000000 +0200 ++++ ./mod/gtk/gtkplacessidebar.c 2017-06-01 23:09:34.146885403 +0200 +@@ -574,50 +574,51 @@ + g_object_unref (home_dir); + g_object_unref (location); + + return res; + } + + static void + open_home (GtkPlacesSidebar *sidebar) + { + const gchar *home_path; + GFile *home_dir; + + home_path = g_get_home_dir (); + if (!home_path) + return; + + home_dir = g_file_new_for_path (home_path); + emit_open_location (sidebar, home_dir, 0); + + g_object_unref (home_dir); } static void @@ -29,7 +302,47 @@ diff -U 5 -r -Z -B ./org/gtk/gtkplacessidebar.c ./mod/gtk/gtkplacessidebar.c dirs = NULL; for (index = 0; index < G_USER_N_DIRECTORIES; index++) -@@ -1247,11 +1248,11 @@ + { + const gchar *path; + GFile *root; + GIcon *icon; + gchar *name; + gchar *mount_uri; + gchar *tooltip; + + if (!_gtk_bookmarks_manager_get_is_xdg_dir_builtin (index)) + continue; + + path = g_get_user_special_dir (index); + + /* XDG resets special dirs to the home directory in case + * it's not finiding what it expects. We don't want the home + * to be added multiple times in that weird configuration. + */ + if (path == NULL || + path_is_home_dir (path) || + g_list_find_custom (dirs, path, (GCompareFunc) g_strcmp0) != NULL) +@@ -1227,51 +1228,51 @@ + tooltip = g_file_get_parse_name (root); + add_place (sidebar, PLACES_MOUNTED_VOLUME, + SECTION_COMPUTER, + name, icon, mount_uri, + NULL, NULL, mount, 0, tooltip); + g_object_unref (root); + g_object_unref (mount); + g_object_unref (icon); + g_free (name); + g_free (mount_uri); + g_free (tooltip); + } + g_list_free (mounts); + + /* add bookmarks */ + bookmarks = _gtk_bookmarks_manager_list_bookmarks (sidebar->bookmarks_manager); + + for (sl = bookmarks, index = 0; sl; sl = sl->next, index++) + { + gboolean is_native; BookmarkQueryClosure *clos; root = sl->data; @@ -42,7 +355,47 @@ diff -U 5 -r -Z -B ./org/gtk/gtkplacessidebar.c ./mod/gtk/gtkplacessidebar.c if (sidebar->local_only && !is_native) continue; -@@ -3872,11 +3873,11 @@ + clos = g_slice_new (BookmarkQueryClosure); + clos->sidebar = sidebar; + clos->index = index; + clos->is_native = is_native; + g_file_query_info_async (root, + "standard::display-name,standard::symbolic-icon", + G_FILE_QUERY_INFO_NONE, + G_PRIORITY_DEFAULT, + sidebar->cancellable, + on_bookmark_query_info_complete, + clos); + } + + g_slist_free_full (bookmarks, g_object_unref); + + /* Add new bookmark row */ + new_bookmark_icon = g_themed_icon_new ("bookmark-new-symbolic"); + sidebar->new_bookmark_row = add_place (sidebar, PLACES_DROP_FEEDBACK, + SECTION_BOOKMARKS, + _("New bookmark"), new_bookmark_icon, NULL, +@@ -3852,51 +3853,51 @@ + gtk_target_list_add_text_targets (sidebar->source_targets, 0); + + g_signal_connect (sidebar->list_box, "motion-notify-event", + G_CALLBACK (on_motion_notify_event), sidebar); + g_signal_connect (sidebar->list_box, "drag-begin", + G_CALLBACK (drag_begin_callback), sidebar); + g_signal_connect (sidebar->list_box, "drag-motion", + G_CALLBACK (drag_motion_callback), sidebar); + g_signal_connect (sidebar->list_box, "drag-data-get", + G_CALLBACK (drag_data_get_callback), sidebar); + g_signal_connect (sidebar->list_box, "drag-data-received", + G_CALLBACK (drag_data_received_callback), sidebar); + g_signal_connect (sidebar->list_box, "drag-drop", + G_CALLBACK (drag_drop_callback), sidebar); + g_signal_connect (sidebar->list_box, "drag-end", + G_CALLBACK (drag_end_callback), sidebar); + g_signal_connect (sidebar->list_box, "drag-leave", + G_CALLBACK (drag_leave_callback), sidebar); + sidebar->drag_row = NULL; + sidebar->row_placeholder = NULL; sidebar->dragging_over = FALSE; sidebar->drag_data_info = DND_UNKNOWN; @@ -55,10 +408,43 @@ diff -U 5 -r -Z -B ./org/gtk/gtkplacessidebar.c ./mod/gtk/gtkplacessidebar.c G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES, NULL, "org.freedesktop.hostname1", -diff -U 5 -r -Z -B ./org/gtk/ui/gtkfilechooserwidget.ui ./mod/gtk/ui/gtkfilechooserwidget.ui ---- ./org/gtk/ui/gtkfilechooserwidget.ui 2017-05-10 20:57:00.000000000 +0200 -+++ ./mod/gtk/ui/gtkfilechooserwidget.ui 2017-05-11 19:05:40.620301060 +0200 -@@ -14,11 +14,11 @@ + "/org/freedesktop/hostname1", + "org.freedesktop.hostname1", + sidebar->hostnamed_cancellable, + hostname_proxy_new_cb, + sidebar); + + sidebar->drop_state = DROP_STATE_NORMAL; + + /* Don't bother trying to trace this across hierarchy changes... */ + sidebar->gtk_settings = gtk_settings_get_default (); + g_signal_connect (sidebar->gtk_settings, "notify::gtk-shell-shows-desktop", + G_CALLBACK (shell_shows_desktop_changed), sidebar); + g_object_get (sidebar->gtk_settings, "gtk-shell-shows-desktop", &show_desktop, NULL); + sidebar->show_desktop = show_desktop; + + /* populate the sidebar */ + update_places (sidebar); + + add_actions (sidebar); + } +diff -U 25 -r -Z -B ./org/gtk/ui/gtkfilechooserwidget.ui ./mod/gtk/ui/gtkfilechooserwidget.ui +--- ./org/gtk/ui/gtkfilechooserwidget.ui 2017-05-11 21:09:33.000000000 +0200 ++++ ./mod/gtk/ui/gtkfilechooserwidget.ui 2017-06-02 03:00:47.383723964 +0200 +@@ -1,44 +1,45 @@ + <?xml version="1.0" encoding="UTF-8"?> + <interface domain="gtk30"> + <!-- interface-requires gtk+ 3.10 --> + <!-- interface-requires gtkprivate 3.10 --> + <template class="GtkFileChooserWidget" parent="GtkBox"> + <property name="orientation">vertical</property> + <child> + <object class="GtkBox" id="browse_widgets_box"> + <property name="visible">1</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkPaned" id="browse_widgets_hpaned"> + <property name="visible">1</property> <child> <object class="GtkPlacesSidebar" id="places_sidebar"> <property name="visible">1</property> @@ -66,8 +452,83 @@ diff -U 5 -r -Z -B ./org/gtk/ui/gtkfilechooserwidget.ui ./mod/gtk/ui/gtkfilechoo <property name="local-only">1</property> - <property name="show-other-locations">1</property> + <property name="show-other-locations">0</property> ++ <property name="show-trash">0</property> <style> <class name="sidebar"/> </style> <signal name="open-location" handler="places_sidebar_open_location_cb" swapped="no"/> <signal name="show-error-message" handler="places_sidebar_show_error_message_cb" swapped="no"/> + <signal name="show-other-locations-with-flags" handler="places_sidebar_show_other_locations_with_flags_cb" swapped="no"/> + </object> + <packing> + <property name="resize">0</property> + <property name="shrink">0</property> + </packing> + </child> + <child> + <object class="GtkBox"> + <property name="visible">1</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkRevealer" id="browse_header_revealer"> + <property name="visible">1</property> + <property name="hexpand">1</property> + <child> + <object class="GtkBox"> + <property name="visible">1</property> + <property name="name">pathbarbox</property> + <property name="orientation">vertical</property> +@@ -140,51 +141,52 @@ + </packing> + </child> + <child> + <object class="GtkBox" id="list_and_preview_box"> + <property name="visible">1</property> + <property name="spacing">12</property> + <child> + <object class="GtkStack" id="browse_files_stack"> + <property name="visible">1</property> + <property name="transition-type">crossfade</property> + <style> + <class name="view"/> + </style> + <child> + <object class="GtkBox"> + <property name="visible">1</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkScrolledWindow" id="browse_files_swin"> + <property name="visible">1</property> + <property name="hscrollbar-policy">never</property> + <child> + <object class="GtkTreeView" id="browse_files_tree_view"> + <property name="visible">1</property> + <property name="has-tooltip">1</property> +- <property name="enable-search">0</property> ++ <property name="enable-search">1</property> ++ <property name="search-column">0</property> + <child internal-child="accessible"> + <object class="AtkObject" id="browse_files_tree_view-atkobject"> + <property name="AtkObject::accessible-name" translatable="yes">Files</property> + </object> + </child> + <signal name="button-press-event" handler="list_button_press_event_cb" swapped="no"/> + <signal name="drag-data-received" handler="file_list_drag_data_received_cb" swapped="no"/> + <signal name="drag-drop" handler="file_list_drag_drop_cb" swapped="no"/> + <signal name="drag-begin" handler="file_list_drag_begin_cb" swapped="no"/> + <signal name="drag-motion" handler="file_list_drag_motion_cb" swapped="no"/> + <signal name="drag-end" handler="file_list_drag_end_cb" swapped="no"/> + <signal name="key-press-event" handler="browse_files_key_press_event_cb" swapped="no"/> + <signal name="popup-menu" handler="list_popup_menu_cb" swapped="no"/> + <signal name="query-tooltip" handler="file_list_query_tooltip_cb" swapped="no"/> + <signal name="row-activated" handler="list_row_activated" swapped="no"/> + <signal name="cursor-changed" handler="list_cursor_changed" swapped="no"/> + <child internal-child="selection"> + <object class="GtkTreeSelection" id="treeview-selection2"> + <signal name="changed" handler="list_selection_changed" swapped="no"/> + </object> + </child> + <child> + <object class="GtkTreeViewColumn" id="list_name_column"> + <property name="title" translatable="yes">Name</property> + <property name="resizable">1</property> diff --git a/general.patch b/general.patch deleted file mode 100644 index e3f887e574c7..000000000000 --- a/general.patch +++ /dev/null @@ -1,66 +0,0 @@ -diff -U 5 -r -Z -B ./org/gtk/gtkscrolledwindow.c ./mod/gtk/gtkscrolledwindow.c ---- ./org/gtk/gtkscrolledwindow.c 2017-05-10 20:57:00.000000000 +0200 -+++ ./mod/gtk/gtkscrolledwindow.c 2017-05-11 19:11:54.443652914 +0200 -@@ -4398,11 +4398,11 @@ - GtkScrolledWindowPrivate *priv = scrolled_window->priv; - gboolean use_indicators; - - use_indicators = priv->overlay_scrolling; - -- if (g_strcmp0 (g_getenv ("GTK_OVERLAY_SCROLLING"), "0") == 0) -+ if (TRUE || g_strcmp0 (g_getenv ("GTK_OVERLAY_SCROLLING"), "0") == 0) - use_indicators = FALSE; - - if (priv->use_indicators != use_indicators) - { - priv->use_indicators = use_indicators; -diff -U 5 -r -Z -B ./org/gtk/gtksettings.c ./mod/gtk/gtksettings.c ---- ./org/gtk/gtksettings.c 2017-05-10 20:57:00.000000000 +0200 -+++ ./mod/gtk/gtksettings.c 2017-05-11 19:12:01.523653266 +0200 -@@ -1721,11 +1721,11 @@ - */ - result = settings_install_property_parser (class, - g_param_spec_boolean ("gtk-recent-files-enabled", - P_("Recent Files Enabled"), - P_("Whether GTK+ remembers recent files"), -- TRUE, -+ FALSE, - GTK_PARAM_READWRITE), - NULL); - g_assert (result == PROP_RECENT_FILES_ENABLED); - - /** -diff -U 5 -r -Z -B ./org/gtk/gtkwindow.c ./mod/gtk/gtkwindow.c ---- ./org/gtk/gtkwindow.c 2017-05-10 20:57:00.000000000 +0200 -+++ ./mod/gtk/gtkwindow.c 2017-05-11 19:12:26.660321178 +0200 -@@ -149,11 +149,11 @@ - * - * GtkWindow adds the .titlebar and .default-decoration style classes to the - * widget that is added as a titlebar child. - */ - --#define MNEMONICS_DELAY 300 /* ms */ -+#define MNEMONICS_DELAY 0 /* ms */ - #define NO_CONTENT_CHILD_NAT 200 - /* In case the content (excluding header bar and shadows) of the window - * would be empty, either because there is no visible child widget or only an - * empty container widget, we use NO_CONTENT_CHILD_NAT as natural width/height - * instead. -diff -U 5 -r -Z -B ./org/gtk/ui/gtkstatusbar.ui ./mod/gtk/ui/gtkstatusbar.ui ---- ./org/gtk/ui/gtkstatusbar.ui 2017-05-10 20:57:00.000000000 +0200 -+++ ./mod/gtk/ui/gtkstatusbar.ui 2017-05-11 21:02:41.253982250 +0200 -@@ -3,12 +3,12 @@ - <!-- interface-requires gtk+ 3.10 --> - <template class="GtkStatusbar" parent="GtkBox"> - <property name="spacing">2</property> - <property name="margin-start">10</property> - <property name="margin-end">10</property> -- <property name="margin-top">6</property> -- <property name="margin-bottom">6</property> -+ <property name="margin-top">1</property> -+ <property name="margin-bottom">1</property> - <child> - <object class="GtkFrame" id="frame"> - <property name="visible">1</property> - <property name="shadow-type">none</property> - <child> diff --git a/icons.patch b/icons.patch new file mode 100644 index 000000000000..848d0e21248c --- /dev/null +++ b/icons.patch @@ -0,0 +1,75 @@ +diff -U 25 -r -Z -B ./org/gtk/gtkbutton.c ./mod/gtk/gtkbutton.c +--- ./org/gtk/gtkbutton.c 2017-05-11 21:09:33.000000000 +0200 ++++ ./mod/gtk/gtkbutton.c 2017-06-03 00:58:36.244202195 +0200 +@@ -2149,50 +2149,71 @@ + for_size, + minimum_size, natural_size, + minimum_baseline, natural_baseline); + } + + /** + * gtk_button_set_label: + * @button: a #GtkButton + * @label: a string + * + * Sets the text of the label of the button to @str. This text is + * also used to select the stock item if gtk_button_set_use_stock() + * is used. + * + * This will also clear any previously set labels. + */ + void + gtk_button_set_label (GtkButton *button, + const gchar *label) + { + GtkButtonPrivate *priv; + gchar *new_label; + + g_return_if_fail (GTK_IS_BUTTON (button)); + ++ if (!gtk_button_get_image(GTK_BUTTON(button))) { ++ gchar *use_this_icon = NULL; ++ if (g_strcmp0( label, _("_Select") ) == 0 || g_strcmp0( label, _("_OK") ) == 0) use_this_icon = "gtk-ok"; ++ else if (g_strcmp0( label, _("_Cancel") ) == 0) use_this_icon = "gtk-cancel"; ++ else if (g_strcmp0( label, _("_Close") ) == 0) use_this_icon = "gtk-close"; ++ else if (g_strcmp0( label, _("_Yes") ) == 0) use_this_icon = "gtk-yes"; ++ else if (g_strcmp0( label, _("_No") ) == 0) use_this_icon = "gtk-no"; ++ else if (g_strcmp0( label, _("_Print") ) == 0) use_this_icon = "gtk-print"; ++ else if (g_strcmp0( label, _("Pre_view") ) == 0) use_this_icon = "gtk-print-preview"; ++ else if (g_strcmp0( label, _("_Open") ) == 0) use_this_icon = "gtk-open"; ++ else if (g_strcmp0( label, _("_Save") ) == 0) use_this_icon = "gtk-save"; ++ else if (g_strcmp0( label, _("_Apply") ) == 0) use_this_icon = "gtk-apply"; ++ else if (g_strcmp0( label, _("_Stop") ) == 0) use_this_icon = "gtk-stop"; ++ else if (g_strcmp0( label, _("_Delete") ) == 0) use_this_icon = "gtk-delete"; ++ else if (g_strcmp0( label, _("_Remove") ) == 0) use_this_icon = "gtk-remove"; ++ else if (g_strcmp0( label, _("_Add") ) == 0) use_this_icon = "gtk-add"; ++ else if (g_strcmp0( label, _("_Help") ) == 0) use_this_icon = "gtk-help"; ++ if (use_this_icon) ++ gtk_button_set_image(GTK_BUTTON(button), gtk_image_new_from_icon_name(use_this_icon,GTK_ICON_SIZE_BUTTON)); ++ } ++ + priv = button->priv; + + new_label = g_strdup (label); + g_free (priv->label_text); + priv->label_text = new_label; + + gtk_button_construct_child (button); + + g_object_notify_by_pspec (G_OBJECT (button), props[PROP_LABEL]); + } + + /** + * gtk_button_get_label: + * @button: a #GtkButton + * + * Fetches the text from the label of the button, as set by + * gtk_button_set_label(). If the label text has not + * been set the return value will be %NULL. This will be the + * case if you create an empty button with gtk_button_new() to + * use as a container. + * + * Returns: The text of the label widget. This string is owned + * by the widget and must not be modified or freed. + */ + const gchar * diff --git a/others.patch b/others.patch new file mode 100644 index 000000000000..6ab483cf82bd --- /dev/null +++ b/others.patch @@ -0,0 +1,264 @@ +diff -U 25 -r -Z -B ./org/gtk/gtkmenubutton.c ./mod/gtk/gtkmenubutton.c +--- ./org/gtk/gtkmenubutton.c 2017-05-11 21:09:33.000000000 +0200 ++++ ./mod/gtk/gtkmenubutton.c 2017-06-02 03:09:05.707081988 +0200 +@@ -801,51 +801,51 @@ + * actions will be connected as documented for these functions. + * + * If #GtkMenuButton:popup or #GtkMenuButton:popover are already set, + * their content will be lost and replaced by the newly created popup. + * + * Since: 3.6 + */ + void + gtk_menu_button_set_menu_model (GtkMenuButton *menu_button, + GMenuModel *menu_model) + { + GtkMenuButtonPrivate *priv; + + g_return_if_fail (GTK_IS_MENU_BUTTON (menu_button)); + g_return_if_fail (G_IS_MENU_MODEL (menu_model) || menu_model == NULL); + + priv = menu_button->priv; + + g_object_freeze_notify (G_OBJECT (menu_button)); + + if (menu_model) + g_object_ref (menu_model); + + if (menu_model) + { +- if (priv->use_popover) ++ if (FALSE && priv->use_popover) + { + GtkWidget *popover; + + popover = gtk_popover_new_from_model (GTK_WIDGET (menu_button), menu_model); + gtk_menu_button_set_popover (menu_button, popover); + } + else + { + GtkWidget *menu; + + menu = gtk_menu_new_from_model (menu_model); + gtk_widget_show_all (menu); + gtk_menu_button_set_popup (menu_button, menu); + } + } + else + { + gtk_menu_button_set_popup (menu_button, NULL); + gtk_menu_button_set_popover (menu_button, NULL); + } + + priv->model = menu_model; + g_object_notify_by_pspec (G_OBJECT (menu_button), menu_button_props[PROP_MENU_MODEL]); + + g_object_thaw_notify (G_OBJECT (menu_button)); +diff -U 25 -r -Z -B ./org/gtk/gtkscrolledwindow.c ./mod/gtk/gtkscrolledwindow.c +--- ./org/gtk/gtkscrolledwindow.c 2017-05-11 21:09:33.000000000 +0200 ++++ ./mod/gtk/gtkscrolledwindow.c 2017-06-02 03:09:05.713748655 +0200 +@@ -4378,51 +4378,51 @@ + static void + gtk_scrolled_window_sync_use_indicators (GtkScrolledWindow *scrolled_window) + { + GtkScrolledWindowPrivate *priv = scrolled_window->priv; + + if (priv->use_indicators) + { + setup_indicator (scrolled_window, &priv->hindicator, priv->hscrollbar); + setup_indicator (scrolled_window, &priv->vindicator, priv->vscrollbar); + } + else + { + remove_indicator (scrolled_window, &priv->hindicator); + remove_indicator (scrolled_window, &priv->vindicator); + } + } + + static void + gtk_scrolled_window_update_use_indicators (GtkScrolledWindow *scrolled_window) + { + GtkScrolledWindowPrivate *priv = scrolled_window->priv; + gboolean use_indicators; + + use_indicators = priv->overlay_scrolling; + +- if (g_strcmp0 (g_getenv ("GTK_OVERLAY_SCROLLING"), "0") == 0) ++ if (TRUE || g_strcmp0 (g_getenv ("GTK_OVERLAY_SCROLLING"), "0") == 0) + use_indicators = FALSE; + + if (priv->use_indicators != use_indicators) + { + priv->use_indicators = use_indicators; + + if (gtk_widget_get_realized (GTK_WIDGET (scrolled_window))) + gtk_scrolled_window_sync_use_indicators (scrolled_window); + + gtk_widget_queue_resize (GTK_WIDGET (scrolled_window)); + } + } + + static void + gtk_scrolled_window_realize (GtkWidget *widget) + { + GtkScrolledWindow *scrolled_window = GTK_SCROLLED_WINDOW (widget); + GtkScrolledWindowPrivate *priv = scrolled_window->priv; + GdkWindow *window; + GtkAllocation allocation; + GdkWindowAttr attributes; + gint attributes_mask; + + gtk_widget_get_allocation (widget, &allocation); + +diff -U 25 -r -Z -B ./org/gtk/gtksettings.c ./mod/gtk/gtksettings.c +--- ./org/gtk/gtksettings.c 2017-05-11 21:09:33.000000000 +0200 ++++ ./mod/gtk/gtksettings.c 2017-06-02 03:09:05.713748655 +0200 +@@ -1701,51 +1701,51 @@ + * 'PRIMARY' clipboard content at the cursor location. + * + * Since: 3.4 + */ + result = settings_install_property_parser (class, + g_param_spec_boolean ("gtk-enable-primary-paste", + P_("Enable primary paste"), + P_("Whether a middle click on a mouse should paste the 'PRIMARY' clipboard content at the cursor location."), + TRUE, + GTK_PARAM_READWRITE), + NULL); + g_assert (result == PROP_ENABLE_PRIMARY_PASTE); + + /** + * GtkSettings:gtk-recent-files-enabled: + * + * Whether GTK+ should keep track of items inside the recently used + * resources list. If set to %FALSE, the list will always be empty. + * + * Since: 3.8 + */ + result = settings_install_property_parser (class, + g_param_spec_boolean ("gtk-recent-files-enabled", + P_("Recent Files Enabled"), + P_("Whether GTK+ remembers recent files"), +- TRUE, ++ FALSE, + GTK_PARAM_READWRITE), + NULL); + g_assert (result == PROP_RECENT_FILES_ENABLED); + + /** + * GtkSettings:gtk-long-press-time: + * + * The time for a button or touch press to be considered a "long press". + * + * Since: 3.14 + */ + result = settings_install_property_parser (class, + g_param_spec_uint ("gtk-long-press-time", + P_("Long press time"), + P_("Time for a button/touch press to be considered a long press (in milliseconds)"), + 0, G_MAXINT, 500, + GTK_PARAM_READWRITE), + NULL); + g_assert (result == PROP_LONG_PRESS_TIME); + + /** + * GtkSettings:gtk-keynav-use-caret: + * + * Whether GTK+ should make sure that text can be navigated with + * a caret, even if it is not editable. This is useful when using +diff -U 25 -r -Z -B ./org/gtk/gtkwindow.c ./mod/gtk/gtkwindow.c +--- ./org/gtk/gtkwindow.c 2017-05-11 21:09:33.000000000 +0200 ++++ ./mod/gtk/gtkwindow.c 2017-06-02 03:09:05.717081989 +0200 +@@ -129,51 +129,51 @@ + * + * # CSS nodes + * + * |[<!-- language="plain" --> + * window.background + * ├── decoration + * ├── <titlebar child>.titlebar [.default-decoration] + * ╰── <child> + * ]| + * + * GtkWindow has a main CSS node with name window and style class .background, + * and a subnode with name decoration. + * + * Style classes that are typically used with the main CSS node are .csd (when + * client-side decorations are in use), .solid-csd (for client-side decorations + * without invisible borders), .ssd (used by mutter when rendering server-side + * decorations). GtkWindow also represents window states with the following + * style classes on the main node: .tiled, .maximized, .fullscreen. Specialized + * types of window often add their own discriminating style classes, such as + * .popup or .tooltip. + * + * GtkWindow adds the .titlebar and .default-decoration style classes to the + * widget that is added as a titlebar child. + */ + +-#define MNEMONICS_DELAY 300 /* ms */ ++#define MNEMONICS_DELAY 0 /* ms */ + #define NO_CONTENT_CHILD_NAT 200 + /* In case the content (excluding header bar and shadows) of the window + * would be empty, either because there is no visible child widget or only an + * empty container widget, we use NO_CONTENT_CHILD_NAT as natural width/height + * instead. + */ + + typedef struct _GtkWindowPopover GtkWindowPopover; + + struct _GtkWindowPopover + { + GtkWidget *widget; + GtkWidget *parent; + GdkWindow *window; + GtkPositionType pos; + cairo_rectangle_int_t rect; + gulong unmap_id; + guint clamp_allocation : 1; + }; + + struct _GtkWindowPrivate + { + GtkMnemonicHash *mnemonic_hash; + + GtkWidget *attach_widget; +diff -U 25 -r -Z -B ./org/gtk/ui/gtkstatusbar.ui ./mod/gtk/ui/gtkstatusbar.ui +--- ./org/gtk/ui/gtkstatusbar.ui 2017-05-11 21:09:33.000000000 +0200 ++++ ./mod/gtk/ui/gtkstatusbar.ui 2017-06-02 03:09:05.720415322 +0200 +@@ -1,34 +1,34 @@ + <?xml version="1.0" encoding="UTF-8"?> + <interface domain="gtk30"> + <!-- interface-requires gtk+ 3.10 --> + <template class="GtkStatusbar" parent="GtkBox"> + <property name="spacing">2</property> + <property name="margin-start">10</property> + <property name="margin-end">10</property> +- <property name="margin-top">6</property> +- <property name="margin-bottom">6</property> ++ <property name="margin-top">1</property> ++ <property name="margin-bottom">1</property> + <child> + <object class="GtkFrame" id="frame"> + <property name="visible">1</property> + <property name="shadow-type">none</property> + <child> + <object class="GtkBox" id="message_area"> + <property name="visible">1</property> + <property name="spacing">4</property> + <property name="margin">4</property> + <child> + <object class="GtkLabel" id="label"> + <property name="visible">1</property> + <property name="halign">start</property> + <property name="valign">center</property> + <property name="ellipsize">end</property> + <property name="single-line-mode">1</property> + </object> + </child> + </object> + </child> + <child type="label_item"/> + </object> + <packing> + <property name="expand">1</property> + </packing> diff --git a/print-dialog.patch b/print-dialog.patch index 13895feb16d3..ab7ba621e181 100644 --- a/print-dialog.patch +++ b/print-dialog.patch @@ -1,7 +1,27 @@ -diff -U 5 -r -Z -B ./org/gtk/gtksettings.c ./mod/gtk/gtksettings.c ---- ./org/gtk/gtksettings.c 2017-05-10 20:57:00.000000000 +0200 -+++ ./mod/gtk/gtksettings.c 2017-05-11 19:15:02.096995544 +0200 -@@ -59,11 +59,11 @@ +diff -U 25 -r -Z -B ./org/gtk/gtksettings.c ./mod/gtk/gtksettings.c +--- ./org/gtk/gtksettings.c 2017-05-11 21:09:33.000000000 +0200 ++++ ./mod/gtk/gtksettings.c 2017-06-02 03:07:20.300410099 +0200 +@@ -39,51 +39,51 @@ + #include <pango/pangofc-fontmap.h> + #endif + + #ifdef GDK_WINDOWING_WAYLAND + #include "wayland/gdkwayland.h" + #include <pango/pangofc-fontmap.h> + #endif + + #ifdef GDK_WINDOWING_BROADWAY + #include "broadway/gdkbroadway.h" + #endif + + #ifdef GDK_WINDOWING_QUARTZ + #include "quartz/gdkquartz.h" + #endif + + #ifdef GDK_WINDOWING_WIN32 + #include "win32/gdkwin32.h" + #endif + #include "deprecated/gtkrc.h" #ifdef GDK_WINDOWING_QUARTZ @@ -14,10 +34,50 @@ diff -U 5 -r -Z -B ./org/gtk/gtksettings.c ./mod/gtk/gtksettings.c /** * SECTION:gtksettings * @Short_description: Sharing settings between applications -diff -U 5 -r -Z -B ./org/gtk/ui/gtkprintunixdialog.ui ./mod/gtk/ui/gtkprintunixdialog.ui ---- ./org/gtk/ui/gtkprintunixdialog.ui 2017-05-10 20:57:00.000000000 +0200 -+++ ./mod/gtk/ui/gtkprintunixdialog.ui 2017-05-11 19:16:11.313665640 +0200 -@@ -55,22 +55,22 @@ + * @Title: Settings + * + * GtkSettings provide a mechanism to share global settings between + * applications. + * + * On the X window system, this sharing is realized by an + * [XSettings](http://www.freedesktop.org/wiki/Specifications/xsettings-spec) + * manager that is usually part of the desktop environment, along with + * utilities that let the user change these settings. In the absence of + * an Xsettings manager, GTK+ reads default values for settings from + * `settings.ini` files in + * `/etc/gtk-3.0`, `$XDG_CONFIG_DIRS/gtk-3.0` + * and `$XDG_CONFIG_HOME/gtk-3.0`. + * These files must be valid key files (see #GKeyFile), and have + * a section called Settings. Themes can also provide default values + * for settings by installing a `settings.ini` file + * next to their `gtk.css` file. + * + * Applications can override system-wide settings by setting the property + * of the GtkSettings object with g_object_set(). This should be restricted +diff -U 25 -r -Z -B ./org/gtk/ui/gtkprintunixdialog.ui ./mod/gtk/ui/gtkprintunixdialog.ui +--- ./org/gtk/ui/gtkprintunixdialog.ui 2017-05-11 21:09:33.000000000 +0200 ++++ ./mod/gtk/ui/gtkprintunixdialog.ui 2017-06-02 03:07:20.303743432 +0200 +@@ -35,62 +35,62 @@ + <!-- column-name location --> + <column type="gchararray"/> + <!-- column-name printer --> + <column type="GObject"/> + </columns> + </object> + <object class="GtkTreeModelFilter" id="printer_list_filter"> + <property name="child-model">printer_list</property> + </object> + <object class="GtkAdjustment" id="scale_spin_adjustment"> + <property name="lower">1</property> + <property name="upper">1000</property> + <property name="value">100</property> + <property name="step-increment">1</property> + </object> + <template class="GtkPrintUnixDialog" parent="GtkDialog"> + <property name="can-focus">False</property> + <property name="type-hint">dialog</property> + <signal name="notify::page-setup" handler="redraw_page_layout_preview" swapped="no"/> + <signal name="response" handler="error_dialogs" swapped="no"/> <child internal-child="vbox"> <object class="GtkBox" id="dialog-vbox1"> <property name="orientation">vertical</property> @@ -44,3 +104,23 @@ diff -U 5 -r -Z -B ./org/gtk/ui/gtkprintunixdialog.ui ./mod/gtk/ui/gtkprintunixd <property name="visible">1</property> <property name="border-width">12</property> <property name="orientation">vertical</property> + <property name="spacing">18</property> + <child> + <object class="GtkBox" id="box2"> + <property name="visible">1</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> + <child> + <object class="GtkScrolledWindow" id="printer_swin"> + <property name="visible">1</property> + <property name="can-focus">1</property> + <property name="shadow-type">in</property> + <child> + <object class="GtkTreeView" id="printer_treeview"> + <property name="visible">1</property> + <property name="can-focus">1</property> + <property name="model">printer_list_filter</property> + <signal name="row-activated" handler="emit_ok_response" swapped="no"/> + <child internal-child="selection"> + <object class="GtkTreeSelection" id="treeview-selection1"> + <property name="mode">browse</property> |