From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Alex Newsgroups: gmane.emacs.devel Subject: Re: Increase minimum required GTK versions? Date: Tue, 09 Apr 2019 21:14:02 -0600 Message-ID: <87h8b61rid.fsf@gmail.com> References: <87h8b9tz84.fsf@gmail.com> <83h8b98wg3.fsf@gnu.org> <87d0lxty7f.fsf@gmail.com> <537036b7-549c-0aab-cc06-70c26c683ac7@cs.ucla.edu> <87y34kiloy.fsf@gmail.com> <87o95f141i.fsf@gmail.com> <838swj6nuk.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="177432"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux) Cc: eggert@cs.ucla.edu, monnier@iro.umontreal.ca, emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Apr 10 05:15:03 2019 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hE3hX-000jzc-3u for ged-emacs-devel@m.gmane.org; Wed, 10 Apr 2019 05:15:03 +0200 Original-Received: from localhost ([127.0.0.1]:52666 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hE3hW-0003AK-3a for ged-emacs-devel@m.gmane.org; Tue, 09 Apr 2019 23:15:02 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:59816) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hE3gl-00039g-NV for emacs-devel@gnu.org; Tue, 09 Apr 2019 23:14:19 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hE3gh-0006Wd-NC for emacs-devel@gnu.org; Tue, 09 Apr 2019 23:14:15 -0400 Original-Received: from mail-pg1-x541.google.com ([2607:f8b0:4864:20::541]:37982) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hE3gg-0006TY-Uz; Tue, 09 Apr 2019 23:14:11 -0400 Original-Received: by mail-pg1-x541.google.com with SMTP id j26so621170pgl.5; Tue, 09 Apr 2019 20:14:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=RTp4I82utwqKd7yz6ZI4NxqwN4hO9L/zTx8T+/yL6BU=; b=WGDDclt1A/G2txprldB2k9lQ/SJe0Iu7zBuW88VLIkRT0Vzp6EjtgAhaOf6/Lhi62N SIGG8udSsOypvlf7SwWmcixA7KYlYsF7UxI1OUTUNTwFtOWx1uyuYATm+D1zo59sxWj2 7CQo8UgwJN3JbDdw7eQXbMPVs9YtPTXxWjhJttV4V42pVWeB397peDNO71Dp1NDqGWnp Xpz75n6xJ3XCtH2pL5ydX1K3PlngIKUEUQDIu+ImMu4Yu5LtDdq7iB1WI4++heU6gCsY NYVIelURvT3+UplghZndNuVz4t1pXUSdadLxwmFbShHSwKjkSzo+uWIqiZv662gQohWZ 8V2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=RTp4I82utwqKd7yz6ZI4NxqwN4hO9L/zTx8T+/yL6BU=; b=EbwvGDMymMdEqVSdFjLwsKUIEm0zp+NGLejm0k665xG4avaCBwLOnf4RkbsYB4K4nd /tve+dSMrb0sFpugZMDopWnmTWwyKcMGiPY9SN6gC6ctLizWYSQoVeULpg9oZaQuGnrG 1ldsCoa2Gg+Uufp4FDtD7CySrAemKQjXhKoB2kuNS++0Hf5r8EetCeekcTZF4EqSiU2l 71WqjaPU37iWvhVveJQaHtgnnKLThPyfBlXbiDvm0e7sXFtJG0U/JIPC93k/OcvrHxUn uUJGhmye/q+LhSO+kLRcefRcr4qQ45fjoDZZZo5ajKO+c0zkh+CyJDXlhfC4WRbtbQkv lKeQ== X-Gm-Message-State: APjAAAW0M3oyxYeVryPXwWwyCVpjG8oRuAZQQOUMhDEoX6qFffcwvGk7 fFLPxhRMYFedmLZoDY5B51LEm5dc X-Google-Smtp-Source: APXvYqyE5L/vpHO57PMbKZUPrt1gOQe8j5z9QhcH3ylBrwuxMqM9Sc6rh0u2omuXxL0rSX/BAZyGuA== X-Received: by 2002:a05:6a00:c1:: with SMTP id e1mr34491912pfj.143.1554866049472; Tue, 09 Apr 2019 20:14:09 -0700 (PDT) Original-Received: from lylat ([2604:3d09:e37f:1500:1a72:4878:e793:7302]) by smtp.gmail.com with ESMTPSA id d25sm45777327pfn.154.2019.04.09.20.14.06 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 09 Apr 2019 20:14:08 -0700 (PDT) In-Reply-To: <838swj6nuk.fsf@gnu.org> (Eli Zaretskii's message of "Tue, 09 Apr 2019 21:21:55 +0300") X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::541 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:235190 Archived-At: --=-=-= Content-Type: text/plain Eli Zaretskii writes: >> From: Alex >> Date: Tue, 09 Apr 2019 11:28:41 -0600 >> Cc: Stefan Monnier , emacs-devel@gnu.org >> >> If there are no objections I'll push the revised patch in a few days. > > To allow proper review, please make the log message more detailed. In > particular, stuff you remove that is not under an explicit GTK version > condition should have a minimal explanation for why it is TRT to > remove it. (The rationale doesn't have to be in the log message, > although it would be nice to have it there; it could be just in the > email that accompanies the patch.) Here's a brief overview of the changes outside of explicit checks: * HAVE_GTK_* function checks in configure.ac These check for functions available in later GTK 2 versions. These checks and the blocks that use them can safely be removed with the exception of gtk_window_set_has_resize_grip, which according to a comment in gtkutil.c causes an issue in Ubuntu's GTK 2. * USE_GTK_TOOLTIP This is defined when CHECK_GTK_VERSION (2, 14, 0), so all instances can be removed. * Old file selection dialog This is only optionally used in GTK 2, but the old dialog is long deprecated in GTK 2 (removed in GTK 3), so I figured that this is a good time to remove it and simplify the existing code. The first 2 of the above are covered by "now unused conditional blocks", so I didn't think I should include them in the commit message. I added in a reason for removing the file selection dialog. > Please also tell with which GTK versions did you try building with to > verify the correctness of the changes. I tested with GTK 2.24.32 and GTK 3.24.7. I didn't see a need to test with an older GTK 3 version since the GTK 3 part of the change involves simplifying version checks 3 <= version <= 3.10 (and USE_NEW_GTK_FONT_CHOOSER) to HAVE_GTK3 checks. >> Subject: [PATCH] Bump minimum GTK versions to 2.24 and 3.10 > > Not sure we discussed 3.10 as the minimum GTK3 version, we only talked > about 2.x AFAIR. What is the situation with GTK3 versions in the > current distributions of GNU/Linux? My messages briefly discussed the minimum of 3.10 and how Debian Jessie (oldstable -- soon to be oldoldstable), and Ubuntu 14.04LTS have GTK 3.10. RHEL doesn't even support GTK 3 until RHEL 7, which has 3.22. So I think bumping to 3.10 doesn't hurt, especially since there's still GTK 2 support. Though I admit that bumping the GTK 3 version doesn't help a whole lot, and it doesn't look like it will until 3.22 (2016) becomes the minimum. >> -/* True iff GTK's version is at least I.J.K. */ >> -#ifndef GTK_CHECK_VERSION >> -# ifdef USE_GTK >> -# define GTK_CHECK_VERSION(i, j, k) \ >> - ((i) \ >> - < GTK_MAJOR_VERSION + ((j) \ >> - < GTK_MINOR_VERSION + ((k) \ >> - <= GTK_MICRO_VERSION))) > > Is it really a good idea to remove this macro? We'll probably have to > reintroduce it right away. The #ifdef USE_GTK block was dead code, since GTK always defines this macro[1] (at least as far back as I checked -- much before even the current minimum of 2.10). Now only a stub is defined in the case of not using GTK. I've attached the patch with a slightly revised commit message. [1] https://developer.gnome.org/gtk3/stable/gtk3-Feature-Test-Macros.html#GTK-CHECK-VERSION:CAPS --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Bump-minimum-GTK-versions-to-2.24-and-3.10.patch Content-Description: Bump GTK versions >From b4e8e03db77dd6ac013fa4e66eca32230178650a Mon Sep 17 00:00:00 2001 From: Alexander Gramiak Date: Sun, 7 Apr 2019 19:02:03 -0600 Subject: [PATCH] Bump minimum GTK versions to 2.24 and 3.10 * configure.ac: Bump required GTK 2 and GTK 3 versions and the associated GLib versions. Remove obsolete AC_CHECK_FUNCS calls. * src/gtkutil.c: * src/xfns.c: * src/xterm.c: * src/xterm.h: Remove now unused conditional blocks. Use HAVE_GTK3 instead of GTK_CHECK_VERSION where now applicable. * src/gtkutil.c: Remove old file selection dialog that is deprecated in GTK 2 and removed in GTK 3. Simplify the remaining file chooser code. * lisp/term/x-win.el: Obsolete old file selection dialog interface. * lisp/subr.el: Move GTK obsolete variable declaration to lisp/term/x-win.el. --- configure.ac | 46 ++------ etc/NEWS | 4 + lisp/subr.el | 2 - lisp/term/x-win.el | 5 + src/gtkutil.c | 264 ++++++++------------------------------------- src/xfns.c | 53 ++++----- src/xterm.c | 2 +- src/xterm.h | 33 +----- 8 files changed, 83 insertions(+), 326 deletions(-) diff --git a/configure.ac b/configure.ac index c93cfbbb59..3c5b9a0fb2 100644 --- a/configure.ac +++ b/configure.ac @@ -2671,8 +2671,8 @@ AC_DEFUN gtk3_pkg_errors= if test "${opsys}" != "mingw32"; then if test "${with_gtk3}" = "yes" || test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "maybe"; then - GLIB_REQUIRED=2.28 - GTK_REQUIRED=3.0 + GLIB_REQUIRED=2.37.5 + GTK_REQUIRED=3.10 GTK_MODULES="gtk+-3.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED" dnl Checks for libraries. @@ -2699,8 +2699,8 @@ AC_DEFUN fi if test "${with_gtk2}" = "yes" || test "$check_gtk2" = "yes"; then - GLIB_REQUIRED=2.10 - GTK_REQUIRED=2.10 + GLIB_REQUIRED=2.28 + GTK_REQUIRED=2.24 GTK_MODULES="gtk+-2.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED" dnl Checks for libraries. @@ -2775,42 +2775,8 @@ AC_DEFUN with_toolkit_scroll_bars=yes fi - dnl Check if we have the old file selection dialog declared and - dnl in the link library. In 2.x it may be in the library, - dnl but not declared if deprecated featured has been selected out. - dnl AC_CHECK_DECL checks for a macro, so check for GTK_TYPE_FILE_SELECTION. - HAVE_GTK_FILE_SELECTION=no - AC_CHECK_DECL(GTK_TYPE_FILE_SELECTION, HAVE_GTK_FILE_SELECTION=yes, - HAVE_GTK_FILE_SELECTION=no, [AC_INCLUDES_DEFAULT -#include ]) - if test "$HAVE_GTK_FILE_SELECTION" = yes; then - AC_CHECK_FUNCS(gtk_file_selection_new) - fi - - dnl Same as above for gtk_handle_box. - HAVE_GTK_HANDLE_BOX=no - AC_CHECK_DECL(GTK_TYPE_HANDLE_BOX, HAVE_GTK_HANDLE_BOX=yes, - HAVE_GTK_HANDLE_BOX=no, [AC_INCLUDES_DEFAULT -#include ]) - if test "$HAVE_GTK_HANDLE_BOX" = yes; then - AC_CHECK_FUNCS(gtk_handle_box_new) - fi - - dnl Same as above for gtk_tearoff_menu_item. - HAVE_GTK_TEAROFF_MENU_ITEM=no - AC_CHECK_DECL(GTK_TYPE_TEAROFF_MENU_ITEM, HAVE_GTK_TEAROFF_MENU_ITEM=yes, - HAVE_GTK_TEAROFF_MENU_ITEM=no, [AC_INCLUDES_DEFAULT -#include ]) - if test "$HAVE_GTK_TEAROFF_MENU_ITEM" = yes; then - AC_CHECK_FUNCS(gtk_tearoff_menu_item_new) - fi - - dnl Check for functions introduced in 2.14 and later. - AC_CHECK_FUNCS(gtk_widget_get_window gtk_widget_set_has_window \ - gtk_dialog_get_action_area gtk_widget_get_sensitive \ - gtk_widget_get_mapped gtk_adjustment_get_page_size \ - gtk_orientable_set_orientation \ - gtk_window_set_has_resize_grip) + dnl This procedure causes a bug on certain Ubuntu GTK+2 builds + AC_CHECK_FUNCS(gtk_window_set_has_resize_grip) term_header=gtkutil.h fi diff --git a/etc/NEWS b/etc/NEWS index 620d88c32a..18da0f580b 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -84,6 +84,10 @@ The new command-line argument '--dump-file=FILE' allows to specify a non-default '.pdmp' file to load the state from; see the node "Initial Options" in the Emacs manual for more information. +--- +** Emacs now requires GTK 2.24 and GTK 3.10 for the GTK 2 and GTK 3 +builds respectively. + * Startup Changes in Emacs 27.1 diff --git a/lisp/subr.el b/lisp/subr.el index bdf98979c4..3f17b4774b 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -1557,8 +1557,6 @@ log10 ;; but Stefan insists to mark it so. (make-obsolete-variable 'translation-table-for-input nil "23.1") -(make-obsolete-variable 'x-gtk-use-window-move nil "26.1") - (defvaralias 'messages-buffer-max-lines 'message-log-max) (define-obsolete-variable-alias 'inhibit-null-byte-detection 'inhibit-nul-byte-detection "27.1") diff --git a/lisp/term/x-win.el b/lisp/term/x-win.el index 56061371fe..0f0c3f163f 100644 --- a/lisp/term/x-win.el +++ b/lisp/term/x-win.el @@ -1486,6 +1486,11 @@ x-gtk-map-stock (global-set-key [XF86WakeUp] 'ignore) +;;; Obsolete definitions +(make-obsolete-variable 'x-gtk-use-window-move nil "26.1") +(make-obsolete 'x-uses-old-gtk-dialog nil "27.1") +(make-obsolete-variable 'x-gtk-use-old-file-dialog nil "27.1") + (provide 'x-win) (provide 'term/x-win) diff --git a/src/gtkutil.c b/src/gtkutil.c index b130692c87..9894e02065 100644 --- a/src/gtkutil.c +++ b/src/gtkutil.c @@ -52,48 +52,19 @@ along with GNU Emacs. If not, see . */ #include #endif -#ifndef HAVE_GTK_WIDGET_SET_HAS_WINDOW -#define gtk_widget_set_has_window(w, b) \ - (gtk_fixed_set_has_window (GTK_FIXED (w), b)) -#endif -#ifndef HAVE_GTK_DIALOG_GET_ACTION_AREA -#define gtk_dialog_get_action_area(w) ((w)->action_area) -#define gtk_dialog_get_content_area(w) ((w)->vbox) -#endif -#ifndef HAVE_GTK_WIDGET_GET_SENSITIVE -#define gtk_widget_get_sensitive(w) (GTK_WIDGET_SENSITIVE (w)) -#endif -#ifndef HAVE_GTK_ADJUSTMENT_GET_PAGE_SIZE -#define gtk_adjustment_set_page_size(w, s) ((w)->page_size = (s)) -#define gtk_adjustment_set_page_increment(w, s) ((w)->page_increment = (s)) -#define gtk_adjustment_get_step_increment(w) ((w)->step_increment) -#define gtk_adjustment_set_step_increment(w, s) ((w)->step_increment = (s)) -#endif -#if GTK_CHECK_VERSION (2, 12, 0) -#define remove_submenu(w) gtk_menu_item_set_submenu ((w), NULL) +#ifdef HAVE_GTK3 +#define XG_TEXT_CANCEL "Cancel" +#define XG_TEXT_OK "OK" +#define XG_TEXT_OPEN "Open" #else -#define remove_submenu(w) gtk_menu_item_remove_submenu ((w)) +#define XG_TEXT_CANCEL GTK_STOCK_CANCEL +#define XG_TEXT_OK GTK_STOCK_OK +#define XG_TEXT_OPEN GTK_STOCK_OPEN #endif -#if ! GTK_CHECK_VERSION (2, 14, 0) -#define gtk_adjustment_configure(adj, xvalue, xlower, \ - xupper, xstep_increment, \ - xpage_increment, xpagesize) \ - do { \ - adj->lower = xlower; \ - adj->upper = xupper; \ - adj->page_size = xpagesize; \ - gtk_adjustment_set_value (adj, xvalue); \ - adj->page_increment = xpage_increment; \ - adj->step_increment = xstep_increment; \ - } while (0) -#endif /* < Gtk+ 2.14 */ +#ifndef HAVE_GTK3 #ifdef HAVE_FREETYPE -#if GTK_CHECK_VERSION (3, 2, 0) -#define USE_NEW_GTK_FONT_CHOOSER 1 -#else -#define USE_NEW_GTK_FONT_CHOOSER 0 #define gtk_font_chooser_dialog_new(x, y) \ gtk_font_selection_dialog_new (x) #undef GTK_FONT_CHOOSER @@ -101,35 +72,15 @@ along with GNU Emacs. If not, see . */ #define gtk_font_chooser_set_font(x, y) \ gtk_font_selection_dialog_set_font_name (x, y) #endif -#endif /* HAVE_FREETYPE */ -#if GTK_CHECK_VERSION (3, 10, 0) -#define XG_TEXT_CANCEL "Cancel" -#define XG_TEXT_OK "OK" -#define XG_TEXT_OPEN "Open" -#else -#define XG_TEXT_CANCEL GTK_STOCK_CANCEL -#define XG_TEXT_OK GTK_STOCK_OK -#define XG_TEXT_OPEN GTK_STOCK_OPEN -#endif - -#ifndef HAVE_GTK3 -#ifdef USE_GTK_TOOLTIP -#define gdk_window_get_screen(w) gdk_drawable_get_screen (w) -#endif #define gdk_window_get_geometry(w, a, b, c, d) \ gdk_window_get_geometry (w, a, b, c, d, 0) -#define gdk_x11_window_lookup_for_display(d, w) \ - gdk_xid_table_lookup_for_display (d, w) #define gtk_box_new(ori, spacing) \ ((ori) == GTK_ORIENTATION_HORIZONTAL \ ? gtk_hbox_new (FALSE, (spacing)) : gtk_vbox_new (FALSE, (spacing))) #define gtk_scrollbar_new(ori, spacing) \ ((ori) == GTK_ORIENTATION_HORIZONTAL \ ? gtk_hscrollbar_new ((spacing)) : gtk_vscrollbar_new ((spacing))) -#ifndef GDK_KEY_g -#define GDK_KEY_g GDK_g -#endif #endif /* HAVE_GTK3 */ #define XG_BIN_CHILD(x) gtk_bin_get_child (GTK_BIN (x)) @@ -227,7 +178,7 @@ xg_get_gdk_scale (void) int xg_get_scale (struct frame *f) { -#if GTK_CHECK_VERSION (3, 10, 0) +#ifdef HAVE_GTK3 if (FRAME_GTK_WIDGET (f)) return gtk_widget_get_scale_factor (FRAME_GTK_WIDGET (f)); #endif @@ -261,15 +212,7 @@ xg_display_close (Display *dpy) gdpy_def = gdpy_new; } -#if GTK_CHECK_VERSION (2, 0, 0) && ! GTK_CHECK_VERSION (2, 10, 0) - /* GTK 2.2-2.8 has a bug that makes gdk_display_close crash - . This way we - can continue running, but there will be memory leaks. */ - g_object_run_dispose (G_OBJECT (gdpy)); -#else - /* This seems to be fixed in GTK 2.10. */ gdk_display_close (gdpy); -#endif } @@ -368,7 +311,7 @@ xg_get_image_for_pixmap (struct frame *f, GtkWidget *widget, GtkImage *old_widget) { -#if defined USE_CAIRO && GTK_CHECK_VERSION (3, 10, 0) +#if defined USE_CAIRO && defined HAVE_GTK3 cairo_surface_t *surface; #else GdkPixbuf *icon_buf; @@ -400,7 +343,7 @@ xg_get_image_for_pixmap (struct frame *f, on a monochrome display, and sometimes bad on all displays with certain themes. */ -#if defined USE_CAIRO && GTK_CHECK_VERSION (3, 10, 0) +#if defined USE_CAIRO && defined HAVE_GTK3 surface = img->cr_data; if (surface) @@ -643,8 +586,6 @@ xg_check_special_colors (struct frame *f, We use that to pop down the tooltip. This happens if Gtk+ for some reason wants to change or hide the tooltip. */ -#ifdef USE_GTK_TOOLTIP - static void hierarchy_ch_cb (GtkWidget *widget, GtkWidget *previous_toplevel, @@ -711,8 +652,6 @@ qttip_cb (GtkWidget *widget, return FALSE; } -#endif /* USE_GTK_TOOLTIP */ - /* Prepare a tooltip to be shown, i.e. calculate WIDTH and HEIGHT. Return true if a system tooltip is available. */ @@ -722,9 +661,6 @@ xg_prepare_tooltip (struct frame *f, int *width, int *height) { -#ifndef USE_GTK_TOOLTIP - return 0; -#else struct x_output *x = f->output_data.x; GtkWidget *widget; GdkWindow *gwin; @@ -768,7 +704,6 @@ xg_prepare_tooltip (struct frame *f, unblock_input (); return TRUE; -#endif /* USE_GTK_TOOLTIP */ } /* Show the tooltip at ROOT_X and ROOT_Y. @@ -777,7 +712,6 @@ xg_prepare_tooltip (struct frame *f, void xg_show_tooltip (struct frame *f, int root_x, int root_y) { -#ifdef USE_GTK_TOOLTIP struct x_output *x = f->output_data.x; if (x->ttip_window) { @@ -787,7 +721,6 @@ xg_show_tooltip (struct frame *f, int root_x, int root_y) gtk_widget_show (GTK_WIDGET (x->ttip_window)); unblock_input (); } -#endif } @@ -797,7 +730,6 @@ xg_show_tooltip (struct frame *f, int root_x, int root_y) bool xg_hide_tooltip (struct frame *f) { -#ifdef USE_GTK_TOOLTIP if (f->output_data.x->ttip_window) { GtkWindow *win = f->output_data.x->ttip_window; @@ -816,7 +748,6 @@ xg_hide_tooltip (struct frame *f) return TRUE; } -#endif return FALSE; } @@ -1193,7 +1124,7 @@ xg_create_frame_widgets (struct frame *f) has backported it to Gtk+ 2.0 and they add the resize grip for Gtk+ 2.0 applications also. But it has a bug that makes Emacs loop forever, so disable the grip. */ -#if (! GTK_CHECK_VERSION (3, 0, 0) \ +#if (! defined HAVE_GTK3 \ && defined HAVE_GTK_WINDOW_SET_HAS_RESIZE_GRIP) gtk_window_set_has_resize_grip (GTK_WINDOW (wtop), FALSE); #endif @@ -1328,14 +1259,12 @@ xg_create_frame_widgets (struct frame *f) gdk_window_set_override_redirect (gwin, TRUE); } -#ifdef USE_GTK_TOOLTIP /* Steal a tool tip window we can move ourselves. */ f->output_data.x->ttip_widget = 0; f->output_data.x->ttip_lbl = 0; f->output_data.x->ttip_window = 0; gtk_widget_set_tooltip_text (wtop, "Dummy text"); g_signal_connect (wtop, "query-tooltip", G_CALLBACK (qttip_cb), f); -#endif { GdkScreen *screen = gtk_widget_get_screen (wtop); @@ -1363,9 +1292,7 @@ xg_free_frame_widgets (struct frame *f) { if (FRAME_GTK_OUTER_WIDGET (f)) { -#ifdef USE_GTK_TOOLTIP struct x_output *x = f->output_data.x; -#endif struct xg_frame_tb_info *tbinfo = g_object_get_data (G_OBJECT (FRAME_GTK_OUTER_WIDGET (f)), TB_INFO_KEY); @@ -1378,12 +1305,10 @@ xg_free_frame_widgets (struct frame *f) FRAME_X_WINDOW (f) = 0; /* Set to avoid XDestroyWindow in xterm.c */ FRAME_X_RAW_DRAWABLE (f) = 0; FRAME_GTK_OUTER_WIDGET (f) = 0; -#ifdef USE_GTK_TOOLTIP if (x->ttip_lbl) gtk_widget_destroy (x->ttip_lbl); if (x->ttip_widget) g_object_unref (G_OBJECT (x->ttip_widget)); -#endif } } @@ -1561,7 +1486,6 @@ xg_set_undecorated (struct frame *f, Lisp_Object undecorated) void xg_frame_restack (struct frame *f1, struct frame *f2, bool above_flag) { -#if GTK_CHECK_VERSION (2, 18, 0) block_input (); if (FRAME_GTK_OUTER_WIDGET (f1) && FRAME_GTK_OUTER_WIDGET (f2)) { @@ -1576,7 +1500,6 @@ xg_frame_restack (struct frame *f1, struct frame *f2, bool above_flag) x_sync (f1); } unblock_input (); -#endif } @@ -1937,29 +1860,6 @@ xg_dialog_run (struct frame *f, GtkWidget *w) /*********************************************************************** File dialog functions ***********************************************************************/ -/* Return true if the old file selection dialog is being used. */ - -bool -xg_uses_old_file_dialog (void) -{ -#ifdef HAVE_GTK_FILE_SELECTION_NEW - return x_gtk_use_old_file_dialog; -#else - return 0; -#endif -} - - -typedef char * (*xg_get_file_func) (GtkWidget *); - -/* Return the selected file for file chooser dialog W. - The returned string must be free:d. */ - -static char * -xg_get_file_name_from_chooser (GtkWidget *w) -{ - return gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (w)); -} /* Callback called when the "Show hidden files" toggle is pressed. WIDGET is the toggle widget, DATA is the file chooser dialog. */ @@ -2017,8 +1917,7 @@ static GtkWidget * xg_get_file_with_chooser (struct frame *f, char *prompt, char *default_filename, - bool mustmatch_p, bool only_dir_p, - xg_get_file_func *func) + bool mustmatch_p, bool only_dir_p) { char msgbuf[1024]; @@ -2036,7 +1935,7 @@ xg_get_file_with_chooser (struct frame *f, XG_TEXT_CANCEL, GTK_RESPONSE_CANCEL, (mustmatch_p || only_dir_p ? XG_TEXT_OPEN : XG_TEXT_OK), - GTK_RESPONSE_OK, + GTK_RESPONSE_ACCEPT, NULL); gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (filewin), TRUE); @@ -2059,9 +1958,7 @@ xg_get_file_with_chooser (struct frame *f, if (x_gtk_file_dialog_help_text) { char *z = msgbuf; - /* Gtk+ 2.10 has the file name text entry box integrated in the dialog. - Show the C-l help text only for versions < 2.10. */ - if (gtk_check_version (2, 10, 0) && action != GTK_FILE_CHOOSER_ACTION_SAVE) + if (action != GTK_FILE_CHOOSER_ACTION_SAVE) z = stpcpy (z, "\nType C-l to display a file name text entry box.\n"); strcpy (z, "\nIf you don't like this file selector, use the " "corresponding\nkey binding or customize " @@ -2106,60 +2003,8 @@ xg_get_file_with_chooser (struct frame *f, } } - *func = xg_get_file_name_from_chooser; - return filewin; -} - -#ifdef HAVE_GTK_FILE_SELECTION_NEW - -/* Return the selected file for file selector dialog W. - The returned string must be free:d. */ - -static char * -xg_get_file_name_from_selector (GtkWidget *w) -{ - GtkFileSelection *filesel = GTK_FILE_SELECTION (w); - return xstrdup (gtk_file_selection_get_filename (filesel)); -} - -/* Create a file selection dialog. - F is the current frame. - PROMPT is a prompt to show to the user. May not be NULL. - DEFAULT_FILENAME is a default selection to be displayed. May be NULL. - If MUSTMATCH_P, the returned file name must be an existing - file. *FUNC is set to a function that can be used to retrieve the - selected file name from the returned widget. - - Returns the created widget. */ - -static GtkWidget * -xg_get_file_with_selection (struct frame *f, - char *prompt, - char *default_filename, - bool mustmatch_p, bool only_dir_p, - xg_get_file_func *func) -{ - GtkWidget *filewin; - GtkFileSelection *filesel; - - filewin = gtk_file_selection_new (prompt); - filesel = GTK_FILE_SELECTION (filewin); - - if (default_filename) - gtk_file_selection_set_filename (filesel, default_filename); - - if (mustmatch_p) - { - /* The selection_entry part of filesel is not documented. */ - gtk_widget_set_sensitive (filesel->selection_entry, FALSE); - gtk_file_selection_hide_fileop_buttons (filesel); - } - - *func = xg_get_file_name_from_selector; - return filewin; } -#endif /* HAVE_GTK_FILE_SELECTION_NEW */ /* Read a file name from the user using a file dialog, either the old file selection dialog, or the new file chooser dialog. Which to use @@ -2181,33 +2026,21 @@ xg_get_file_name (struct frame *f, bool mustmatch_p, bool only_dir_p) { - GtkWidget *w = 0; - char *fn = 0; - int filesel_done = 0; - xg_get_file_func func; - -#ifdef HAVE_GTK_FILE_SELECTION_NEW - - if (xg_uses_old_file_dialog ()) - w = xg_get_file_with_selection (f, prompt, default_filename, - mustmatch_p, only_dir_p, &func); - else - w = xg_get_file_with_chooser (f, prompt, default_filename, - mustmatch_p, only_dir_p, &func); + GtkWidget *w; + char *name = NULL; + int filesel_done; -#else /* not HAVE_GTK_FILE_SELECTION_NEW */ w = xg_get_file_with_chooser (f, prompt, default_filename, - mustmatch_p, only_dir_p, &func); -#endif /* not HAVE_GTK_FILE_SELECTION_NEW */ + mustmatch_p, only_dir_p); gtk_widget_set_name (w, "emacs-filedialog"); filesel_done = xg_dialog_run (f, w); - if (filesel_done == GTK_RESPONSE_OK) - fn = (*func) (w); + if (filesel_done == GTK_RESPONSE_ACCEPT) + name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (w)); gtk_widget_destroy (w); - return fn; + return name; } /*********************************************************************** @@ -2216,7 +2049,7 @@ xg_get_file_name (struct frame *f, #ifdef HAVE_FREETYPE -#if USE_NEW_GTK_FONT_CHOOSER +#ifdef HAVE_GTK3 #define XG_WEIGHT_TO_SYMBOL(w) \ (w <= PANGO_WEIGHT_THIN ? Qextra_light \ @@ -2233,7 +2066,7 @@ xg_get_file_name (struct frame *f, : s == PANGO_STYLE_ITALIC ? Qitalic \ : Qnormal) -#endif /* USE_NEW_GTK_FONT_CHOOSER */ +#endif /* HAVE_GTK3 */ static char *x_last_font_name; @@ -2280,7 +2113,7 @@ xg_get_font (struct frame *f, const char *default_name) done = xg_dialog_run (f, w); if (done == GTK_RESPONSE_OK) { -#if USE_NEW_GTK_FONT_CHOOSER +#ifdef HAVE_GTK3 /* Use the GTK3 font chooser. */ PangoFontDescription *desc = gtk_font_chooser_get_font_desc (GTK_FONT_CHOOSER (w)); @@ -2320,7 +2153,7 @@ xg_get_font (struct frame *f, const char *default_name) g_free (x_last_font_name); x_last_font_name = font_name; } -#endif /* USE_NEW_GTK_FONT_CHOOSER */ +#endif /* HAVE_GTK3 */ } gtk_widget_destroy (w); @@ -3041,9 +2874,7 @@ xg_update_menubar (GtkWidget *menubar, bridge that might be loaded) that the item's label has changed. */ gtk_label_set_text (wlabel, utf8_label); -#if GTK_CHECK_VERSION (2, 16, 0) g_object_notify (G_OBJECT (witem), "label"); -#endif if (utf8_label) g_free (utf8_label); iter = g_list_next (iter); val = val->next; @@ -3222,10 +3053,8 @@ xg_update_menu_item (widget_value *val, } } -#if GTK_CHECK_VERSION (2, 16, 0) if (label_changed) /* See comment in xg_update_menubar. */ g_object_notify (G_OBJECT (w), "label"); -#endif } /* Update the toggle menu item W so it corresponds to VAL. */ @@ -3324,7 +3153,7 @@ xg_update_submenu (GtkWidget *submenu, { /* Not a submenu anymore. */ g_object_ref (G_OBJECT (sub)); - remove_submenu (witem); + gtk_menu_item_set_submenu (witem, NULL); gtk_widget_destroy (sub); } else if (cur->contents) @@ -4492,14 +4321,6 @@ xg_tool_bar_item_expose_callback (GtkWidget *w, } #endif -#ifdef HAVE_GTK_ORIENTABLE_SET_ORIENTATION -#define toolbar_set_orientation(w, o) \ - gtk_orientable_set_orientation (GTK_ORIENTABLE (w), o) -#else -#define toolbar_set_orientation(w, o) \ - gtk_toolbar_set_orientation (GTK_TOOLBAR (w), o) -#endif - /* Attach a tool bar to frame F. */ static void @@ -4509,10 +4330,10 @@ xg_pack_tool_bar (struct frame *f, Lisp_Object pos) bool into_hbox = EQ (pos, Qleft) || EQ (pos, Qright); GtkWidget *top_widget = x->toolbar_widget; - toolbar_set_orientation (x->toolbar_widget, - into_hbox - ? GTK_ORIENTATION_VERTICAL - : GTK_ORIENTATION_HORIZONTAL); + gtk_orientable_set_orientation (GTK_ORIENTABLE (x->toolbar_widget), + into_hbox + ? GTK_ORIENTATION_VERTICAL + : GTK_ORIENTATION_HORIZONTAL); if (into_hbox) { @@ -4565,7 +4386,7 @@ static void xg_create_tool_bar (struct frame *f) { struct x_output *x = f->output_data.x; -#if GTK_CHECK_VERSION (3, 3, 6) +#ifdef HAVE_GTK3 GtkStyleContext *gsty; #endif struct xg_frame_tb_info *tbinfo @@ -4589,10 +4410,11 @@ xg_create_tool_bar (struct frame *f) gtk_widget_set_name (x->toolbar_widget, "emacs-toolbar"); gtk_toolbar_set_style (GTK_TOOLBAR (x->toolbar_widget), GTK_TOOLBAR_ICONS); - toolbar_set_orientation (x->toolbar_widget, GTK_ORIENTATION_HORIZONTAL); + gtk_orientable_set_orientation (GTK_ORIENTABLE (x->toolbar_widget), + GTK_ORIENTATION_HORIZONTAL); g_signal_connect (x->toolbar_widget, "size-allocate", G_CALLBACK (tb_size_cb), f); -#if GTK_CHECK_VERSION (3, 3, 6) +#ifdef HAVE_GTK3 gsty = gtk_widget_get_style_context (x->toolbar_widget); gtk_style_context_add_class (gsty, "primary-toolbar"); #endif @@ -4645,7 +4467,7 @@ xg_make_tool_item (struct frame *f, GtkWidget *wb = gtk_button_new (); /* The eventbox is here so we can have tooltips on disabled items. */ GtkWidget *weventbox = gtk_event_box_new (); -#if GTK_CHECK_VERSION (3, 3, 6) +#ifdef HAVE_GTK3 GtkCssProvider *css_prov = gtk_css_provider_new (); GtkStyleContext *gsty; @@ -4777,7 +4599,7 @@ xg_tool_item_stale_p (GtkWidget *wbutton, const char *stock_name, { gpointer gold_img = g_object_get_data (G_OBJECT (wimage), XG_TOOL_BAR_IMAGE_DATA); -#if defined USE_CAIRO && GTK_CHECK_VERSION (3, 10, 0) +#if defined USE_CAIRO && defined HAVE_GTK3 void *old_img = (void *) gold_img; if (old_img != img->cr_data) return 1; @@ -4850,7 +4672,7 @@ find_icon_from_name (char *name, GtkIconTheme *icon_theme, char **icon_name) { -#if ! GTK_CHECK_VERSION (3, 10, 0) +#ifndef HAVE_GTK3 GtkStockItem stock_item; #endif @@ -4863,7 +4685,7 @@ find_icon_from_name (char *name, *icon_name = NULL; } -#if ! GTK_CHECK_VERSION (3, 10, 0) +#ifndef HAVE_GTK3 else if (gtk_stock_lookup (name, &stock_item)) *icon_name = NULL; #endif @@ -5078,7 +4900,7 @@ update_frame_tool_bar (struct frame *f) prepare_image_for_display (f, img); if (img->load_failed_p -#if defined USE_CAIRO && GTK_CHECK_VERSION (3, 10, 0) +#if defined USE_CAIRO && defined HAVE_GTK3 || img->cr_data == NULL #else || img->pixmap == None @@ -5113,7 +4935,7 @@ update_frame_tool_bar (struct frame *f) else if (stock_name) { -#if GTK_CHECK_VERSION (3, 10, 0) +#ifdef HAVE_GTK3 w = gtk_image_new_from_icon_name (stock_name, icon_size); #else w = gtk_image_new_from_stock (stock_name, icon_size); @@ -5133,7 +4955,7 @@ update_frame_tool_bar (struct frame *f) { w = xg_get_image_for_pixmap (f, img, x->widget, NULL); g_object_set_data (G_OBJECT (w), XG_TOOL_BAR_IMAGE_DATA, -#if defined USE_CAIRO && GTK_CHECK_VERSION (3, 10, 0) +#if defined USE_CAIRO && defined HAVE_GTK3 (gpointer)img->cr_data #else (gpointer)img->pixmap @@ -5309,7 +5131,7 @@ xg_initialize (void) settings = gtk_settings_get_for_screen (gdk_display_get_default_screen (gdk_display_get_default ())); -#if ! GTK_CHECK_VERSION (3, 10, 0) +#ifndef HAVE_GTK3 /* Remove F10 as a menu accelerator, it does not mix well with Emacs key bindings. It doesn't seem to be any way to remove properties, so we set it to "" which in means "no key". */ diff --git a/src/xfns.c b/src/xfns.c index 13f66f0718..2d445ad6fb 100644 --- a/src/xfns.c +++ b/src/xfns.c @@ -4496,7 +4496,7 @@ On MS Windows, this just returns nil. */) Return false if and only if the workarea information cannot be obtained via the _NET_WORKAREA root window property. */ -#if ! GTK_CHECK_VERSION (3, 4, 0) +#ifndef HAVE_GTK3 static bool x_get_net_workarea (struct x_display_info *dpyinfo, XRectangle *rect) { @@ -4906,9 +4906,9 @@ Internal use only, use `display-monitor-attributes-list' instead. */) Lisp_Object attributes_list = Qnil; #ifdef USE_GTK - double mm_width_per_pixel, mm_height_per_pixel; GdkDisplay *gdpy; #if ! GTK_CHECK_VERSION (3, 22, 0) + double mm_width_per_pixel, mm_height_per_pixel; GdkScreen *gscreen; #endif gint primary_monitor = 0, n_monitors, i; @@ -4917,19 +4917,18 @@ Internal use only, use `display-monitor-attributes-list' instead. */) struct MonitorInfo *monitors; block_input (); - mm_width_per_pixel = ((double) WidthMMOfScreen (dpyinfo->screen) - / x_display_pixel_width (dpyinfo)); - mm_height_per_pixel = ((double) HeightMMOfScreen (dpyinfo->screen) - / x_display_pixel_height (dpyinfo)); gdpy = gdk_x11_lookup_xdisplay (dpyinfo->display); #if GTK_CHECK_VERSION (3, 22, 0) n_monitors = gdk_display_get_n_monitors (gdpy); #else gscreen = gdk_display_get_default_screen (gdpy); -#if GTK_CHECK_VERSION (2, 20, 0) - primary_monitor = gdk_screen_get_primary_monitor (gscreen); -#endif n_monitors = gdk_screen_get_n_monitors (gscreen); + primary_monitor = gdk_screen_get_primary_monitor (gscreen); + /* Fallback if gdk_screen_get_monitor_{width,height}_mm fail */ + mm_width_per_pixel = ((double) WidthMMOfScreen (dpyinfo->screen) + / x_display_pixel_width (dpyinfo)); + mm_height_per_pixel = ((double) HeightMMOfScreen (dpyinfo->screen) + / x_display_pixel_height (dpyinfo)); #endif monitor_frames = make_nil_vector (n_monitors); monitors = xzalloc (n_monitors * sizeof *monitors); @@ -4958,7 +4957,7 @@ Internal use only, use `display-monitor-attributes-list' instead. */) for (i = 0; i < n_monitors; ++i) { - gint width_mm = -1, height_mm = -1; + gint width_mm, height_mm; GdkRectangle rec, work; struct MonitorInfo *mi = &monitors[i]; int scale = 1; @@ -4975,18 +4974,17 @@ Internal use only, use `display-monitor-attributes-list' instead. */) #if GTK_CHECK_VERSION (3, 22, 0) width_mm = gdk_monitor_get_width_mm (monitor); height_mm = gdk_monitor_get_height_mm (monitor); -#elif GTK_CHECK_VERSION (2, 14, 0) +#else width_mm = gdk_screen_get_monitor_width_mm (gscreen, i); height_mm = gdk_screen_get_monitor_height_mm (gscreen, i); -#endif if (width_mm < 0) width_mm = rec.width * mm_width_per_pixel + 0.5; if (height_mm < 0) height_mm = rec.height * mm_height_per_pixel + 0.5; - +#endif #if GTK_CHECK_VERSION (3, 22, 0) gdk_monitor_get_workarea (monitor, &work); -#elif GTK_CHECK_VERSION (3, 4, 0) +#elif defined HAVE_GTK3 gdk_screen_get_monitor_workarea (gscreen, i, &work); #else /* Emulate the behavior of GTK+ 3.4. */ @@ -5010,7 +5008,7 @@ Internal use only, use `display-monitor-attributes-list' instead. */) /* GTK returns scaled sizes for the workareas. */ #if GTK_CHECK_VERSION (3, 22, 0) scale = gdk_monitor_get_scale_factor (monitor); -#elif GTK_CHECK_VERSION (3, 10, 0) +#elif defined HAVE_GTK3 scale = gdk_screen_get_monitor_scale_factor (gscreen, i); #endif rec.width *= scale; @@ -5031,7 +5029,7 @@ Internal use only, use `display-monitor-attributes-list' instead. */) #if GTK_CHECK_VERSION (3, 22, 0) mi->name = xstrdup (gdk_monitor_get_model (monitor)); -#elif GTK_CHECK_VERSION (2, 14, 0) +#else mi->name = gdk_screen_get_monitor_plug_name (gscreen, i); #endif } @@ -5041,11 +5039,7 @@ Internal use only, use `display-monitor-attributes-list' instead. */) primary_monitor, monitor_frames, source); -#if GTK_CHECK_VERSION (2, 14, 0) free_monitors (monitors, n_monitors); -#else - xfree (monitors); -#endif unblock_input (); #else /* not USE_GTK */ @@ -5380,7 +5374,7 @@ Frames are listed from topmost (first) to bottommost (last). */) static void x_frame_restack (struct frame *f1, struct frame *f2, bool above_flag) { -#if defined (USE_GTK) && GTK_CHECK_VERSION (2, 18, 0) +#ifdef USE_GTK block_input (); xg_frame_restack (f1, f2, above_flag); unblock_input (); @@ -7003,19 +6997,15 @@ DEFUN ("x-double-buffered-p", Fx_double_buffered_p, Sx_double_buffered_p, File selection dialog ***********************************************************************/ +/* Obsoleted in 27.1. */ DEFUN ("x-uses-old-gtk-dialog", Fx_uses_old_gtk_dialog, Sx_uses_old_gtk_dialog, 0, 0, 0, - doc: /* Return t if the old Gtk+ file selection dialog is used. */) + doc: /* Return t if the old Gtk+ file selection dialog is used. +Note that since version 27.1 the old Gtk+ file selection dialog is +never used. */) (void) { -#ifdef USE_GTK - if (use_dialog_box - && use_file_dialog - && window_system_available (SELECTED_FRAME ()) - && xg_uses_old_file_dialog ()) - return Qt; -#endif return Qnil; } @@ -7812,11 +7802,12 @@ such a font. This is especially effective for large fonts such as Chinese, Japanese, and Korean. */); Vx_pixel_size_width_font_regexp = Qnil; +/* Obsoleted in 27.1. */ /* This is not ifdef:ed, so other builds than GTK can customize it. */ DEFVAR_BOOL ("x-gtk-use-old-file-dialog", x_gtk_use_old_file_dialog, doc: /* Non-nil means prompt with the old GTK file selection dialog. -If nil or if the file selection dialog is not available, the new GTK file -chooser is used instead. To turn off all file dialogs set the +Since 27.1 Emacs ignores the value of this variable and uses the +new GTK file chooser. To turn off all file dialogs set the variable `use-file-dialog'. */); x_gtk_use_old_file_dialog = false; diff --git a/src/xterm.c b/src/xterm.c index 5aa3e3ff25..c711950a5a 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -12513,7 +12513,7 @@ x_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name) dpy = DEFAULT_GDK_DISPLAY (); -#if ! GTK_CHECK_VERSION (2, 90, 0) +#ifndef HAVE_GTK3 /* Load our own gtkrc if it exists. */ { const char *file = "~/.emacs.d/gtkrc"; diff --git a/src/xterm.h b/src/xterm.h index c5ad38650c..bb7631a3f4 100644 --- a/src/xterm.h +++ b/src/xterm.h @@ -50,17 +50,8 @@ typedef Widget xt_or_gtk_widget; #include #endif /* USE_GTK */ -/* True iff GTK's version is at least I.J.K. */ -#ifndef GTK_CHECK_VERSION -# ifdef USE_GTK -# define GTK_CHECK_VERSION(i, j, k) \ - ((i) \ - < GTK_MAJOR_VERSION + ((j) \ - < GTK_MINOR_VERSION + ((k) \ - <= GTK_MICRO_VERSION))) -# else -# define GTK_CHECK_VERSION(i, j, k) false -# endif +#ifndef USE_GTK +#define GTK_CHECK_VERSION(i, j, k) false #endif #ifdef USE_GTK @@ -76,11 +67,6 @@ typedef GtkWidget *xt_or_gtk_widget; #endif #endif /* USE_GTK */ -/* The GtkTooltip API came in 2.12, but gtk-enable-tooltips in 2.14. */ -#if GTK_CHECK_VERSION (2, 14, 0) -#define USE_GTK_TOOLTIP -#endif - #ifdef USE_CAIRO #include #ifdef CAIRO_HAS_PDF_SURFACE @@ -594,12 +580,9 @@ struct x_output GdkGeometry size_hints; long hint_flags; -#ifdef USE_GTK_TOOLTIP GtkTooltip *ttip_widget; GtkWidget *ttip_lbl; GtkWindow *ttip_window; -#endif /* USE_GTK_TOOLTIP */ - #endif /* USE_GTK */ /* If >=0, a bitmap index. The indicated bitmap is used for the @@ -793,18 +776,6 @@ extern void x_mark_frame_dirty (struct frame *f); FRAME_X_WINDOW (f)) #else #ifdef USE_GTK -/* Functions not present in older Gtk+ */ - -#ifndef HAVE_GTK_WIDGET_GET_WINDOW -#define gtk_widget_get_window(w) ((w)->window) -#endif -#ifndef HAVE_GTK_WIDGET_GET_MAPPED -#define gtk_widget_get_mapped(w) (GTK_WIDGET_MAPPED (w)) -#endif -#ifndef HAVE_GTK_ADJUSTMENT_GET_PAGE_SIZE -#define gtk_adjustment_get_page_size(w) ((w)->page_size) -#define gtk_adjustment_get_upper(w) ((w)->upper) -#endif #ifdef HAVE_GTK3 #define DEFAULT_GDK_DISPLAY() \ -- 2.21.0 --=-=-=--