summaryrefslogtreecommitdiff
path: root/src/app.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/app.c')
-rw-r--r--src/app.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/app.c b/src/app.c
index e807f09d..accdd991 100644
--- a/src/app.c
+++ b/src/app.c
@@ -356,7 +356,7 @@ static void loadPrefs_App_(iApp *d) {
356 setUiScale_Window(get_Window(), argf_Command(cmd)); 356 setUiScale_Window(get_Window(), argf_Command(cmd));
357 } 357 }
358 else if (equal_Command(cmd, "uilang")) { 358 else if (equal_Command(cmd, "uilang")) {
359 const char *id = cstr_Rangecc(range_Command(cmd, "id")); 359 const char *id = cstr_Command(cmd, "id");
360 setCStr_String(&d->prefs.strings[uiLanguage_PrefsString], id); 360 setCStr_String(&d->prefs.strings[uiLanguage_PrefsString], id);
361 setCurrent_Lang(id); 361 setCurrent_Lang(id);
362 } 362 }
@@ -2190,6 +2190,7 @@ iBool handleCommand_App(const char *cmd) {
2190 return iTrue; 2190 return iTrue;
2191 } 2191 }
2192 else if (equal_Command(cmd, "fontpack.suggest.classic")) { 2192 else if (equal_Command(cmd, "fontpack.suggest.classic")) {
2193 /* TODO: Don't use this when system fonts are accessible. */
2193 if (!isInstalled_Fonts("classic-set") && !isInstalled_Fonts("cjk")) { 2194 if (!isInstalled_Fonts("classic-set") && !isInstalled_Fonts("cjk")) {
2194 makeQuestion_Widget( 2195 makeQuestion_Widget(
2195 uiHeading_ColorEscape "${heading.fontpack.classic}", 2196 uiHeading_ColorEscape "${heading.fontpack.classic}",
@@ -2243,6 +2244,9 @@ iBool handleCommand_App(const char *cmd) {
2243 (argLabel_Command(cmd, "axis") ? vertical_WindowSplit : 0) | (arg_Command(cmd) << 1); 2244 (argLabel_Command(cmd, "axis") ? vertical_WindowSplit : 0) | (arg_Command(cmd) << 1);
2244 const char *url = suffixPtr_Command(cmd, "url"); 2245 const char *url = suffixPtr_Command(cmd, "url");
2245 setCStr_String(d->window->pendingSplitUrl, url ? url : ""); 2246 setCStr_String(d->window->pendingSplitUrl, url ? url : "");
2247 if (hasLabel_Command(cmd, "origin")) {
2248 set_String(d->window->pendingSplitOrigin, string_Command(cmd, "origin"));
2249 }
2246 postRefresh_App(); 2250 postRefresh_App();
2247 return iTrue; 2251 return iTrue;
2248 } 2252 }
@@ -2732,12 +2736,21 @@ iBool handleCommand_App(const char *cmd) {
2732 openInDefaultBrowser_App(url); 2736 openInDefaultBrowser_App(url);
2733 return iTrue; 2737 return iTrue;
2734 } 2738 }
2739 iDocumentWidget *doc = document_Command(cmd);
2740 iDocumentWidget *origin = doc;
2741 if (hasLabel_Command(cmd, "origin")) {
2742 iDocumentWidget *cmdOrig = findWidget_App(cstr_Command(cmd, "origin"));
2743 if (cmdOrig) {
2744 origin = cmdOrig;
2745 }
2746 }
2735 const int newTab = argLabel_Command(cmd, "newtab"); 2747 const int newTab = argLabel_Command(cmd, "newtab");
2736 if (newTab & otherRoot_OpenTabFlag && numRoots_Window(get_Window()) == 1) { 2748 if (newTab & otherRoot_OpenTabFlag && numRoots_Window(get_Window()) == 1) {
2737 /* Need to split first. */ 2749 /* Need to split first. */
2738 const iInt2 winSize = get_Window()->size; 2750 const iInt2 winSize = get_Window()->size;
2739 postCommandf_App("ui.split arg:3 axis:%d newtab:%d url:%s", 2751 postCommandf_App("ui.split arg:3 axis:%d origin:%s newtab:%d url:%s",
2740 (float) winSize.x / (float) winSize.y < 0.7f ? 1 : 0, 2752 (float) winSize.x / (float) winSize.y < 0.7f ? 1 : 0,
2753 cstr_String(id_Widget(as_Widget(origin))),
2741 newTab & ~otherRoot_OpenTabFlag, 2754 newTab & ~otherRoot_OpenTabFlag,
2742 cstr_String(url)); 2755 cstr_String(url));
2743 return iTrue; 2756 return iTrue;
@@ -2749,7 +2762,6 @@ iBool handleCommand_App(const char *cmd) {
2749 setKeyRoot_Window(as_Window(d->window), root); 2762 setKeyRoot_Window(as_Window(d->window), root);
2750 setCurrent_Root(root); /* need to change for widget creation */ 2763 setCurrent_Root(root); /* need to change for widget creation */
2751 } 2764 }
2752 iDocumentWidget *doc = document_Command(cmd);
2753 if (newTab & (new_OpenTabFlag | newBackground_OpenTabFlag)) { 2765 if (newTab & (new_OpenTabFlag | newBackground_OpenTabFlag)) {
2754 doc = newTab_App(NULL, (newTab & new_OpenTabFlag) != 0); /* `newtab:2` to open in background */ 2766 doc = newTab_App(NULL, (newTab & new_OpenTabFlag) != 0); /* `newtab:2` to open in background */
2755 } 2767 }
@@ -2766,13 +2778,14 @@ iBool handleCommand_App(const char *cmd) {
2766 } 2778 }
2767 setInitialScroll_DocumentWidget(doc, argfLabel_Command(cmd, "scroll")); 2779 setInitialScroll_DocumentWidget(doc, argfLabel_Command(cmd, "scroll"));
2768 setRedirectCount_DocumentWidget(doc, redirectCount); 2780 setRedirectCount_DocumentWidget(doc, redirectCount);
2781 setOrigin_DocumentWidget(doc, origin);
2769 showCollapsed_Widget(findWidget_App("document.progress"), iFalse); 2782 showCollapsed_Widget(findWidget_App("document.progress"), iFalse);
2770 if (prefs_App()->decodeUserVisibleURLs) { 2783 if (prefs_App()->decodeUserVisibleURLs) {
2771 urlDecodePath_String(url); 2784 urlDecodePath_String(url);
2772 } 2785 }
2773 else { 2786 else {
2774 urlEncodePath_String(url); 2787 urlEncodePath_String(url);
2775 } 2788 }
2776 setUrlFlags_DocumentWidget(doc, url, 2789 setUrlFlags_DocumentWidget(doc, url,
2777 (isHistory ? useCachedContentIfAvailable_DocumentWidgetSetUrlFlag : 0) | 2790 (isHistory ? useCachedContentIfAvailable_DocumentWidgetSetUrlFlag : 0) |
2778 (fromSidebar ? openedFromSidebar_DocumentWidgetSetUrlFlag : 0)); 2791 (fromSidebar ? openedFromSidebar_DocumentWidgetSetUrlFlag : 0));