From 44534653bf17d4a5b7898fe398b4ccb4e4382bb8 Mon Sep 17 00:00:00 2001 From: Dave Davenport Date: Sun, 1 Jan 2017 12:16:04 +0100 Subject: [PATCH] Remove border from ViewState --- include/view-internal.h | 3 --- source/view.c | 20 +++++++++++++++----- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/include/view-internal.h b/include/view-internal.h index 9438c22c..f2f000bb 100644 --- a/include/view-internal.h +++ b/include/view-internal.h @@ -66,9 +66,6 @@ struct RofiViewState unsigned int selected_line; /** The return state of the view */ MenuReturn retv; - /** Calculated border width */ - unsigned int border; - Padding pad; /** Monitor #workarea the view is displayed on */ workarea mon; diff --git a/source/view.c b/source/view.c index ebb007ff..cc21440a 100644 --- a/source/view.c +++ b/source/view.c @@ -209,6 +209,8 @@ static gboolean rofi_view_repaint ( G_GNUC_UNUSED void * data ) { if ( current_active_menu ) { // Repaint the view (if needed). + // After a resize the edit_pixmap surface might not contain anything anymore. + // If we already re-painted, this does nothing. rofi_view_update (current_active_menu, FALSE); g_log ( LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "expose event" ); TICK_N ( "Expose" ); @@ -662,7 +664,7 @@ static void rofi_view_calculate_window_and_element_width ( RofiViewState *state else if ( config.menu_width < 0 ) { double fw = textbox_get_estimated_char_width ( ); state->width = -( fw * config.menu_width ); - state->width += 2 * state->border; + state->width += window_get_border_width ( state->main_window ); } else{ // Calculate as float to stop silly, big rounding down errors. @@ -1419,7 +1421,6 @@ RofiViewState *rofi_view_create ( Mode *sw, state->skip_absorb = FALSE; //We want to filter on the first run. state->refilter = TRUE; - state->border = 0; state->finalize = finalize; state->mouse_seen = FALSE; @@ -1542,7 +1543,6 @@ int rofi_view_error_dialog ( const char *msg, int markup ) state->retv = MENU_CANCEL; state->menu_flags = MENU_ERROR_DIALOG; state->finalize = process_result; - state->border += rofi_theme_get_integer ( "@window", "window", NULL, "border-width" , config.menu_bw); rofi_view_calculate_window_and_element_width ( state ); state->main_window = window_create ( "window" ); @@ -1675,9 +1675,19 @@ void rofi_view_set_overlay ( RofiViewState *state, const char *text ) } widget_enable ( WIDGET ( state->overlay ) ); textbox_text ( state->overlay, text ); - unsigned int x_offset = state->width - ( 2 * state->border ) - widget_get_width ( WIDGET ( state->case_indicator ) ); + int x_offset = widget_get_width ( WIDGET(state->main_window) ); + // Within padding of window. + x_offset -= widget_padding_get_right ( WIDGET (state->main_window) ); + // Within the border of widget. + x_offset -= window_get_border_width ( state->main_window ); + x_offset -= widget_padding_get_right ( WIDGET (state->main_box ) ); + x_offset -= widget_padding_get_right ( WIDGET (state->input_bar ) ); + x_offset -= widget_get_width ( WIDGET ( state->case_indicator ) ); x_offset -= widget_get_width ( WIDGET ( state->overlay ) ); - widget_move ( WIDGET ( state->overlay ), x_offset, state->border ); + int top_offset = window_get_border_width ( state->main_window ); + top_offset += widget_padding_get_top ( WIDGET (state->main_window) ); + top_offset += widget_padding_get_top ( WIDGET (state->main_box ) ); + widget_move ( WIDGET ( state->overlay ), x_offset, top_offset ); // We want to queue a repaint. rofi_view_queue_redraw ( ); }