mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-05 11:28:17 -04:00
support fullscreen without window manager
This commit is contained in:
parent
d412984e74
commit
a23e77bde1
@ -436,6 +436,27 @@ process_events() {
|
|||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
void glxGraphicsWindow::
|
void glxGraphicsWindow::
|
||||||
set_properties_now(WindowProperties &properties) {
|
set_properties_now(WindowProperties &properties) {
|
||||||
|
if (_pipe == (GraphicsPipe *)NULL) {
|
||||||
|
// If the pipe is null, we're probably closing down.
|
||||||
|
GraphicsWindow::set_properties_now(properties);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
glxGraphicsPipe *glx_pipe;
|
||||||
|
DCAST_INTO_V(glx_pipe, _pipe);
|
||||||
|
|
||||||
|
// Fullscreen mode is implemented with a hint to the window manager.
|
||||||
|
// However, we also implicitly set the origin to (0, 0) and the size
|
||||||
|
// to the desktop size, and request undecorated mode, in case the
|
||||||
|
// user has a less-capable window manager (or no window manager at
|
||||||
|
// all).
|
||||||
|
if (properties.get_fullscreen()) {
|
||||||
|
properties.set_undecorated(true);
|
||||||
|
properties.set_origin(0, 0);
|
||||||
|
properties.set_size(glx_pipe->get_display_width(),
|
||||||
|
glx_pipe->get_display_height());
|
||||||
|
}
|
||||||
|
|
||||||
GraphicsWindow::set_properties_now(properties);
|
GraphicsWindow::set_properties_now(properties);
|
||||||
if (!properties.is_any_specified()) {
|
if (!properties.is_any_specified()) {
|
||||||
// The base class has already handled this case.
|
// The base class has already handled this case.
|
||||||
@ -445,9 +466,6 @@ set_properties_now(WindowProperties &properties) {
|
|||||||
// The window is already open; we are limited to what we can change
|
// The window is already open; we are limited to what we can change
|
||||||
// on the fly.
|
// on the fly.
|
||||||
|
|
||||||
glxGraphicsPipe *glx_pipe;
|
|
||||||
DCAST_INTO_V(glx_pipe, _pipe);
|
|
||||||
|
|
||||||
// We'll pass some property requests on as a window manager hint.
|
// We'll pass some property requests on as a window manager hint.
|
||||||
WindowProperties wm_properties = _properties;
|
WindowProperties wm_properties = _properties;
|
||||||
wm_properties.add_properties(properties);
|
wm_properties.add_properties(properties);
|
||||||
@ -459,7 +477,7 @@ set_properties_now(WindowProperties &properties) {
|
|||||||
properties.clear_title();
|
properties.clear_title();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ditto for fullscreen.
|
// Ditto for fullscreen mode.
|
||||||
if (properties.has_fullscreen()) {
|
if (properties.has_fullscreen()) {
|
||||||
_properties.set_fullscreen(properties.get_fullscreen());
|
_properties.set_fullscreen(properties.get_fullscreen());
|
||||||
properties.clear_fullscreen();
|
properties.clear_fullscreen();
|
||||||
@ -609,7 +627,6 @@ open_window() {
|
|||||||
Visual *visual = visual_info->visual;
|
Visual *visual = visual_info->visual;
|
||||||
int depth = visual_info->depth;
|
int depth = visual_info->depth;
|
||||||
|
|
||||||
|
|
||||||
if (!_properties.has_origin()) {
|
if (!_properties.has_origin()) {
|
||||||
_properties.set_origin(0, 0);
|
_properties.set_origin(0, 0);
|
||||||
}
|
}
|
||||||
@ -695,8 +712,10 @@ open_window() {
|
|||||||
if (_properties.get_raw_mice()) {
|
if (_properties.get_raw_mice()) {
|
||||||
open_raw_mice();
|
open_raw_mice();
|
||||||
} else {
|
} else {
|
||||||
glxdisplay_cat.error() <<
|
if (glxdisplay_cat.is_debug()) {
|
||||||
"Raw mice not requested.\n";
|
glxdisplay_cat.debug()
|
||||||
|
<< "Raw mice not requested.\n";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user