Index: _source/plugins/font/plugin.js
===================================================================
--- _source/plugins/font/plugin.js	(revision 3252)
+++ _source/plugins/font/plugin.js	(working copy)
@@ -76,15 +76,24 @@
 						{
 							var currentValue = this.getValue();
 
-							var elementPath = ev.data.path;
+							var elementPath = ev.data.path,
+								elements = elementPath.elements;
 
-							for ( var value in styles )
+							// For each element into the elements path.
+							for ( var i = 0, element ; i < elements.length ; i++ )
 							{
-								if ( styles[ value ].checkActive( elementPath ) )
+								element = elements[i];
+
+								// Check if the element is removable by any of
+								// the styles.
+								for ( var value in styles )
 								{
-									if ( value != currentValue )
-										this.setValue( value );
-									return;
+									if ( styles[ value ].checkElementRemovable( element, true ) )
+									{
+										if ( value != currentValue )
+											this.setValue( value );
+										return;
+									}
 								}
 							}
 
Index: _source/plugins/stylescombo/plugin.js
===================================================================
--- _source/plugins/stylescombo/plugin.js	(revision 3252)
+++ _source/plugins/stylescombo/plugin.js	(working copy)
@@ -1,4 +1,4 @@
-/*
+﻿/*
 Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -124,17 +124,26 @@
 					{
 						editor.on( 'selectionChange', function( ev )
 							{
-								var currentTag = this.getValue();
+								var currentValue = this.getValue();
 
 								var elementPath = ev.data.path;
+									elements = elementPath.elements;
 
-								for ( var tag in styles )
+								// For each element into the elements path.
+								for ( var i = 0, element ; i < elements.length ; i++ )
 								{
-									if ( styles[ tag ].checkActive( elementPath ) )
+									element = elements[i];
+
+									// Check if the element is removable by any of
+									// the styles.
+									for ( var value in styles )
 									{
-										if ( tag != currentTag )
-											this.setValue( tag );
-										return;
+										if ( styles[ value ].checkElementRemovable( element, true ) )
+										{
+											if ( value != currentValue )
+												this.setValue( value );
+											return;
+										}
 									}
 								}
 
