mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-24 07:20:37 +00:00
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. These check for functions available in later GTK 2 versions. These checks and 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. * 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. Remove checks of now always true USE_GTK_TOOLTIP.
This commit is contained in:
parent
5c2f94a182
commit
fc0f469fb5
34
configure.ac
34
configure.ac
@ -2688,8 +2688,8 @@ check_gtk2=no
|
||||
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.
|
||||
@ -2716,8 +2716,8 @@ if test "${opsys}" != "mingw32"; then
|
||||
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.
|
||||
@ -2804,30 +2804,8 @@ if test "${HAVE_GTK}" = "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 <gtk/gtk.h>])
|
||||
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 <gtk/gtk.h>])
|
||||
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
|
||||
|
4
etc/NEWS
4
etc/NEWS
@ -89,6 +89,10 @@ Options" in the Emacs manual for more information.
|
||||
check that the portable dumper code has been updated to match the last
|
||||
change to one of the data structures that it relies on.
|
||||
|
||||
---
|
||||
** 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
|
||||
|
||||
|
158
src/gtkutil.c
158
src/gtkutil.c
@ -52,58 +52,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
|
||||
#include <X11/extensions/Xdbe.h>
|
||||
#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)
|
||||
#else
|
||||
#define remove_submenu(w) gtk_menu_item_remove_submenu ((w))
|
||||
#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 */
|
||||
|
||||
#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
|
||||
#define GTK_FONT_CHOOSER(x) GTK_FONT_SELECTION_DIALOG (x)
|
||||
#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)
|
||||
#ifdef HAVE_GTK3
|
||||
#define XG_TEXT_CANCEL "Cancel"
|
||||
#define XG_TEXT_OK "OK"
|
||||
#define XG_TEXT_OPEN "Open"
|
||||
@ -114,22 +63,24 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_GTK3
|
||||
#ifdef USE_GTK_TOOLTIP
|
||||
#define gdk_window_get_screen(w) gdk_drawable_get_screen (w)
|
||||
|
||||
#ifdef HAVE_FREETYPE
|
||||
#define gtk_font_chooser_dialog_new(x, y) \
|
||||
gtk_font_selection_dialog_new (x)
|
||||
#undef GTK_FONT_CHOOSER
|
||||
#define GTK_FONT_CHOOSER(x) GTK_FONT_SELECTION_DIALOG (x)
|
||||
#define gtk_font_chooser_set_font(x, y) \
|
||||
gtk_font_selection_dialog_set_font_name (x, y)
|
||||
#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
|
||||
<https://gitlab.gnome.org/GNOME/gtk/issues/221>. 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
|
||||
}
|
||||
|
||||
|
||||
@ -2216,7 +2139,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 +2156,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 +2203,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 +2243,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 +2964,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 +3143,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 +3243,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 +4411,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 +4420,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 +4476,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 +4500,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 +4557,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 +4689,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 +4762,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 +4775,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 +4990,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 +5025,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 +5045,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 +5221,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". */
|
||||
|
36
src/xfns.c
36
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)
|
||||
dupstring (&mi->name, (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 ();
|
||||
|
@ -12514,7 +12514,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";
|
||||
|
33
src/xterm.h
33
src/xterm.h
@ -50,17 +50,8 @@ typedef Widget xt_or_gtk_widget;
|
||||
#include <gdk/gdkx.h>
|
||||
#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 <cairo-xlib.h>
|
||||
#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() \
|
||||
|
Loading…
Reference in New Issue
Block a user