Dimitar Karamfilov
Team Member

FIX. RadListControl - the SelectedItemsChanged is fired twice when the same item is selected

To reproduce:
- Add some items.
- Select an item and then select it again
- The SelectedItemsChanged is fired 3 times and it should fire only when the item is selected for the first time.

Workaround:
Use SelectedIndexChanged instead.
Bug Report by Dimitar Karamfilov Status: New Comments: 0 Category: RadListControl Scheduled for: Not Scheduled Last update: 2018-12-07T15:05:14 by Dimitar Karamfilov
0
Hristo Merdjanov
Team Member

FIX. RadRichTextEditor - resizing a form which hosts RadRichTextBox containing table in Flow layout mode moves the table borders

Bug Report by Hristo Merdjanov Status: New Comments: 0 Category: RadRichTextEditor Scheduled for: Not Scheduled Last update: 2018-12-07T14:49:51 by Hristo Merdjanov
0
Desislava Yordanova
Team Member

ADD. RadPdfViewer - add a method for saving the document to a stream

Feature Request by Desislava Yordanova Status: Approved Comments: 0 Category: RadPdfViewer Scheduled for: Not Scheduled Last update: 2018-12-07T12:45:54 by Peter Petrov
0
Hristo Merdjanov
Team Member

FIX. RadListControl - exception while performing drag-and-drop with multiple items

How to reproduce: check the attached file

Workaround: create a custom drag-drop service
public class CustomListControlDragDropService : ListControlDragDropService
{
private RadListDataItem draggedItem;

public CustomListControlDragDropService(RadListElement owner)
: base(owner)
{
}

protected override void PerformStart()
{
base.PerformStart();

RadListVisualItem draggedVisualItem = this.Context as RadListVisualItem;
if (draggedVisualItem != null)
{
this.draggedItem = draggedVisualItem.Data;
}
}

protected override void PerformStop()
{
base.PerformStop();

this.DisposeHint();
this.draggedItem = null;
}

protected override void OnPreviewDragDropCore(RadListElement targetList, RadListVisualItem targetElement)
{
int index = targetList.Items.Count - 1;
if (targetElement != null)
{
index = targetList.Items.IndexOf(targetElement.Data);
}

if (this.draggedItem.Owner != targetList)
{
index++;
}
RadListElement dragedListView = this.draggedItem.Owner;

IList<RadListDataItem> itemsToMove = new List<RadListDataItem>(dragedListView.SelectedItems.Count);

foreach (RadListDataItem item in dragedListView.SelectedItems)
{
itemsToMove.Add(item);
}

dragedListView.BeginUpdate();
foreach (RadListDataItem item in itemsToMove)
{
item.Selected =
item.Active = false;
dragedListView.Items.Remove(item);
}

dragedListView.EndUpdate();
targetList.BeginUpdate();
foreach (RadListDataItem item in itemsToMove)
{
if (index > targetList.Items.Count)
{
targetList.Items.Add(item);
}
else
{
targetList.Items.Insert(index, item);
}

item.Selected = item.Active = true;

index++;
}

targetList.EndUpdate();
}
}
Bug Report by Hristo Merdjanov Status: New Comments: 0 Attachments: 1 Category: RadListControl Scheduled for: Not Scheduled Last update: 2018-12-07T12:21:35 by Hristo Merdjanov
0
Desislava Yordanova
Team Member

FIX. API documentation - incorrect links and very slow searching experience

After revamping the documentation for the Telerik UI for WinForms product, the following problems occurred:

1. Search for a specific class or method in the search box in the following site: https://docs.telerik.com/devtools/winforms/introduction. Select one of the results referring to the API documentation. As a result you will be navigated to the main page of the API reference instead of to the respective class or method. Refer to the Problem1.gif file. It seems that the search results from the API reference return old links for the previous API link pattern.

2. The search box in https://docs.telerik.com/devtools/winforms/api/ is significantly lagging while typing. We should consider performing the search operation after pressing Enter and not with each keystroke. Please refer to the Problem2.gif file.

