public void SmartJump() { var activeForum = ApplicationManager.Forums.ActiveForum; // Если активного форума нет или просматриваемое сообщение // еще прокручивается, то ничего не делаем. if (activeForum == null || _msgViewer.PageDown()) { return; } // Поведение "Переход по пробелу". var behavior = Config.Instance.SmartJumpBehavior; // Если необходимо только перейти к следующему сообщению if (behavior == SmartJumpBehavior.NextAny) { SelectNodeByAttribute(StepDirection.Down, AttrType.Any, SearchMessageArea.CurrentForum); return; } // Ищем следующий по списку форум с непрочитанными сообщениями, // включая текущий. var unreadForum = behavior == SmartJumpBehavior.NextUnreadForum ? Navigator.FindNextUnreadForum() : activeForum; // Ищем сообщение... IMsg unreadMsg = null; if (unreadForum != null) { unreadMsg = unreadForum.FindNextUnreadMsg(activeForum == unreadForum); } // Если все сообщения в форумах прочитаны, то просто // переходим к следующему. if (unreadMsg != null) { if (Forums.Instance.ActiveForum != unreadForum) { Forums.Instance.ActiveForum = unreadForum; } _tgMsgs.ActiveNode = unreadMsg; } else { SelectNodeByAttribute(StepDirection.Down, AttrType.Any, SearchMessageArea.CurrentForum); } }