mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 17:52:45 +00:00 
			
		
		
		
	FontEditor: Simplify initialization by disabling widget callbacks
Reduces some complexity dealing with callback effects and fixes redundant calls to update_title and erroneously set glyph widths.
This commit is contained in:
		
							parent
							
								
									92fffc3abc
								
							
						
					
					
						commit
						ca6cb6cec3
					
				
					 3 changed files with 22 additions and 26 deletions
				
			
		|  | @ -390,9 +390,11 @@ FontEditorWidget::FontEditorWidget(const String& path, RefPtr<Gfx::BitmapFont>&& | |||
|         if (m_undo_glyph) | ||||
|             m_undo_glyph->set_code_point(glyph); | ||||
|         m_glyph_editor_widget->set_glyph(glyph); | ||||
|         auto glyph_width = m_edited_font->raw_glyph_width(m_glyph_map_widget->selected_glyph()); | ||||
|         m_glyph_editor_width_spinbox->set_value(glyph_width); | ||||
|         m_glyph_editor_present_checkbox->set_checked(glyph_width > 0); | ||||
|         auto glyph_width = m_edited_font->raw_glyph_width(glyph); | ||||
|         if (m_edited_font->is_fixed_width()) | ||||
|             m_glyph_editor_present_checkbox->set_checked(glyph_width > 0, GUI::AllowCallback::No); | ||||
|         else | ||||
|             m_glyph_editor_width_spinbox->set_value(glyph_width, GUI::AllowCallback::No); | ||||
|         update_statusbar(); | ||||
|     }; | ||||
| 
 | ||||
|  | @ -410,17 +412,15 @@ FontEditorWidget::FontEditorWidget(const String& path, RefPtr<Gfx::BitmapFont>&& | |||
|         m_edited_font->set_fixed_width(checked); | ||||
|         auto glyph_width = m_edited_font->raw_glyph_width(m_glyph_map_widget->selected_glyph()); | ||||
|         m_glyph_editor_width_spinbox->set_visible(!checked); | ||||
|         m_glyph_editor_width_spinbox->set_value(glyph_width); | ||||
|         m_glyph_editor_width_spinbox->set_value(glyph_width, GUI::AllowCallback::No); | ||||
|         m_glyph_editor_present_checkbox->set_visible(checked); | ||||
|         m_glyph_editor_present_checkbox->set_checked(glyph_width > 0); | ||||
|         m_glyph_editor_present_checkbox->set_checked(glyph_width > 0, GUI::AllowCallback::No); | ||||
|         m_glyph_editor_widget->update(); | ||||
|         update_demo(); | ||||
|         did_modify_font(); | ||||
|     }; | ||||
| 
 | ||||
