Index: _source/plugins/liststyle/dialogs/liststyle.js
===================================================================
--- _source/plugins/liststyle/dialogs/liststyle.js	(revision 6348)
+++ _source/plugins/liststyle/dialogs/liststyle.js	(revision )
@@ -5,16 +5,7 @@
 
 (function()
 {
-	function getListElement( editor, listTag )
-	{
-		var range;
-		try { range  = editor.getSelection().getRanges()[ 0 ]; }
-		catch( e ) { return null; }
 
-		range.shrink( CKEDITOR.SHRINK_TEXT );
-		return range.getCommonAncestor().getAscendant( listTag, 1 );
-	}
-
 	var mapListStyle = {
 		'a' : 'lower-alpha',
 		'A' : 'upper-alpha',
@@ -28,6 +19,29 @@
 
 	function listStyle( editor, startupPage )
 	{
+		function targetElement()
+		{
+			var range  = editor.getSelection().getRanges()[ 0 ];
+			range.shrink( CKEDITOR.SHRINK_TEXT );
+			var root = range.getCommonAncestor().getAscendant( startupPage == 'bulletedListStyle' ? 'ul' : 'ol', 1 );
+
+			// Is list fully selected? Then list root mode.
+			if ( range.checkBoundaryOfElement( root, CKEDITOR.START ) && range.checkBoundaryOfElement( root, CKEDITOR.END ) )
+				return root;
+			// Otherwise it's in list item mode.
+			else
+			{
+				var path = new CKEDITOR.dom.elementPath( range.startContainer );
+				var elements = path.elements, element;
+				for ( var i = 0; i < elements.length; i++ )
+				{
+					element = elements[ i ];
+					if ( element.is( 'li' ) && element.getParent().equals( root ) )
+						return element;
+				}
+			}
+		}
+
 		var lang = editor.lang.list;
 		if ( startupPage == 'bulletedListStyle' )
 		{
@@ -77,17 +91,16 @@
 				],
 				onShow: function()
 				{
-					var editor = this.getParentEditor(),
-						element = getListElement( editor, 'ul' );
-
-					element && this.setupContent( element );
+					this.element = targetElement();
+					this.setupContent( this.element );
 				},
 				onOk: function()
 				{
-					var editor = this.getParentEditor(),
-						element = getListElement( editor, 'ul' );
-
-					element && this.commitContent( element );
+					this.commitContent( this.element );
+				},
+				onHide : function()
+				{
+					delete this.element;
 				}
 			};
 		}
@@ -137,12 +150,12 @@
 										validate : CKEDITOR.dialog.validate.integer( lang.validateStartNumber ),
 										setup : function( element )
 										{
-											var value = element.getAttribute( 'start' ) || 1;
+											var value = element.getAttribute( element.is( 'li' ) ? 'value' : 'start' ) || 1;
 											value && this.setValue( value );
 										},
 										commit : function( element )
 										{
-											element.setAttribute( 'start', this.getValue() );
+											element.setAttribute( element.is( 'li' ) ? 'value' : 'start', this.getValue() );
 										}
 									},
 									{
@@ -176,17 +189,16 @@
 				],
 				onShow: function()
 				{
-					var editor = this.getParentEditor(),
-						element = getListElement( editor, 'ol' );
-
-					element && this.setupContent( element );
+					this.element = targetElement();
+					this.setupContent( this.element );
 				},
 				onOk: function()
 				{
-					var editor = this.getParentEditor(),
-						element = getListElement( editor, 'ol' );
-
-					element && this.commitContent( element );
+					this.commitContent( this.element );
+				},
+				onHide : function()
+				{
+					delete this.element;
 				}
 			};
 		}
Index: _source/plugins/menu/plugin.js
===================================================================
--- _source/plugins/menu/plugin.js	(revision 6348)
+++ _source/plugins/menu/plugin.js	(revision )
@@ -114,7 +114,7 @@
 				if ( item.onClick )
 					item.onClick();
 				else if ( item.command )
-					this.editor.execCommand( item.command );
+					this.editor.execCommand( item.command, { fromMenu : item.name } );
 			},
 
 			onEscape : function( keystroke )
Index: _source/lang/en.js
===================================================================
--- _source/lang/en.js	(revision 6427)
+++ _source/lang/en.js	(revision )
@@ -207,8 +207,10 @@
 	// List style dialog
 	list:
 	{
-		numberedTitle		: 'Numbered List Properties',
-		bulletedTitle		: 'Bulleted List Properties',
+		numberedTitle		: 'Numbered List',
+		bulletedTitle		: 'Bulleted List',
+		listRoot		: 'List Properties',
+		listItem		: 'List Item Properties',
 		type				: 'Type',
 		start				: 'Start',
 		validateStartNumber				:'List start number must be a whole number.',
Index: _source/plugins/liststyle/plugin.js
===================================================================
--- _source/plugins/liststyle/plugin.js	(revision 6348)
+++ _source/plugins/liststyle/plugin.js	(revision )
@@ -10,11 +10,45 @@
 		requires : [ 'dialog' ],
 		init : function( editor )
 		{
+			function anchoredList()
+			{
+				var sel = editor.getSelection(),
+					element = sel && sel.getStartElement(),
+					path = new CKEDITOR.dom.elementPath( element ).elements;
+
+				for ( var i = 0; i < path.length; i++ )
+				{
+					element = path[ i ];
+					if ( element.getName() in { ol : 1, ul : 1 } )
+						return element;
+				}
+			}
+
+			editor.addCommand( 'listStyleEdit',
+			{
+				exec : function( editor, data )
+				{
+					var list = anchoredList();
+					if ( data.fromMenu == 'list_root' )
+						editor.getSelection().selectElement( list );
+					
+					editor.openDialog( list.is( 'ol' )? 'numberedListStyle' : 'bulletedListStyle' );
+				}
+			});
+
 			editor.addCommand( 'numberedListStyle', new CKEDITOR.dialogCommand( 'numberedListStyle' ) );
 			CKEDITOR.dialog.add( 'numberedListStyle', this.path + 'dialogs/liststyle.js' );
 			editor.addCommand( 'bulletedListStyle', new CKEDITOR.dialogCommand( 'bulletedListStyle' ) );
 			CKEDITOR.dialog.add( 'bulletedListStyle', this.path + 'dialogs/liststyle.js' );
 
+			function subMenu()
+			{
+				return {
+					list_root : CKEDITOR.TRISTATE_OFF,
+					list_item : CKEDITOR.TRISTATE_OFF
+				};
+			}
+
 			// If the "menu" plugin is loaded, register the menu items.
 			if ( editor.addMenuItems )
 			{
@@ -27,13 +61,27 @@
 						{
 							label : editor.lang.list.numberedTitle,
 							group : 'list',
-							command: 'numberedListStyle'
+							getItems : subMenu
 						},
 						bulletedlist :
 						{
 							label : editor.lang.list.bulletedTitle,
 							group : 'list',
-							command: 'bulletedListStyle'
+							getItems : subMenu
+						},
+						list_root :
+						{
+							label : editor.lang.list.listRoot,
+							group : 'list',
+							command: 'listStyleEdit',
+							order : 5
+						},
+						list_item :
+						{
+							label : editor.lang.list.listItem,
+							group : 'list',
+							command: 'listStyleEdit',
+							order : 10
 						}
 					});
 			}
