After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 777527 - GDK W32: Invisible drop-down menus in GTK apps when working via RDP
GDK W32: Invisible drop-down menus in GTK apps when working via RDP
Status: RESOLVED FIXED
Product: gtk+
Classification: Platform
Component: Backend: Win32
unspecified
Other All
: Normal normal
: ---
Assigned To: gtk-win32 maintainers
gtk-bugs
: 778892 792615 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2017-01-20 10:32 UTC by LRN
Modified: 2018-01-17 20:43 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
GDK W32: Ensure that we use made-up monitors when there are none (2.96 KB, patch)
2017-01-20 10:32 UTC, LRN
committed Details | Review
fix for multiple physical monitors attached (385 bytes, patch)
2017-11-21 20:29 UTC, dave
none Details | Review
fix for multiple monitors attached (385 bytes, patch)
2017-11-21 20:50 UTC, dave
none Details | Review

Description LRN 2017-01-20 10:32:29 UTC
Drop-down menus are not shown (seem to have zero or negative dimensions) when
a GTK application is running on a Windows desktop that is being accessed via RDP.

Also, many critical warnings are logged.
Comment 1 LRN 2017-01-20 10:32:38 UTC
Created attachment 343890 [details] [review]
GDK W32: Ensure that we use made-up monitors when there are none

Previously GDK only made up monitors when it initially found none. Now it
also makes up monitors when it initially finds some, but later fails to get
their informatin in a normal way and finally prunes them out, being left with
zero monitors.

Having zero-length monitor array is unexpected and causes a number
of critical warnings and some critical functionality (such as displaying
drop-down menus) fails in such cases.

Ideally, there might be such a way to interrogate W32 API that produces the
information about non-real (but active) monitors out of it so that it isn't
necessary for us to make stuff up. However, this code is already complicated,
and i am not prepared to dig W32 API to find a way to do this.

This fixes the issues people had when they accessed a Windows desktop via RDP.
Comment 2 Andrew Chadwick 2017-01-20 10:40:57 UTC
Downstream instance: https://github.com/Alexpux/MINGW-packages/issues/2104

(I cannot easily and quickly test this myself right now)
Comment 3 Ignacio Casal Quinteiro (nacho) 2017-01-20 10:47:26 UTC
Review of attachment 343890 [details] [review]:

Fine for me
Comment 4 LRN 2017-01-20 12:49:25 UTC
Comment on attachment 343890 [details] [review]
GDK W32: Ensure that we use made-up monitors when there are none

Pushed attachment 343890 [details] [review] into branch gtk-3-22 as commit 4a5cd127ff7199480002e7d02698bee0333cf5d6
Comment 5 Johannes Schriewer 2017-02-19 14:52:08 UTC
*** Bug 778892 has been marked as a duplicate of this bug. ***
Comment 6 dave 2017-11-21 20:29:24 UTC
Created attachment 364140 [details] [review]
fix for multiple physical monitors attached

The prune_monitors function does not work for me.  Have two physical monitors attached to the system.  reverse the for loop removes all of them instead of only one. Thanks.
Comment 7 dave 2017-11-21 20:50:42 UTC
Created attachment 364142 [details] [review]
fix for multiple monitors attached

sorry, previous attachment should have had a '>' not a '<'

also not sure how to reopen this bug?
Comment 8 LRN 2017-11-23 07:20:00 UTC
Pushed commit 30ddb3e into the gtk-3-22 branch. Does that work for you?
Comment 9 LRN 2018-01-17 20:43:13 UTC
*** Bug 792615 has been marked as a duplicate of this bug. ***