|     m_glyph_editor_width_spinbox->on_change = [this, update_demo, update_statusbar](int value) { | ||||
|         if (m_edited_font->raw_glyph_width(m_glyph_map_widget->selected_glyph()) == value) | ||||
|             return; | ||||
|         m_edited_font->set_glyph_width(m_glyph_map_widget->selected_glyph(), value); | ||||
|         m_glyph_editor_widget->update(); | ||||
|         m_glyph_map_widget->update_glyph(m_glyph_map_widget->selected_glyph()); | ||||
|  | @ -430,10 +430,6 @@ FontEditorWidget::FontEditorWidget(const String& path, RefPtr<Gfx::BitmapFont>&& | |||
|     }; | ||||
| 
 | ||||
|     m_glyph_editor_present_checkbox->on_checked = [this, update_demo, update_statusbar](bool checked) { | ||||
|         if (!m_edited_font->is_fixed_width() | ||||
|             || m_edited_font->raw_glyph_width(m_glyph_map_widget->selected_glyph()) == checked | ||||
|             || (m_edited_font->raw_glyph_width(m_glyph_map_widget->selected_glyph()) && checked)) | ||||
|             return; | ||||
|         m_edited_font->set_glyph_width(m_glyph_map_widget->selected_glyph(), checked ? m_edited_font->glyph_fixed_width() : 0); | ||||
|         m_glyph_editor_widget->update(); | ||||
|         m_glyph_map_widget->update_glyph(m_glyph_map_widget->selected_glyph()); | ||||
|  | @ -503,20 +499,25 @@ void FontEditorWidget::initialize(const String& path, RefPtr<Gfx::BitmapFont>&& | |||
| 
 | ||||
|     m_glyph_editor_container->set_fixed_size(m_glyph_editor_widget->preferred_width(), m_glyph_editor_widget->preferred_height()); | ||||
|     m_left_column_container->set_fixed_width(m_glyph_editor_widget->preferred_width()); | ||||
| 
 | ||||
|     m_glyph_editor_width_spinbox->set_visible(!m_edited_font->is_fixed_width()); | ||||
|     m_glyph_editor_width_spinbox->set_max(m_edited_font->max_glyph_width()); | ||||
|     m_glyph_editor_width_spinbox->set_max(m_edited_font->max_glyph_width(), GUI::AllowCallback::No); | ||||
|     m_glyph_editor_width_spinbox->set_value(m_edited_font->raw_glyph_width(m_glyph_map_widget->selected_glyph()), GUI::AllowCallback::No); | ||||
| 
 | ||||
|     m_glyph_editor_present_checkbox->set_visible(m_edited_font->is_fixed_width()); | ||||
|     m_glyph_editor_present_checkbox->set_checked(m_edited_font->raw_glyph_width(m_glyph_map_widget->selected_glyph()) > 0, GUI::AllowCallback::No); | ||||
|     m_fixed_width_checkbox->set_checked(m_edited_font->is_fixed_width(), GUI::AllowCallback::No); | ||||
| 
 | ||||
|     m_name_textbox->set_text(m_edited_font->name()); | ||||
|     m_family_textbox->set_text(m_edited_font->family()); | ||||
|     m_name_textbox->set_text(m_edited_font->name(), GUI::AllowCallback::No); | ||||
|     m_family_textbox->set_text(m_edited_font->family(), GUI::AllowCallback::No); | ||||
| 
 | ||||
|     m_presentation_spinbox->set_value(m_edited_font->presentation_size()); | ||||
|     m_spacing_spinbox->set_value(m_edited_font->glyph_spacing()); | ||||
|     m_presentation_spinbox->set_value(m_edited_font->presentation_size(), GUI::AllowCallback::No); | ||||
|     m_spacing_spinbox->set_value(m_edited_font->glyph_spacing(), GUI::AllowCallback::No); | ||||
| 
 | ||||
|     m_mean_line_spinbox->set_range(0, max(m_edited_font->glyph_height() - 2, 0), false); | ||||
|     m_baseline_spinbox->set_range(0, max(m_edited_font->glyph_height() - 2, 0), false); | ||||
|     m_mean_line_spinbox->set_value(m_edited_font->mean_line()); | ||||
|     m_baseline_spinbox->set_value(m_edited_font->baseline()); | ||||
|     m_mean_line_spinbox->set_range(0, max(m_edited_font->glyph_height() - 2, 0), GUI::AllowCallback::No); | ||||
|     m_baseline_spinbox->set_range(0, max(m_edited_font->glyph_height() - 2, 0), GUI::AllowCallback::No); | ||||
|     m_mean_line_spinbox->set_value(m_edited_font->mean_line(), GUI::AllowCallback::No); | ||||
|     m_baseline_spinbox->set_value(m_edited_font->baseline(), GUI::AllowCallback::No); | ||||
| 
 | ||||
|     m_font_weight_list.clear(); | ||||
|     for (auto& it : GUI::font_weight_names) | ||||
|  | @ -532,13 +533,9 @@ void FontEditorWidget::initialize(const String& path, RefPtr<Gfx::BitmapFont>&& | |||
|         i++; | ||||
|     } | ||||
| 
 | ||||
|     m_fixed_width_checkbox->set_checked(m_edited_font->is_fixed_width()); | ||||
| 
 | ||||
|     m_glyph_map_widget->set_selected_glyph('A'); | ||||
|     deferred_invoke([this] { | ||||
|         m_glyph_map_widget->set_focus(true); | ||||
|         m_glyph_map_widget->scroll_to_glyph(m_glyph_map_widget->selected_glyph()); | ||||
|         window()->set_modified(false); | ||||
|         update_title(); | ||||
|     }); | ||||
| 
 | ||||
|  |  | |||
|  | @ -24,7 +24,6 @@ void GlyphEditorWidget::initialize(Gfx::BitmapFont& mutable_font) | |||
|         return; | ||||
|     m_font = mutable_font; | ||||
|     set_relative_rect({ 0, 0, preferred_width(), preferred_height() }); | ||||
|     m_glyph = 0; | ||||
| } | ||||
| 
 | ||||
| void GlyphEditorWidget::set_glyph(int glyph) | ||||
|  |  | |||
|  | @ -25,8 +25,8 @@ void GlyphMapWidget::initialize(Gfx::BitmapFont& mutable_font) | |||
|     if (m_font == mutable_font) | ||||
|         return; | ||||
|     m_font = mutable_font; | ||||
|     m_selected_glyph = 0; | ||||
|     vertical_scrollbar().set_step(font().glyph_height() + m_vertical_spacing); | ||||
|     set_selected_glyph('A'); | ||||
| } | ||||
| 
 | ||||
| void GlyphMapWidget::resize_event(GUI::ResizeEvent& event) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 thankyouverycool
						thankyouverycool