Skip to content

Commit aa93aa6

Browse files
authored
Merge pull request mono#7052 from mono/release-7.8-fix-783919
[release-7.8] [Toolbox] Fixes toolboxService is allways in sync with toolbox selected item
2 parents 87b877c + d1dd251 commit aa93aa6

4 files changed

Lines changed: 17 additions & 20 deletions

File tree

main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/IToolboxWidget.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ interface IToolboxWidget
4040
IEnumerable<ToolboxWidgetCategory> Categories { get; }
4141
IEnumerable<ToolboxWidgetItem> AllItems { get; }
4242

43-
event EventHandler SelectedItemChanged;
4443
event EventHandler ActivateSelectedItem;
4544

4645
void AddCategory (ToolboxWidgetCategory category);

main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/MacToolbox.cs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ class MacToolbox : NSStackView, IPropertyPadProvider, IToolboxConfiguration
6161
public event EventHandler<Gtk.TargetEntry []> DragSourceSet;
6262
public event EventHandler ContentFocused;
6363

64-
public ItemToolboxNode selectedNode;
64+
public ItemToolboxNode SelectedNode => toolboxWidget.SelectedItem?.Node;
6565

6666
NativeViews.ToggleButton catToggleButton;
6767
NativeViews.ToggleButton compactModeToggleButton;
@@ -179,7 +179,6 @@ public MacToolbox (ToolboxService toolboxService, IPadWindow container)
179179

180180
filterEntry.Changed += FilterEntry_Changed;
181181

182-
toolboxWidget.SelectedItemChanged += ToolboxWidget_SelectedItemChanged;
183182
toolboxWidget.DragBegin += ToolboxWidget_DragBegin;
184183
toolboxWidget.MouseDownActivated += ToolboxWidget_MouseDownActivated;
185184
toolboxWidget.ActivateSelectedItem += ToolboxWidget_ActivateSelectedItem;
@@ -204,15 +203,13 @@ void ToolboxService_ToolboxContentsChanged (object sender, EventArgs e)
204203
Refresh ();
205204
}
206205

207-
void ToolboxWidget_SelectedItemChanged (object sender, EventArgs e)
208-
{
209-
selectedNode = this.toolboxWidget.SelectedItem != null ? this.toolboxWidget.SelectedItem.Tag as ItemToolboxNode : null;
210-
toolboxService.SelectItem (selectedNode);
211-
}
212-
213206
void ToolboxWidget_ActivateSelectedItem (object sender, EventArgs e)
214207
{
215-
toolboxService.UseSelectedItem ();
208+
var selectedNode = SelectedNode;
209+
if (selectedNode != null) {
210+
DesignerSupport.Service.ToolboxService.SelectItem (selectedNode);
211+
toolboxService.UseSelectedItem ();
212+
}
216213
}
217214

218215
void FilterEntry_Changed (object sender, EventArgs e)
@@ -437,13 +434,17 @@ void ToolboxWidget_MenuOpened (object sender, CGPoint e)
437434
[CommandHandler (MonoDevelop.Ide.Commands.EditCommands.Delete)]
438435
internal void OnDeleteItem ()
439436
{
440-
if (MessageService.Confirm (GettextCatalog.GetString ("Are you sure you want to remove the selected Item?"), AlertButton.Delete))
441-
toolboxService.RemoveUserItem (selectedNode);
437+
var selectedNode = SelectedNode;
438+
if (selectedNode != null) {
439+
if (MessageService.Confirm (GettextCatalog.GetString ("Are you sure you want to remove the selected Item?"), AlertButton.Delete))
440+
toolboxService.RemoveUserItem (selectedNode);
441+
}
442442
}
443443

444444
[CommandUpdateHandler (MonoDevelop.Ide.Commands.EditCommands.Delete)]
445445
internal void OnUpdateDeleteItem (CommandInfo info)
446446
{
447+
var selectedNode = SelectedNode;
447448
// Hack manually filter out gtk# widgets & container since they cannot be re added
448449
// because they're missing the toolbox attributes.
449450
info.Enabled = selectedNode != null
@@ -539,7 +540,6 @@ protected override void Dispose (bool disposing)
539540
toolboxAddButton.Activated -= ToolboxAddButton_Clicked;
540541
toolboxAddButton.Focused -= ToolboxAddButton_Focused;
541542

542-
toolboxWidget.SelectedItemChanged -= ToolboxWidget_SelectedItemChanged;
543543
toolboxWidget.ActivateSelectedItem -= ToolboxWidget_ActivateSelectedItem;
544544
toolboxWidget.MenuOpened -= ToolboxWidget_MenuOpened;
545545
toolboxWidget.MouseDownActivated -= ToolboxWidget_MouseDownActivated;
@@ -559,12 +559,12 @@ protected override void Dispose (bool disposing)
559559

560560
object IPropertyPadProvider.GetActiveComponent ()
561561
{
562-
return selectedNode;
562+
return SelectedNode;
563563
}
564564

565565
object IPropertyPadProvider.GetProvider ()
566566
{
567-
return selectedNode;
567+
return SelectedNode;
568568
}
569569

570570
void IPropertyPadProvider.OnEndEditing (object obj)

main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/MacToolboxWidget.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ class MacToolboxWidget : NSCollectionView, IToolboxWidget, INativeChildView
5656
public event EventHandler Focused;
5757
public event EventHandler DragBegin;
5858
public event EventHandler<CGPoint> MenuOpened;
59-
public event EventHandler SelectedItemChanged;
6059
public event EventHandler ActivateSelectedItem;
6160
public Action<NSEvent> MouseDownActivated { get; set; }
6261

@@ -74,8 +73,6 @@ public IEnumerable<ToolboxWidgetCategory> Categories {
7473
internal void PerformActivateSelectedItem () => OnActivateSelectedItem (EventArgs.Empty);
7574

7675
void OnActivateSelectedItem (EventArgs args) => ActivateSelectedItem?.Invoke (this, args);
77-
78-
void OnSelectedItemChanged (EventArgs args) => SelectedItemChanged?.Invoke (this, args);
7976

8077
NSIndexPath selectedIndexPath;
8178
public NSIndexPath SelectedIndexPath {
@@ -85,7 +82,6 @@ public NSIndexPath SelectedIndexPath {
8582
set {
8683
if (selectedIndexPath != value) {
8784
selectedIndexPath = value;
88-
OnSelectedItemChanged (EventArgs.Empty);
8985
}
9086
}
9187
}

main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport/ToolboxPad.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,9 @@ protected override void Initialize (IPadWindow container)
8282
targets.AddTable (e);
8383
};
8484
toolbox.DragBegin += (object sender, EventArgs e) => {
85-
if (!isDragging) {
85+
var selectedNode = toolbox.SelectedNode;
86+
if (!isDragging && selectedNode != null) {
87+
DesignerSupport.Service.ToolboxService.SelectItem (selectedNode);
8688

8789
Gtk.Drag.SourceUnset (widget);
8890

0 commit comments

Comments
 (0)