Skip to content

Commit 0360d5f

Browse files
committed
Partial fix of NASAWorldWind#195
1 parent 5250a29 commit 0360d5f

File tree

2 files changed

+37
-1
lines changed

2 files changed

+37
-1
lines changed

src/gov/nasa/worldwind/WorldWindowGLAutoDrawable.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,11 @@ protected void doSwapBuffers(GLAutoDrawable drawable)
495495
*/
496496
public void reshape(GLAutoDrawable glAutoDrawable, int x, int y, int w, int h)
497497
{
498-
// This is apparently necessary to enable the WWJ canvas to resize correctly with JSplitPane.
498+
GL2 gl = this.drawable.getGL().getGL2(); // change this as needed
499+
double dpiScalingFactor = (double) (Toolkit.getDefaultToolkit().getScreenResolution() / 96.0);
500+
w = (int) (w * dpiScalingFactor);
501+
h = (int) (h * dpiScalingFactor);
502+
gl.glViewport(0, 0, w, h);
499503
((Component) glAutoDrawable).setMinimumSize(new Dimension(0, 0));
500504
}
501505

src/gov/nasa/worldwind/awt/WorldWindowGLCanvas.java

+32
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
import com.jogamp.opengl.*;
4040
import com.jogamp.opengl.awt.GLCanvas;
4141
import java.awt.*;
42+
import java.awt.event.MouseEvent;
43+
import java.awt.event.MouseWheelEvent;
4244
import java.beans.*;
4345
import java.util.*;
4446

@@ -487,4 +489,34 @@ public Collection<PerformanceStatistic> getPerFrameStatistics()
487489
{
488490
return this.wwd.getPerFrameStatistics();
489491
}
492+
493+
@Override
494+
protected void processMouseEvent(MouseEvent e) {
495+
double dpiScalingFactor = (double) (Toolkit.getDefaultToolkit().getScreenResolution() / 96.0);
496+
int x = (int) (e.getPoint().x * dpiScalingFactor);
497+
int y = (int) (e.getPoint().y * dpiScalingFactor);
498+
MouseEvent scaledEvent = new MouseEvent((Component)e.getSource(), e.getID(),
499+
e.getWhen(), e.getModifiersEx(), x, y, e.getXOnScreen(), e.getYOnScreen(), e.getClickCount(), false,e.getButton());
500+
super.processMouseEvent(scaledEvent);
501+
}
502+
503+
@Override
504+
protected void processMouseMotionEvent(MouseEvent e) {
505+
double dpiScalingFactor = (double) (Toolkit.getDefaultToolkit().getScreenResolution() / 96.0);
506+
int x = (int) (e.getPoint().x * dpiScalingFactor);
507+
int y = (int) (e.getPoint().y * dpiScalingFactor);
508+
MouseEvent scaledEvent = new MouseEvent((Component) e.getSource(), e.getID(), e.getWhen(), e.getModifiersEx(),
509+
x, y, e.getXOnScreen(), e.getYOnScreen(), e.getClickCount(), false, e.getButton());
510+
super.processMouseMotionEvent(scaledEvent);
511+
}
512+
513+
@Override
514+
protected void processMouseWheelEvent(MouseWheelEvent e) {
515+
double dpiScalingFactor = (double) (Toolkit.getDefaultToolkit().getScreenResolution() / 96.0);;
516+
int x = (int) (e.getPoint().x * dpiScalingFactor);
517+
int y = (int) (e.getPoint().y * dpiScalingFactor);
518+
MouseWheelEvent scaledEvent = new MouseWheelEvent((Component) e.getSource(),
519+
e.getID(), e.getWhen(), e.getModifiersEx(), x, y, e.getXOnScreen(), e.getYOnScreen(), e.getClickCount(), false, e.getScrollType(),e.getScrollAmount(),e.getWheelRotation());
520+
super.processMouseWheelEvent(scaledEvent);
521+
}
490522
}

0 commit comments

Comments
 (0)