@@ -151,6 +151,8 @@ void render_frame(struct swaylock_surface *surface) {
151151				layout_text  =  xkb_keymap_layout_get_name (state -> xkb .keymap , curr_layout );
152152			}
153153		}
154+ 	} else  if  (state -> args .default_text ) {
155+ 		text  =  state -> args .default_text ;
154156	}
155157
156158	// Compute the size of the buffer needed 
@@ -245,27 +247,9 @@ void render_frame(struct swaylock_surface *surface) {
245247		set_color_for_state (cairo , state , & state -> args .colors .ring );
246248		cairo_stroke (cairo );
247249
248- 		// Draw a message 
249- 		configure_font_drawing (cairo , state , surface -> subpixel , arc_radius );
250- 		set_color_for_state (cairo , state , & state -> args .colors .text );
251- 
252- 		if  (text ) {
253- 			cairo_text_extents_t  extents ;
254- 			cairo_font_extents_t  fe ;
255- 			double  x , y ;
256- 			cairo_text_extents (cairo , text , & extents );
257- 			cairo_font_extents (cairo , & fe );
258- 			x  =  (buffer_width  / 2 ) - 
259- 				(extents .width  / 2  +  extents .x_bearing );
260- 			y  =  (buffer_diameter  / 2 ) + 
261- 				(fe .height  / 2  -  fe .descent );
262- 
263- 			cairo_move_to (cairo , x , y );
264- 			cairo_show_text (cairo , text );
265- 			cairo_close_path (cairo );
266- 			cairo_new_sub_path (cairo );
267- 		}
250+ 	}
268251
252+ 	if  (draw_indicator ) {
269253		// Typing indicator: Highlight random part on keypress 
270254		if  (state -> input_state  ==  INPUT_STATE_LETTER  || 
271255				state -> input_state  ==  INPUT_STATE_BACKSPACE ) {
@@ -311,37 +295,58 @@ void render_frame(struct swaylock_surface *surface) {
311295		cairo_arc (cairo , buffer_width  / 2 , buffer_diameter  / 2 ,
312296				arc_radius  +  arc_thickness  / 2 , 0 , 2  *  M_PI );
313297		cairo_stroke (cairo );
298+ 	}
314299
315- 		// display layout text separately 
316- 		if  (layout_text ) {
317- 			cairo_text_extents_t  extents ;
318- 			cairo_font_extents_t  fe ;
319- 			double  x , y ;
320- 			double  box_padding  =  4.0  *  surface -> scale ;
321- 			cairo_text_extents (cairo , layout_text , & extents );
322- 			cairo_font_extents (cairo , & fe );
323- 			// upper left coordinates for box 
324- 			x  =  (buffer_width  / 2 ) -  (extents .width  / 2 ) -  box_padding ;
325- 			y  =  buffer_diameter ;
326- 
327- 			// background box 
328- 			cairo_rectangle (cairo , x , y ,
329- 				extents .width  +  2.0  *  box_padding ,
330- 				fe .height  +  2.0  *  box_padding );
331- 			cairo_set_source_u32 (cairo , state -> args .colors .layout_background );
332- 			cairo_fill_preserve (cairo );
333- 			// border 
334- 			cairo_set_source_u32 (cairo , state -> args .colors .layout_border );
335- 			cairo_stroke (cairo );
300+ 	// Draw a message 
301+ 	configure_font_drawing (cairo , state , surface -> subpixel , arc_radius );
302+ 	set_color_for_state (cairo , state , & state -> args .colors .text );
303+ 
304+ 	if  (text ) {
305+ 		cairo_text_extents_t  extents ;
306+ 		cairo_font_extents_t  fe ;
307+ 		double  x , y ;
308+ 		cairo_text_extents (cairo , text , & extents );
309+ 		cairo_font_extents (cairo , & fe );
310+ 		x  =  (buffer_width  / 2 ) - 
311+ 			(extents .width  / 2  +  extents .x_bearing );
312+ 		y  =  (buffer_diameter  / 2 ) + 
313+ 			(fe .height  / 2  -  fe .descent );
314+ 
315+ 		cairo_move_to (cairo , x , y );
316+ 		cairo_show_text (cairo , text );
317+ 		cairo_close_path (cairo );
318+ 		cairo_new_sub_path (cairo );
319+ 	}
336320
337- 			// take font extents and padding into account 
338- 			cairo_move_to (cairo ,
339- 				x  -  extents .x_bearing  +  box_padding ,
340- 				y  +  (fe .height  -  fe .descent ) +  box_padding );
341- 			cairo_set_source_u32 (cairo , state -> args .colors .layout_text );
342- 			cairo_show_text (cairo , layout_text );
343- 			cairo_new_sub_path (cairo );
344- 		}
321+ 	// display layout text separately 
322+ 	if  (layout_text ) {
323+ 		cairo_text_extents_t  extents ;
324+ 		cairo_font_extents_t  fe ;
325+ 		double  x , y ;
326+ 		double  box_padding  =  4.0  *  surface -> scale ;
327+ 		cairo_text_extents (cairo , layout_text , & extents );
328+ 		cairo_font_extents (cairo , & fe );
329+ 		// upper left coordinates for box 
330+ 		x  =  (buffer_width  / 2 ) -  (extents .width  / 2 ) -  box_padding ;
331+ 		y  =  buffer_diameter ;
332+ 
333+ 		// background box 
334+ 		cairo_rectangle (cairo , x , y ,
335+ 			extents .width  +  2.0  *  box_padding ,
336+ 			fe .height  +  2.0  *  box_padding );
337+ 		cairo_set_source_u32 (cairo , state -> args .colors .layout_background );
338+ 		cairo_fill_preserve (cairo );
339+ 		// border 
340+ 		cairo_set_source_u32 (cairo , state -> args .colors .layout_border );
341+ 		cairo_stroke (cairo );
342+ 
343+ 		// take font extents and padding into account 
344+ 		cairo_move_to (cairo ,
345+ 			x  -  extents .x_bearing  +  box_padding ,
346+ 			y  +  (fe .height  -  fe .descent ) +  box_padding );
347+ 		cairo_set_source_u32 (cairo , state -> args .colors .layout_text );
348+ 		cairo_show_text (cairo , layout_text );
349+ 		cairo_new_sub_path (cairo );
345350	}
346351
347352	// Send Wayland requests 
0 commit comments