Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Custom MDI workspace #1077

Open
Emdek opened this issue Mar 26, 2016 · 0 comments
Open

Custom MDI workspace #1077

Emdek opened this issue Mar 26, 2016 · 0 comments

Comments

@Emdek
Copy link
Member

Emdek commented Mar 26, 2016

Currently we rely on instance of QMdiArea which has several drawbacks:

  1. it tries to handle title of main window (needs workaround...);
  2. it tries to push controls and icon of maximized subwindow into QMenuBar (needs workaround which causes other issues...);
  3. it tries to handle some keyboard shortcuts (needs workaround..);
  4. causes noticeable overhead on older systems (this is why we create it only on demand, when there is need for non maximized subwindows);
  5. it tries to be "smart", mimicking some features of window manager that are unwanted in case of standard MDI;
  6. has z-index issues in more complex cases.

What has to be done to replace it:

  1. Window needs to learn to draw decoration when needed (should be quite easy thanks to QStyle);
  2. we need to create algorithm for basic tiling and cascading windows;
  3. we need to control to control location of subwindows (x, y and z).

What we can gain:

  1. custom tiling algorithms (either special JS scripts feeded with information about list Window objects or proper extensions API in future), we could even go further and allow to create multiple algorithm accessible by different keyboard shortcuts;
  2. smaller overhead thanks for simpler class tailored for our simple needs (well, having control over location and size of subwindows is quite simple need, isn't it?).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant