mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 21:42:43 +00:00 
			
		
		
		
	Add basic support for horizontal tabs in the VirtualConsole.
This commit is contained in:
		
							parent
							
								
									f18c985546
								
							
						
					
					
						commit
						87b10f6e6e
					
				
					 2 changed files with 16 additions and 0 deletions
				
			
		|  | @ -42,6 +42,10 @@ VirtualConsole::VirtualConsole(unsigned index, InitialContents initial_contents) | ||||||
|     , m_index(index) |     , m_index(index) | ||||||
| { | { | ||||||
|     set_size(80, 25); |     set_size(80, 25); | ||||||
|  |     m_horizontal_tabs = static_cast<byte*>(kmalloc(columns())); | ||||||
|  |     for (unsigned i = 0; i < columns(); ++i) | ||||||
|  |         m_horizontal_tabs[i] = (i % 8) == 0; | ||||||
|  | 
 | ||||||
|     s_consoles[index] = this; |     s_consoles[index] = this; | ||||||
|     m_buffer = (byte*)kmalloc_eternal(rows() * columns() * 2); |     m_buffer = (byte*)kmalloc_eternal(rows() * columns() * 2); | ||||||
|     if (initial_contents == AdoptCurrentVGABuffer) { |     if (initial_contents == AdoptCurrentVGABuffer) { | ||||||
|  | @ -56,6 +60,8 @@ VirtualConsole::VirtualConsole(unsigned index, InitialContents initial_contents) | ||||||
| 
 | 
 | ||||||
| VirtualConsole::~VirtualConsole() | VirtualConsole::~VirtualConsole() | ||||||
| { | { | ||||||
|  |     kfree(m_horizontal_tabs); | ||||||
|  |     m_horizontal_tabs = nullptr; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void VirtualConsole::clear() | void VirtualConsole::clear() | ||||||
|  | @ -427,6 +433,15 @@ void VirtualConsole::on_char(byte ch) | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|         break; |         break; | ||||||
|  |     case '\t': { | ||||||
|  |         for (unsigned i = m_cursor_column; i < columns(); ++i) { | ||||||
|  |             if (m_horizontal_tabs[i]) { | ||||||
|  |                 set_cursor(m_cursor_row, i); | ||||||
|  |                 return; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return; | ||||||
|  |     } | ||||||
|     case '\n': |     case '\n': | ||||||
|         scroll_up(); |         scroll_up(); | ||||||
|         set_cursor(m_cursor_row, m_cursor_column); |         set_cursor(m_cursor_row, m_cursor_column); | ||||||
|  |  | ||||||
|  | @ -73,4 +73,5 @@ private: | ||||||
|     EscapeState m_escape_state { Normal }; |     EscapeState m_escape_state { Normal }; | ||||||
|     Vector<byte> m_parameters; |     Vector<byte> m_parameters; | ||||||
|     Vector<byte> m_intermediates; |     Vector<byte> m_intermediates; | ||||||
|  |     byte* m_horizontal_tabs { nullptr }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling