base size and resize increment window manager attributes



Hello,

As I understand it the gnome window manager specification list aims at 
expanding on and adding some clarification to the Inter-Client 
Communications Conventions Manual (ICCCM) as described at the
<http://tronche.com/gui/x/icccm/>. Here is one simple thing
which should probably be part of the standard:

+++ Each window must have an interior with a height of at least 1 pixel
+++ and a width of at least one pixel.

The above seems to be true under most window managers. For example if I
run 'wish' under fvwm2 I can resize the window until I can clearly see
that it is 1x1. Under the gnome window manager if I do this the drawing
of the window frames becomes really fuzzy as I make the window smaller.

Another requirement should be:

+++ The size increment should be always greater than 1.
+++ Setting the size increment to a smaller amount is implementation
+++ defined, i.e., should be avoided.

(The size increment corresponds to the PResizeInc property in
Section 4.1.2.4 of the ICCCM manual).

Forcing the requirement that all windows should be 1x1 would allow the 
specification being developed to express what should happen when an 
application sets the base size (this property corresponds to or is
related to the PBaseSize bit of WM_SIZE_HINTS.flags in ICCCM
Section 4.1.2.4) to (0, something) or (something, 0).

+++ The size of a window SHOLD be computed as follows:

Let k be some scalar factor.

s = baseSize + k * sizeIncrement;
if (s == 0) size = 1;
else size = baseSize + k * sizeIncrement;

This would solve the following problem. Consider the following Qt
application:

#include <qapplication.h>

class Foo: public QWidget {
  public:
    Foo(QWidget *parent = 0): QWidget(parent) {
      setBaseSize(0, 0);
      setSizeIncrement(2, 2);
    }
};

int main(int argc, char **argv) {
  QApplication app(argc, argv);
  Foo foo;
  app.setMainWidget(&foo);
  foo.show();
  return app.exec();
}

Under the gnome, since the base size is (0, 0), gnome automatically
bumps it to (1, 1) which means that the size computations above
yield sizes of (1, 1), (3, 3), (5, 5), ...
which is not what the user expected.

On the other hand, fvwm uses the above size formula yielding what the
user expected even when the base size is set to (0, 0). This issue
should be sorted out in the window manager specification being
developed.

In the meantime, it would be wise for the Qt team to set the default
value for the base size as (1, 1) rather than (0, 0), or is there
a window manager that allows an interior window to be 0x0 ???
This should perhaps at least be done for the X version of Qt.

These things need to be sorted out and standardized because
it can really mess things up for larger applications and we
all need something to rely on.




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]