]> git.eshelyaron.com Git - emacs.git/commitdiff
Set initial size in the Haiku font dialog
authorPo Lu <luangruo@yahoo.com>
Wed, 4 May 2022 05:46:24 +0000 (05:46 +0000)
committerPo Lu <luangruo@yahoo.com>
Wed, 4 May 2022 05:46:24 +0000 (05:46 +0000)
* src/haiku_support.cc (class EmacsFontSelectionDialog)
(EmacsFontSelectionDialog): New argument `initial_size'.
(be_select_font): Likewise.
* src/haiku_support.h: Update prototypes.
* src/haikufont.c (Fx_select_font): Set font dialog size to the
pixel size of the current font.

src/haiku_support.cc
src/haiku_support.h
src/haikufont.c

index 1280a77b22add49dc3ae57e9e50a6f0705445fa4..311df2e06b17ccb19ace83419e24385bb553b1fa 100644 (file)
@@ -2577,7 +2577,8 @@ public:
 
   EmacsFontSelectionDialog (bool monospace_only,
                            int initial_family_idx,
-                           int initial_style_idx)
+                           int initial_style_idx,
+                           int initial_size)
     : BWindow (BRect (0, 0, 500, 500),
               "Select font from list",
               B_TITLED_WINDOW_LOOK,
@@ -2610,6 +2611,7 @@ public:
     uint32 flags, c;
     BMessage *selection;
     BTextView *size_text;
+    char format_buffer[4];
 
     AddChild (&basic_view);
 
@@ -2670,6 +2672,12 @@ public:
 
     for (c = 58; c <= 127; ++c)
       size_text->DisallowChar (c);
+
+    if (initial_size > 0 && initial_size < 1000)
+      {
+       sprintf (format_buffer, "%d", initial_size);
+       size_entry.SetText (format_buffer);
+      }
   }
 
   void
@@ -4719,7 +4727,8 @@ be_select_font (void (*process_pending_signals_function) (void),
                haiku_font_family_or_style *family,
                haiku_font_family_or_style *style,
                int *size, bool allow_monospace_only,
-               int initial_family, int initial_style)
+               int initial_family, int initial_style,
+               int initial_size)
 {
   EmacsFontSelectionDialog *dialog;
   struct font_selection_dialog_message msg;
@@ -4728,7 +4737,8 @@ be_select_font (void (*process_pending_signals_function) (void),
   font_style style_buffer;
 
   dialog = new EmacsFontSelectionDialog (allow_monospace_only,
-                                        initial_family, initial_style);
+                                        initial_family, initial_style,
+                                        initial_size);
   dialog->CenterOnScreen ();
 
   if (dialog->InitCheck () < B_OK)
index 722c05511cfa7cc3b2da694170a3fd0f6669ca26..63ba7260506f43731a1d99d9cf5e8bff4d90d447 100644 (file)
@@ -648,7 +648,7 @@ extern bool be_replay_menu_bar_event (void *, struct haiku_menu_bar_click_event
 extern bool be_select_font (void (*) (void), bool (*) (void),
                            haiku_font_family_or_style *,
                            haiku_font_family_or_style *,
-                           int *, bool, int, int);
+                           int *, bool, int, int, int);
 
 extern int be_find_font_indices (struct haiku_font_pattern *, int *, int *);
 #ifdef __cplusplus
index cf7cc83085af079311b7cb0eafcc82131892a4cf..d18c1a393a022baed402544b938534102e3f2115 100644 (file)
@@ -1151,7 +1151,7 @@ in the font selection dialog.  */)
   struct font *font;
   Lisp_Object font_object;
   haiku_font_family_or_style family, style;
-  int rc, size, initial_family, initial_style;
+  int rc, size, initial_family, initial_style, initial_size;
   struct haiku_font_pattern pattern;
   Lisp_Object lfamily, lweight, lslant, lwidth, ladstyle, lsize;
 
@@ -1162,6 +1162,7 @@ in the font selection dialog.  */)
 
   initial_style = -1;
   initial_family = -1;
+  initial_size = -1;
 
   font = FRAME_FONT (f);
 
@@ -1173,6 +1174,8 @@ in the font selection dialog.  */)
       be_find_font_indices (&pattern, &initial_family,
                            &initial_style);
       haikufont_done_with_query_pattern (&pattern);
+
+      initial_size = font->pixel_size;
     }
 
   popup_activated_p++;
@@ -1181,7 +1184,8 @@ in the font selection dialog.  */)
                       haikufont_should_quit_popup,
                       &family, &style, &size,
                       !NILP (exclude_proportional),
-                      initial_family, initial_style);
+                      initial_family, initial_style,
+                      initial_size);
   request_sigio ();
   popup_activated_p--;