Browse Source

UI: Set browser dock title in constructor

Works around a bug in Qt where setWindowTitle called on a native window
that hasn't been initialised yet causes the title data to be lost,
resulting in the window's title never being set.
Matt Gajownik 2 năm trước cách đây
mục cha
commit
7d9f8e7cac

+ 3 - 3
UI/auth-restream.cpp

@@ -150,7 +150,7 @@ void RestreamAuth::LoadUI()
 	QSize size = main->frameSize();
 	QPoint pos = main->pos();
 
-	BrowserDock *chat = new BrowserDock();
+	BrowserDock *chat = new BrowserDock(QTStr("Auth.Chat"));
 	chat->setObjectName(RESTREAM_CHAT_DOCK_NAME);
 	chat->resize(420, 600);
 	chat->setMinimumSize(200, 300);
@@ -166,7 +166,7 @@ void RestreamAuth::LoadUI()
 
 	url = "https://restream.io/titles/embed";
 
-	BrowserDock *info = new BrowserDock();
+	BrowserDock *info = new BrowserDock(QTStr("Auth.StreamInfo"));
 	info->setObjectName(RESTREAM_INFO_DOCK_NAME);
 	info->resize(410, 600);
 	info->setMinimumSize(200, 150);
@@ -182,7 +182,7 @@ void RestreamAuth::LoadUI()
 
 	url = "https://restream.io/channel/embed";
 
-	BrowserDock *channels = new BrowserDock();
+	BrowserDock *channels = new BrowserDock(QTStr("RestreamAuth.Channels"));
 	channels->setObjectName(RESTREAM_CHANNELS_DOCK_NAME);
 	channels->resize(410, 600);
 	channels->setMinimumSize(410, 300);

+ 4 - 4
UI/auth-twitch.cpp

@@ -251,7 +251,7 @@ void TwitchAuth::LoadUI()
 	QSize size = main->frameSize();
 	QPoint pos = main->pos();
 
-	BrowserDock *chat = new BrowserDock();
+	BrowserDock *chat = new BrowserDock(QTStr("Auth.Chat"));
 	chat->setObjectName(TWITCH_CHAT_DOCK_NAME);
 	chat->resize(300, 600);
 	chat->setMinimumSize(200, 300);
@@ -340,7 +340,7 @@ void TwitchAuth::LoadSecondaryUIPanes()
 	url += name;
 	url += "/stream-manager/edit-stream-info";
 
-	BrowserDock *info = new BrowserDock();
+	BrowserDock *info = new BrowserDock(QTStr("Auth.StreamInfo"));
 	info->setObjectName(TWITCH_INFO_DOCK_NAME);
 	info->resize(300, 650);
 	info->setMinimumSize(200, 300);
@@ -359,7 +359,7 @@ void TwitchAuth::LoadSecondaryUIPanes()
 	url += name;
 	url += "/dashboard/live/stats";
 
-	BrowserDock *stats = new BrowserDock();
+	BrowserDock *stats = new BrowserDock(QTStr("TwitchAuth.Stats"));
 	stats->setObjectName(TWITCH_STATS_DOCK_NAME);
 	stats->resize(200, 250);
 	stats->setMinimumSize(200, 150);
@@ -379,7 +379,7 @@ void TwitchAuth::LoadSecondaryUIPanes()
 	url += "/stream-manager/activity-feed";
 	url += "?uuid=" + uuid;
 
-	BrowserDock *feed = new BrowserDock();
+	BrowserDock *feed = new BrowserDock(QTStr("TwitchAuth.Feed"));
 	feed->setObjectName(TWITCH_FEED_DOCK_NAME);
 	feed->resize(300, 650);
 	feed->setMinimumSize(200, 300);

+ 1 - 2
UI/auth-youtube.cpp

@@ -155,11 +155,10 @@ void YoutubeAuth::LoadUI()
 	QSize size = main->frameSize();
 	QPoint pos = main->pos();
 
-	chat = new YoutubeChatDock();
+	chat = new YoutubeChatDock(QTStr("Auth.Chat"));
 	chat->setObjectName(YOUTUBE_CHAT_DOCK_NAME);
 	chat->resize(300, 600);
 	chat->setMinimumSize(200, 300);
