From liebundartig@freenet.de  Thu Aug 27 00:37:32 2015
Received: (at submit) by bugs.x2go.org; 26 Aug 2015 22:37:40 +0000
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on
	ymir.das-netzwerkteam.de
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM,
	URIBL_BLOCKED autolearn=ham version=3.3.2
Received: from mout0.freenet.de (mout0.freenet.de [195.4.92.90])
	by ymir.das-netzwerkteam.de (Postfix) with ESMTPS id 9DA2D5DA80
	for <submit@bugs.x2go.org>; Thu, 27 Aug 2015 00:37:32 +0200 (CEST)
Received: from [195.4.92.140] (helo=mjail0.freenet.de)
	by mout0.freenet.de with esmtpa (ID liebundartig@freenet.de) (port 25) (Exim 4.85 #1)
	id 1ZUjK0-0004zn-Bk
	for submit@bugs.x2go.org; Thu, 27 Aug 2015 00:37:32 +0200
Received: from localhost ([::1]:58496 helo=mjail0.freenet.de)
	by mjail0.freenet.de with esmtpa (ID liebundartig@freenet.de) (Exim 4.85 #1)
	id 1ZUjK0-00019z-7v
	for submit@bugs.x2go.org; Thu, 27 Aug 2015 00:37:32 +0200
Received: from mx5.freenet.de ([195.4.92.15]:51797)
	by mjail0.freenet.de with esmtpa (ID liebundartig@freenet.de) (Exim 4.85 #1)
	id 1ZUjHT-00055g-Dq
	for submit@bugs.x2go.org; Thu, 27 Aug 2015 00:34:55 +0200
Received: from p2003004544027378750aa9d5dc4d0a11.dip0.t-ipconnect.de ([2003:45:4402:7378:750a:a9d5:dc4d:a11]:46014)
	by mx5.freenet.de with esmtpsa (ID liebundartig@freenet.de) (TLSv1.2:DHE-RSA-AES128-SHA:128) (port 465) (Exim 4.85 #1)
	id 1ZUjHT-000604-6X
	for submit@bugs.x2go.org; Thu, 27 Aug 2015 00:34:55 +0200
Message-ID: <55DE3F0E.6040406@freenet.de>
Date: Thu, 27 Aug 2015 00:34:54 +0200
From: =?UTF-8?B?UmVuw6kgR2Vueg==?= <liebundartig@freenet.de>
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Thunderbird/31.8.0
MIME-Version: 1.0
To: submit@bugs.x2go.org
Subject: 'Session preferences' window 'Session' tab content is too tall for
 small displays
Content-Type: multipart/mixed;
 boundary="------------070201030503030601010001"
X-Originated-At: 2003:45:4402:7378:750a:a9d5:dc4d:a11!46014

This is a multi-part message in MIME format.
--------------070201030503030601010001
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit

Package: x2goclient
Version: 4.0.5.0

This issue can be observed on GNU/Linux, Mac OS X, and Windows version of x2goclient.
I was using:
- Mac OS X 10.10
- Fedora 22
- Windows 7


Steps to reproduce:
0. start X2Go client on a computer with a small display size (1280x800 px)
1. create a new X2Go session profile
2. set: Session tab -- '[x] use Proxy server for SSH connection'
3. buttons not displayed: [OK] [Cancel] [Defaults]



On Mac OS X and Windows the 'Session preferences' window does not use the minimal size possible.
On GNU/Linux the 'Session preferences' window uses the minimal size possible.

However, for all three operating systems the 'Session preferences' window does not resize automatically to the minimum size possible.



My Mac OS X notebook has a 13" display with a resolution of 1280x800 px.
Screen width is no issue. Screen height is the issue with x2goclient.
On Mac OS X the 'Session preferences - ...' window height is 900 px by default.
So the buttons '[OK] [Cancel] [Apply]' at the bottom of the x2goclient window are not displayed by default.

On Mac OS X:
- after moving the 'Session preferences' window a little bit it resizes, so buttons are displayed.
- resizing the window does resize it automatically, you have to move the window.
- if you set '[x] use Proxy server for SSH connection' in the Session tab and maximize the window with the green green [+] button (hold down alt key) in the upper left corner of the window the content of the "Proxy server" section is garbled
On Windows and GNU/Linux the 'Session preferences' window is not resized after moving.



By hiding the 'Session' tab and recompiling I verified the culprit:
Session tab -- '[x] use Proxy server for SSH connection'
This expands a big menu.



I thought of the following solutions:
- define minimum/maximum size of the 'Session preferences' window in height; on Mac OS X the windows minimum height is as small as 693 px
-> if
Session tab -- '[x] use Proxy server for SSH connection'
is set, the minimum height will get much larger; doh!

- add automatic resizing after 'Use Proxy server' check box is toggled with:
http://stackoverflow.com/questions/13942616/qt-resize-window-after-widget-remove/30472749#30472749
-> if the menu is extended, the required size to display all is still too small; doh!

- introduce scroll bars; so the buttons at the button of the 'Session preferences' window are displayed and you can scroll the content, if necessary
-> I could not get this to work; after several days I concluded my knowledge is insufficient for this task

- in the 'Session preferences' window in the 'Session' tab move the sections 'Server' and 'Session type' to an additional tab, dubbed 'Authentication'
-> I hacked the source and it worked out. :)
The files I created/edited have been attached as an archive.

I commented the lines in 'editconnectiondialog.*' in order to make sure to not forget any line.
Maybe some 'include headers' are not required anymore and can be removed.



Note, in the file:
x2goclient/src/sessionwidget.cpp
I replaced:
     lKey=new QLabel ( tr ( "Use RSA/DSA key for ssh connection:" ),sgb );
with:
     lKey=new QLabel ( tr ( "Use RSA/DSA key for SSH connection:" ),sgb );
because in other lines it is written SSH as well, for example:
     cbAutoLogin=new QCheckBox(tr("Try auto login (via SSH Agent or default SSH key)"),sgb);
OR
     cbProxy=new QCheckBox(tr("Use Proxy server for SSH connection"),sgb);



In the file:
x2goclient/src/sessionwidget.cpp
the section:
--8<--
#ifndef Q_WS_HILDON
     openKey=new QPushButton (
         QIcon ( mainWindow->iconsPath (
                     "/32x32/file-open.png" ) ),
         QString::null,sgb );
     QVBoxLayout *sgbLay = new QVBoxLayout ( sgb );
#else
     QPushButton* openKey=new QPushButton (
         QIcon ( mainWindow->iconsPath ( "/16x16/file-open.png" ) ),
         QString::null,sgb );
     QVBoxLayout *sgbLay = new QVBoxLayout ();
#endif
--8<--
urges me to ask: why 32x32 in one branch and 16x16 in the other?





With the changes in place I compiled the source on Mac OS X.
Everything seems to work just fine.
However, when opening the 'Session preferences' window of new or existing session you can see messages in terminal:
---8<---
$ ./macbuild.sh && client_build/x2goclient.app/Contents/MacOS/x2goclient
... snipping compilation output...
~/x2go/x2goclient
x2go-INFO-1> "Starting X2Go Client..."
x2go-WARNING-1> "English language requested, not loading translator."
x2go-WARNING-1> "English language requested, not loading translator."
x2go-INFO-3> "Started X2Go Client."

Object::connect: No such slot AuthenticationWidget::slot_emitSettings()
Object::connect: No such slot AuthenticationWidget::slot_emitSettings()
Object::connect: No such signal SessionWidget::directRDP(bool)
Object::connect: No such signal SessionWidget::settingsChanged(QString,QString,QString)

2015-08-26 00:47:08.242 x2goclient[6378:72130] modalSession has been exited prematurely - check for a reentrant call to endModalSession:
x2go-INFO-6> "Closing X2Go Client ..."
x2go-INFO-7> "Finished X2Go Client closing hooks."
---8<---



With vanilla sources the output is like:
---8<---
$ ./macbuild.sh && client_build/x2goclient.app/Contents/MacOS/x2goclient
... snipping compilation output...
~/x2go/x2goclient
x2go-INFO-1> "Starting X2Go Client..."
x2go-WARNING-1> "English language requested, not loading translator."
x2go-WARNING-1> "English language requested, not loading translator."
x2go-INFO-3> "Started X2Go Client."



Object::connect: No such slot SessionWidget::slot_emitSettings()
Object::connect: No such slot SessionWidget::slot_emitSettings()
Object::connect: No such signal SessionWidget::directRDP(bool)
Object::connect: No such signal SessionWidget::settingsChanged(QString,QString,QString)
2015-08-26 00:43:16.741 x2goclient[6023:70742] modalSession has been exited prematurely - check for a reentrant call to endModalSession:
x2go-INFO-6> "Closing X2Go Client ..."
x2go-INFO-7> "Finished X2Go Client closing hooks."
---8<---

On GNU/Linux the vanilla X2Go client does not print anything in terminal. Hence I did not try with my changes.


-- 
Kind regards,
René

--------------070201030503030601010001
Content-Type: application/x-7z-compressed;
 name="AuthenticationTabAdded.7z"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="AuthenticationTabAdded.7z"

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
xwoB75BoBAAA
--------------070201030503030601010001--

