{"action":"opened","issue":{"url":"https://api.github.com/repos/OtterBrowser/otter-browser/issues/1077","repository_url":"https://api.github.com/repos/OtterBrowser/otter-browser","labels_url":"https://api.github.com/repos/OtterBrowser/otter-browser/issues/1077/labels{/name}","comments_url":"https://api.github.com/repos/OtterBrowser/otter-browser/issues/1077/comments","events_url":"https://api.github.com/repos/OtterBrowser/otter-browser/issues/1077/events","html_url":"https://github.com/OtterBrowser/otter-browser/issues/1077","id":143703020,"number":1077,"title":"Custom MDI workspace","user":{"login":"Emdek","id":1078195,"avatar_url":"https://avatars.githubusercontent.com/u/1078195?v=3","gravatar_id":"","url":"https://api.github.com/users/Emdek","html_url":"https://github.com/Emdek","followers_url":"https://api.github.com/users/Emdek/followers","following_url":"https://api.github.com/users/Emdek/following{/other_user}","gists_url":"https://api.github.com/users/Emdek/gists{/gist_id}","starred_url":"https://api.github.com/users/Emdek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Emdek/subscriptions","organizations_url":"https://api.github.com/users/Emdek/orgs","repos_url":"https://api.github.com/users/Emdek/repos","events_url":"https://api.github.com/users/Emdek/events{/privacy}","received_events_url":"https://api.github.com/users/Emdek/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/OtterBrowser/otter-browser/labels/component:%20GUI","name":"component: GUI","color":"d4c5f9"},{"url":"https://api.github.com/repos/OtterBrowser/otter-browser/labels/enhancement","name":"enhancement","color":"009800"},{"url":"https://api.github.com/repos/OtterBrowser/otter-browser/labels/severity:%20high%20priority","name":"severity: high priority","color":"85b6ff"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2016-03-26T13:08:12Z","updated_at":"2016-03-26T13:08:12Z","closed_at":null,"body":"Currently we rely on instance of ``QMdiArea`` which has several drawbacks:\r\n 1. it tries to handle title of main window (needs workaround...);\r\n 2. it tries to push controls and icon of maximized subwindow into ``QMenuBar`` (needs workaround which causes other issues...);\r\n 3. it tries to handle some keyboard shortcuts (needs workaround..);\r\n 4. causes noticeable overhead on older systems (this is why we create it only on demand, when there is need for non maximized subwindows);\r\n 5. it tries to be \"smart\", mimicking some features of window manager that are unwanted in case of standard MDI;\r\n 6. has z-index issues in more complex cases.\r\n\r\nWhat has to be done to replace it:\r\n 1. ``Window`` needs to learn to draw decoration when needed (should be quite easy thanks to ``QStyle``);\r\n 2. we need to create algorithm for basic tiling and cascading windows;\r\n 3. we need to control to control location of subwindows (*x*, *y* and *z*).\r\n\r\nWhat we can gain:\r\n 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;\r\n 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?)."}}