3. When you scroll the navigation view on the left side to a certain position and select an article, the vertical scrollbar sometimes gets reset to the top position and you have to scroll back. (Note that this problem is not reproduced each time).
Bug Report by Desislava Yordanova Status: New Comments: 0 Attachments: 2 Category: Documentation Scheduled for: Not Scheduled Last update: 2018-12-07T11:15:21 by Desislava Yordanova
0
Dimitar Karamfilov
Team Member

ADD. RadGridView - add mode that supports checking the currently visible cells only with the header checkbox.

This was working this way in 2017 then we changer it so all rows are affected.

Bot modes should be supported.

Feature Request by Dimitar Karamfilov Status: New Comments: 0 Category: RadGridView Scheduled for: Not Scheduled Last update: 2018-12-07T10:56:13 by Dimitar Karamfilov
0
Desislava Yordanova
Team Member

FIX. RadGridView - incorrect scrollbar's range when adding a new record to the master level and at least one row is expanded

To reproduce: please run the attached sample project and follow the steps illustrated in the attached gif file:

Scrolling to a newly added row does not work when inner templates are visible.

Add data to the inner templates of several rows near the bottom using the button.
Expand these inner templates so they are all visible.
Scroll back up to the top.
Add a new item to the outer grid normally.
The table will jump to where it things the new item is but will fall short, instead scrolling to a location in one of the inner templates.
Workaround:

private void RadGridView1_UserAddedRow(object sender, GridViewRowEventArgs e)
{
foreach (GridViewRowInfo row in this.radGridView1.Rows)
{
if (row.IsExpanded)
{
row.IsExpanded = false;
row.IsExpanded = true;
}
}
}
Bug Report by Desislava Yordanova Status: New Comments: 0 Attachments: 2 Category: RadGridView Scheduled for: Not Scheduled Last update: 2018-12-07T09:32:24 by Desislava Yordanova
0
Desislava Yordanova
Team Member

FIX. RadMultiColumnCombobox - control is shrunk when the DropDownStyle is set to DropDownList and the text is empty

To reproduce: Add a RadMultiColumnCombobox to the form, set the DropDownStyle property to DropDownList and clear the text. You will notice that the height of the control is not bigger than 5 px.

Workaround: set MinimumSize

Me.RadMultiColumnComboBox1.MinimumSize = New Size(200, 23)

Bug Report by Desislava Yordanova Status: Under Review Comments: 1 Category: RadMultiColumnComboBox Scheduled for: R1 2019 Last update: 2018-12-06T13:55:03 by Desislava Yordanova
0
Dimitar Karamfilov
Team Member

FIX. RadForm - the StartPosition is not correct on HDPI displays

To reproduce:
- Set the StartPosition to CenterScreen
- Show the form on a HDPI monitor

Workaround:
var form = new RadForm();

float dpiX, dpiY;
Graphics graphics = this.CreateGraphics();
dpiX = graphics.DpiX /100;
dpiY = graphics.DpiY /100;

form.StartPosition = FormStartPosition.Manual;
var monSize = Screen.FromControl(this).Bounds;
var centerX = (monSize.Width / 2) - (form.DesktopBounds.Width * dpiX / 2);
var centerY = (monSize.Height / 2) - (form.DesktopBounds.Height * dpiY/ 2);
form.Location = new Point((int)centerX,(int) centerY);
form.Show();


Bug Report by Dimitar Karamfilov Status: Approved Comments: 2 Category: RadForm Scheduled for: Not Scheduled Last update: 2018-12-06T07:15:56 by Dimitar Karamfilov
0
Hristo Merdjanov
Team Member

ADD. RadLayoutControl - expose API specifying whether items can be hidden or not

Hide Item option in the context menu should not be present for those items. We should also consider a cancellable ItemHiding event. The custom control below handles this scenario:

