diff options
Diffstat (limited to 'src/ui')
-rw-r--r-- | src/ui/documentwidget.c | 10 | ||||
-rw-r--r-- | src/ui/documentwidget.h | 2 | ||||
-rw-r--r-- | src/ui/util.h | 4 |
3 files changed, 10 insertions, 6 deletions
diff --git a/src/ui/documentwidget.c b/src/ui/documentwidget.c index 2e51f253..90c270fc 100644 --- a/src/ui/documentwidget.c +++ b/src/ui/documentwidget.c | |||
@@ -545,7 +545,7 @@ void setUrlFromCache_DocumentWidget(iDocumentWidget *d, const iString *url, iBoo | |||
545 | } | 545 | } |
546 | } | 546 | } |
547 | 547 | ||
548 | iDocumentWidget *duplicate_DocumentWidget(iDocumentWidget *orig) { | 548 | iDocumentWidget *duplicate_DocumentWidget(const iDocumentWidget *orig) { |
549 | iDocumentWidget *d = new_DocumentWidget(); | 549 | iDocumentWidget *d = new_DocumentWidget(); |
550 | delete_History(d->history); | 550 | delete_History(d->history); |
551 | d->textSizePercent = orig->textSizePercent; | 551 | d->textSizePercent = orig->textSizePercent; |
@@ -1060,7 +1060,7 @@ static iBool processEvent_DocumentWidget_(iDocumentWidget *d, const SDL_Event *e | |||
1060 | return iTrue; | 1060 | return iTrue; |
1061 | } | 1061 | } |
1062 | } | 1062 | } |
1063 | processContextMenuEvent_Widget(d->menu, ev); | 1063 | processContextMenuEvent_Widget(d->menu, ev, d->hoverLink = NULL); |
1064 | switch (processEvent_Click(&d->click, ev)) { | 1064 | switch (processEvent_Click(&d->click, ev)) { |
1065 | case started_ClickResult: | 1065 | case started_ClickResult: |
1066 | d->selecting = iFalse; | 1066 | d->selecting = iFalse; |
@@ -1084,6 +1084,9 @@ static iBool processEvent_DocumentWidget_(iDocumentWidget *d, const SDL_Event *e | |||
1084 | return iTrue; | 1084 | return iTrue; |
1085 | } | 1085 | } |
1086 | case finished_ClickResult: | 1086 | case finished_ClickResult: |
1087 | if (isVisible_Widget(d->menu)) { | ||
1088 | closeMenu_Widget(d->menu); | ||
1089 | } | ||
1087 | if (!isMoved_Click(&d->click)) { | 1090 | if (!isMoved_Click(&d->click)) { |
1088 | if (d->hoverLink) { | 1091 | if (d->hoverLink) { |
1089 | const iGmLinkId linkId = d->hoverLink->linkId; | 1092 | const iGmLinkId linkId = d->hoverLink->linkId; |
@@ -1115,7 +1118,8 @@ static iBool processEvent_DocumentWidget_(iDocumentWidget *d, const SDL_Event *e | |||
1115 | refresh_Widget(w); | 1118 | refresh_Widget(w); |
1116 | } | 1119 | } |
1117 | else { | 1120 | else { |
1118 | postCommandf_App("open url:%s", | 1121 | postCommandf_App("open newtab:%d url:%s", |
1122 | (SDL_GetModState() & KMOD_PRIMARY) != 0, | ||
1119 | cstr_String(absoluteUrl_String( | 1123 | cstr_String(absoluteUrl_String( |
1120 | d->url, linkUrl_GmDocument(d->doc, linkId)))); | 1124 | d->url, linkUrl_GmDocument(d->doc, linkId)))); |
1121 | } | 1125 | } |
diff --git a/src/ui/documentwidget.h b/src/ui/documentwidget.h index 5e7c3f2c..85b9a710 100644 --- a/src/ui/documentwidget.h +++ b/src/ui/documentwidget.h | |||
@@ -7,7 +7,7 @@ iDeclareType(History) | |||
7 | iDeclareWidgetClass(DocumentWidget) | 7 | iDeclareWidgetClass(DocumentWidget) |
8 | iDeclareObjectConstruction(DocumentWidget) | 8 | iDeclareObjectConstruction(DocumentWidget) |
9 | 9 | ||
10 | iDocumentWidget *duplicate_DocumentWidget (iDocumentWidget *); | 10 | iDocumentWidget *duplicate_DocumentWidget (const iDocumentWidget *); |
11 | iHistory * history_DocumentWidget (iDocumentWidget *); | 11 | iHistory * history_DocumentWidget (iDocumentWidget *); |
12 | 12 | ||
13 | const iString * url_DocumentWidget (const iDocumentWidget *); | 13 | const iString * url_DocumentWidget (const iDocumentWidget *); |
diff --git a/src/ui/util.h b/src/ui/util.h index 26066e53..b67f0a87 100644 --- a/src/ui/util.h +++ b/src/ui/util.h | |||
@@ -84,9 +84,9 @@ void closeMenu_Widget (iWidget *); | |||
84 | 84 | ||
85 | int checkContextMenu_Widget (iWidget *, const SDL_Event *ev); /* see macro below */ | 85 | int checkContextMenu_Widget (iWidget *, const SDL_Event *ev); /* see macro below */ |
86 | 86 | ||
87 | #define processContextMenuEvent_Widget(menu, sdlEvent) \ | 87 | #define processContextMenuEvent_Widget(menu, sdlEvent, stmtEaten) \ |
88 | for (const int result = checkContextMenu_Widget((menu), (sdlEvent));;) { \ | 88 | for (const int result = checkContextMenu_Widget((menu), (sdlEvent));;) { \ |
89 | if (result) return result >> 1; \ | 89 | if (result) { {stmtEaten;} return result >> 1; } \ |
90 | break; \ | 90 | break; \ |
91 | } | 91 | } |
92 | 92 | ||