mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2025-01-01 16:30:15 +00:00
window: Remove suspicious branch
While this commit was found to make emacs windows shrink (and it was reverted in the gtk-3-20 branch for that reason), that was the only observed breakage, while the reversal broke several of our unit tests. Closer study of the emacs sources revealed that it does some really unsupportable things like doing its own X event handling behind GTK+'s back and freely mixing sizes of GtkWindows and GdkWindows obtained in various ways. I've filed a bug against emacs with suggestions for how to avoid the shrinking window, regardless of this commit. Original commit message: It seems this branch is not needed anymore. It was originally added in 1999 to support gtk_widget_realize(), but all those reasons seem obsolete today. Instead just call gtk_widget_realize(). If you end up at this commit when bisecting: There is no bug that made me remove this code, it was purely meant to be cleanup / dead code removal. I seem to have introduced a new bug or bisecting wouldn't have let you here. So it seems we should just revert this commit.
This commit is contained in:
parent
aeed695e26
commit
a91237d65e
@ -6092,7 +6092,6 @@ gtk_window_show (GtkWidget *widget)
|
||||
GtkWindow *window = GTK_WINDOW (widget);
|
||||
GtkWindowPrivate *priv = window->priv;
|
||||
GtkContainer *container = GTK_CONTAINER (window);
|
||||
gboolean need_resize;
|
||||
gboolean is_plug;
|
||||
|
||||
if (!_gtk_widget_is_toplevel (GTK_WIDGET (widget)))
|
||||
@ -6103,62 +6102,10 @@ gtk_window_show (GtkWidget *widget)
|
||||
|
||||
_gtk_widget_set_visible_flag (widget, TRUE);
|
||||
|
||||
need_resize = _gtk_widget_get_alloc_needed (widget) || !_gtk_widget_get_realized (widget);
|
||||
|
||||
gtk_css_node_validate (gtk_widget_get_css_node (widget));
|
||||
|
||||
if (need_resize)
|
||||
{
|
||||
GtkWindowGeometryInfo *info = gtk_window_get_geometry_info (window, TRUE);
|
||||
GtkAllocation allocation = { 0, 0 };
|
||||
GdkRectangle configure_request;
|
||||
GdkGeometry new_geometry;
|
||||
guint new_flags;
|
||||
gboolean was_realized;
|
||||
gtk_widget_realize (widget);
|
||||
|
||||
/* We are going to go ahead and perform this configure request
|
||||
* and then emulate a configure notify by going ahead and
|
||||
* doing a size allocate. Sort of a synchronous
|
||||
* mini-copy of gtk_window_move_resize() here.
|
||||
*/
|
||||
gtk_window_compute_configure_request (window,
|
||||
&configure_request,
|
||||
&new_geometry,
|
||||
&new_flags);
|
||||
|
||||
/* We update this because we are going to go ahead
|
||||
* and gdk_window_resize() below, rather than
|
||||
* queuing it.
|
||||
*/
|
||||
info->last.configure_request = configure_request;
|
||||
|
||||
/* and allocate the window - this is normally done
|
||||
* in move_resize in response to configure notify
|
||||
*/
|
||||
allocation.width = configure_request.width;
|
||||
allocation.height = configure_request.height;
|
||||
gtk_widget_size_allocate (widget, &allocation);
|
||||
|
||||
/* Then we guarantee we have a realize */
|
||||
was_realized = FALSE;
|
||||
if (!_gtk_widget_get_realized (widget))
|
||||
{
|
||||
gtk_widget_realize (widget);
|
||||
was_realized = TRUE;
|
||||
}
|
||||
|
||||
/* We only send configure request if we didn't just finish
|
||||
* creating the window; if we just created the window
|
||||
* then we created it with widget->allocation anyhow.
|
||||
*/
|
||||
if (!was_realized)
|
||||
gdk_window_move_resize (_gtk_widget_get_window (widget),
|
||||
configure_request.x,
|
||||
configure_request.y,
|
||||
configure_request.width,
|
||||
configure_request.height);
|
||||
}
|
||||
|
||||
gtk_container_check_resize (container);
|
||||
|
||||
gtk_widget_map (widget);
|
||||
|
Loading…
Reference in New Issue
Block a user