oF v0.8.4でウィンドウ上のカーソルが表示されない不具合の解決法
最近、oF v0.8.4で開発をしているが、ウィンドウ上のカーソルが表示されなくなるという問題に遭遇した(何らかのタイミングで正常に戻るときもある)。
oFの開発コミュニティでも不具合について認識している(GLFW関連の不具合とのこと)らしく、解決法が提示されていたので、まとめておく。
1. oF本体のフォルダにある
ofAppGLFWWindow.cpp
を開く。
2. 下記のメンバ関数を修正する
void ofAppGLFWWindow::motion_cb(GLFWwindow* windowP_, double x, double y)
上記の関数の開始直後(rotateMouseXY(ofGetOrientation(), x, y);呼び出し前)に
#ifdef TARGET_OSX [(NSWindow*)ofGetCocoaWindow() resetCursorRects]; #endif
を入れる。
3. 下記のメンバ関数を修正する
void ofAppGLFWWindow::mouse_cb(GLFWwindow* windowP_, int button, int state, int mods)
上記の関数の
if (state == GLFW_PRESS) { (略) } else if (state == GLFW_RELEASE) { (略)
を
if (state == GLFW_PRESS) { #ifdef TARGET_OSX NSPoint position = [(NSWindow*)ofGetCocoaWindow() mouseLocationOutsideOfEventStream]; int posY= abs(position.y-ofGetHeight()); if(position.y>ofGetHeight())posY= (position.y-ofGetHeight())*-1; ofNotifyMousePressed((int)position.x, posY, button); #else ofNotifyMousePressed(ofGetMouseX(), ofGetMouseY(), button); #endif instance->buttonPressed=true; } else if (state == GLFW_RELEASE) { (略)
に書き換える。
自分の環境では、これで一応表示されるようになった。
ただ、今度はクリックするとカーソルが消える(その後、移動すると表示される)問題が発生しているので、完全解決に向けて、これからも調べていきたい。