diff options
Diffstat (limited to 'desktop/global_history.c')
-rw-r--r-- | desktop/global_history.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/desktop/global_history.c b/desktop/global_history.c index ee09c1cdb..29d744e0a 100644 --- a/desktop/global_history.c +++ b/desktop/global_history.c @@ -648,6 +648,29 @@ static nserror global_history_tree_node_entry_cb( break; case TREE_MSG_NODE_LAUNCH: + { + nserror error; + struct browser_window *clone = NULL; + enum browser_window_nav_flags flags = + BROWSER_WINDOW_VERIFIABLE | + BROWSER_WINDOW_HISTORY | + BROWSER_WINDOW_TAB; + + /* TODO: Set clone window, to window that new tab appears in */ + + if (msg.data.node_launch.mouse & + (BROWSER_MOUSE_MOD_1 | BROWSER_MOUSE_MOD_2) || + clone == NULL) { + /* Shift or Ctrl launch, open in new window rather + * than tab. */ + flags ^= BROWSER_WINDOW_TAB; + } + + error = browser_window_create(flags, e->url, NULL, clone, NULL); + if (error != NSERROR_OK) { + warn_user(messages_get_errorcode(error), 0); + } + } break; } return NSERROR_OK; |