mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 18:31:55 -04:00
window centering stuff for OSX tinydisplay
This commit is contained in:
parent
85fda457fa
commit
9426525fcc
@ -36,8 +36,7 @@
|
||||
////////////////////////////////////
|
||||
|
||||
\
|
||||
Mutex & OSXGloablMutex()
|
||||
{
|
||||
Mutex & OSXGloablMutex() {
|
||||
static Mutex m("OSXWIN_Mutex");
|
||||
return m;
|
||||
}
|
||||
@ -49,8 +48,7 @@ struct work1
|
||||
};
|
||||
|
||||
#define PANDA_CREATE_WINDOW 101
|
||||
static void Post_Event_Wiait(unsigned short type, unsigned int data1 , unsigned int data2 , int target_window )
|
||||
{
|
||||
static void Post_Event_Wiait(unsigned short type, unsigned int data1 , unsigned int data2 , int target_window ) {
|
||||
work1 w;
|
||||
w.work_done = false;
|
||||
NSEvent *ev = [NSEvent otherEventWithType:NSApplicationDefined
|
||||
@ -64,7 +62,7 @@ static void Post_Event_Wiait(unsigned short type, unsigned int data1 , unsigned
|
||||
data2:(int)&w];
|
||||
|
||||
[NSApp postEvent:ev atStart:NO];
|
||||
while(!w.work_done)
|
||||
while (!w.work_done)
|
||||
usleep(10);
|
||||
|
||||
}
|
||||
@ -84,22 +82,18 @@ TinyOsxGraphicsWindow * TinyOsxGraphicsWindow::FullScreenWindow = NULL;
|
||||
#ifdef USER_CONTAINER
|
||||
|
||||
std::set< WindowRef > MyWindows;
|
||||
void AddAWindow( WindowRef window)
|
||||
{
|
||||
void AddAWindow( WindowRef window) {
|
||||
MyWindows.insert(window);
|
||||
}
|
||||
bool checkmywindow(WindowRef window)
|
||||
{
|
||||
bool checkmywindow(WindowRef window) {
|
||||
return MyWindows.find(window) != MyWindows.end();
|
||||
}
|
||||
#else
|
||||
|
||||
void AddAWindow( WindowRef window)
|
||||
{
|
||||
void AddAWindow( WindowRef window) {
|
||||
}
|
||||
|
||||
bool checkmywindow(WindowRef window)
|
||||
{
|
||||
bool checkmywindow(WindowRef window) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -113,9 +107,8 @@ bool checkmywindow(WindowRef window)
|
||||
// Description: How to find the active window for events on osx..
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////
|
||||
TinyOsxGraphicsWindow* TinyOsxGraphicsWindow::GetCurrentOSxWindow(WindowRef window)
|
||||
{
|
||||
if(FullScreenWindow != NULL)
|
||||
TinyOsxGraphicsWindow* TinyOsxGraphicsWindow::GetCurrentOSxWindow(WindowRef window) {
|
||||
if (FullScreenWindow != NULL)
|
||||
return FullScreenWindow;
|
||||
|
||||
if (NULL == window) // HID use this path
|
||||
@ -128,8 +121,7 @@ TinyOsxGraphicsWindow* TinyOsxGraphicsWindow::GetCurrentOSxWindow(WindowRef wind
|
||||
}
|
||||
|
||||
if (window && checkmywindow(window))
|
||||
//if (window )
|
||||
{
|
||||
//if (window ) {
|
||||
return (TinyOsxGraphicsWindow *)GetWRefCon (window);
|
||||
}
|
||||
else
|
||||
@ -142,8 +134,7 @@ TinyOsxGraphicsWindow* TinyOsxGraphicsWindow::GetCurrentOSxWindow(WindowRef wind
|
||||
// Description: The standard window event handler for non-fullscreen
|
||||
// windows.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
OSStatus TinyOsxGraphicsWindow::event_handler(EventHandlerCallRef myHandler, EventRef event)
|
||||
{
|
||||
OSStatus TinyOsxGraphicsWindow::event_handler(EventHandlerCallRef myHandler, EventRef event) {
|
||||
|
||||
OSStatus result = eventNotHandledErr;
|
||||
UInt32 the_class = GetEventClass(event);
|
||||
@ -152,13 +143,11 @@ OSStatus TinyOsxGraphicsWindow::event_handler(EventHandlerCallRef myHandler, Eve
|
||||
WindowRef window = NULL;
|
||||
GetEventParameter(event, kEventParamDirectObject, typeWindowRef, NULL, sizeof(WindowRef), NULL, &window);
|
||||
|
||||
if (tinydisplay_cat.is_spam())
|
||||
{
|
||||
if (tinydisplay_cat.is_spam()) {
|
||||
tinydisplay_cat.spam() << ClockObject::get_global_clock()->get_real_time() << " event_handler: " << (void *)this << ", " << window << ", " << the_class << ", " << kind << "\n";
|
||||
}
|
||||
|
||||
switch (the_class)
|
||||
{
|
||||
switch (the_class) {
|
||||
case kEventClassMouse:
|
||||
result = handleWindowMouseEvents (myHandler, event);
|
||||
break;
|
||||
@ -224,16 +213,12 @@ OSStatus TinyOsxGraphicsWindow::event_handler(EventHandlerCallRef myHandler, Eve
|
||||
// instance with Cmd-W, or by clicking on the close
|
||||
// button.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void TinyOsxGraphicsWindow::user_close_request()
|
||||
{
|
||||
void TinyOsxGraphicsWindow::user_close_request() {
|
||||
string close_request_event = get_close_request_event();
|
||||
if (!close_request_event.empty())
|
||||
{
|
||||
if (!close_request_event.empty()) {
|
||||
// In this case, the app has indicated a desire to intercept the request and process it directly.
|
||||
throw_event(close_request_event);
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
// In this case, the default case, the app does not intend to service the request, so we do by closing the window.
|
||||
close_window();
|
||||
}
|
||||
@ -245,8 +230,7 @@ void TinyOsxGraphicsWindow::user_close_request()
|
||||
// Description: The Windows is closed by a OS resource not by a internal request
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void TinyOsxGraphicsWindow::SystemCloseWindow()
|
||||
{
|
||||
void TinyOsxGraphicsWindow::SystemCloseWindow() {
|
||||
if (tinydisplay_cat.is_debug())
|
||||
tinydisplay_cat.debug() << "System Closing Window \n";
|
||||
ReleaseSystemResources();
|
||||
@ -261,8 +245,7 @@ void TinyOsxGraphicsWindow::SystemCloseWindow()
|
||||
// handle system window events..
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////
|
||||
static pascal OSStatus windowEvtHndlr(EventHandlerCallRef myHandler, EventRef event, void *userData)
|
||||
{
|
||||
static pascal OSStatus windowEvtHndlr(EventHandlerCallRef myHandler, EventRef event, void *userData) {
|
||||
#pragma unused (userData)
|
||||
|
||||
// volatile().lock();
|
||||
@ -270,11 +253,9 @@ static pascal OSStatus windowEvtHndlr(EventHandlerCallRef myHandler, EventRef ev
|
||||
WindowRef window = NULL;
|
||||
GetEventParameter(event, kEventParamDirectObject, typeWindowRef, NULL, sizeof(WindowRef), NULL, &window);
|
||||
|
||||
if (window != NULL)
|
||||
{
|
||||
if (window != NULL) {
|
||||
TinyOsxGraphicsWindow *osx_win = TinyOsxGraphicsWindow::GetCurrentOSxWindow(window);
|
||||
if (osx_win != (TinyOsxGraphicsWindow *)NULL)
|
||||
{
|
||||
if (osx_win != (TinyOsxGraphicsWindow *)NULL) {
|
||||
//OSXGloablMutex().release();
|
||||
return osx_win->event_handler(myHandler, event);
|
||||
}
|
||||
@ -292,14 +273,11 @@ static pascal OSStatus windowEvtHndlr(EventHandlerCallRef myHandler, EventRef ev
|
||||
// We only hook this up for none fullscreen window... so we only handle system window events..
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
void TinyOsxGraphicsWindow::DoResize(void)
|
||||
{
|
||||
void TinyOsxGraphicsWindow::DoResize(void) {
|
||||
tinydisplay_cat.info() << "In Resize....." << _properties << "\n";
|
||||
|
||||
// only in window mode .. not full screen
|
||||
if(_osx_window != NULL && !_is_fullscreen && _properties.has_size())
|
||||
{
|
||||
if (_osx_window != NULL && !_is_fullscreen && _properties.has_size()) {
|
||||
Rect rectPort = {0,0,0,0};
|
||||
CGRect viewRect = {{0.0f, 0.0f}, {0.0f, 0.0f}};
|
||||
|
||||
@ -313,9 +291,9 @@ void TinyOsxGraphicsWindow::DoResize(void)
|
||||
system_changed_properties(properties);
|
||||
ZB_resize(_frame_buffer, NULL, _properties.get_x_size(), _properties.get_y_size());
|
||||
|
||||
if (tinydisplay_cat.is_debug())
|
||||
if (tinydisplay_cat.is_debug()) {
|
||||
tinydisplay_cat.debug() << " Resizing Window " << viewRect.size.width << " " << viewRect.size.height << "\n";
|
||||
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@ -327,9 +305,7 @@ void TinyOsxGraphicsWindow::DoResize(void)
|
||||
// Hooked once for application
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
static pascal OSStatus appEvtHndlr (EventHandlerCallRef myHandler, EventRef event, void* userData)
|
||||
{
|
||||
static pascal OSStatus appEvtHndlr (EventHandlerCallRef myHandler, EventRef event, void* userData) {
|
||||
#pragma unused (myHandler)
|
||||
OSStatus result = eventNotHandledErr;
|
||||
{
|
||||
@ -343,21 +319,20 @@ static pascal OSStatus appEvtHndlr (EventHandlerCallRef myHandler, EventRef even
|
||||
|
||||
GetEventParameter(event, kEventParamWindowRef, typeWindowRef, NULL, sizeof(WindowRef), NULL, (void*) &window);
|
||||
osx_win = TinyOsxGraphicsWindow::GetCurrentOSxWindow(window);
|
||||
if (osx_win == NULL)
|
||||
{
|
||||
if (osx_win == NULL) {
|
||||
//OSXGloablMutex().release();
|
||||
return eventNotHandledErr;
|
||||
}
|
||||
|
||||
switch (the_class)
|
||||
{
|
||||
switch (the_class) {
|
||||
case kEventClassTextInput:
|
||||
if(kind == kEventTextInputUnicodeForKeyEvent)
|
||||
if (kind == kEventTextInputUnicodeForKeyEvent) {
|
||||
osx_win->handleTextInput(myHandler, event);
|
||||
}
|
||||
//result = noErr;
|
||||
//
|
||||
// can not report handled .. the os will not sent the raw key strokes then
|
||||
// if(osx_win->handleTextInput(myHandler, event) == noErr)
|
||||
// if (osx_win->handleTextInput(myHandler, event) == noErr)
|
||||
// result = noErr;
|
||||
break;
|
||||
case kEventClassKeyboard:
|
||||
@ -374,8 +349,7 @@ static pascal OSStatus appEvtHndlr (EventHandlerCallRef myHandler, EventRef even
|
||||
{
|
||||
UInt32 newModifiers;
|
||||
OSStatus error = GetEventParameter(event, kEventParamKeyModifiers,typeUInt32, NULL,sizeof(UInt32), NULL, &newModifiers);
|
||||
if(error == noErr)
|
||||
{
|
||||
if (error == noErr) {
|
||||
osx_win->HandleModifireDeleta(newModifiers);
|
||||
result = noErr;
|
||||
}
|
||||
@ -387,7 +361,7 @@ static pascal OSStatus appEvtHndlr (EventHandlerCallRef myHandler, EventRef even
|
||||
|
||||
case kEventClassMouse:
|
||||
// tinydisplay_cat.info() << "Mouse movement handled by Application handler\n";
|
||||
//if(TinyOsxGraphicsWindow::FullScreenWindow != NULL)
|
||||
//if (TinyOsxGraphicsWindow::FullScreenWindow != NULL)
|
||||
result = osx_win->handleWindowMouseEvents (myHandler, event);
|
||||
//result = noErr;
|
||||
break;
|
||||
@ -406,24 +380,25 @@ static pascal OSStatus appEvtHndlr (EventHandlerCallRef myHandler, EventRef even
|
||||
//
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////
|
||||
OSStatus TinyOsxGraphicsWindow::handleTextInput (EventHandlerCallRef myHandler, EventRef theTextEvent)
|
||||
{
|
||||
OSStatus TinyOsxGraphicsWindow::handleTextInput (EventHandlerCallRef myHandler, EventRef theTextEvent) {
|
||||
UniChar *text = NULL;
|
||||
UInt32 actualSize = 0;
|
||||
|
||||
OSStatus ret = GetEventParameter (theTextEvent, kEventParamTextInputSendText, typeUnicodeText, NULL, 0, &actualSize, NULL);
|
||||
if(ret != noErr)
|
||||
if (ret != noErr) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
text = (UniChar*)NewPtr(actualSize);
|
||||
if(text!= NULL)
|
||||
{
|
||||
if (text!= NULL) {
|
||||
ret = GetEventParameter (theTextEvent, kEventParamTextInputSendText,typeUnicodeText, NULL, actualSize, NULL, text);
|
||||
if(ret != noErr)
|
||||
if (ret != noErr) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
for(unsigned int x = 0; x < actualSize/sizeof(UniChar); ++x)
|
||||
for (unsigned int x = 0; x < actualSize/sizeof(UniChar); ++x) {
|
||||
_input_devices[0].keystroke(text[x]);
|
||||
}
|
||||
DisposePtr((char *)text);
|
||||
}
|
||||
|
||||
@ -434,10 +409,8 @@ OSStatus TinyOsxGraphicsWindow::handleTextInput (EventHandlerCallRef myHandler,
|
||||
// Access: private..
|
||||
// Description: Clean up the OS level messes..
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void TinyOsxGraphicsWindow::ReleaseSystemResources()
|
||||
{
|
||||
if (_is_fullscreen)
|
||||
{
|
||||
void TinyOsxGraphicsWindow::ReleaseSystemResources() {
|
||||
if (_is_fullscreen) {
|
||||
_is_fullscreen = false;
|
||||
FullScreenWindow = NULL;
|
||||
|
||||
@ -449,8 +422,7 @@ void TinyOsxGraphicsWindow::ReleaseSystemResources()
|
||||
_originalMode = NULL;
|
||||
}
|
||||
|
||||
if(_osx_window != NULL)
|
||||
{
|
||||
if (_osx_window != NULL) {
|
||||
SetWRefCon (_osx_window, (long int) NULL);
|
||||
HideWindow (_osx_window);
|
||||
DisposeWindow(_osx_window);
|
||||
@ -498,8 +470,7 @@ TinyOsxGraphicsWindow::TinyOsxGraphicsWindow(GraphicsEngine *engine, GraphicsPip
|
||||
_pending_icon(NULL),
|
||||
_current_icon(NULL),
|
||||
_originalMode(NULL),
|
||||
_ID(id_seed++)
|
||||
{
|
||||
_ID(id_seed++) {
|
||||
GraphicsWindowInputDevice device =
|
||||
GraphicsWindowInputDevice::pointer_and_keyboard(this, "keyboard/mouse");
|
||||
_input_devices.push_back(device);
|
||||
@ -523,8 +494,7 @@ TinyOsxGraphicsWindow::TinyOsxGraphicsWindow(GraphicsEngine *engine, GraphicsPip
|
||||
// Access: Public, Virtual
|
||||
// Description:
|
||||
////////////////////////////////////////////////////////////////////
|
||||
TinyOsxGraphicsWindow::~TinyOsxGraphicsWindow()
|
||||
{
|
||||
TinyOsxGraphicsWindow::~TinyOsxGraphicsWindow() {
|
||||
if (tinydisplay_cat.is_debug())
|
||||
tinydisplay_cat.debug() << "TinyOsxGraphicsWindow::~TinyOsxGraphicsWindow() -" <<_ID << "\n";
|
||||
|
||||
@ -544,8 +514,7 @@ TinyOsxGraphicsWindow::~TinyOsxGraphicsWindow()
|
||||
// be applied to the window. Returns true on success,
|
||||
// false on failure.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
bool TinyOsxGraphicsWindow::set_icon_filename(const Filename &icon_filename)
|
||||
{
|
||||
bool TinyOsxGraphicsWindow::set_icon_filename(const Filename &icon_filename) {
|
||||
VirtualFileSystem *vfs = VirtualFileSystem::get_global_ptr();
|
||||
|
||||
Filename icon_pathname = icon_filename;
|
||||
@ -562,21 +531,18 @@ bool TinyOsxGraphicsWindow::set_icon_filename(const Filename &icon_filename)
|
||||
|
||||
|
||||
PNMImage pnmimage;
|
||||
if (!pnmimage.read(icon_pathname))
|
||||
{
|
||||
if (!pnmimage.read(icon_pathname)) {
|
||||
tinydisplay_cat.warning()
|
||||
<< "Could not read icon filename " << icon_pathname << "\n";
|
||||
return false;
|
||||
}
|
||||
|
||||
CGImageRef icon_image = TinyOsxGraphicsPipe::create_cg_image(pnmimage);
|
||||
if (icon_image == NULL)
|
||||
{
|
||||
if (icon_image == NULL) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (_pending_icon != NULL)
|
||||
{
|
||||
if (_pending_icon != NULL) {
|
||||
CGImageRelease(_pending_icon);
|
||||
_pending_icon = NULL;
|
||||
}
|
||||
@ -591,8 +557,7 @@ bool TinyOsxGraphicsWindow::set_icon_filename(const Filename &icon_filename)
|
||||
// window.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void TinyOsxGraphicsWindow::
|
||||
set_pointer_in_window(int x, int y)
|
||||
{
|
||||
set_pointer_in_window(int x, int y) {
|
||||
_input_devices[0].set_pointer_in_window(x, y);
|
||||
|
||||
if (_cursor_hidden != _display_hide_cursor) {
|
||||
@ -632,14 +597,12 @@ set_pointer_out_of_window() {
|
||||
// if the frame should be rendered, or false if it
|
||||
// should be skipped.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
bool TinyOsxGraphicsWindow::begin_frame(FrameMode mode, Thread *current_thread)
|
||||
{
|
||||
bool TinyOsxGraphicsWindow::begin_frame(FrameMode mode, Thread *current_thread) {
|
||||
PStatTimer timer(_make_current_pcollector);
|
||||
|
||||
begin_frame_spam(mode);
|
||||
if (_gsg == (GraphicsStateGuardian *)NULL ||
|
||||
(_osx_window == NULL && !_is_fullscreen))
|
||||
{
|
||||
(_osx_window == NULL && !_is_fullscreen)) {
|
||||
// not powered up .. just abort..
|
||||
return false;
|
||||
}
|
||||
@ -647,16 +610,13 @@ bool TinyOsxGraphicsWindow::begin_frame(FrameMode mode, Thread *current_thread)
|
||||
// Now is a good time to apply the icon change that may have
|
||||
// recently been requested. By this point, we should be able to get
|
||||
// a handle to the dock context.
|
||||
if (_pending_icon != NULL)
|
||||
{
|
||||
if (_pending_icon != NULL) {
|
||||
CGContextRef context = BeginCGContextForApplicationDockTile();
|
||||
if (context != NULL)
|
||||
{
|
||||
if (context != NULL) {
|
||||
SetApplicationDockTileImage(_pending_icon);
|
||||
EndCGContextForApplicationDockTile(context);
|
||||
|
||||
if (_current_icon != NULL)
|
||||
{
|
||||
if (_current_icon != NULL) {
|
||||
CGImageRelease(_current_icon);
|
||||
_current_icon = NULL;
|
||||
}
|
||||
@ -682,8 +642,7 @@ bool TinyOsxGraphicsWindow::begin_frame(FrameMode mode, Thread *current_thread)
|
||||
// after rendering is completed for a given frame. It
|
||||
// should do whatever finalization is required.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void TinyOsxGraphicsWindow::end_frame(FrameMode mode, Thread *current_thread)
|
||||
{
|
||||
void TinyOsxGraphicsWindow::end_frame(FrameMode mode, Thread *current_thread) {
|
||||
end_frame_spam(mode);
|
||||
|
||||
_gsg->end_frame(current_thread);
|
||||
@ -714,8 +673,7 @@ void TinyOsxGraphicsWindow::end_frame(FrameMode mode, Thread *current_thread)
|
||||
// end_flip(), to make it easier to flip all of the
|
||||
// windows at the same time.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void TinyOsxGraphicsWindow::begin_flip()
|
||||
{
|
||||
void TinyOsxGraphicsWindow::begin_flip() {
|
||||
if (_osx_window == NULL) {
|
||||
return;
|
||||
}
|
||||
@ -765,8 +723,7 @@ void TinyOsxGraphicsWindow::begin_flip()
|
||||
// Description: Closes the window right now. Called from the window
|
||||
// thread.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void TinyOsxGraphicsWindow::close_window()
|
||||
{
|
||||
void TinyOsxGraphicsWindow::close_window() {
|
||||
SystemCloseWindow();
|
||||
|
||||
WindowProperties properties;
|
||||
@ -803,8 +760,7 @@ void TinyOsxGraphicsWindow::close_window()
|
||||
// thread. Returns true if the window is successfully
|
||||
// opened, or false if there was a problem.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
bool TinyOsxGraphicsWindow::open_window()
|
||||
{
|
||||
bool TinyOsxGraphicsWindow::open_window() {
|
||||
// GSG Creation/Initialization
|
||||
TinyGraphicsStateGuardian *tinygsg;
|
||||
if (_gsg == 0) {
|
||||
@ -838,23 +794,18 @@ bool TinyOsxGraphicsWindow::open_window()
|
||||
}
|
||||
|
||||
|
||||
bool TinyOsxGraphicsWindow::OSOpenWindow(WindowProperties &req_properties)
|
||||
{
|
||||
bool TinyOsxGraphicsWindow::OSOpenWindow(WindowProperties &req_properties) {
|
||||
OSErr err = noErr;
|
||||
|
||||
if (_current_icon != NULL && _pending_icon == NULL)
|
||||
{
|
||||
if (_current_icon != NULL && _pending_icon == NULL) {
|
||||
// If we already have an icon specified, we'll need to reapply it
|
||||
// when the window is succesfully created.
|
||||
_pending_icon = _current_icon;
|
||||
_current_icon = NULL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static bool GlobalInits = false;
|
||||
if (!GlobalInits)
|
||||
{
|
||||
if (!GlobalInits) {
|
||||
//
|
||||
// one time aplication inits.. to get a window open from a standalone aplication..
|
||||
|
||||
@ -917,30 +868,24 @@ bool TinyOsxGraphicsWindow::OSOpenWindow(WindowProperties &req_properties)
|
||||
SetFrontProcess(&psn);
|
||||
}
|
||||
|
||||
if (req_properties.has_fullscreen() && req_properties.get_fullscreen())
|
||||
{
|
||||
if (req_properties.has_fullscreen() && req_properties.get_fullscreen()) {
|
||||
tinydisplay_cat.info() << "Creating full screen\n";
|
||||
|
||||
// capture the main display
|
||||
CGDisplayCapture( kCGDirectMainDisplay );
|
||||
CGDisplayCapture(kCGDirectMainDisplay);
|
||||
// if sized try and switch it..
|
||||
if (req_properties.has_size())
|
||||
{
|
||||
_originalMode = CGDisplayCurrentMode( kCGDirectMainDisplay );
|
||||
CFDictionaryRef newMode = CGDisplayBestModeForParameters( kCGDirectMainDisplay, 32, req_properties.get_x_size(), req_properties.get_y_size(), 0 );
|
||||
if (newMode == NULL)
|
||||
{
|
||||
if (req_properties.has_size()) {
|
||||
_originalMode = CGDisplayCurrentMode(kCGDirectMainDisplay);
|
||||
CFDictionaryRef newMode = CGDisplayBestModeForParameters(kCGDirectMainDisplay, 32, req_properties.get_x_size(), req_properties.get_y_size(), 0);
|
||||
if (newMode == NULL) {
|
||||
tinydisplay_cat.error()
|
||||
<< "Invalid fullscreen size: " << req_properties.get_x_size()
|
||||
<< ", " << req_properties.get_y_size()
|
||||
<< "\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
CGDisplaySwitchToMode( kCGDirectMainDisplay, newMode);
|
||||
} else {
|
||||
CGDisplaySwitchToMode(kCGDirectMainDisplay, newMode);
|
||||
|
||||
// Set our new window size according to the size we actually got.
|
||||
|
||||
SInt32 width, height;
|
||||
CFNumberGetValue((CFNumberRef)CFDictionaryGetValue(newMode, kCGDisplayWidth), kCFNumberSInt32Type, &width);
|
||||
CFNumberGetValue((CFNumberRef)CFDictionaryGetValue(newMode, kCGDisplayHeight), kCFNumberSInt32Type, &height);
|
||||
@ -950,38 +895,55 @@ bool TinyOsxGraphicsWindow::OSOpenWindow(WindowProperties &req_properties)
|
||||
}
|
||||
|
||||
_properties.set_fullscreen(true);
|
||||
_is_fullscreen =true;
|
||||
_is_fullscreen = true;
|
||||
FullScreenWindow = this;
|
||||
req_properties.clear_fullscreen();
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
Rect r;
|
||||
if (req_properties.has_origin())
|
||||
{
|
||||
if (req_properties.has_origin()) {
|
||||
r.top = req_properties.get_y_origin();
|
||||
r.left =req_properties.get_x_origin();
|
||||
r.left = req_properties.get_x_origin();
|
||||
|
||||
// A coordinate of -2 means to center the window on screen.
|
||||
if (r.top == -2 || r.left == -2) {
|
||||
if (req_properties.has_size()) {
|
||||
if (r.top == -2) {
|
||||
r.top = 0.5 * (_pipe->get_display_height() - req_properties.get_y_size());
|
||||
}
|
||||
else
|
||||
{
|
||||
if (r.left == -2) {
|
||||
r.left = 0.5 * (_pipe->get_display_width() - req_properties.get_x_size());
|
||||
}
|
||||
} else {
|
||||
if (r.top == -2) {
|
||||
r.top = 0.5 * (_pipe->get_display_height() - req_properties.get_y_size());
|
||||
}
|
||||
if (r.left == -2) {
|
||||
r.left = 0.5 * (_pipe->get_display_width() - req_properties.get_x_size());
|
||||
}
|
||||
}
|
||||
_properties.set_origin(r.left, r.top);
|
||||
}
|
||||
if (r.top == -1) {
|
||||
r.top = 50;
|
||||
}
|
||||
if (r.left == -1) {
|
||||
r.left = 10;
|
||||
}
|
||||
} else {
|
||||
r.top = 50;
|
||||
r.left = 10;
|
||||
}
|
||||
|
||||
if (req_properties.has_size())
|
||||
{
|
||||
if (req_properties.has_size()) {
|
||||
r.right = r.left + req_properties.get_x_size();
|
||||
r.bottom = r.top + req_properties.get_y_size();
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
r.right = r.left + 512;
|
||||
r.bottom = r.top + 512;
|
||||
}
|
||||
|
||||
/*
|
||||
if (req_properties.has_parent_window())
|
||||
{
|
||||
if (req_properties.has_parent_window()) {
|
||||
tinydisplay_cat.info() << "Creating child window\n";
|
||||
|
||||
CreateNewWindow(kSimpleWindowClass, kWindowNoAttributes, &r, &_osx_window);
|
||||
@ -992,9 +954,7 @@ bool TinyOsxGraphicsWindow::OSOpenWindow(WindowProperties &req_properties)
|
||||
}
|
||||
else */
|
||||
{
|
||||
if (req_properties.has_undecorated() && req_properties.get_undecorated())
|
||||
{ // create a unmovable .. no edge window..
|
||||
|
||||
if (req_properties.has_undecorated() && req_properties.get_undecorated()) { // create a unmovable .. no edge window..
|
||||
tinydisplay_cat.info() << "Creating undecorated window\n";
|
||||
|
||||
CreateNewWindow(kDocumentWindowClass, kWindowStandardDocumentAttributes | kWindowNoTitleBarAttribute, &r, &_osx_window);
|
||||
@ -1019,8 +979,7 @@ bool TinyOsxGraphicsWindow::OSOpenWindow(WindowProperties &req_properties)
|
||||
}
|
||||
|
||||
|
||||
if (_osx_window)
|
||||
{
|
||||
if (_osx_window) {
|
||||
|
||||
EventHandlerUPP gWinEvtHandler; // window event handler
|
||||
EventTypeSpec list[] =
|
||||
@ -1042,7 +1001,7 @@ bool TinyOsxGraphicsWindow::OSOpenWindow(WindowProperties &req_properties)
|
||||
gWinEvtHandler = NewEventHandlerUPP(windowEvtHndlr);
|
||||
InstallWindowEventHandler(_osx_window, gWinEvtHandler, GetEventTypeCount(list), list, (void*)this, NULL); // add event handler
|
||||
|
||||
/*if(!req_properties.has_parent_window()) */
|
||||
/*if (!req_properties.has_parent_window()) */
|
||||
{
|
||||
ShowWindow (_osx_window);
|
||||
}
|
||||
@ -1073,14 +1032,12 @@ bool TinyOsxGraphicsWindow::OSOpenWindow(WindowProperties &req_properties)
|
||||
|
||||
} */
|
||||
|
||||
if (req_properties.has_fullscreen())
|
||||
{
|
||||
if (req_properties.has_fullscreen()) {
|
||||
_properties.set_fullscreen(false);
|
||||
req_properties.clear_fullscreen();
|
||||
}
|
||||
|
||||
if (req_properties.has_undecorated())
|
||||
{
|
||||
if (req_properties.has_undecorated()) {
|
||||
_properties.set_undecorated(req_properties.get_undecorated());
|
||||
req_properties.clear_undecorated();
|
||||
}
|
||||
@ -1090,13 +1047,15 @@ bool TinyOsxGraphicsWindow::OSOpenWindow(WindowProperties &req_properties)
|
||||
// actually ended up with.
|
||||
Rect rectPort = {0,0,0,0};
|
||||
GetWindowPortBounds (_osx_window, &rectPort);
|
||||
_properties.set_size((int)(rectPort.right - rectPort.left),(int) (rectPort.bottom - rectPort.top));
|
||||
_properties.set_origin((int) rectPort.left, (int) rectPort.top);
|
||||
_properties.set_size((int) (rectPort.right - rectPort.left), (int) (rectPort.bottom - rectPort.top));
|
||||
req_properties.clear_size();
|
||||
req_properties.clear_origin();
|
||||
}
|
||||
|
||||
if (req_properties.has_icon_filename())
|
||||
if (req_properties.has_icon_filename()) {
|
||||
set_icon_filename(req_properties.get_icon_filename());
|
||||
}
|
||||
|
||||
_properties.set_foreground(true);
|
||||
_properties.set_minimized(false);
|
||||
@ -1116,19 +1075,16 @@ bool TinyOsxGraphicsWindow::OSOpenWindow(WindowProperties &req_properties)
|
||||
// back into panda
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void TinyOsxGraphicsWindow::process_events()
|
||||
{
|
||||
void TinyOsxGraphicsWindow::process_events() {
|
||||
GraphicsWindow::process_events();
|
||||
|
||||
if (!osx_disable_event_loop)
|
||||
{
|
||||
if (!osx_disable_event_loop) {
|
||||
EventRef theEvent;
|
||||
EventTargetRef theTarget = GetEventDispatcherTarget();
|
||||
|
||||
/*if (!_properties.has_parent_window())*/
|
||||
{
|
||||
while (ReceiveNextEvent(0, NULL, kEventDurationNoWait, true, &theEvent)== noErr)
|
||||
{
|
||||
while (ReceiveNextEvent(0, NULL, kEventDurationNoWait, true, &theEvent)== noErr) {
|
||||
SendEventToEventTarget (theEvent, theTarget);
|
||||
ReleaseEvent(theEvent);
|
||||
}
|
||||
@ -1165,7 +1121,6 @@ supports_pixel_zoom() const {
|
||||
// key input handler
|
||||
OSStatus TinyOsxGraphicsWindow::handleKeyInput (EventHandlerCallRef myHandler, EventRef event, Boolean keyDown) {
|
||||
|
||||
|
||||
if (tinydisplay_cat.is_debug()) {
|
||||
UInt32 keyCode;
|
||||
GetEventParameter (event, kEventParamKeyCode, typeUInt32, NULL, sizeof(UInt32), NULL, &keyCode);
|
||||
@ -1186,19 +1141,17 @@ OSStatus TinyOsxGraphicsWindow::handleKeyInput (EventHandlerCallRef myHandler, E
|
||||
// function in the first place.
|
||||
UInt32 newModifiers = 0;
|
||||
OSStatus error = GetEventParameter(event, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(UInt32), NULL, &newModifiers);
|
||||
if(error == noErr)
|
||||
if (error == noErr) {
|
||||
HandleModifireDeleta(newModifiers);
|
||||
}
|
||||
|
||||
UInt32 keyCode;
|
||||
GetEventParameter(event, kEventParamKeyCode, typeUInt32, NULL, sizeof(UInt32), NULL, &keyCode);
|
||||
ButtonHandle button = OSX_TranslateKey(keyCode, event);
|
||||
|
||||
if (keyDown)
|
||||
{
|
||||
if ((newModifiers & cmdKey) != 0)
|
||||
{
|
||||
if (button == KeyboardButton::ascii_key("q") || button == KeyboardButton::ascii_key("w"))
|
||||
{
|
||||
if (keyDown) {
|
||||
if ((newModifiers & cmdKey) != 0) {
|
||||
if (button == KeyboardButton::ascii_key("q") || button == KeyboardButton::ascii_key("w")) {
|
||||
// Command-Q or Command-W: quit the application or close the
|
||||
// window, respectively. For now, we treat them both the
|
||||
// same: close the window.
|
||||
@ -1206,9 +1159,7 @@ OSStatus TinyOsxGraphicsWindow::handleKeyInput (EventHandlerCallRef myHandler, E
|
||||
}
|
||||
}
|
||||
SendKeyEvent(button, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
SendKeyEvent(button, false);
|
||||
}
|
||||
return CallNextEventHandler(myHandler, event);
|
||||
@ -1220,8 +1171,7 @@ OSStatus TinyOsxGraphicsWindow::handleKeyInput (EventHandlerCallRef myHandler, E
|
||||
// Access:
|
||||
// Description:
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void TinyOsxGraphicsWindow::SystemSetWindowForground(bool forground)
|
||||
{
|
||||
void TinyOsxGraphicsWindow::SystemSetWindowForground(bool forground) {
|
||||
WindowProperties properties;
|
||||
properties.set_foreground(forground);
|
||||
system_changed_properties(properties);
|
||||
@ -1232,10 +1182,8 @@ void TinyOsxGraphicsWindow::SystemSetWindowForground(bool forground)
|
||||
// Access:
|
||||
// Description:
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void TinyOsxGraphicsWindow::SystemPointToLocalPoint(Point &qdGlobalPoint)
|
||||
{
|
||||
if(_osx_window != NULL)
|
||||
{
|
||||
void TinyOsxGraphicsWindow::SystemPointToLocalPoint(Point &qdGlobalPoint) {
|
||||
if (_osx_window != NULL) {
|
||||
GrafPtr savePort;
|
||||
Boolean portChanged = QDSwapPort(GetWindowPort(_osx_window), &savePort);
|
||||
|
||||
@ -1251,9 +1199,7 @@ void TinyOsxGraphicsWindow::SystemPointToLocalPoint(Point &qdGlobalPoint)
|
||||
// Access:
|
||||
// Description:
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
OSStatus TinyOsxGraphicsWindow::handleWindowMouseEvents (EventHandlerCallRef myHandler, EventRef event)
|
||||
{
|
||||
OSStatus TinyOsxGraphicsWindow::handleWindowMouseEvents (EventHandlerCallRef myHandler, EventRef event) {
|
||||
WindowRef window = NULL;
|
||||
OSStatus result = eventNotHandledErr;
|
||||
UInt32 kind = GetEventKind (event);
|
||||
@ -1264,15 +1210,14 @@ void TinyOsxGraphicsWindow::SystemPointToLocalPoint(Point &qdGlobalPoint)
|
||||
SInt32 this_wheel_delta;
|
||||
EventMouseWheelAxis wheelAxis;
|
||||
|
||||
// cerr <<" Start Mouse Event " << _ID << "\n";
|
||||
//cerr <<" Start Mouse Event " << _ID << "\n";
|
||||
|
||||
// Mac OS X v10.1 and later
|
||||
// should this be front window???
|
||||
GetEventParameter(event, kEventParamWindowRef, typeWindowRef, NULL, sizeof(WindowRef), NULL, &window);
|
||||
|
||||
if(!_is_fullscreen && (window == NULL || window != _osx_window )) {
|
||||
if (kind == kEventMouseMoved)
|
||||
{
|
||||
if (!_is_fullscreen && (window == NULL || window != _osx_window )) {
|
||||
if (kind == kEventMouseMoved) {
|
||||
set_pointer_out_of_window();
|
||||
}
|
||||
return eventNotHandledErr;
|
||||
@ -1283,8 +1228,7 @@ void TinyOsxGraphicsWindow::SystemPointToLocalPoint(Point &qdGlobalPoint)
|
||||
GetWindowPortBounds (window, &rectPort);
|
||||
|
||||
// result = CallNextEventHandler(myHandler, event);
|
||||
// if (eventNotHandledErr == result)
|
||||
{ // only handle events not already handled (prevents wierd resize interaction)
|
||||
// if (eventNotHandledErr == result) { // only handle events not already handled (prevents wierd resize interaction)
|
||||
switch (kind) {
|
||||
// Whenever mouse button state changes, generate the
|
||||
// appropriate Panda down/up events to represent the
|
||||
@ -1294,8 +1238,7 @@ void TinyOsxGraphicsWindow::SystemPointToLocalPoint(Point &qdGlobalPoint)
|
||||
case kEventMouseUp:
|
||||
{
|
||||
GetEventParameter(event, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(UInt32), NULL, &modifiers);
|
||||
if (_properties.get_mouse_mode() == WindowProperties::M_relative)
|
||||
{
|
||||
if (_properties.get_mouse_mode() == WindowProperties::M_relative) {
|
||||
GetEventParameter(event, kEventParamMouseDelta,typeQDPoint, NULL, sizeof(Point),NULL , (void*) &qdGlobalPoint);
|
||||
MouseData currMouse = get_pointer(0);
|
||||
qdGlobalPoint.h += currMouse.get_x();
|
||||
@ -1317,16 +1260,13 @@ void TinyOsxGraphicsWindow::SystemPointToLocalPoint(Point &qdGlobalPoint)
|
||||
|
||||
case kEventMouseMoved:
|
||||
case kEventMouseDragged:
|
||||
if(_properties.get_mouse_mode()==WindowProperties::M_relative)
|
||||
{
|
||||
if (_properties.get_mouse_mode()==WindowProperties::M_relative) {
|
||||
GetEventParameter(event, kEventParamMouseDelta,typeQDPoint, NULL, sizeof(Point),NULL , (void*) &qdGlobalPoint);
|
||||
|
||||
MouseData currMouse=get_pointer(0);
|
||||
qdGlobalPoint.h+=currMouse.get_x();
|
||||
qdGlobalPoint.v+=currMouse.get_y();
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
GetEventParameter(event, kEventParamMouseLocation,typeQDPoint, NULL, sizeof(Point),NULL , (void*) &qdGlobalPoint);
|
||||
SystemPointToLocalPoint(qdGlobalPoint);
|
||||
}
|
||||
@ -1348,8 +1288,7 @@ void TinyOsxGraphicsWindow::SystemPointToLocalPoint(Point &qdGlobalPoint)
|
||||
GetEventParameter(event, kEventParamMouseLocation,typeQDPoint, NULL, sizeof(Point),NULL , (void*) &qdGlobalPoint);
|
||||
SystemPointToLocalPoint(qdGlobalPoint);
|
||||
|
||||
if (wheelAxis == kEventMouseWheelAxisY)
|
||||
{
|
||||
if (wheelAxis == kEventMouseWheelAxisY) {
|
||||
set_pointer_in_window((int)qdGlobalPoint.h, (int)qdGlobalPoint.v);
|
||||
_wheel_delta += this_wheel_delta;
|
||||
SInt32 wheel_scale = osx_mouse_wheel_scale;
|
||||
@ -1367,10 +1306,9 @@ void TinyOsxGraphicsWindow::SystemPointToLocalPoint(Point &qdGlobalPoint)
|
||||
result = noErr;
|
||||
break;
|
||||
}
|
||||
// result = noErr;
|
||||
//result = noErr;
|
||||
}
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -1379,13 +1317,10 @@ void TinyOsxGraphicsWindow::SystemPointToLocalPoint(Point &qdGlobalPoint)
|
||||
// Access: Private
|
||||
// Description: MAC Key Codes to Panda Key Codes
|
||||
////////////////////////////////////////////////////////////////////
|
||||
ButtonHandle TinyOsxGraphicsWindow::OSX_TranslateKey(UInt32 key, EventRef event)
|
||||
{
|
||||
|
||||
ButtonHandle TinyOsxGraphicsWindow::OSX_TranslateKey(UInt32 key, EventRef event) {
|
||||
|
||||
ButtonHandle nk = ButtonHandle::none();
|
||||
switch ( key )
|
||||
{
|
||||
switch ( key ) {
|
||||
case 0: nk = KeyboardButton::ascii_key('a'); break;
|
||||
case 11: nk = KeyboardButton::ascii_key('b'); break;
|
||||
case 8: nk = KeyboardButton::ascii_key('c'); break;
|
||||
@ -1501,7 +1436,7 @@ void TinyOsxGraphicsWindow::SystemPointToLocalPoint(Point &qdGlobalPoint)
|
||||
// this at least does a best gess..
|
||||
|
||||
char charCode = 0;
|
||||
if(GetEventParameter( event, kEventParamKeyMacCharCodes, typeChar, nil, sizeof( charCode ), nil, &charCode ) == noErr)
|
||||
if (GetEventParameter( event, kEventParamKeyMacCharCodes, typeChar, nil, sizeof( charCode ), nil, &charCode ) == noErr)
|
||||
nk = KeyboardButton::ascii_key(charCode);
|
||||
}
|
||||
return nk;
|
||||
@ -1511,8 +1446,7 @@ void TinyOsxGraphicsWindow::SystemPointToLocalPoint(Point &qdGlobalPoint)
|
||||
// Access: Private
|
||||
// Description: Used to emulate key events for the MAC key Modifiers..
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void TinyOsxGraphicsWindow::HandleModifireDeleta(UInt32 newModifiers)
|
||||
{
|
||||
void TinyOsxGraphicsWindow::HandleModifireDeleta(UInt32 newModifiers) {
|
||||
UInt32 changed = _last_key_modifiers ^ newModifiers;
|
||||
|
||||
if ((changed & (shiftKey | rightShiftKey)) != 0)
|
||||
@ -1533,7 +1467,6 @@ void TinyOsxGraphicsWindow::SystemPointToLocalPoint(Point &qdGlobalPoint)
|
||||
|
||||
// save current state
|
||||
_last_key_modifiers = newModifiers;
|
||||
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
@ -1582,21 +1515,21 @@ HandleButtonDelta(UInt32 new_buttons) {
|
||||
// may fail if the mouse is not currently within the
|
||||
// window, or if the API doesn't support this operation.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
bool TinyOsxGraphicsWindow::move_pointer(int device, int x, int y)
|
||||
{
|
||||
if(_osx_window == NULL)
|
||||
bool TinyOsxGraphicsWindow::move_pointer(int device, int x, int y) {
|
||||
if (_osx_window == NULL) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (tinydisplay_cat.is_debug())
|
||||
if (tinydisplay_cat.is_debug()) {
|
||||
tinydisplay_cat.debug() << "move_pointer " << device <<" "<< x <<" "<< y <<"\n";
|
||||
}
|
||||
|
||||
Point pt = {0, 0};
|
||||
pt.h = x;
|
||||
pt.v = y;
|
||||
set_pointer_in_window(x, y);
|
||||
|
||||
if(_properties.get_mouse_mode()==WindowProperties::M_absolute)
|
||||
{
|
||||
if (_properties.get_mouse_mode() == WindowProperties::M_absolute) {
|
||||
LocalPointToSystemPoint(pt);
|
||||
CGPoint newCursorPosition = {0, 0};
|
||||
newCursorPosition.x = pt.h;
|
||||
@ -1609,19 +1542,34 @@ if (tinydisplay_cat.is_debug())
|
||||
return true;
|
||||
};
|
||||
|
||||
bool TinyOsxGraphicsWindow::do_reshape_request(int x_origin, int y_origin, bool has_origin,int x_size, int y_size)
|
||||
{
|
||||
bool TinyOsxGraphicsWindow::do_reshape_request(int x_origin, int y_origin, bool has_origin, int x_size, int y_size) {
|
||||
tinydisplay_cat.info() << "Do Reshape\n";
|
||||
|
||||
if (_properties.get_fullscreen()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// A coordinate of -2 means to center the window on screen.
|
||||
if (x_origin == -2 || y_origin == -2) {
|
||||
if (y_origin == -2) {
|
||||
y_origin = 0.5 * (_pipe->get_display_height() - y_size);
|
||||
}
|
||||
if (x_origin == -2) {
|
||||
x_origin = 0.5 * (_pipe->get_display_width() - x_size);
|
||||
}
|
||||
if (r.top == -1) {
|
||||
r.top = 50;
|
||||
}
|
||||
if (r.left == -1) {
|
||||
r.left = 10;
|
||||
}
|
||||
_properties.set_origin(x_origin, y_origin);
|
||||
system_changed_properties(_properties);
|
||||
}
|
||||
|
||||
/*
|
||||
if (_properties.has_parent_window())
|
||||
{
|
||||
if (has_origin)
|
||||
{
|
||||
if (_properties.has_parent_window()) {
|
||||
if (has_origin) {
|
||||
NSWindow* parentWindow = (NSWindow *)_properties.get_parent_window();
|
||||
NSRect parentFrame = [parentWindow frame];
|
||||
|
||||
@ -1639,8 +1587,7 @@ bool TinyOsxGraphicsWindow::do_reshape_request(int x_origin, int y_origin, bool
|
||||
}
|
||||
}
|
||||
|
||||
if (!_properties.get_undecorated())
|
||||
{
|
||||
if (!_properties.get_undecorated()) {
|
||||
// Constrain the window to the available desktop size.
|
||||
Rect bounds;
|
||||
GetAvailableWindowPositioningBounds(GetMainDevice(), &bounds);
|
||||
@ -1675,10 +1622,8 @@ bool TinyOsxGraphicsWindow::do_reshape_request(int x_origin, int y_origin, bool
|
||||
// because the underlying interface does not support
|
||||
// changing that property on an open window).
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void TinyOsxGraphicsWindow::set_properties_now(WindowProperties &properties)
|
||||
{
|
||||
if (tinydisplay_cat.is_debug())
|
||||
{
|
||||
void TinyOsxGraphicsWindow::set_properties_now(WindowProperties &properties) {
|
||||
if (tinydisplay_cat.is_debug()) {
|
||||
tinydisplay_cat.debug()
|
||||
<< "------------------------------------------------------\n";
|
||||
tinydisplay_cat.debug()
|
||||
@ -1778,42 +1723,34 @@ void TinyOsxGraphicsWindow::set_properties_now(WindowProperties &properties)
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void TinyOsxGraphicsWindow::LocalPointToSystemPoint(Point &qdLocalPoint)
|
||||
{
|
||||
if(_osx_window != NULL)
|
||||
{
|
||||
void TinyOsxGraphicsWindow::LocalPointToSystemPoint(Point &qdLocalPoint) {
|
||||
if (_osx_window != NULL) {
|
||||
GrafPtr savePort;
|
||||
Boolean portChanged = QDSwapPort(GetWindowPort(_osx_window), &savePort);
|
||||
|
||||
LocalToGlobal( &qdLocalPoint );
|
||||
|
||||
if (portChanged)
|
||||
if (portChanged) {
|
||||
QDSwapPort(savePort, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: TinyOsxGraphicsWindow::mouse_mode_relative
|
||||
// Access: Protected, Virtual
|
||||
// Description: detaches mouse. Only mouse delta from now on.
|
||||
//
|
||||
// Description: Detaches mouse. Only mouse delta from now on.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void TinyOsxGraphicsWindow::mouse_mode_relative()
|
||||
{
|
||||
void TinyOsxGraphicsWindow::mouse_mode_relative() {
|
||||
CGAssociateMouseAndMouseCursorPosition(false);
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: TinyOsxGraphicsWindow::mouse_mode_absolute
|
||||
// Access: Protected, Virtual
|
||||
// Description: reattaches mouse to location
|
||||
//
|
||||
// Description: Reattaches mouse to location
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void TinyOsxGraphicsWindow::mouse_mode_absolute()
|
||||
{
|
||||
void TinyOsxGraphicsWindow::mouse_mode_absolute() {
|
||||
CGAssociateMouseAndMouseCursorPosition(true);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user