public class CustomRadLayoutControl : RadLayoutControl
{
public override string ThemeClassName
{
get
{
return typeof(RadLayoutControl).FullName;
}
}

protected override void InitializeDropDownMenu()
{
FieldInfo hideMenuItemFi = typeof(RadLayoutControl).GetField("hideMenuItem", BindingFlags.Instance | BindingFlags.NonPublic);
RadMenuItem hideMenuItem = hideMenuItemFi.GetValue(this) as RadMenuItem;

if (hideMenuItem == null)
{
hideMenuItemFi.SetValue(this, new RadMenuItem(LayoutControlLocalizationProvider.CurrentProvider.GetLocalizedString(LayoutControlStringId.ContextMenuCustomize)));
hideMenuItem = hideMenuItemFi.GetValue(this) as RadMenuItem;
}

hideMenuItem.Click += customizeItem_Click;

RadDropDownMenu menu = typeof(RadLayoutControl).GetField("dropDownMenu", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(this) as RadDropDownMenu;
menu.Items.Add(hideMenuItem);
}

private void customizeItem_Click(object sender, EventArgs e)
{
if (this.AllowCustomize)
{
this.ShowCustomizeMenuDialog();
}
}

private void ShowCustomizeMenuDialog()
{
if (this.CustomizeDialog.Visible)
{
return;
}

this.ShowCustomDragOverlay();
this.CustomizeDialog.Owner = this.FindForm();
ThemeResolutionService.ApplyThemeToControlTree(this.CustomizeDialog, this.ThemeName);

if (this.CustomizeDialog.Location == Point.Empty)
{
this.CustomizeDialog.Location = GetInitialCustomizeDialogLocation();
}

this.CustomizeDialog.Show();
this.CustomizeDialog.RightToLeft = this.RightToLeft;
}

private void ShowCustomDragOverlay()
{
FieldInfo dragOverlayFi = typeof(RadLayoutControl).GetField("dragOverlay", BindingFlags.Instance | BindingFlags.NonPublic);
LayoutControlDraggableOverlay dragOverlay = dragOverlayFi.GetValue(this) as LayoutControlDraggableOverlay;

if (dragOverlay == null)
{
dragOverlayFi.SetValue(this, new CustomLayoutControlDraggableOverlay(this));
dragOverlay = dragOverlayFi.GetValue(this) as LayoutControlDraggableOverlay;
}

dragOverlay.ThemeName = this.ThemeName;
dragOverlay.UpdatePreview();

dragOverlay.Dock = DockStyle.Fill;
((RadLayoutControlControlCollection)this.Controls).AddInternal(dragOverlay);
dragOverlay.Visible = true;
dragOverlay.BringToFront();
this.PerformLayout();
this.Refresh();
}

}

public class CustomLayoutControlDraggableOverlay : LayoutControlDraggableOverlay
{
private RadMenuItem hideMenuItem;


public CustomLayoutControlDraggableOverlay(RadLayoutControl owner)
: base(owner)
{
RadDropDownMenu contextMenu = typeof(LayoutControlDraggableOverlay).GetField("contextMenu", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(this) as RadDropDownMenu;
contextMenu.Items.Clear();

this.hideMenuItem = new RadMenuItem(LayoutControlLocalizationProvider.CurrentProvider.GetLocalizedString(LayoutControlStringId.ContextMenuHideItem));
this.hideMenuItem.Text = LayoutControlLocalizationProvider.CurrentProvider.GetLocalizedString(LayoutControlStringId.ContextMenuHideItem);
this.hideMenuItem.Click += hideMenuItem_Click;
contextMenu.Items.Add(hideMenuItem);
contextMenu.DropDownOpening += ContextMenu_DropDownOpening;
}

private void ContextMenu_DropDownOpening(object sender, CancelEventArgs e)
{
if (this.SelectedItems.Count == 1 && this.SelectedItems[0].Name == "layoutControlItem4")
{
e.Cancel = true;
}
}

private void hideMenuItem_Click(object sender, EventArgs e)
{
foreach (DraggableLayoutControlItem item in this.SelectedItems)
{
if (item.Name == "layoutControlItem4")
{
continue;
}

((CustomRadLayoutControl)this.Owner).HideItem(item.AssociatedItem);
}

this.UpdatePreview();
}
}
Feature Request by Hristo Merdjanov Status: New Comments: 0 Category: RadLayoutControl Scheduled for: Not Scheduled Last update: 2018-12-05T07:31:28 by Hristo Merdjanov
0
Displaying items 11 - 20 of 1271