diff options
Diffstat (limited to 'src/ui')
-rw-r--r-- | src/ui/documentwidget.c | 40 | ||||
-rw-r--r-- | src/ui/sidebarwidget.c | 1 | ||||
-rw-r--r-- | src/ui/window.c | 3 |
3 files changed, 11 insertions, 33 deletions
diff --git a/src/ui/documentwidget.c b/src/ui/documentwidget.c index 11b92e63..ff1c577a 100644 --- a/src/ui/documentwidget.c +++ b/src/ui/documentwidget.c | |||
@@ -76,13 +76,11 @@ struct Impl_Model { | |||
76 | /* state that persists across sessions */ | 76 | /* state that persists across sessions */ |
77 | iHistory *history; | 77 | iHistory *history; |
78 | iString * url; | 78 | iString * url; |
79 | int textSizePercent; | ||
80 | }; | 79 | }; |
81 | 80 | ||
82 | void init_Model(iModel *d) { | 81 | void init_Model(iModel *d) { |
83 | d->history = new_History(); | 82 | d->history = new_History(); |
84 | d->url = new_String(); | 83 | d->url = new_String(); |
85 | d->textSizePercent = 100; | ||
86 | } | 84 | } |
87 | 85 | ||
88 | void deinit_Model(iModel *d) { | 86 | void deinit_Model(iModel *d) { |
@@ -92,13 +90,13 @@ void deinit_Model(iModel *d) { | |||
92 | 90 | ||
93 | void serialize_Model(const iModel *d, iStream *outs) { | 91 | void serialize_Model(const iModel *d, iStream *outs) { |
94 | serialize_String(d->url, outs); | 92 | serialize_String(d->url, outs); |
95 | write16_Stream(outs, d->textSizePercent); | 93 | write16_Stream(outs, 0 /*d->zoomPercent*/); |
96 | serialize_History(d->history, outs); | 94 | serialize_History(d->history, outs); |
97 | } | 95 | } |
98 | 96 | ||
99 | void deserialize_Model(iModel *d, iStream *ins) { | 97 | void deserialize_Model(iModel *d, iStream *ins) { |
100 | deserialize_String(d->url, ins); | 98 | deserialize_String(d->url, ins); |
101 | d->textSizePercent = read16_Stream(ins); | 99 | /*d->zoomPercent =*/ read16_Stream(ins); |
102 | deserialize_History(d->history, ins); | 100 | deserialize_History(d->history, ins); |
103 | } | 101 | } |
104 | 102 | ||
@@ -204,7 +202,7 @@ static int documentWidth_DocumentWidget_(const iDocumentWidget *d) { | |||
204 | const iWidget *w = constAs_Widget(d); | 202 | const iWidget *w = constAs_Widget(d); |
205 | const iRect bounds = bounds_Widget(w); | 203 | const iRect bounds = bounds_Widget(w); |
206 | return iMini(bounds.size.x - gap_UI * d->pageMargin * 2, | 204 | return iMini(bounds.size.x - gap_UI * d->pageMargin * 2, |
207 | fontSize_UI * 38 * d->mod.textSizePercent / 100); /* TODO: Add user preference .*/ | 205 | fontSize_UI * 38 * zoom_App() / 100); /* TODO: Add user preference .*/ |
208 | } | 206 | } |
209 | 207 | ||
210 | static iRect documentBounds_DocumentWidget_(const iDocumentWidget *d) { | 208 | static iRect documentBounds_DocumentWidget_(const iDocumentWidget *d) { |
@@ -559,7 +557,7 @@ static iBool updateFromHistory_DocumentWidget_(iDocumentWidget *d) { | |||
559 | const iGmResponse *resp = recent->cachedResponse; | 557 | const iGmResponse *resp = recent->cachedResponse; |
560 | d->state = fetching_RequestState; | 558 | d->state = fetching_RequestState; |
561 | /* Use the cached response data. */ | 559 | /* Use the cached response data. */ |
562 | d->scrollY = d->initialScrollY = recent->scrollY; | 560 | d->scrollY = d->initialScrollY = recent->scrollY * gap_UI; |
563 | updateTrust_DocumentWidget_(d, resp); | 561 | updateTrust_DocumentWidget_(d, resp); |
564 | updateDocument_DocumentWidget_(d, resp); | 562 | updateDocument_DocumentWidget_(d, resp); |
565 | d->state = ready_RequestState; | 563 | d->state = ready_RequestState; |
@@ -602,9 +600,8 @@ void setUrlFromCache_DocumentWidget(iDocumentWidget *d, const iString *url, iBoo | |||
602 | iDocumentWidget *duplicate_DocumentWidget(const iDocumentWidget *orig) { | 600 | iDocumentWidget *duplicate_DocumentWidget(const iDocumentWidget *orig) { |
603 | iDocumentWidget *d = new_DocumentWidget(); | 601 | iDocumentWidget *d = new_DocumentWidget(); |
604 | delete_History(d->mod.history); | 602 | delete_History(d->mod.history); |
605 | d->mod.textSizePercent = orig->mod.textSizePercent; | 603 | d->initialScrollY = orig->scrollY; |
606 | d->initialScrollY = orig->scrollY; | 604 | d->mod.history = copy_History(orig->mod.history); |
607 | d->mod.history = copy_History(orig->mod.history); | ||
608 | setUrlFromCache_DocumentWidget(d, orig->mod.url, iTrue); | 605 | setUrlFromCache_DocumentWidget(d, orig->mod.url, iTrue); |
609 | return d; | 606 | return d; |
610 | } | 607 | } |
@@ -811,20 +808,6 @@ static iBool handleMediaCommand_DocumentWidget_(iDocumentWidget *d, const char * | |||
811 | return iFalse; | 808 | return iFalse; |
812 | } | 809 | } |
813 | 810 | ||
814 | static void changeTextSize_DocumentWidget_(iDocumentWidget *d, int delta) { | ||
815 | if (delta == 0) { | ||
816 | d->mod.textSizePercent = 100; | ||
817 | } | ||
818 | else { | ||
819 | if (d->mod.textSizePercent < 100 || (delta < 0 && d->mod.textSizePercent == 100)) { | ||
820 | delta /= 2; | ||
821 | } | ||
822 | d->mod.textSizePercent += delta; | ||
823 | d->mod.textSizePercent = iClamp(d->mod.textSizePercent, 50, 200); | ||
824 | } | ||
825 | postCommandf_App("font.setfactor arg:%d", d->mod.textSizePercent); | ||
826 | } | ||
827 | |||
828 | void updateSize_DocumentWidget(iDocumentWidget *d) { | 811 | void updateSize_DocumentWidget(iDocumentWidget *d) { |
829 | setWidth_GmDocument(d->doc, documentWidth_DocumentWidget_(d)); | 812 | setWidth_GmDocument(d->doc, documentWidth_DocumentWidget_(d)); |
830 | updateVisible_DocumentWidget_(d); | 813 | updateVisible_DocumentWidget_(d); |
@@ -1070,15 +1053,6 @@ static iBool processEvent_DocumentWidget_(iDocumentWidget *d, const SDL_Event *e | |||
1070 | case ' ': | 1053 | case ' ': |
1071 | postCommand_Widget(w, "scroll.page arg:%d", key == SDLK_PAGEUP ? -1 : +1); | 1054 | postCommand_Widget(w, "scroll.page arg:%d", key == SDLK_PAGEUP ? -1 : +1); |
1072 | return iTrue; | 1055 | return iTrue; |
1073 | case SDLK_MINUS: | ||
1074 | case SDLK_EQUALS: | ||
1075 | case SDLK_0: | ||
1076 | if (mods == KMOD_PRIMARY) { | ||
1077 | changeTextSize_DocumentWidget_( | ||
1078 | d, key == SDLK_EQUALS ? 10 : key == SDLK_MINUS ? -10 : 0); | ||
1079 | return iTrue; | ||
1080 | } | ||
1081 | break; | ||
1082 | case SDLK_9: { | 1056 | case SDLK_9: { |
1083 | iBlock *seed = new_Block(64); | 1057 | iBlock *seed = new_Block(64); |
1084 | for (size_t i = 0; i < 64; ++i) { | 1058 | for (size_t i = 0; i < 64; ++i) { |
@@ -1107,7 +1081,7 @@ static iBool processEvent_DocumentWidget_(iDocumentWidget *d, const SDL_Event *e | |||
1107 | scroll_DocumentWidget_(d, -ev->wheel.y * get_Window()->pixelRatio); | 1081 | scroll_DocumentWidget_(d, -ev->wheel.y * get_Window()->pixelRatio); |
1108 | #else | 1082 | #else |
1109 | if (keyMods_Sym(SDL_GetModState()) == KMOD_PRIMARY) { | 1083 | if (keyMods_Sym(SDL_GetModState()) == KMOD_PRIMARY) { |
1110 | changeTextSize_DocumentWidget_(d, ev->wheel.y > 0 ? 10 : -10); | 1084 | postCommandf_App("zoom.delta arg:%d", ev->wheel.y > 0 ? 10 : -10); |
1111 | return iTrue; | 1085 | return iTrue; |
1112 | } | 1086 | } |
1113 | scroll_DocumentWidget_(d, -3 * ev->wheel.y * lineHeight_Text(default_FontId)); | 1087 | scroll_DocumentWidget_(d, -3 * ev->wheel.y * lineHeight_Text(default_FontId)); |
diff --git a/src/ui/sidebarwidget.c b/src/ui/sidebarwidget.c index a5e0e4ee..ca10f0da 100644 --- a/src/ui/sidebarwidget.c +++ b/src/ui/sidebarwidget.c | |||
@@ -333,6 +333,7 @@ static iBool processEvent_SidebarWidget_(iSidebarWidget *d, const SDL_Event *ev) | |||
333 | return iTrue; | 333 | return iTrue; |
334 | } | 334 | } |
335 | else if (equal_Command(cmd, "tabs.changed") || equal_Command(cmd, "document.changed")) { | 335 | else if (equal_Command(cmd, "tabs.changed") || equal_Command(cmd, "document.changed")) { |
336 | d->scrollY = 0; | ||
336 | updateItems_SidebarWidget_(d); | 337 | updateItems_SidebarWidget_(d); |
337 | } | 338 | } |
338 | } | 339 | } |
diff --git a/src/ui/window.c b/src/ui/window.c index 599044aa..9c1b9bbe 100644 --- a/src/ui/window.c +++ b/src/ui/window.c | |||
@@ -74,6 +74,9 @@ static const iMenuItem navMenuItems[] = { | |||
74 | { "Copy Source Text", SDLK_c, KMOD_PRIMARY, "copy" }, | 74 | { "Copy Source Text", SDLK_c, KMOD_PRIMARY, "copy" }, |
75 | { "---", 0, 0, NULL }, | 75 | { "---", 0, 0, NULL }, |
76 | { "Toggle Sidebar", SDLK_s, KMOD_PRIMARY | KMOD_ALT, "sidebar.toggle" }, | 76 | { "Toggle Sidebar", SDLK_s, KMOD_PRIMARY | KMOD_ALT, "sidebar.toggle" }, |
77 | { "Zoom In", SDLK_EQUALS, KMOD_PRIMARY, "zoom.delta arg:10" }, | ||
78 | { "Zoom Out", SDLK_MINUS, KMOD_PRIMARY, "zoom.delta arg:-10" }, | ||
79 | { "Reset Zoom", SDLK_0, KMOD_PRIMARY, "zoom.set arg:100" }, | ||
77 | { "---", 0, 0, NULL }, | 80 | { "---", 0, 0, NULL }, |
78 | { "Preferences...", SDLK_COMMA, KMOD_PRIMARY, "preferences" }, | 81 | { "Preferences...", SDLK_COMMA, KMOD_PRIMARY, "preferences" }, |
79 | { "---", 0, 0, NULL }, | 82 | { "---", 0, 0, NULL }, |