summaryrefslogtreecommitdiff
path: root/src/ui/window.c
diff options
context:
space:
mode:
authorJaakko Keränen <jaakko.keranen@iki.fi>2021-04-30 06:46:14 +0300
committerJaakko Keränen <jaakko.keranen@iki.fi>2021-04-30 06:46:14 +0300
commitfed2b149aeb5c5cd692421602e0fe77ceffb8b28 (patch)
tree17e0c89314bd1267d10559f78a1bef78d97abdcf /src/ui/window.c
parent5039199857ed0b1644a319d3cc514d63c3e3db45 (diff)
Window: Moving tabs between splits
Diffstat (limited to 'src/ui/window.c')
-rw-r--r--src/ui/window.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/ui/window.c b/src/ui/window.c
index da1db514..9ac9b918 100644
--- a/src/ui/window.c
+++ b/src/ui/window.c
@@ -29,6 +29,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
29#include "embedded.h" 29#include "embedded.h"
30#include "keys.h" 30#include "keys.h"
31#include "labelwidget.h" 31#include "labelwidget.h"
32#include "documentwidget.h"
32#include "paint.h" 33#include "paint.h"
33#include "root.h" 34#include "root.h"
34#include "touch.h" 35#include "touch.h"
@@ -1170,13 +1171,27 @@ void setSplitMode_Window(iWindow *d, int splitMode) {
1170 } 1171 }
1171 else if ((splitMode & mask_WindowSplit) && oldCount == 1) { 1172 else if ((splitMode & mask_WindowSplit) && oldCount == 1) {
1172 /* Add a second root. */ 1173 /* Add a second root. */
1174 iDocumentWidget *moved = document_Root(d->roots[0]);
1173 iAssert(d->roots[1] == NULL); 1175 iAssert(d->roots[1] == NULL);
1174 d->roots[1] = new_Root(); 1176 d->roots[1] = new_Root();
1175 setCurrent_Root(d->roots[1]); 1177 setCurrent_Root(d->roots[1]);
1176 createUserInterface_Root(d->roots[1]); 1178 createUserInterface_Root(d->roots[1]);
1177 /* If the old root has multiple tabs, move the current one to the new split. */ 1179 /* If the old root has multiple tabs, move the current one to the new split. */ {
1178 1180 iWidget *docTabs0 = findChild_Widget(d->roots[0]->widget, "doctabs");
1179 postCommand_Root(d->roots[1], "navigate.home"); 1181 iWidget *docTabs1 = findChild_Widget(d->roots[1]->widget, "doctabs");
1182 if (tabCount_Widget(docTabs0) >= 2) {
1183 int movedIndex = tabPageIndex_Widget(docTabs0, moved);
1184 removeTabPage_Widget(docTabs0, movedIndex);
1185 showTabPage_Widget(docTabs0, tabPage_Widget(docTabs0, iMax(movedIndex - 1, 0)));
1186 iRelease(removeTabPage_Widget(docTabs1, 0)); /* delete the default tab */
1187 setRoot_Widget(as_Widget(moved), d->roots[1]);
1188 prependTabPage_Widget(docTabs1, iClob(moved), "", 0, 0);
1189 showTabPage_Widget(docTabs1, as_Widget(moved));
1190 }
1191 else {
1192 postCommand_Root(d->roots[1], "navigate.home");
1193 }
1194 }
1180 setCurrent_Root(NULL); 1195 setCurrent_Root(NULL);
1181 } 1196 }
1182 d->splitMode = splitMode; 1197 d->splitMode = splitMode;