diff --git a/Configuration/UserConfig.cs b/Configuration/UserConfig.cs index ac38cc59..35195034 100644 --- a/Configuration/UserConfig.cs +++ b/Configuration/UserConfig.cs @@ -18,6 +18,7 @@ sealed class UserConfig : ConfigManager.BaseConfig{ public Size PluginsWindowSize { get; set; } = Size.Empty; public bool ExpandLinksOnHover { get; set; } = true; + public bool FocusDmInput { get; set; } = true; public bool OpenSearchInFirstColumn { get; set; } = true; public bool KeepLikeFollowDialogsOpen { get; set; } = true; public bool BestImageQuality { get; set; } = true; diff --git a/Core/Bridge/PropertyBridge.cs b/Core/Bridge/PropertyBridge.cs index 06daece2..0aa5e197 100644 --- a/Core/Bridge/PropertyBridge.cs +++ b/Core/Bridge/PropertyBridge.cs @@ -17,6 +17,7 @@ public static string GenerateScript(Environment environment){ build.Append("x.expandLinksOnHover=").Append(Bool(config.ExpandLinksOnHover)); if (environment == Environment.Browser){ + build.Append("x.focusDmInput=").Append(Bool(config.FocusDmInput)); build.Append("x.openSearchInFirstColumn=").Append(Bool(config.OpenSearchInFirstColumn)); build.Append("x.keepLikeFollowDialogsOpen=").Append(Bool(config.KeepLikeFollowDialogsOpen)); build.Append("x.muteNotifications=").Append(Bool(config.MuteNotifications)); diff --git a/Core/Other/Settings/TabSettingsGeneral.Designer.cs b/Core/Other/Settings/TabSettingsGeneral.Designer.cs index 6f54951d..49842a33 100644 --- a/Core/Other/Settings/TabSettingsGeneral.Designer.cs +++ b/Core/Other/Settings/TabSettingsGeneral.Designer.cs @@ -39,6 +39,7 @@ private void InitializeComponent() { this.checkAnimatedAvatars = new System.Windows.Forms.CheckBox(); this.labelUpdates = new System.Windows.Forms.Label(); this.flowPanelLeft = new System.Windows.Forms.FlowLayoutPanel(); + this.checkFocusDmInput = new System.Windows.Forms.CheckBox(); this.checkKeepLikeFollowDialogsOpen = new System.Windows.Forms.CheckBox(); this.labelTray = new System.Windows.Forms.Label(); this.comboBoxTrayType = new System.Windows.Forms.ComboBox(); @@ -82,11 +83,11 @@ private void InitializeComponent() { // this.checkUpdateNotifications.AutoSize = true; this.checkUpdateNotifications.Font = new System.Drawing.Font("Segoe UI", 9F); - this.checkUpdateNotifications.Location = new System.Drawing.Point(6, 393); + this.checkUpdateNotifications.Location = new System.Drawing.Point(6, 409); this.checkUpdateNotifications.Margin = new System.Windows.Forms.Padding(6, 6, 3, 2); this.checkUpdateNotifications.Name = "checkUpdateNotifications"; this.checkUpdateNotifications.Size = new System.Drawing.Size(182, 19); - this.checkUpdateNotifications.TabIndex = 13; + this.checkUpdateNotifications.TabIndex = 14; this.checkUpdateNotifications.Text = "Check Updates Automatically"; this.checkUpdateNotifications.UseVisualStyleBackColor = true; // @@ -94,12 +95,12 @@ private void InitializeComponent() { // this.btnCheckUpdates.AutoSize = true; this.btnCheckUpdates.Font = new System.Drawing.Font("Segoe UI", 9F); - this.btnCheckUpdates.Location = new System.Drawing.Point(5, 417); + this.btnCheckUpdates.Location = new System.Drawing.Point(5, 433); this.btnCheckUpdates.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3); this.btnCheckUpdates.Name = "btnCheckUpdates"; this.btnCheckUpdates.Padding = new System.Windows.Forms.Padding(2, 0, 2, 0); this.btnCheckUpdates.Size = new System.Drawing.Size(128, 25); - this.btnCheckUpdates.TabIndex = 14; + this.btnCheckUpdates.TabIndex = 15; this.btnCheckUpdates.Text = "Check Updates Now"; this.btnCheckUpdates.UseVisualStyleBackColor = true; // @@ -119,11 +120,11 @@ private void InitializeComponent() { // this.checkBestImageQuality.AutoSize = true; this.checkBestImageQuality.Font = new System.Drawing.Font("Segoe UI", 9F); - this.checkBestImageQuality.Location = new System.Drawing.Point(6, 98); + this.checkBestImageQuality.Location = new System.Drawing.Point(6, 122); this.checkBestImageQuality.Margin = new System.Windows.Forms.Padding(6, 3, 3, 2); this.checkBestImageQuality.Name = "checkBestImageQuality"; this.checkBestImageQuality.Size = new System.Drawing.Size(125, 19); - this.checkBestImageQuality.TabIndex = 4; + this.checkBestImageQuality.TabIndex = 5; this.checkBestImageQuality.Text = "Best Image Quality"; this.checkBestImageQuality.UseVisualStyleBackColor = true; // @@ -131,11 +132,11 @@ private void InitializeComponent() { // this.checkOpenSearchInFirstColumn.AutoSize = true; this.checkOpenSearchInFirstColumn.Font = new System.Drawing.Font("Segoe UI", 9F); - this.checkOpenSearchInFirstColumn.Location = new System.Drawing.Point(6, 50); + this.checkOpenSearchInFirstColumn.Location = new System.Drawing.Point(6, 74); this.checkOpenSearchInFirstColumn.Margin = new System.Windows.Forms.Padding(6, 3, 3, 2); this.checkOpenSearchInFirstColumn.Name = "checkOpenSearchInFirstColumn"; this.checkOpenSearchInFirstColumn.Size = new System.Drawing.Size(245, 19); - this.checkOpenSearchInFirstColumn.TabIndex = 2; + this.checkOpenSearchInFirstColumn.TabIndex = 3; this.checkOpenSearchInFirstColumn.Text = "Add Search Columns Before First Column"; this.checkOpenSearchInFirstColumn.UseVisualStyleBackColor = true; // @@ -158,11 +159,11 @@ private void InitializeComponent() { // this.labelZoom.AutoSize = true; this.labelZoom.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold); - this.labelZoom.Location = new System.Drawing.Point(3, 155); + this.labelZoom.Location = new System.Drawing.Point(3, 179); this.labelZoom.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0); this.labelZoom.Name = "labelZoom"; this.labelZoom.Size = new System.Drawing.Size(39, 15); - this.labelZoom.TabIndex = 6; + this.labelZoom.TabIndex = 7; this.labelZoom.Text = "Zoom"; // // zoomUpdateTimer @@ -185,21 +186,21 @@ private void InitializeComponent() { // this.panelZoom.Controls.Add(this.trackBarZoom); this.panelZoom.Controls.Add(this.labelZoomValue); - this.panelZoom.Location = new System.Drawing.Point(0, 171); + this.panelZoom.Location = new System.Drawing.Point(0, 195); this.panelZoom.Margin = new System.Windows.Forms.Padding(0, 1, 0, 0); this.panelZoom.Name = "panelZoom"; this.panelZoom.Size = new System.Drawing.Size(300, 35); - this.panelZoom.TabIndex = 7; + this.panelZoom.TabIndex = 8; // // checkAnimatedAvatars // this.checkAnimatedAvatars.AutoSize = true; this.checkAnimatedAvatars.Font = new System.Drawing.Font("Segoe UI", 9F); - this.checkAnimatedAvatars.Location = new System.Drawing.Point(6, 122); + this.checkAnimatedAvatars.Location = new System.Drawing.Point(6, 146); this.checkAnimatedAvatars.Margin = new System.Windows.Forms.Padding(6, 3, 3, 2); this.checkAnimatedAvatars.Name = "checkAnimatedAvatars"; this.checkAnimatedAvatars.Size = new System.Drawing.Size(158, 19); - this.checkAnimatedAvatars.TabIndex = 5; + this.checkAnimatedAvatars.TabIndex = 6; this.checkAnimatedAvatars.Text = "Enable Animated Avatars"; this.checkAnimatedAvatars.UseVisualStyleBackColor = true; // @@ -207,11 +208,11 @@ private void InitializeComponent() { // this.labelUpdates.AutoSize = true; this.labelUpdates.Font = new System.Drawing.Font("Segoe UI Semibold", 10.5F, System.Drawing.FontStyle.Bold); - this.labelUpdates.Location = new System.Drawing.Point(0, 367); - this.labelUpdates.Margin = new System.Windows.Forms.Padding(0, 30, 0, 1); + this.labelUpdates.Location = new System.Drawing.Point(0, 383); + this.labelUpdates.Margin = new System.Windows.Forms.Padding(0, 27, 0, 1); this.labelUpdates.Name = "labelUpdates"; this.labelUpdates.Size = new System.Drawing.Size(69, 19); - this.labelUpdates.TabIndex = 12; + this.labelUpdates.TabIndex = 13; this.labelUpdates.Text = "UPDATES"; // // flowPanelLeft @@ -220,6 +221,7 @@ private void InitializeComponent() { | System.Windows.Forms.AnchorStyles.Left))); this.flowPanelLeft.Controls.Add(this.labelUI); this.flowPanelLeft.Controls.Add(this.checkExpandLinks); + this.flowPanelLeft.Controls.Add(this.checkFocusDmInput); this.flowPanelLeft.Controls.Add(this.checkOpenSearchInFirstColumn); this.flowPanelLeft.Controls.Add(this.checkKeepLikeFollowDialogsOpen); this.flowPanelLeft.Controls.Add(this.checkBestImageQuality); @@ -240,15 +242,27 @@ private void InitializeComponent() { this.flowPanelLeft.TabIndex = 0; this.flowPanelLeft.WrapContents = false; // + // checkFocusDmInput + // + this.checkFocusDmInput.AutoSize = true; + this.checkFocusDmInput.Font = new System.Drawing.Font("Segoe UI", 9F); + this.checkFocusDmInput.Location = new System.Drawing.Point(6, 50); + this.checkFocusDmInput.Margin = new System.Windows.Forms.Padding(6, 3, 3, 2); + this.checkFocusDmInput.Name = "checkFocusDmInput"; + this.checkFocusDmInput.Size = new System.Drawing.Size(282, 19); + this.checkFocusDmInput.TabIndex = 2; + this.checkFocusDmInput.Text = "Focus Input Field When Opening Direct Message"; + this.checkFocusDmInput.UseVisualStyleBackColor = true; + // // checkKeepLikeFollowDialogsOpen // this.checkKeepLikeFollowDialogsOpen.AutoSize = true; this.checkKeepLikeFollowDialogsOpen.Font = new System.Drawing.Font("Segoe UI", 9F); - this.checkKeepLikeFollowDialogsOpen.Location = new System.Drawing.Point(6, 74); + this.checkKeepLikeFollowDialogsOpen.Location = new System.Drawing.Point(6, 98); this.checkKeepLikeFollowDialogsOpen.Margin = new System.Windows.Forms.Padding(6, 3, 3, 2); this.checkKeepLikeFollowDialogsOpen.Name = "checkKeepLikeFollowDialogsOpen"; this.checkKeepLikeFollowDialogsOpen.Size = new System.Drawing.Size(190, 19); - this.checkKeepLikeFollowDialogsOpen.TabIndex = 3; + this.checkKeepLikeFollowDialogsOpen.TabIndex = 4; this.checkKeepLikeFollowDialogsOpen.Text = "Keep Like/Follow Dialogs Open"; this.checkKeepLikeFollowDialogsOpen.UseVisualStyleBackColor = true; // @@ -256,11 +270,11 @@ private void InitializeComponent() { // this.labelTray.AutoSize = true; this.labelTray.Font = new System.Drawing.Font("Segoe UI Semibold", 10.5F, System.Drawing.FontStyle.Bold); - this.labelTray.Location = new System.Drawing.Point(0, 236); - this.labelTray.Margin = new System.Windows.Forms.Padding(0, 30, 0, 1); + this.labelTray.Location = new System.Drawing.Point(0, 255); + this.labelTray.Margin = new System.Windows.Forms.Padding(0, 25, 0, 1); this.labelTray.Name = "labelTray"; this.labelTray.Size = new System.Drawing.Size(99, 19); - this.labelTray.TabIndex = 8; + this.labelTray.TabIndex = 9; this.labelTray.Text = "SYSTEM TRAY"; // // comboBoxTrayType @@ -268,32 +282,32 @@ private void InitializeComponent() { this.comboBoxTrayType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.comboBoxTrayType.Font = new System.Drawing.Font("Segoe UI", 9F); this.comboBoxTrayType.FormattingEnabled = true; - this.comboBoxTrayType.Location = new System.Drawing.Point(5, 260); + this.comboBoxTrayType.Location = new System.Drawing.Point(5, 279); this.comboBoxTrayType.Margin = new System.Windows.Forms.Padding(5, 4, 3, 3); this.comboBoxTrayType.Name = "comboBoxTrayType"; this.comboBoxTrayType.Size = new System.Drawing.Size(144, 23); - this.comboBoxTrayType.TabIndex = 9; + this.comboBoxTrayType.TabIndex = 10; // // labelTrayIcon // this.labelTrayIcon.AutoSize = true; this.labelTrayIcon.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold); - this.labelTrayIcon.Location = new System.Drawing.Point(3, 295); + this.labelTrayIcon.Location = new System.Drawing.Point(3, 314); this.labelTrayIcon.Margin = new System.Windows.Forms.Padding(3, 9, 3, 0); this.labelTrayIcon.Name = "labelTrayIcon"; this.labelTrayIcon.Size = new System.Drawing.Size(56, 15); - this.labelTrayIcon.TabIndex = 10; + this.labelTrayIcon.TabIndex = 11; this.labelTrayIcon.Text = "Tray Icon"; // // checkTrayHighlight // this.checkTrayHighlight.AutoSize = true; this.checkTrayHighlight.Font = new System.Drawing.Font("Segoe UI", 9F); - this.checkTrayHighlight.Location = new System.Drawing.Point(6, 316); + this.checkTrayHighlight.Location = new System.Drawing.Point(6, 335); this.checkTrayHighlight.Margin = new System.Windows.Forms.Padding(6, 6, 3, 2); this.checkTrayHighlight.Name = "checkTrayHighlight"; this.checkTrayHighlight.Size = new System.Drawing.Size(114, 19); - this.checkTrayHighlight.TabIndex = 11; + this.checkTrayHighlight.TabIndex = 12; this.checkTrayHighlight.Text = "Enable Highlight"; this.checkTrayHighlight.UseVisualStyleBackColor = true; // @@ -548,5 +562,6 @@ private void InitializeComponent() { private System.Windows.Forms.Label labelTranslationTarget; private System.Windows.Forms.ComboBox comboBoxTranslationTarget; private System.Windows.Forms.CheckBox checkHardwareAcceleration; + private System.Windows.Forms.CheckBox checkFocusDmInput; } } diff --git a/Core/Other/Settings/TabSettingsGeneral.cs b/Core/Other/Settings/TabSettingsGeneral.cs index 8a047463..ffc96589 100644 --- a/Core/Other/Settings/TabSettingsGeneral.cs +++ b/Core/Other/Settings/TabSettingsGeneral.cs @@ -34,6 +34,7 @@ public TabSettingsGeneral(Action reloadColumns, UpdateHandler updates){ // user interface toolTip.SetToolTip(checkExpandLinks, "Expands links inside the tweets. If disabled,\r\nthe full links show up in a tooltip instead."); + toolTip.SetToolTip(checkFocusDmInput, "Places cursor into Direct Message input\r\nfield when opening a conversation."); 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)."); @@ -42,6 +43,7 @@ public TabSettingsGeneral(Action reloadColumns, UpdateHandler updates){ toolTip.SetToolTip(trackBarZoom, toolTip.GetToolTip(labelZoomValue)); checkExpandLinks.Checked = Config.ExpandLinksOnHover; + checkFocusDmInput.Checked = Config.FocusDmInput; checkOpenSearchInFirstColumn.Checked = Config.OpenSearchInFirstColumn; checkKeepLikeFollowDialogsOpen.Checked = Config.KeepLikeFollowDialogsOpen; checkBestImageQuality.Checked = Config.BestImageQuality; @@ -127,6 +129,7 @@ public TabSettingsGeneral(Action reloadColumns, UpdateHandler updates){ public override void OnReady(){ checkExpandLinks.CheckedChanged += checkExpandLinks_CheckedChanged; + checkFocusDmInput.CheckedChanged += checkFocusDmInput_CheckedChanged; checkOpenSearchInFirstColumn.CheckedChanged += checkOpenSearchInFirstColumn_CheckedChanged; checkKeepLikeFollowDialogsOpen.CheckedChanged += checkKeepLikeFollowDialogsOpen_CheckedChanged; checkBestImageQuality.CheckedChanged += checkBestImageQuality_CheckedChanged; @@ -160,6 +163,10 @@ private void checkExpandLinks_CheckedChanged(object sender, EventArgs e){ Config.ExpandLinksOnHover = checkExpandLinks.Checked; } + private void checkFocusDmInput_CheckedChanged(object sender, EventArgs e){ + Config.FocusDmInput = checkFocusDmInput.Checked; + } + private void checkOpenSearchInFirstColumn_CheckedChanged(object sender, EventArgs e){ Config.OpenSearchInFirstColumn = checkOpenSearchInFirstColumn.Checked; } diff --git a/Resources/Scripts/code.js b/Resources/Scripts/code.js index 60fdfc3a..7e161c03 100644 --- a/Resources/Scripts/code.js +++ b/Resources/Scripts/code.js @@ -1511,6 +1511,8 @@ // if (ensurePropertyExists(TD, "components", "ConversationDetailView", "prototype", "showChirp")){ TD.components.ConversationDetailView.prototype.showChirp = appendToFunction(TD.components.ConversationDetailView.prototype.showChirp, function(){ + return if !$TDX.focusDmInput; + setTimeout(function(){ $(".js-reply-tweetbox").first().focus(); }, 100);