<Swing Dev> getToolkit().getScreenInsets Ubuntu bug

Paulo Levi i30817 at gmail.com
Sun Jan 10 02:07:18 UTC 2010


Found a workaround - i think this should be fixed on awt really:

    //workaround for java X11 issue (Toolkit.getScreenInsets) wrong values
    *private* *static* ProcessBuilder panelWorkaround = *new*
ProcessBuilder("xprop", "-root", "-notype", "_NET_WORKAREA");

    *private* *static* *final* *boolean* isX11 =
GraphicsEnvironment.getLocalGraphicsEnvironment() *instanceof*
X11GraphicsEnvironment;


    *private* Rectangle getAdequateFullSize() *throws* HeadlessException {
        //bug in linux x11 binding (getScreenInsets not counting panels)...

        *if* (isX11) {
            *try* {
                Process proc = panelWorkaround.start();

                String output = IoUtils.toString(proc.getInputStream(), *true*);
                String[] results = output.split("=");
                *if* (proc.waitFor() == 0 && results.length == 2) {


                    //first window
                    String[] firstWindowProperties = results[1].split(",");
                    *int* x = Integer.parseInt(firstWindowProperties[0].trim());

                    *int* y = Integer.parseInt(firstWindowProperties[1].trim());
                    *int* width =
Integer.parseInt(firstWindowProperties[2].trim());

                    *int* height =
Integer.parseInt(firstWindowProperties[3].trim());
                    *return* *new* Rectangle(x, y, width, height);

                }
            } *catch* (Exception ex) {
                ex.printStackTrace();
                *return* getNormalAdequateSize();

            }
        }
        *return* getNormalAdequateSize();
    }

    *private* Rectangle getNormalAdequateSize() *throws* HeadlessException {

        Insets i = getToolkit().getScreenInsets(getGraphicsConfiguration());
        Rectangle max = *new* Rectangle(getToolkit().getScreenSize());
        max.x += i.left;
        max.y += i.top;

        max.width -= (i.left + i.right);
        max.height -= (i.top + i.bottom);
        *return* max;


    }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/swing-dev/attachments/20100110/a04266de/attachment.html>


More information about the swing-dev mailing list