Bug 208152 - Kwin: creating chrome less windows of size equal to screen resolution cover the taskbar.
Summary: Kwin: creating chrome less windows of size equal to screen resolution cover t...
Status: RESOLVED NOT A BUG
Alias: None
Product: kwin
Classification: Plasma
Component: general (show other bugs)
Version: unspecified
Platform: Ubuntu Unspecified
: NOR normal
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-09-22 07:09 UTC by Damanjit Singh
Modified: 2009-09-23 08:51 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Damanjit Singh 2009-09-22 07:09:48 UTC
Version:            (using KDE 4.3.1)
Installed from:    Ubuntu Packages

Creating a chrome less window of size equal to your screen resolution creates a window of that size and covers the system task bar.
The expectation is that the WM should restrict the size of the window to the screen's visible area.

// make the window chrome less 
gtk_window_set_decorations(GTK_WINDOW(window), FALSE);
gtk_window_show_all(window);

// set the size equal to screen resolution (1400 x 1050 in my case)
gtk_window_move(GTK_WINDOW(window), 0,0);
gtk_window_resize(GTK_WINDOW(window), 1400, 1050);

Result - The window covers the whole desktop including the task bar.
Expected - The window should not cover the task bar, the WM should restrict the window size to visible area
Comment 1 Thomas Lübking 2009-09-22 19:36:56 UTC
why?

you requested a specific (and sane) geometry (size and position) - so why should you get something else?
(apps might have a good reason to set a specific default size that's not equal to a minimum/maximu/fixed size)

just set the window to be maximized should do what you (probably) want and works on every desktop geometry.

if this doesn't fit you, you can ask for the available desktop area (e.g. QDesktopWidget - I don't know the function for gtk+) and do some sophisticated geomtry calculations based on this information.
Comment 2 Martin Flöser 2009-09-22 20:35:43 UTC
I just wanted to add that, we actually added a patch to "fix" this problem some time ago for Plasma Netbook Shell. We have not yet decided which behaviour will be in 4.4. An application without decoration and matching the screen geometry is treated as a fullscreen window. This is required to "fix" not NETWM compliant windows.
Comment 3 Thomas Lübking 2009-09-22 21:32:39 UTC
> Expected - The window should not cover the task bar, the WM should restrict the
window size to visible area

I doubt this is about the fullscreen issue.
Afaiu the OP requests a geometry adjustment (though a specific geometry was requesteed by the app)
Comment 4 Damanjit Singh 2009-09-23 07:11:43 UTC
If I make these requests for a window with chrome (a decorated window), the KWIN restricts the size to the screen's visible area and creates a smaller window such that task bar is not hidden.

Where as if I do the same for a non-decorated window, the task bar gets hidden. I did not call fullscreen, so why should it behave as fullscreen.

Also why should there be difference in behavior of decorated and non-decorated window with respect to setting the size of the window.

Also this might be a security issue where by any app could capture the whole screen area even though the user didn't want that. 

Generally when a window goes full screen, WM gives an option to bring the window out of fullscreen mode if the user wants that (irrespective of the app dev's choice). Thus generally no app can capture the wholse screen area without user's intent.

But in this case, the non-decorated window would cover the wholse screen area. And even if the user wants to come out of this "fullscreen type" mode, he cant.
Comment 5 Martin Flöser 2009-09-23 07:53:44 UTC
(In reply to comment #4)
> Where as if I do the same for a non-decorated window, the task bar gets hidden.
> I did not call fullscreen, so why should it behave as fullscreen.
As mentioned in comment #2 this is a required feature to support legacy application which do not use NETWM. The current behaviour in trunk is changed. Your window would be below the taskbar not above.
Comment 6 lucas 2009-09-23 07:57:22 UTC
When a window has a decoration it obeys decorated window rules; when it's undecorated it follows undecorated window rules.

A decorated window relies on the titlebar to be visible to users so they can move the window around. This means if KWin detects if a titlebar is behind a panel the entire window is moved. If you had your panel on the bottom of the screen the window geometry would not have changed.

As an undecorated window doesn't rely on a titlebar for the window to be moved (If it does there's nothing KWin can do anyway as it can't detect that...) KWin just leaves the window where it requested to be.

This report is either INVALID or WONTFIX--I can't decide.
Comment 7 lucas 2009-09-23 08:04:48 UTC
Hmm, I might have misread the report due to possibly-incorrect comments added by others.

What exactly are you trying to achieve?
Comment 8 lucas 2009-09-23 08:51:08 UTC
Rereading the report it seems comments 2+ are off-topic.

Thomas's first reply is correct, if you don't want to cover the panel then don't request a geometry that does so as KWin is required to obey those requests according to the ICCCM standard (I'm assuming that GTK+ is using WM_SIZE_HINTS to set the initial geometry).

The correct method would to be to query the window tree for strut areas (_NET_WM_STRUT_PARTIAL and _NET_WM_STRUT) and manually calculate the required geometry of your window. You cannot use _NET_WORKAREA as it doesn't take into account multi-monitor systems that have different sized monitors. I am uncertain as to whether or not GTK+ has a helper function for this or not.