Special meaning of negative size for panel

When I use another monitor with my laptop, my secondary panel (a vertical one with size = screen.height() -main_panel.height()) becomes shorter since its size specified in pixels. So I have to adjust the height, then when I unplug it and use laptop's monitor only, this panel becomes bigger than screen size so I have to adjust the height again.
This patch allows negative panel lengths in pixels and applies a special meaning to it: if the length value is negative or zero, then the panel length is maximum available space (screen width or height) - specified value.