Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-46786

QScreen geometry / size wrong after setting new mode (e.g. with xrandr)

    XMLWordPrintable

Details

    • Bug
    • Resolution: Incomplete
    • P2: Important
    • None
    • 5.5.0 Beta
    • QPA: X11/XCB
    • None
    • Linux, qt5-git @ 1485c2f

    Description

      This is a multi-monitor setup.

      DP3 is at 0x0+2560+1600
      (2560x1600 in landscape mode)
      HDMI2 is at 2560x0+1200+1920
      (1920x1200 in portrait mode, right of DP3)

      When I start my application, the Geometry & Size for HDMI2 are reported correctly. However, when I resize HDMI2 with xrandr (e.g. xrandr --output HDMI2 --mode 1600x1200 and xrandr --output HDMI2 --mode 1920x1200) the reported values are wrong.

      QScreen * screen is acquired by iterating over QGuiApplication::screens() and comparing screen->name().

      at 1920x1200 (portrait mode, so 1200x1920)

      • geometry() ok
      • virtualGeometry() ok
      • availableGeometry() ok
      • availableVirtualGeometry() ok
      • availableSize() ok
      • availableVirtualSize() ok
      geometry():  QRect(2560,0 1200x1920)
      virtualGeometry():  QRect(0,0 3760x1920)
      availableGeometry():  QRect(2560,0 1200x1920)
      availableVirtualGeometry():  QRect(0,0 3760x1920)
      availableSize():  QSize(1200, 1920)
      availableVirtualSize():  QSize(3760, 1920)
      orientation():  Qt::ScreenOrientation(PortraitOrientation)
      nativeOrientation():  Qt::ScreenOrientation(PrimaryOrientation)
      

      at 1600x1200 (portrait mode, so 1200x1600):

      • geometry() ok
      • virtualGeometry() wrong
      • availableGeometry() ok
      • availableVirtualGeometry() wrong
      • availableSize() ok
      • availableVirtualSize() wrong
      geometry():  QRect(2560,0 1200x1600)
      virtualGeometry():  QRect(0,0 0x0)
      availableGeometry():  QRect(2560,0 1200x1600)
      availableVirtualGeometry():  QRect(0,0 0x0)
      availableSize():  QSize(1200, 1600)
      availableVirtualSize():  QSize(0, 0)
      orientation():  Qt::ScreenOrientation(PortraitOrientation)
      nativeOrientation():  Qt::ScreenOrientation(PrimaryOrientation)
      

      back at 1920x1200 (portrait mode, so 1200x1920):

      • geometry() wrong (inverted)
      • virtualGeometry() wrong
      • availableGeometry() wrong
      • availableVirtualGeometry() wrong
      • availableSize() wrong
      • availableVirtualSize() wrong
      geometry():  QRect(2560,0 1920x1200)
      virtualGeometry():  QRect(0,0 0x0)
      availableGeometry():  QRect(2560,0 1200x1200)
      availableVirtualGeometry():  QRect(0,0 0x0)
      availableSize():  QSize(1200, 1200)
      availableVirtualSize():  QSize(0, 0)
      orientation():  Qt::ScreenOrientation(PortraitOrientation)
      nativeOrientation():  Qt::ScreenOrientation(PrimaryOrientation)
      

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            paeglis Gatis Paeglis
            jrk Jochen Keil
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes