don't use gdk_display_name

2001-09-08  Havoc Pennington  <hp@pobox.com>

	* src/ui.c (meta_ui_init): don't use gdk_display_name

	* src/frame.c (meta_window_ensure_frame): create frame
	with screen default visual, rather than client window visual;
	for DRI games, the client window visual was not allowed to be
	a child of another window with the same visual, apparently.
	Anyhow now we copy twm, etc. so it must be correct.

	* src/place.c (meta_window_place): if a transient is placed and
	its parent has focus, focus the transient.
This commit is contained in:
Havoc Pennington 2001-09-09 03:44:42 +00:00 committed by Havoc Pennington
parent bc787fc1f3
commit 936adc6ea5
7 changed files with 44 additions and 6 deletions

View File

@ -1,3 +1,16 @@
2001-09-08 Havoc Pennington <hp@pobox.com>
* src/ui.c (meta_ui_init): don't use gdk_display_name
* src/frame.c (meta_window_ensure_frame): create frame
with screen default visual, rather than client window visual;
for DRI games, the client window visual was not allowed to be
a child of another window with the same visual, apparently.
Anyhow now we copy twm, etc. so it must be correct.
* src/place.c (meta_window_place): if a transient is placed and
its parent has focus, focus the transient.
2001-09-06 Havoc Pennington <hp@pobox.com>
* configure.in: bump version 2.3.5, require newer GTK release

View File

@ -56,6 +56,19 @@ meta_window_ensure_frame (MetaWindow *window)
frame->mapped = FALSE;
attrs.event_mask = EVENT_MASK;
meta_verbose ("Framing window %s: visual %s default, depth %d default depth %d\n",
window->desc,
XVisualIDFromVisual (window->xvisual) ==
XVisualIDFromVisual (window->screen->default_xvisual) ?
"is" : "is not",
window->depth, window->screen->default_depth);
/* Default depth/visual handles clients with weird visuals; they can
* always be children of the root depth/visual obviously, but
* e.g. DRI games can't be children of a parent that has the same
* visual as the client.
*/
frame->xwindow = XCreateWindow (window->display->xdisplay,
window->screen->xroot,
@ -64,9 +77,9 @@ meta_window_ensure_frame (MetaWindow *window)
frame->rect.width,
frame->rect.height,
0,
window->depth,
InputOutput,
window->xvisual,
window->screen->default_depth,
CopyFromParent,
window->screen->default_xvisual,
CWEventMask,
&attrs);
@ -90,15 +103,17 @@ meta_window_ensure_frame (MetaWindow *window)
* we don't want to take that as a withdraw
*/
window->unmaps_pending += 1;
/* window was reparented to this position */
window->rect.x = 0;
window->rect.y = 0;
XReparentWindow (window->display->xdisplay,
window->xwindow,
frame->xwindow,
window->rect.x,
window->rect.y);
meta_error_trap_pop (window->display);
/* stick frame to the window */
window->frame = frame;

View File

@ -253,6 +253,12 @@ meta_window_place (MetaWindow *window,
meta_verbose ("Centered window %s over transient parent\n",
window->desc);
if (parent->has_focus)
{
meta_verbose ("Focusing transient window since parent had focus\n");
meta_window_focus (window, CurrentTime); /* FIXME CurrentTime */
}
goto done;
}
}

View File

@ -195,6 +195,8 @@ meta_screen_new (MetaDisplay *display,
screen->width = WidthOfScreen (screen->xscreen);
screen->height = HeightOfScreen (screen->xscreen);
screen->current_cursor = -1; /* invalid/unset */
screen->default_xvisual = DefaultVisualOfScreen (screen->xscreen);
screen->default_depth = DefaultDepthOfScreen (screen->xscreen);
meta_screen_set_cursor (screen, META_CURSOR_DEFAULT);

View File

@ -41,6 +41,8 @@ struct _MetaScreen
char *screen_name;
Screen *xscreen;
Window xroot;
int default_depth;
Visual *default_xvisual;
int width;
int height;
MetaUI *ui;

View File

@ -36,7 +36,7 @@ void
meta_ui_init (int *argc, char ***argv)
{
if (!gtk_init_check (argc, argv))
meta_fatal ("Unable to open X display %s\n", gdk_display_name);
meta_fatal ("Unable to open X display %s\n", XDisplayName (gdk_display));
}
Display*

View File

@ -4354,7 +4354,7 @@ constrain_size (MetaWindow *window,
maxw = window->size_hints.max_width;
maxh = window->size_hints.max_height;
if (window->maximized)
/* we used to only constrain to fit inside screen for these cases,
* but now I don't remember why I did that.