{"action":"created","comment":{"url":"https://api.github.com/repos/solvespace/solvespace/pulls/comments/94146423","pull_request_review_id":14677111,"id":94146423,"diff_hunk":"@@ -129,8 +129,14 @@ void GraphicsWindow::MouseMoved(double x, double y, bool leftDown,\n \n         if(!(shiftDown || ctrlDown)) {\n             double s = 0.3*(PI/180)*scale; // degrees per pixel\n-            projRight = orig.projRight.RotatedAbout(orig.projUp, -s*dx);\n-            projUp = orig.projUp.RotatedAbout(orig.projRight, s*dy);\n+            if(SS.checkTurntableNav) {\n+                projRight = orig.projRight.RotatedAbout(Vector::From(0, 1, 0), -s*dx);\n+                projUp = orig.projUp.RotatedAbout(Vector::From(orig.projRight.x, orig.projRight.y, 0), s*dy); // lock the Z to vertical\n+\t\t\t} else {","path":"src/mouse.cpp","position":9,"original_position":9,"commit_id":"f6fa1359b1a7ae492363bae6539b0b96cfd33dd6","original_commit_id":"f6fa1359b1a7ae492363bae6539b0b96cfd33dd6","user":{"login":"whitequark","id":54771,"avatar_url":"https://avatars.githubusercontent.com/u/54771?v=3","gravatar_id":"","url":"https://api.github.com/users/whitequark","html_url":"https://github.com/whitequark","followers_url":"https://api.github.com/users/whitequark/followers","following_url":"https://api.github.com/users/whitequark/following{/other_user}","gists_url":"https://api.github.com/users/whitequark/gists{/gist_id}","starred_url":"https://api.github.com/users/whitequark/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/whitequark/subscriptions","organizations_url":"https://api.github.com/users/whitequark/orgs","repos_url":"https://api.github.com/users/whitequark/repos","events_url":"https://api.github.com/users/whitequark/events{/privacy}","received_events_url":"https://api.github.com/users/whitequark/received_events","type":"User","site_admin":false},"body":"please use [our coding style](https://github.com/solvespace/solvespace/blob/master/CONTRIBUTING.md#coding-style)","created_at":"2016-12-29T15:21:34Z","updated_at":"2016-12-29T15:21:47Z","html_url":"https://github.com/solvespace/solvespace/pull/144#discussion_r94146423","pull_request_url":"https://api.github.com/repos/solvespace/solvespace/pulls/144","_links":{"self":{"href":"https://api.github.com/repos/solvespace/solvespace/pulls/comments/94146423"},"html":{"href":"https://github.com/solvespace/solvespace/pull/144#discussion_r94146423"},"pull_request":{"href":"https://api.github.com/repos/solvespace/solvespace/pulls/144"}}},"pull_request":{"url":"https://api.github.com/repos/solvespace/solvespace/pulls/144","id":99662370,"html_url":"https://github.com/solvespace/solvespace/pull/144","diff_url":"https://github.com/solvespace/solvespace/pull/144.diff","patch_url":"https://github.com/solvespace/solvespace/pull/144.patch","issue_url":"https://api.github.com/repos/solvespace/solvespace/issues/144","number":144,"state":"open","locked":false,"title":"Issue #123: implement turntable mouse navigation","user":{"login":"dynamodan","id":737226,"avatar_url":"https://avatars.githubusercontent.com/u/737226?v=3","gravatar_id":"","url":"https://api.github.com/users/dynamodan","html_url":"https://github.com/dynamodan","followers_url":"https://api.github.com/users/dynamodan/followers","following_url":"https://api.github.com/users/dynamodan/following{/other_user}","gists_url":"https://api.github.com/users/dynamodan/gists{/gist_id}","starred_url":"https://api.github.com/users/dynamodan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dynamodan/subscriptions","organizations_url":"https://api.github.com/users/dynamodan/orgs","repos_url":"https://api.github.com/users/dynamodan/repos","events_url":"https://api.github.com/users/dynamodan/events{/privacy}","received_events_url":"https://api.github.com/users/dynamodan/received_events","type":"User","site_admin":false},"body":"I took a little time to implement this.  It wasn't very difficult.  This comes with config checkbox (disabled by default).","created_at":"2016-12-29T14:37:53Z","updated_at":"2016-12-29T15:21:47Z","closed_at":null,"merged_at":null,"merge_commit_sha":"3da0e2a618cf8f23e4a276794fa81a09e68d34f9","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/solvespace/solvespace/pulls/144/commits","review_comments_url":"https://api.github.com/repos/solvespace/solvespace/pulls/144/comments","review_comment_url":"https://api.github.com/repos/solvespace/solvespace/pulls/comments{/number}","comments_url":"https://api.github.com/repos/solvespace/solvespace/issues/144/comments","statuses_url":"https://api.github.com/repos/solvespace/solvespace/statuses/f6fa1359b1a7ae492363bae6539b0b96cfd33dd6","head":{"label":"dynamodan:master","ref":"master","sha":"f6fa1359b1a7ae492363bae6539b0b96cfd33dd6","user":{"login":"dynamodan","id":737226,"avatar_url":"https://avatars.githubusercontent.com/u/737226?v=3","gravatar_id":"","url":"https://api.github.com/users/dynamodan","html_url":"https://github.com/dynamodan","followers_url":"https://api.github.com/users/dynamodan/followers","following_url":"https://api.github.com/users/dynamodan/following{/other_user}","gists_url":"https://api.github.com/users/dynamodan/gists{/gist_id}","starred_url":"https://api.github.com/users/dynamodan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dynamodan/subscriptions","organizations_url":"https://api.github.com/users/dynamodan/orgs","repos_url":"https://api.github.com/users/dynamodan/repos","events_url":"https://api.github.com/users/dynamodan/events{/privacy}","received_events_url":"https://api.github.com/users/dynamodan/received_events","type":"User","site_admin":false},"repo":{"id":77542231,"name":"solvespace","full_name":"dynamodan/solvespace","owner":{"login":"dynamodan","id":737226,"avatar_url":"https://avatars.githubusercontent.com/u/737226?v=3","gravatar_id":"","url":"https://api.github.com/users/dynamodan","html_url":"https://github.com/dynamodan","followers_url":"https://api.github.com/users/dynamodan/followers","following_url":"https://api.github.com/users/dynamodan/following{/other_user}","gists_url":"https://api.github.com/users/dynamodan/gists{/gist_id}","starred_url":"https://api.github.com/users/dynamodan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dynamodan/subscriptions","organizations_url":"https://api.github.com/users/dynamodan/orgs","repos_url":"https://api.github.com/users/dynamodan/repos","events_url":"https://api.github.com/users/dynamodan/events{/privacy}","received_events_url":"https://api.github.com/users/dynamodan/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/dynamodan/solvespace","description":"Parametric 2d/3d CAD","fork":true,"url":"https://api.github.com/repos/dynamodan/solvespace","forks_url":"https://api.github.com/repos/dynamodan/solvespace/forks","keys_url":"https://api.github.com/repos/dynamodan/solvespace/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dynamodan/solvespace/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dynamodan/solvespace/teams","hooks_url":"https://api.github.com/repos/dynamodan/solvespace/hooks","issue_events_url":"https://api.github.com/repos/dynamodan/solvespace/issues/events{/number}","events_url":"https://api.github.com/repos/dynamodan/solvespace/events","assignees_url":"https://api.github.com/repos/dynamodan/solvespace/assignees{/user}","branches_url":"https://api.github.com/repos/dynamodan/solvespace/branches{/branch}","tags_url":"https://api.github.com/repos/dynamodan/solvespace/tags","blobs_url":"https://api.github.com/repos/dynamodan/solvespace/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dynamodan/solvespace/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dynamodan/solvespace/git/refs{/sha}","trees_url":"https://api.github.com/repos/dynamodan/solvespace/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dynamodan/solvespace/statuses/{sha}","languages_url":"https://api.github.com/repos/dynamodan/solvespace/languages","stargazers_url":"https://api.github.com/repos/dynamodan/solvespace/stargazers","contributors_url":"https://api.github.com/repos/dynamodan/solvespace/contributors","subscribers_url":"https://api.github.com/repos/dynamodan/solvespace/subscribers","subscription_url":"https://api.github.com/repos/dynamodan/solvespace/subscription","commits_url":"https://api.github.com/repos/dynamodan/solvespace/commits{/sha}","git_commits_url":"https://api.github.com/repos/dynamodan/solvespace/git/commits{/sha}","comments_url":"https://api.github.com/repos/dynamodan/solvespace/comments{/number}","issue_comment_url":"https://api.github.com/repos/dynamodan/solvespace/issues/comments{/number}","contents_url":"https://api.github.com/repos/dynamodan/solvespace/contents/{+path}","compare_url":"https://api.github.com/repos/dynamodan/solvespace/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dynamodan/solvespace/merges","archive_url":"https://api.github.com/repos/dynamodan/solvespace/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dynamodan/solvespace/downloads","issues_url":"https://api.github.com/repos/dynamodan/solvespace/issues{/number}","pulls_url":"https://api.github.com/repos/dynamodan/solvespace/pulls{/number}","milestones_url":"https://api.github.com/repos/dynamodan/solvespace/milestones{/number}","notifications_url":"https://api.github.com/repos/dynamodan/solvespace/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dynamodan/solvespace/labels{/name}","releases_url":"https://api.github.com/repos/dynamodan/solvespace/releases{/id}","deployments_url":"https://api.github.com/repos/dynamodan/solvespace/deployments","created_at":"2016-12-28T15:24:43Z","updated_at":"2016-12-28T15:24:47Z","pushed_at":"2016-12-29T14:34:35Z","git_url":"git://github.com/dynamodan/solvespace.git","ssh_url":"git@github.com:dynamodan/solvespace.git","clone_url":"https://github.com/dynamodan/solvespace.git","svn_url":"https://github.com/dynamodan/solvespace","homepage":"http://solvespace.com/","size":17486,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"solvespace:master","ref":"master","sha":"d99a13398225e5bb25f92ac9ea84c960f17f0614","user":{"login":"solvespace","id":18541596,"avatar_url":"https://avatars.githubusercontent.com/u/18541596?v=3","gravatar_id":"","url":"https://api.github.com/users/solvespace","html_url":"https://github.com/solvespace","followers_url":"https://api.github.com/users/solvespace/followers","following_url":"https://api.github.com/users/solvespace/following{/other_user}","gists_url":"https://api.github.com/users/solvespace/gists{/gist_id}","starred_url":"https://api.github.com/users/solvespace/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/solvespace/subscriptions","organizations_url":"https://api.github.com/users/solvespace/orgs","repos_url":"https://api.github.com/users/solvespace/repos","events_url":"https://api.github.com/users/solvespace/events{/privacy}","received_events_url":"https://api.github.com/users/solvespace/received_events","type":"Organization","site_admin":false},"repo":{"id":32905910,"name":"solvespace","full_name":"solvespace/solvespace","owner":{"login":"solvespace","id":18541596,"avatar_url":"https://avatars.githubusercontent.com/u/18541596?v=3","gravatar_id":"","url":"https://api.github.com/users/solvespace","html_url":"https://github.com/solvespace","followers_url":"https://api.github.com/users/solvespace/followers","following_url":"https://api.github.com/users/solvespace/following{/other_user}","gists_url":"https://api.github.com/users/solvespace/gists{/gist_id}","starred_url":"https://api.github.com/users/solvespace/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/solvespace/subscriptions","organizations_url":"https://api.github.com/users/solvespace/orgs","repos_url":"https://api.github.com/users/solvespace/repos","events_url":"https://api.github.com/users/solvespace/events{/privacy}","received_events_url":"https://api.github.com/users/solvespace/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/solvespace/solvespace","description":"Parametric 2d/3d CAD","fork":false,"url":"https://api.github.com/repos/solvespace/solvespace","forks_url":"https://api.github.com/repos/solvespace/solvespace/forks","keys_url":"https://api.github.com/repos/solvespace/solvespace/keys{/key_id}","collaborators_url":"https://api.github.com/repos/solvespace/solvespace/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/solvespace/solvespace/teams","hooks_url":"https://api.github.com/repos/solvespace/solvespace/hooks","issue_events_url":"https://api.github.com/repos/solvespace/solvespace/issues/events{/number}","events_url":"https://api.github.com/repos/solvespace/solvespace/events","assignees_url":"https://api.github.com/repos/solvespace/solvespace/assignees{/user}","branches_url":"https://api.github.com/repos/solvespace/solvespace/branches{/branch}","tags_url":"https://api.github.com/repos/solvespace/solvespace/tags","blobs_url":"https://api.github.com/repos/solvespace/solvespace/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/solvespace/solvespace/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/solvespace/solvespace/git/refs{/sha}","trees_url":"https://api.github.com/repos/solvespace/solvespace/git/trees{/sha}","statuses_url":"https://api.github.com/repos/solvespace/solvespace/statuses/{sha}","languages_url":"https://api.github.com/repos/solvespace/solvespace/languages","stargazers_url":"https://api.github.com/repos/solvespace/solvespace/stargazers","contributors_url":"https://api.github.com/repos/solvespace/solvespace/contributors","subscribers_url":"https://api.github.com/repos/solvespace/solvespace/subscribers","subscription_url":"https://api.github.com/repos/solvespace/solvespace/subscription","commits_url":"https://api.github.com/repos/solvespace/solvespace/commits{/sha}","git_commits_url":"https://api.github.com/repos/solvespace/solvespace/git/commits{/sha}","comments_url":"https://api.github.com/repos/solvespace/solvespace/comments{/number}","issue_comment_url":"https://api.github.com/repos/solvespace/solvespace/issues/comments{/number}","contents_url":"https://api.github.com/repos/solvespace/solvespace/contents/{+path}","compare_url":"https://api.github.com/repos/solvespace/solvespace/compare/{base}...{head}","merges_url":"https://api.github.com/repos/solvespace/solvespace/merges","archive_url":"https://api.github.com/repos/solvespace/solvespace/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/solvespace/solvespace/downloads","issues_url":"https://api.github.com/repos/solvespace/solvespace/issues{/number}","pulls_url":"https://api.github.com/repos/solvespace/solvespace/pulls{/number}","milestones_url":"https://api.github.com/repos/solvespace/solvespace/milestones{/number}","notifications_url":"https://api.github.com/repos/solvespace/solvespace/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/solvespace/solvespace/labels{/name}","releases_url":"https://api.github.com/repos/solvespace/solvespace/releases{/id}","deployments_url":"https://api.github.com/repos/solvespace/solvespace/deployments","created_at":"2015-03-26T03:39:11Z","updated_at":"2016-12-23T02:30:44Z","pushed_at":"2016-12-29T14:37:54Z","git_url":"git://github.com/solvespace/solvespace.git","ssh_url":"git@github.com:solvespace/solvespace.git","clone_url":"https://github.com/solvespace/solvespace.git","svn_url":"https://github.com/solvespace/solvespace","homepage":"http://solvespace.com/","size":17486,"stargazers_count":414,"watchers_count":414,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":57,"mirror_url":null,"open_issues_count":50,"forks":57,"open_issues":50,"watchers":414,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/solvespace/solvespace/pulls/144"},"html":{"href":"https://github.com/solvespace/solvespace/pull/144"},"issue":{"href":"https://api.github.com/repos/solvespace/solvespace/issues/144"},"comments":{"href":"https://api.github.com/repos/solvespace/solvespace/issues/144/comments"},"review_comments":{"href":"https://api.github.com/repos/solvespace/solvespace/pulls/144/comments"},"review_comment":{"href":"https://api.github.com/repos/solvespace/solvespace/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/solvespace/solvespace/pulls/144/commits"},"statuses":{"href":"https://api.github.com/repos/solvespace/solvespace/statuses/f6fa1359b1a7ae492363bae6539b0b96cfd33dd6"}}}}
{"actor":{"display_login":"whitequark"}}