From: martin rudalics <rudalics@gmx.at>
To: Dmitry Gutov <dgutov@yandex.ru>, tumashu <tumashu@163.com>
Cc: "emacs-devel@gnu.org" <emacs-devel@gnu.org>
Subject: Re: Emacs's set-frame-size can not work well with gnome-shell?
Date: Sun, 16 Feb 2020 11:01:09 +0100 [thread overview]
Message-ID: <2af76486-f976-eef0-683c-45b7ea6c54eb@gmx.at> (raw)
In-Reply-To: <127bb534-e77c-bad0-683b-92c206feeba1@yandex.ru>
[-- Attachment #1: Type: text/plain, Size: 1218 bytes --]
> But anyway, the second patch is equivalent to my workaround
> (hiding/showing the frame), so it doesn't seem strictly necessary. The
> downside is the same: flickering.
That's what I wanted to know - whether the flickering is just the same
as with your Lisp solution.
> I guess the only part that could be
> improved there is to avoid resizing (and flicker) if the target size
> stays the same.
We could try that.
> Another thing: judging by the file names, at least, that change in the
> behavior would also affect the gtk2 build. But it's already working
> fine. We certainly don't want to introduce flickering on resize to it.
Hiding is controlled by 'x-gtk-hide-child-frame-during-resize' which you
can toggle at any time during a session.
> To clarify: would you consider the patch #1 for inclusion in Emacs 27?
Not in its present form. I attach another variant based on a variable
'x-resize-child-frame-special'. But I cannot test it any more because
since yesterday mutter --replace crashes here with
mutter[1053]: segfault at 88 ip 00007fe0cd3f05f5 sp 00007ffdb7e46470 error 6 in libmutter-3.so.0.0.0[7fe0cd3ba000+db000]
so that patch likely needs tweaking (if it works at all).
martin
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: x-resize-child-frame-special.diff --]
[-- Type: text/x-patch; name="x-resize-child-frame-special.diff", Size: 2765 bytes --]
diff --git a/src/gtkutil.c b/src/gtkutil.c
index 6308c38f16..a77810141a 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -997,12 +997,13 @@ xg_frame_set_char_size (struct frame *f, int width, int height)
}
else
{
+ GdkWindow *gwin = gtk_widget_get_window (FRAME_GTK_OUTER_WIDGET (f));
+
frame_size_history_add
(f, Qxg_frame_set_char_size_3, width, height,
list2i (totalwidth, totalheight));
- gtk_window_resize (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
- totalwidth, totalheight);
+ gdk_window_resize (gwin, (gint)totalwidth, (gint)totalheight);
fullscreen = Qnil;
}
diff --git a/src/xfns.c b/src/xfns.c
index 276ea1c393..cfe4e7a2c0 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -4125,6 +4125,9 @@ DEFUN ("x-create-frame", Fx_create_frame, Sx_create_frame,
x_wm_set_size_hint (f, window_prompting, false);
unblock_input ();
+ if (FRAME_PARENT_FRAME (f) && x_resize_child_frame_special)
+ adjust_frame_size (f, 1000, 1000, 0, true, Qx_create_frame_2);
+
adjust_frame_size (f, FRAME_TEXT_WIDTH (f), FRAME_TEXT_HEIGHT (f),
0, true, Qx_create_frame_2);
diff --git a/src/xterm.c b/src/xterm.c
index 21d99f0c7b..84b154f8fc 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -8953,6 +8953,23 @@ handle_one_xevent (struct x_display_info *dpyinfo,
#ifdef USE_CAIRO
x_cr_update_surface_desired_size (f, configureEvent.xconfigure.width,
configureEvent.xconfigure.height);
+#endif
+ f = 0;
+ }
+ else if (f && FRAME_PARENT_FRAME (f)
+ && x_resize_child_frame_special
+ && (configureEvent.xconfigure.width != FRAME_PIXEL_WIDTH (f)
+ || configureEvent.xconfigure.height != FRAME_PIXEL_HEIGHT (f)))
+ {
+ block_input ();
+ if (FRAME_X_DOUBLE_BUFFERED_P (f))
+ font_drop_xrender_surfaces (f);
+ unblock_input ();
+ xg_frame_resized (f, configureEvent.xconfigure.width,
+ configureEvent.xconfigure.height);
+#ifdef USE_CAIRO
+ x_cr_update_surface_desired_size (f, configureEvent.xconfigure.width,
+ configureEvent.xconfigure.height);
#endif
f = 0;
}
@@ -13747,4 +13764,10 @@ syms_of_xterm (void)
consuming frame position adjustments. In newer versions of GTK, Emacs
always uses gtk_window_move and ignores the value of this variable. */);
x_gtk_use_window_move = true;
+
+ DEFVAR_BOOL ("x-resize-child-frame-special", x_resize_child_frame_special,
+ doc: /* Non-nil means treat child frames specially during resizing.
+Set this if and only if your window manager refuses to resize child
+frames as expected. */);
+ x_resize_child_frame_special = false;
}
next prev parent reply other threads:[~2020-02-16 10:01 UTC|newest]
Thread overview: 197+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-10 2:34 Emacs's set-frame-size can not work well with gnome-shell? tumashu
2020-01-10 9:56 ` martin rudalics
2020-01-11 1:29 ` tumashu
2020-01-11 7:50 ` martin rudalics
2020-01-11 9:56 ` Dmitry Gutov
2020-01-11 10:19 ` martin rudalics
2020-01-11 10:21 ` Dmitry Gutov
2020-01-11 10:35 ` martin rudalics
2020-01-11 11:21 ` Dmitry Gutov
2020-01-11 13:45 ` martin rudalics
2020-01-14 2:09 ` Dmitry Gutov
2020-01-14 15:50 ` martin rudalics
2020-01-15 1:31 ` Dmitry Gutov
2020-01-15 8:08 ` martin rudalics
2020-01-15 23:53 ` Dmitry Gutov
2020-01-16 8:03 ` martin rudalics
2020-01-16 8:15 ` Dmitry Gutov
2020-01-16 9:18 ` martin rudalics
2020-01-16 9:27 ` Dmitry Gutov
2020-01-16 9:44 ` martin rudalics
2020-01-16 10:12 ` Dmitry Gutov
2020-01-16 10:22 ` martin rudalics
2020-01-16 15:03 ` Dmitry Gutov
2020-01-16 18:33 ` martin rudalics
[not found] ` <15405719-d58d-44db-f1df-ad3bb272b2fc@yandex.ru>
[not found] ` <aba0683f-466c-76cf-9024-e18bfc9fdc94@gmx.at>
2020-01-18 2:05 ` Dmitry Gutov
2020-01-18 2:29 ` Dmitry Gutov
2020-01-18 8:34 ` martin rudalics
2020-01-18 12:27 ` Dmitry Gutov
2020-01-18 13:48 ` martin rudalics
2020-01-19 2:45 ` Dmitry Gutov
2020-01-19 8:52 ` martin rudalics
2020-01-20 14:14 ` Dmitry Gutov
2020-01-20 15:57 ` martin rudalics
2020-01-20 22:20 ` Dmitry Gutov
2020-01-21 8:29 ` martin rudalics
2020-01-21 11:36 ` Dmitry Gutov
2020-01-21 16:11 ` martin rudalics
2020-01-21 21:33 ` Dmitry Gutov
2020-01-22 9:07 ` martin rudalics
2020-01-22 10:57 ` Dmitry Gutov
2020-01-18 8:32 ` martin rudalics
2020-01-20 13:37 ` Dmitry Gutov
2020-01-20 15:57 ` martin rudalics
2020-01-20 23:02 ` Dmitry Gutov
2020-01-21 8:29 ` martin rudalics
2020-01-21 12:11 ` Dmitry Gutov
2020-01-21 16:12 ` martin rudalics
2020-01-21 22:26 ` Dmitry Gutov
2020-01-22 9:08 ` martin rudalics
2020-01-22 11:35 ` Dmitry Gutov
2020-01-22 13:18 ` tumashu
2020-01-22 13:32 ` Dmitry Gutov
2020-01-22 16:19 ` Eli Zaretskii
2020-01-22 17:36 ` martin rudalics
2020-01-22 21:15 ` Dmitry Gutov
2020-01-25 8:41 ` martin rudalics
2020-01-25 10:09 ` Dmitry Gutov
2020-01-25 12:10 ` martin rudalics
2020-01-26 11:59 ` Dmitry Gutov
2020-01-26 17:38 ` martin rudalics
2020-01-26 20:50 ` Dmitry Gutov
2020-01-28 9:46 ` martin rudalics
2020-01-28 15:19 ` Dmitry Gutov
2020-01-28 16:20 ` martin rudalics
2020-01-30 2:14 ` Dmitry Gutov
2020-01-27 19:17 ` martin rudalics
2020-01-27 21:15 ` Dmitry Gutov
2020-01-28 9:47 ` martin rudalics
2020-01-30 2:10 ` Dmitry Gutov
2020-01-30 9:38 ` martin rudalics
2020-01-30 17:21 ` martin rudalics
2020-01-30 18:15 ` Dmitry Gutov
2020-01-30 18:41 ` martin rudalics
2020-01-31 1:22 ` Dmitry Gutov
2020-01-31 9:29 ` martin rudalics
2020-01-31 11:52 ` Dmitry Gutov
2020-01-31 15:44 ` martin rudalics
2020-01-31 22:22 ` Dmitry Gutov
2020-02-01 9:35 ` martin rudalics
2020-02-05 1:39 ` Dmitry Gutov
2020-02-05 9:15 ` martin rudalics
2020-02-10 7:06 ` Dmitry Gutov
2020-02-10 17:53 ` martin rudalics
2020-02-10 22:40 ` Dmitry Gutov
2020-02-10 7:22 ` Dmitry Gutov
2020-02-10 17:54 ` martin rudalics
2020-02-10 22:49 ` Dmitry Gutov
2020-02-13 18:42 ` martin rudalics
2020-02-13 23:48 ` Dmitry Gutov
2020-02-14 8:48 ` martin rudalics
2020-02-15 22:31 ` Dmitry Gutov
2020-02-16 10:01 ` martin rudalics [this message]
2020-02-16 20:47 ` Dmitry Gutov
2020-02-17 18:20 ` martin rudalics
2020-02-21 11:03 ` Dmitry Gutov
2020-02-21 11:13 ` Dmitry Gutov
2020-02-21 16:08 ` martin rudalics
2020-02-24 0:11 ` Dmitry Gutov
2020-02-26 17:30 ` martin rudalics
2020-02-28 16:32 ` martin rudalics
2020-03-03 13:50 ` Dmitry Gutov
2020-03-03 14:40 ` martin rudalics
2020-03-03 18:27 ` Dmitry Gutov
2020-03-04 17:29 ` martin rudalics
2020-03-06 23:38 ` Dmitry Gutov
2020-03-07 0:07 ` Dmitry Gutov
2020-03-06 23:03 ` Dmitry Gutov
2020-02-16 23:01 ` Dmitry Gutov
2020-02-17 18:21 ` martin rudalics
2020-02-21 14:18 ` Dmitry Gutov
2020-02-21 16:08 ` martin rudalics
2020-02-23 9:22 ` Dmitry Gutov
2020-02-26 17:30 ` martin rudalics
2020-03-06 23:32 ` Dmitry Gutov
2020-03-09 9:03 ` martin rudalics
2020-03-12 0:22 ` Dmitry Gutov
2020-03-12 8:23 ` martin rudalics
2020-03-13 16:57 ` Dmitry Gutov
2020-03-13 17:46 ` martin rudalics
2020-03-16 19:51 ` Dmitry Gutov
2020-03-17 9:38 ` martin rudalics
2020-03-17 11:22 ` Dmitry Gutov
2020-03-31 17:04 ` martin rudalics
2020-04-03 11:09 ` Eli Zaretskii
2020-04-03 15:08 ` martin rudalics
2020-04-03 16:08 ` martin rudalics
2020-04-03 19:07 ` Dmitry Gutov
2020-04-04 8:51 ` Eli Zaretskii
2020-04-04 9:02 ` martin rudalics
2020-04-04 9:30 ` Eli Zaretskii
2020-04-06 9:03 ` martin rudalics
2020-04-06 13:26 ` Eli Zaretskii
2020-04-07 8:32 ` martin rudalics
2020-04-07 14:04 ` Eli Zaretskii
2020-04-06 18:36 ` Dmitry Gutov
2020-04-07 8:33 ` martin rudalics
2020-04-07 13:19 ` Dmitry Gutov
2020-04-12 6:44 ` Andreas Schwab
2020-04-12 7:23 ` Eli Zaretskii
2020-04-12 7:37 ` Andreas Schwab
2020-04-12 8:03 ` martin rudalics
2020-04-06 22:51 ` Dmitry Gutov
2020-04-07 8:33 ` martin rudalics
2020-04-07 14:25 ` Dmitry Gutov
2020-04-07 14:39 ` Robert Pluim
2020-04-07 14:50 ` Dmitry Gutov
2020-04-07 15:37 ` Robert Pluim
2020-04-07 19:25 ` Dmitry Gutov
2020-04-08 7:59 ` Robert Pluim
2020-04-08 10:37 ` Dmitry Gutov
2020-04-08 12:12 ` Robert Pluim
2020-04-08 8:31 ` Support
2020-04-08 8:45 ` martin rudalics
2020-04-08 9:03 ` Adrián Medraño Calvo
2020-04-08 9:25 ` martin rudalics
2020-02-14 9:52 ` martin rudalics
2020-02-15 22:49 ` Dmitry Gutov
2020-02-16 10:01 ` martin rudalics
2020-01-27 23:20 ` Dmitry Gutov
2020-01-27 23:32 ` Dmitry Gutov
2020-01-28 9:48 ` martin rudalics
2020-01-28 15:39 ` Dmitry Gutov
2020-01-28 16:20 ` martin rudalics
2020-01-28 9:48 ` martin rudalics
2020-01-28 15:51 ` Dmitry Gutov
2020-01-22 17:35 ` martin rudalics
2020-01-22 22:40 ` tumashu
2020-01-25 8:41 ` martin rudalics
2020-01-25 10:17 ` Dmitry Gutov
2020-01-25 10:29 ` Eli Zaretskii
2020-01-25 10:52 ` Dmitry Gutov
2020-01-25 12:11 ` martin rudalics
2020-01-25 23:01 ` Dmitry Gutov
2020-01-26 8:43 ` martin rudalics
2020-01-26 11:02 ` Dmitry Gutov
2020-01-26 15:32 ` martin rudalics
2020-01-26 21:35 ` Dmitry Gutov
2020-01-28 9:46 ` martin rudalics
2020-01-30 2:23 ` Dmitry Gutov
2020-01-30 9:38 ` martin rudalics
2020-01-30 17:32 ` Dmitry Gutov
2020-01-30 18:04 ` martin rudalics
2020-01-30 17:42 ` Dmitry Gutov
2020-01-30 18:04 ` martin rudalics
2020-01-26 11:03 ` Dmitry Gutov
2020-01-23 0:21 ` Dmitry Gutov
2020-01-23 0:39 ` tumashu
2020-01-25 8:42 ` martin rudalics
2020-01-16 0:04 ` Dmitry Gutov
2020-01-16 8:04 ` martin rudalics
2020-01-16 8:25 ` Dmitry Gutov
2020-01-11 10:36 ` tumashu
2020-01-11 13:45 ` martin rudalics
-- strict thread matches above, loose matches on Subject: below --
2020-01-22 8:04 tumashu
2020-01-22 9:09 ` martin rudalics
2020-01-22 10:03 ` tumashu
2020-01-22 17:33 ` martin rudalics
2020-01-22 15:55 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2af76486-f976-eef0-683c-45b7ea6c54eb@gmx.at \
--to=rudalics@gmx.at \
--cc=dgutov@yandex.ru \
--cc=emacs-devel@gnu.org \
--cc=tumashu@163.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).