From 63603ff97c7b528d8e529867f67ccd65c963fff9 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 3 Apr 2018 14:21:15 +1200 Subject: [PATCH 1/8] Fix window height reported by Window.geometryChanged() signal --- interface/src/scripting/WindowScriptingInterface.cpp | 11 ++++++++++- interface/src/scripting/WindowScriptingInterface.h | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/interface/src/scripting/WindowScriptingInterface.cpp b/interface/src/scripting/WindowScriptingInterface.cpp index 58ec744f4e..7ca4e495b1 100644 --- a/interface/src/scripting/WindowScriptingInterface.cpp +++ b/interface/src/scripting/WindowScriptingInterface.cpp @@ -51,7 +51,7 @@ WindowScriptingInterface::WindowScriptingInterface() { } }); - connect(qApp->getWindow(), &MainWindow::windowGeometryChanged, this, &WindowScriptingInterface::geometryChanged); + connect(qApp->getWindow(), &MainWindow::windowGeometryChanged, this, &WindowScriptingInterface::onWindowGeometryChanged); } WindowScriptingInterface::~WindowScriptingInterface() { @@ -397,6 +397,15 @@ int WindowScriptingInterface::getY() { return qApp->getWindow()->y(); } +void WindowScriptingInterface::onWindowGeometryChanged(const QRect& windowGeometry) { + auto geometry = windowGeometry; + auto menu = qApp->getPrimaryMenu(); + if (menu) { + geometry.setHeight(geometry.height() - menu->geometry().height()); + } + emit geometryChanged(geometry); +} + void WindowScriptingInterface::copyToClipboard(const QString& text) { if (QThread::currentThread() != qApp->thread()) { QMetaObject::invokeMethod(this, "copyToClipboard", Q_ARG(QString, text)); diff --git a/interface/src/scripting/WindowScriptingInterface.h b/interface/src/scripting/WindowScriptingInterface.h index e3b092d011..b41051cc6b 100644 --- a/interface/src/scripting/WindowScriptingInterface.h +++ b/interface/src/scripting/WindowScriptingInterface.h @@ -522,6 +522,7 @@ public slots: void closeMessageBox(int id); private slots: + void onWindowGeometryChanged(const QRect& geometry); void onMessageBoxSelected(int button); void disconnectedFromDomain(); From ff88956d133f222ff6afe2cf76a701f202a6e514 Mon Sep 17 00:00:00 2001 From: howard-stearns Date: Tue, 3 Apr 2018 13:22:47 -0700 Subject: [PATCH 2/8] fix help.js noisy log reference to undefined string#startsWith --- scripts/system/help.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/help.js b/scripts/system/help.js index e29fc59e59..aaeb82721c 100644 --- a/scripts/system/help.js +++ b/scripts/system/help.js @@ -40,7 +40,7 @@ } function onScreenChanged(type, url) { - onHelpScreen = type === "Web" && url.startsWith(HELP_URL); + onHelpScreen = type === "Web" && (url.indexOf(HELP_URL) === 0); button.editProperties({ isActive: onHelpScreen }); } From 38f26a26476c9fe18ee735e9410df947926d5fbe Mon Sep 17 00:00:00 2001 From: howard-stearns Date: Tue, 3 Apr 2018 13:34:05 -0700 Subject: [PATCH 3/8] Introduce safeLoading. --- .../qml/controls/FlickableWebViewCore.qml | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/interface/resources/qml/controls/FlickableWebViewCore.qml b/interface/resources/qml/controls/FlickableWebViewCore.qml index efc8519c1e..8e7db44b7d 100644 --- a/interface/resources/qml/controls/FlickableWebViewCore.qml +++ b/interface/resources/qml/controls/FlickableWebViewCore.qml @@ -122,9 +122,21 @@ Item { newViewRequestedCallback(request) } + // Prior to 5.10, the WebEngineView loading property is true during initial page loading and then stays false + // as in-page javascript adds more html content. However, in 5.10 there is a bug such that adding html turns + // loading true, and never turns it false again. safeLoading provides a workaround, but it should be removed + // when QT fixes this. + property bool safeLoading: false + property bool loadingLatched: false + property var loadingRequest: null onLoadingChanged: { - flick.onLoadingChanged(loadRequest) - loadingChangedCallback(loadRequest) + webViewCore.loadingRequest = loadRequest; + webViewCore.safeLoading = webViewCore.loading && !loadingLatched; + webViewCore.loadingLatched |= webViewCore.loading; + } + onSafeLoadingChanged: { + flick.onLoadingChanged(webViewCore.loadingRequest) + loadingChangedCallback(webViewCore.loadingRequest) } } @@ -133,7 +145,7 @@ Item { x: flick.width/2 - width/2 y: flick.height/2 - height/2 source: "../../icons/loader-snake-64-w.gif" - visible: webViewCore.loading && /^(http.*|)$/i.test(webViewCore.url.toString()) + visible: webViewCore.safeLoading && /^(http.*|)$/i.test(webViewCore.url.toString()) playing: visible z: 10000 } From a3c8b2792d2df9faf23a87e17c5450f2c8f734e4 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 4 Apr 2018 09:42:05 +1200 Subject: [PATCH 4/8] Fix Window.geometryChanged() values for moving and resizing window --- interface/src/scripting/WindowScriptingInterface.cpp | 2 +- libraries/ui/src/MainWindow.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/src/scripting/WindowScriptingInterface.cpp b/interface/src/scripting/WindowScriptingInterface.cpp index 7ca4e495b1..f65142f875 100644 --- a/interface/src/scripting/WindowScriptingInterface.cpp +++ b/interface/src/scripting/WindowScriptingInterface.cpp @@ -401,7 +401,7 @@ void WindowScriptingInterface::onWindowGeometryChanged(const QRect& windowGeomet auto geometry = windowGeometry; auto menu = qApp->getPrimaryMenu(); if (menu) { - geometry.setHeight(geometry.height() - menu->geometry().height()); + geometry.setY(geometry.y() + menu->geometry().height()); } emit geometryChanged(geometry); } diff --git a/libraries/ui/src/MainWindow.cpp b/libraries/ui/src/MainWindow.cpp index 091fd850af..f9fc71e417 100644 --- a/libraries/ui/src/MainWindow.cpp +++ b/libraries/ui/src/MainWindow.cpp @@ -79,12 +79,12 @@ void MainWindow::closeEvent(QCloseEvent* event) { } void MainWindow::moveEvent(QMoveEvent* event) { - emit windowGeometryChanged(QRect(event->pos(), size())); + emit windowGeometryChanged(QRect(QPoint(geometry().x(), geometry().y()), size())); // Geometry excluding the window frame. QMainWindow::moveEvent(event); } void MainWindow::resizeEvent(QResizeEvent* event) { - emit windowGeometryChanged(QRect(QPoint(x(), y()), event->size())); + emit windowGeometryChanged(QRect(QPoint(geometry().x(), geometry().y()), size())); // Geometry excluding the window frame. QMainWindow::resizeEvent(event); } From 6868ca971f35ba18838369b9c4a6f4a21a821d46 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 4 Apr 2018 09:43:39 +1200 Subject: [PATCH 5/8] Make Window.x and Window.y report top left of drawable area of window --- interface/src/scripting/WindowScriptingInterface.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/interface/src/scripting/WindowScriptingInterface.cpp b/interface/src/scripting/WindowScriptingInterface.cpp index f65142f875..9c46f9e98a 100644 --- a/interface/src/scripting/WindowScriptingInterface.cpp +++ b/interface/src/scripting/WindowScriptingInterface.cpp @@ -390,11 +390,13 @@ glm::vec2 WindowScriptingInterface::getDeviceSize() const { } int WindowScriptingInterface::getX() { - return qApp->getWindow()->x(); + return qApp->getWindow()->geometry().x(); } int WindowScriptingInterface::getY() { - return qApp->getWindow()->y(); + auto menu = qApp->getPrimaryMenu(); + int menuHeight = menu ? menu->geometry().height() : 0; + return qApp->getWindow()->geometry().y() + menuHeight; } void WindowScriptingInterface::onWindowGeometryChanged(const QRect& windowGeometry) { From 095c1b837c43ba9bb387cff37b34d8fde8081f14 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 4 Apr 2018 09:48:33 +1200 Subject: [PATCH 6/8] Update JSDoc --- interface/src/scripting/WindowScriptingInterface.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/interface/src/scripting/WindowScriptingInterface.h b/interface/src/scripting/WindowScriptingInterface.h index b41051cc6b..dd74358064 100644 --- a/interface/src/scripting/WindowScriptingInterface.h +++ b/interface/src/scripting/WindowScriptingInterface.h @@ -33,8 +33,10 @@ * @property {number} innerHeight - The height of the drawable area of the Interface window (i.e., without borders or other * chrome), in pixels. Read-only. * @property {object} location - Provides facilities for working with your current metaverse location. See {@link location}. - * @property {number} x - The x coordinate of the top left corner of the Interface window on the display. Read-only. - * @property {number} y - The y coordinate of the top left corner of the Interface window on the display. Read-only. + * @property {number} x - The x display coordinate of the top left corner of the drawable area of the Interface window. + * Read-only. + * @property {number} y - The y display coordinate of the top left corner of the drawable area of the Interface window. + * Read-only. */ class WindowScriptingInterface : public QObject, public Dependency { From a7328f09347785d68914602e20a0d858053d7381 Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Thu, 12 Apr 2018 15:55:20 -0300 Subject: [PATCH 7/8] Fix View not attached to windown manager crash when starting the app in landscape mode on Pixel XL --- .../java/io/highfidelity/hifiinterface/GotoActivity.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/GotoActivity.java b/android/app/src/main/java/io/highfidelity/hifiinterface/GotoActivity.java index dc07c7b99a..4265201946 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/GotoActivity.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/GotoActivity.java @@ -174,4 +174,10 @@ public class GotoActivity extends AppCompatActivity { return super.onOptionsItemSelected(item); } + + @Override + protected void onDestroy() { + cancelActivityIndicator(); + super.onDestroy(); + } } From 0f39ab0bb92eadef009e2f293238ed25d4614590 Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Thu, 12 Apr 2018 17:47:58 -0300 Subject: [PATCH 8/8] Android GotoAcitivity is now HomeActivity (leaving the place for the upcoming 'Go To activity' itself --- android/app/src/main/AndroidManifest.xml | 2 +- .../{GotoActivity.java => HomeActivity.java} | 14 +++++++------- .../hifiinterface/InterfaceActivity.java | 4 ++-- .../hifiinterface/PermissionChecker.java | 4 ++-- .../{activity_goto.xml => activity_home.xml} | 4 ++-- .../layout/{content_goto.xml => content_home.xml} | 4 ++-- .../main/res/menu/{menu_goto.xml => menu_home.xml} | 7 ++++++- android/app/src/main/res/values/strings.xml | 1 + android/app/src/main/res/values/styles.xml | 2 +- 9 files changed, 24 insertions(+), 18 deletions(-) rename android/app/src/main/java/io/highfidelity/hifiinterface/{GotoActivity.java => HomeActivity.java} (94%) rename android/app/src/main/res/layout/{activity_goto.xml => activity_home.xml} (93%) rename android/app/src/main/res/layout/{content_goto.xml => content_home.xml} (96%) rename android/app/src/main/res/menu/{menu_goto.xml => menu_home.xml} (60%) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index caea9c2939..c77caa20fb 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -39,7 +39,7 @@ --> diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/GotoActivity.java b/android/app/src/main/java/io/highfidelity/hifiinterface/HomeActivity.java similarity index 94% rename from android/app/src/main/java/io/highfidelity/hifiinterface/GotoActivity.java rename to android/app/src/main/java/io/highfidelity/hifiinterface/HomeActivity.java index 4265201946..d69faec2e3 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/GotoActivity.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/HomeActivity.java @@ -23,7 +23,7 @@ import android.widget.TextView; import io.highfidelity.hifiinterface.QtPreloader.QtPreloader; import io.highfidelity.hifiinterface.view.DomainAdapter; -public class GotoActivity extends AppCompatActivity { +public class HomeActivity extends AppCompatActivity { /** * Set this intent extra param to NOT start a new InterfaceActivity after a domain is selected" @@ -36,9 +36,9 @@ public class GotoActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_goto); + setContentView(R.layout.activity_home); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - toolbar.setTitleTextAppearance(this, R.style.GotoActionBarTitleStyle); + toolbar.setTitleTextAppearance(this, R.style.HomeActionBarTitleStyle); setSupportActionBar(toolbar); ActionBar actionbar = getSupportActionBar(); @@ -83,9 +83,9 @@ public class GotoActivity extends AppCompatActivity { @Override public void onItemClick(View view, int position, DomainAdapter.Domain domain) { - Intent intent = new Intent(GotoActivity.this, InterfaceActivity.class); + Intent intent = new Intent(HomeActivity.this, InterfaceActivity.class); intent.putExtra(InterfaceActivity.DOMAIN_URL, domain.url); - GotoActivity.this.finish(); + HomeActivity.this.finish(); if (getIntent() != null && getIntent().hasExtra(PARAM_NOT_START_INTERFACE_ACTIVITY) && getIntent().getBooleanExtra(PARAM_NOT_START_INTERFACE_ACTIVITY, false)) { @@ -137,7 +137,7 @@ public class GotoActivity extends AppCompatActivity { preloadTask = new AsyncTask() { @Override protected Object doInBackground(Object[] objects) { - new QtPreloader(GotoActivity.this).initQt(); + new QtPreloader(HomeActivity.this).initQt(); runOnUiThread(new Runnable() { @Override public void run() { @@ -154,7 +154,7 @@ public class GotoActivity extends AppCompatActivity { @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. - //getMenuInflater().inflate(R.menu.menu_goto, menu); + //getMenuInflater().inflate(R.menu.menu_home, menu); return true; } diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/InterfaceActivity.java b/android/app/src/main/java/io/highfidelity/hifiinterface/InterfaceActivity.java index 812252663a..678f7e8aac 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/InterfaceActivity.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/InterfaceActivity.java @@ -200,8 +200,8 @@ public class InterfaceActivity extends QtActivity { public void openGotoActivity(String activityName) { switch (activityName) { case "Goto": { - Intent intent = new Intent(this, GotoActivity.class); - intent.putExtra(GotoActivity.PARAM_NOT_START_INTERFACE_ACTIVITY, true); + Intent intent = new Intent(this, HomeActivity.class); + intent.putExtra(HomeActivity.PARAM_NOT_START_INTERFACE_ACTIVITY, true); startActivity(intent); break; } diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/PermissionChecker.java b/android/app/src/main/java/io/highfidelity/hifiinterface/PermissionChecker.java index e52000f944..b1c5f570c8 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/PermissionChecker.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/PermissionChecker.java @@ -11,7 +11,7 @@ import android.app.AlertDialog; import org.json.JSONException; import org.json.JSONObject; -import android.util.Log; + import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; @@ -64,7 +64,7 @@ public class PermissionChecker extends Activity { private void launchActivityWithPermissions(){ finish(); - Intent i = new Intent(this, GotoActivity.class); + Intent i = new Intent(this, HomeActivity.class); startActivity(i); finish(); } diff --git a/android/app/src/main/res/layout/activity_goto.xml b/android/app/src/main/res/layout/activity_home.xml similarity index 93% rename from android/app/src/main/res/layout/activity_goto.xml rename to android/app/src/main/res/layout/activity_home.xml index ab0fd69a74..144ca84a0f 100644 --- a/android/app/src/main/res/layout/activity_goto.xml +++ b/android/app/src/main/res/layout/activity_home.xml @@ -21,7 +21,7 @@ android:background="?attr/colorPrimary" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" /> - + @@ -32,7 +32,7 @@ android:layout_height="match_parent" android:layout_gravity="start" android:fitsSystemWindows="true" - app:menu="@menu/menu_goto" + app:menu="@menu/menu_home" /> diff --git a/android/app/src/main/res/layout/content_goto.xml b/android/app/src/main/res/layout/content_home.xml similarity index 96% rename from android/app/src/main/res/layout/content_goto.xml rename to android/app/src/main/res/layout/content_home.xml index 1e17fff07c..f25d9d8f7b 100644 --- a/android/app/src/main/res/layout/content_goto.xml +++ b/android/app/src/main/res/layout/content_home.xml @@ -5,8 +5,8 @@ android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" - tools:context="io.highfidelity.hifiinterface.GotoActivity" - tools:showIn="@layout/activity_goto"> + tools:context="io.highfidelity.hifiinterface.HomeActivity" + tools:showIn="@layout/activity_home"> + tools:context="io.highfidelity.hifiinterface.HomeActivity"> + POPULAR BOOKMARKS Settings + Go to diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml index cfa040837d..2058212651 100644 --- a/android/app/src/main/res/values/styles.xml +++ b/android/app/src/main/res/values/styles.xml @@ -16,7 +16,7 @@