Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8214911

Incorrect screen insets on multi-monitor X Window configuration

XMLWordPrintable

    • linux

      FULL PRODUCT VERSION :
      java version " 1.7.0_13 "
      Java(TM) SE Runtime Environment (build 1.7.0_13-b20)
      Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)

      ADDITIONAL OS VERSION INFORMATION :
      Kubuntu 12.10 (Linux 3.5.0-23-generic #35-Ubuntu SMP Thu Jan 24 13:15:40 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux)

      A DESCRIPTION OF THE PROBLEM :
        Toolkit.getScreenInsets(GraphicsConfiguration) returns incorrect results for a screen on which KDE doc is located, when there is a second screen with bigger height.

      Screen configuration (typical setup for a notebook with external monitor attached):
      +----------------------+ +---------------------------+
      | | | |
      | Screen 0: | | Screen 1: |
      | 0, 0, 1280x960 | | 1280, 0, 1600, 1200 |
      | | | |
      +-----------------------+ | |
      | KDE doc (h: 35) | | |
      +-----------------------+ | |
                                           | |
                                          +---------------------------+

      Expected insets for screen 0 are [0, 0, 0, 35], actual: [0, 0, 0, 275].

      Supposedly, the problem was introduced in a course of fixing http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4737732.

      REGRESSION. Last worked in version 6u31


      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      import java.awt.*;

      public class DisplayTest {
          public static void main(String[] args) {
              GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment();
              Toolkit toolkit = Toolkit.getDefaultToolkit();

              System.out.println( " Screen devices: " );
              for (GraphicsDevice device : environment.getScreenDevices()) {
                  GraphicsConfiguration gc = device.getDefaultConfiguration();
                  Rectangle b = gc.getBounds();
                  Insets i = toolkit.getScreenInsets(gc);
                  System.out.println( " [ " + device.getIDstring() + " ] " +
                          b.x + " , " + b.y + " " + b.width + " x " + b.height + " " +
                          i.left + " , " + i.top + " , " + i.right + " , " + i.bottom);
              }
          }
      }
      ---------- END SOURCE ----------

      CUSTOMER SUBMITTED WORKAROUND :
      Downgrade to Java 6

            Unassigned Unassigned
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: