diff --git a/Configuration/UserConfig.cs b/Configuration/UserConfig.cs index cb5efebb..f96273ce 100644 --- a/Configuration/UserConfig.cs +++ b/Configuration/UserConfig.cs @@ -43,13 +43,14 @@ static UserConfig(){ public WindowState BrowserWindow { get; set; } = new WindowState(); public WindowState PluginsWindow { get; set; } = new WindowState(); - public bool ExpandLinksOnHover { get; set; } = true; - public bool SwitchAccountSelectors { get; set; } = true; - public bool OpenSearchInFirstColumn { get; set; } = true; - public bool BestImageQuality { get; set; } = true; - public bool EnableAnimatedImages { get; set; } = true; - public int VideoPlayerVolume { get; set; } = 50; - private int _zoomLevel = 100; + public bool ExpandLinksOnHover { get; set; } = true; + public bool SwitchAccountSelectors { get; set; } = true; + public bool OpenSearchInFirstColumn { get; set; } = true; + public bool KeepLikeFollowDialogsOpen { get; set; } = true; + public bool BestImageQuality { get; set; } = true; + public bool EnableAnimatedImages { get; set; } = true; + public int VideoPlayerVolume { get; set; } = 50; + private int _zoomLevel = 100; private bool _muteNotifications; public bool EnableSpellCheck { get; set; } = false; diff --git a/Core/Bridge/PropertyBridge.cs b/Core/Bridge/PropertyBridge.cs index 06604802..e43800c2 100644 --- a/Core/Bridge/PropertyBridge.cs +++ b/Core/Bridge/PropertyBridge.cs @@ -17,6 +17,7 @@ public static string GenerateScript(Environment environment){ if (environment == Environment.Browser){ build.Append("x.switchAccountSelectors=").Append(Bool(Program.UserConfig.SwitchAccountSelectors)); build.Append("x.openSearchInFirstColumn=").Append(Bool(Program.UserConfig.OpenSearchInFirstColumn)); + build.Append("x.keepLikeFollowDialogsOpen=").Append(Bool(Program.UserConfig.KeepLikeFollowDialogsOpen)); build.Append("x.muteNotifications=").Append(Bool(Program.UserConfig.MuteNotifications)); build.Append("x.hasCustomNotificationSound=").Append(Bool(Program.UserConfig.NotificationSoundPath.Length > 0)); build.Append("x.notificationMediaPreviews=").Append(Bool(Program.UserConfig.NotificationMediaPreviews)); diff --git a/Core/Other/Settings/TabSettingsGeneral.Designer.cs b/Core/Other/Settings/TabSettingsGeneral.Designer.cs index 03c4661b..e00dc1ef 100644 --- a/Core/Other/Settings/TabSettingsGeneral.Designer.cs +++ b/Core/Other/Settings/TabSettingsGeneral.Designer.cs @@ -40,6 +40,7 @@ private void InitializeComponent() { this.checkAnimatedAvatars = new System.Windows.Forms.CheckBox(); this.labelUpdates = new System.Windows.Forms.Label(); this.flowPanel = new System.Windows.Forms.FlowLayoutPanel(); + this.checkKeepLikeFollowDialogsOpen = new System.Windows.Forms.CheckBox(); ((System.ComponentModel.ISupportInitialize)(this.trackBarZoom)).BeginInit(); this.panelZoom.SuspendLayout(); this.flowPanel.SuspendLayout(); @@ -59,7 +60,7 @@ private void InitializeComponent() { // checkUpdateNotifications // this.checkUpdateNotifications.AutoSize = true; - this.checkUpdateNotifications.Location = new System.Drawing.Point(6, 245); + this.checkUpdateNotifications.Location = new System.Drawing.Point(6, 268); this.checkUpdateNotifications.Margin = new System.Windows.Forms.Padding(6, 6, 3, 3); this.checkUpdateNotifications.Name = "checkUpdateNotifications"; this.checkUpdateNotifications.Size = new System.Drawing.Size(165, 17); @@ -69,7 +70,7 @@ private void InitializeComponent() { // // btnCheckUpdates // - this.btnCheckUpdates.Location = new System.Drawing.Point(5, 268); + this.btnCheckUpdates.Location = new System.Drawing.Point(5, 291); this.btnCheckUpdates.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3); this.btnCheckUpdates.Name = "btnCheckUpdates"; this.btnCheckUpdates.Size = new System.Drawing.Size(144, 23); @@ -102,7 +103,7 @@ private void InitializeComponent() { // checkBestImageQuality // this.checkBestImageQuality.AutoSize = true; - this.checkBestImageQuality.Location = new System.Drawing.Point(6, 95); + this.checkBestImageQuality.Location = new System.Drawing.Point(6, 118); this.checkBestImageQuality.Margin = new System.Windows.Forms.Padding(6, 3, 3, 3); this.checkBestImageQuality.Name = "checkBestImageQuality"; this.checkBestImageQuality.Size = new System.Drawing.Size(114, 17); @@ -139,7 +140,7 @@ private void InitializeComponent() { // labelZoom // this.labelZoom.AutoSize = true; - this.labelZoom.Location = new System.Drawing.Point(3, 150); + this.labelZoom.Location = new System.Drawing.Point(3, 173); this.labelZoom.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0); this.labelZoom.Name = "labelZoom"; this.labelZoom.Size = new System.Drawing.Size(34, 13); @@ -167,7 +168,7 @@ private void InitializeComponent() { this.panelZoom.Anchor = System.Windows.Forms.AnchorStyles.Top; this.panelZoom.Controls.Add(this.trackBarZoom); this.panelZoom.Controls.Add(this.labelZoomValue); - this.panelZoom.Location = new System.Drawing.Point(0, 163); + this.panelZoom.Location = new System.Drawing.Point(0, 186); this.panelZoom.Margin = new System.Windows.Forms.Padding(0); this.panelZoom.Name = "panelZoom"; this.panelZoom.Size = new System.Drawing.Size(322, 36); @@ -176,7 +177,7 @@ private void InitializeComponent() { // checkAnimatedAvatars // this.checkAnimatedAvatars.AutoSize = true; - this.checkAnimatedAvatars.Location = new System.Drawing.Point(6, 118); + this.checkAnimatedAvatars.Location = new System.Drawing.Point(6, 141); this.checkAnimatedAvatars.Margin = new System.Windows.Forms.Padding(6, 3, 3, 3); this.checkAnimatedAvatars.Name = "checkAnimatedAvatars"; this.checkAnimatedAvatars.Size = new System.Drawing.Size(145, 17); @@ -188,7 +189,7 @@ private void InitializeComponent() { // this.labelUpdates.AutoSize = true; this.labelUpdates.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); - this.labelUpdates.Location = new System.Drawing.Point(0, 219); + this.labelUpdates.Location = new System.Drawing.Point(0, 242); this.labelUpdates.Margin = new System.Windows.Forms.Padding(0, 20, 0, 0); this.labelUpdates.Name = "labelUpdates"; this.labelUpdates.Size = new System.Drawing.Size(70, 20); @@ -204,6 +205,7 @@ private void InitializeComponent() { this.flowPanel.Controls.Add(this.checkExpandLinks); this.flowPanel.Controls.Add(this.checkSwitchAccountSelectors); this.flowPanel.Controls.Add(this.checkOpenSearchInFirstColumn); + this.flowPanel.Controls.Add(this.checkKeepLikeFollowDialogsOpen); this.flowPanel.Controls.Add(this.checkBestImageQuality); this.flowPanel.Controls.Add(this.checkAnimatedAvatars); this.flowPanel.Controls.Add(this.labelZoom); @@ -214,17 +216,28 @@ private void InitializeComponent() { this.flowPanel.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; this.flowPanel.Location = new System.Drawing.Point(9, 9); this.flowPanel.Name = "flowPanel"; - this.flowPanel.Size = new System.Drawing.Size(322, 296); + this.flowPanel.Size = new System.Drawing.Size(322, 319); this.flowPanel.TabIndex = 4; this.flowPanel.WrapContents = false; // + // checkKeepLikeFollowDialogsOpen + // + this.checkKeepLikeFollowDialogsOpen.AutoSize = true; + this.checkKeepLikeFollowDialogsOpen.Location = new System.Drawing.Point(6, 95); + this.checkKeepLikeFollowDialogsOpen.Margin = new System.Windows.Forms.Padding(6, 3, 3, 3); + this.checkKeepLikeFollowDialogsOpen.Name = "checkKeepLikeFollowDialogsOpen"; + this.checkKeepLikeFollowDialogsOpen.Size = new System.Drawing.Size(176, 17); + this.checkKeepLikeFollowDialogsOpen.TabIndex = 7; + this.checkKeepLikeFollowDialogsOpen.Text = "Keep Like/Follow Dialogs Open"; + this.checkKeepLikeFollowDialogsOpen.UseVisualStyleBackColor = true; + // // TabSettingsGeneral // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.Controls.Add(this.flowPanel); this.Name = "TabSettingsGeneral"; - this.Size = new System.Drawing.Size(340, 314); + this.Size = new System.Drawing.Size(340, 337); ((System.ComponentModel.ISupportInitialize)(this.trackBarZoom)).EndInit(); this.panelZoom.ResumeLayout(false); this.flowPanel.ResumeLayout(false); @@ -251,5 +264,6 @@ private void InitializeComponent() { private System.Windows.Forms.CheckBox checkOpenSearchInFirstColumn; private System.Windows.Forms.CheckBox checkAnimatedAvatars; private System.Windows.Forms.FlowLayoutPanel flowPanel; + private System.Windows.Forms.CheckBox checkKeepLikeFollowDialogsOpen; } } diff --git a/Core/Other/Settings/TabSettingsGeneral.cs b/Core/Other/Settings/TabSettingsGeneral.cs index c2d40b56..2945fcc4 100644 --- a/Core/Other/Settings/TabSettingsGeneral.cs +++ b/Core/Other/Settings/TabSettingsGeneral.cs @@ -21,6 +21,7 @@ public TabSettingsGeneral(FormBrowser browser, UpdateHandler updates){ toolTip.SetToolTip(checkExpandLinks, "Expands links inside the tweets. If disabled,\r\nthe full links show up in a tooltip instead."); toolTip.SetToolTip(checkSwitchAccountSelectors, "When (re)tweeting, click to select a single account or hold Shift to\r\nselect multiple accounts, instead of TweetDeck\'s default behavior."); toolTip.SetToolTip(checkOpenSearchInFirstColumn, "By default, TweetDeck adds Search columns at the end.\r\nThis option makes them appear before the first column instead."); + toolTip.SetToolTip(checkKeepLikeFollowDialogsOpen, "Allows liking and following from multiple accounts at once,\r\ninstead of automatically closing the dialog after taking an action."); toolTip.SetToolTip(checkBestImageQuality, "When right-clicking a tweet image, the context menu options\r\nwill use links to the original image size (:orig in the URL)."); toolTip.SetToolTip(checkAnimatedAvatars, "Some old Twitter avatars could be uploaded as animated GIFs."); @@ -36,6 +37,7 @@ public TabSettingsGeneral(FormBrowser browser, UpdateHandler updates){ checkExpandLinks.Checked = Config.ExpandLinksOnHover; checkSwitchAccountSelectors.Checked = Config.SwitchAccountSelectors; checkOpenSearchInFirstColumn.Checked = Config.OpenSearchInFirstColumn; + checkKeepLikeFollowDialogsOpen.Checked = Config.KeepLikeFollowDialogsOpen; checkBestImageQuality.Checked = Config.BestImageQuality; checkAnimatedAvatars.Checked = Config.EnableAnimatedImages; @@ -46,6 +48,7 @@ public override void OnReady(){ checkExpandLinks.CheckedChanged += checkExpandLinks_CheckedChanged; checkSwitchAccountSelectors.CheckedChanged += checkSwitchAccountSelectors_CheckedChanged; checkOpenSearchInFirstColumn.CheckedChanged += checkOpenSearchInFirstColumn_CheckedChanged; + checkKeepLikeFollowDialogsOpen.CheckedChanged += checkKeepLikeFollowDialogsOpen_CheckedChanged; checkBestImageQuality.CheckedChanged += checkBestImageQuality_CheckedChanged; checkAnimatedAvatars.CheckedChanged += checkAnimatedAvatars_CheckedChanged; trackBarZoom.ValueChanged += trackBarZoom_ValueChanged; @@ -70,6 +73,10 @@ private void checkOpenSearchInFirstColumn_CheckedChanged(object sender, EventArg Config.OpenSearchInFirstColumn = checkOpenSearchInFirstColumn.Checked; } + private void checkKeepLikeFollowDialogsOpen_CheckedChanged(object sender, EventArgs e){ + Config.KeepLikeFollowDialogsOpen = checkKeepLikeFollowDialogsOpen.Checked; + } + private void checkBestImageQuality_CheckedChanged(object sender, EventArgs e){ Config.BestImageQuality = checkBestImageQuality.Checked; } diff --git a/Resources/Scripts/code.js b/Resources/Scripts/code.js index 60544b64..3352a143 100644 --- a/Resources/Scripts/code.js +++ b/Resources/Scripts/code.js @@ -1164,6 +1164,17 @@ })); }; + // + // Block: Revert Like/Follow dialogs being closed after clicking an action. + // + if (ensurePropertyExists(TD, "decider", "get")){ + const prevFunc = TD.decider.get; + + TD.decider.get = function(key){ + return $TDX.keepLikeFollowDialogsOpen && key.startsWith("tweetdeck_subsequent_") ? false : prevFunc.apply(this, arguments); + }; + } + // // Block: Fix DM reply input box not getting focused after opening a conversation. //