-	chat->setWindowTitle(QTStr("Auth.Chat"));
 	chat->setAllowedAreas(Qt::AllDockWidgetAreas);
 
 	browser = cef->create_widget(chat, YOUTUBE_CHAT_PLACEHOLDER_URL,

+ 1 - 0
UI/auth-youtube.hpp

@@ -21,6 +21,7 @@ private:
 	QHBoxLayout *chatLayout;
 
 public:
+	inline YoutubeChatDock(const QString &title) : BrowserDock(title) {}
 	void SetWidget(QCefWidget *widget_);
 	void SetApiChatId(const std::string &id);
 

+ 2 - 2
UI/window-basic-main.cpp

@@ -2199,7 +2199,7 @@ void OBSBasic::OBSInit()
 #ifdef YOUTUBE_ENABLED
 	/* setup YouTube app dock */
 	if (YouTubeAppDock::IsYTServiceSelected())
-		youtubeAppDock = new YouTubeAppDock();
+		NewYouTubeAppDock();
 #endif
 
 	const char *dockStateStr = config_get_string(
@@ -8517,7 +8517,7 @@ void OBSBasic::NewYouTubeAppDock()
 	if (youtubeAppDock)
 		RemoveDockWidget(youtubeAppDock->objectName());
 
-	youtubeAppDock = new YouTubeAppDock();
+	youtubeAppDock = new YouTubeAppDock("YouTube Live Control Panel");
 }
 
 void OBSBasic::DeleteYouTubeAppDock()

+ 4 - 0
UI/window-dock-browser.hpp

@@ -10,6 +10,10 @@ extern QCefCookieManager *panel_cookies;
 class BrowserDock : public OBSDock {
 public:
 	inline BrowserDock() : OBSDock() { setAttribute(Qt::WA_NativeWindow); }
+	inline BrowserDock(const QString &title) : OBSDock(title)
+	{
+		setAttribute(Qt::WA_NativeWindow);
+	}
 
 	QScopedPointer<QCefWidget> cefWidget;
 

+ 5 - 6
UI/window-dock-youtube-app.cpp

@@ -31,13 +31,13 @@ static constexpr const char *BROADCAST_SELECTED = "BROADCAST_SELECTED";
 static constexpr const char *INGESTION_STARTED = "INGESTION_STARTED";
 static constexpr const char *INGESTION_STOPPED = "INGESTION_STOPPED";
 
-YouTubeAppDock::YouTubeAppDock()
-	: BrowserDock(),
+YouTubeAppDock::YouTubeAppDock(const QString &title)
+	: BrowserDock(title),
 	  dockBrowser(nullptr),
 	  cookieManager(nullptr)
 {
 	OBSBasic::InitBrowserPanelSafeBlock();
-	AddYouTubeAppDock("YouTube Live Control Panel");
+	AddYouTubeAppDock();
 }
 
 YouTubeAppDock::~YouTubeAppDock()
@@ -111,15 +111,14 @@ std::string YouTubeAppDock::InitYTUserUrl()
 	return user_url;
 }
 
-void YouTubeAppDock::AddYouTubeAppDock(const QString &title)
+void YouTubeAppDock::AddYouTubeAppDock()
 {
 	QString bId(QUuid::createUuid().toString());
 	bId.replace(QRegularExpression("[{}-]"), "");
 	this->setProperty("uuid", bId);
-	this->setObjectName(title + "Object");
+	this->setObjectName("youtubeLiveControlPanel");
 	this->resize(580, 500);
 	this->setMinimumSize(400, 300);
-	this->setWindowTitle(title);
 	this->setAllowedAreas(Qt::AllDockWidgetAreas);
 
 	OBSBasic::Get()->AddDockWidget(this, Qt::RightDockWidgetArea);

+ 2 - 2
UI/window-dock-youtube-app.hpp

@@ -10,7 +10,7 @@ class YouTubeAppDock : public BrowserDock {
 	Q_OBJECT
 
 public:
-	YouTubeAppDock();
+	YouTubeAppDock(const QString &title);
 	~YouTubeAppDock();
 
 	enum streaming_mode_t { YTSM_ACCOUNT, YTSM_STREAM_KEY };
@@ -36,7 +36,7 @@ protected:
 private:
 	std::string InitYTUserUrl();
 	void SetVisibleYTAppDockInMenu(bool visible);
-	void AddYouTubeAppDock(const QString &title);
+	void AddYouTubeAppDock();
 	void CreateBrowserWidget(const std::string &url);
 	virtual void showEvent(QShowEvent *event) override;
 	virtual void closeEvent(QCloseEvent *event) override;

+ 4 - 0
UI/window-dock.hpp

@@ -7,6 +7,10 @@ class OBSDock : public QDockWidget {
 
 public:
 	inline OBSDock(QWidget *parent = nullptr) : QDockWidget(parent) {}
+	inline OBSDock(const QString &title, QWidget *parent = nullptr)
+		: QDockWidget(title, parent)
+	{
+	}
 
 	virtual void closeEvent(QCloseEvent *event);
 };

+ 1 - 1
UI/window-extra-browsers.cpp

@@ -529,7 +529,7 @@ void OBSBasic::AddExtraBrowserDock(const QString &title, const QString &url,
 		panel_version = obs_browser_qcef_version();
 	}
 
-	BrowserDock *dock = new BrowserDock();
+	BrowserDock *dock = new BrowserDock(title);
 	QString bId(uuid.isEmpty() ? QUuid::createUuid().toString() : uuid);
 	bId.replace(QRegularExpression("[{}-]"), "");
 	dock->setProperty("uuid", bId);