diff --git a/include/view-internal.h b/include/view-internal.h index e4cb619c..edf0f63a 100644 --- a/include/view-internal.h +++ b/include/view-internal.h @@ -51,7 +51,7 @@ struct RofiViewState /** Flag indicating if view needs to be refiltered. */ int refilter; /** Widget representing the main container. */ - container *main_window; + box *main_window; /** Main #box widget holding different elements. */ box *main_box; /** #box widget packing the input bar widgets. */ diff --git a/source/theme.c b/source/theme.c index 03837d59..363691f1 100644 --- a/source/theme.c +++ b/source/theme.c @@ -385,6 +385,8 @@ static ThemeWidget *rofi_theme_find ( ThemeWidget *widget, const char *name, con if ( f != widget ) { widget = f; found = TRUE; + } else if ( exact ) { + break; } } g_free ( tname ); @@ -594,7 +596,7 @@ Padding rofi_theme_get_padding ( const widget *widget, const char *property, Pad GList *rofi_theme_get_list ( const widget *widget, const char * property, const char *defaults ) { - ThemeWidget *wid2 = rofi_theme_find_widget ( widget->name, widget->state, FALSE ); + ThemeWidget *wid2 = rofi_theme_find_widget ( widget->name, widget->state, TRUE ); Property *p = rofi_theme_find_property ( wid2, P_LIST, property, TRUE); if ( p ) { if ( p->type == P_LIST ){ diff --git a/source/view.c b/source/view.c index 0e6375b8..015de5ab 100644 --- a/source/view.c +++ b/source/view.c @@ -656,8 +656,8 @@ void __create_window ( MenuFlags menu_flags ) map }; - xcb_window_t box = xcb_generate_id ( xcb->connection ); - xcb_void_cookie_t cc = xcb_create_window_checked ( xcb->connection, depth->depth, box, xcb_stuff_get_root_window ( xcb ), + xcb_window_t box_window = xcb_generate_id ( xcb->connection ); + xcb_void_cookie_t cc = xcb_create_window_checked ( xcb->connection, depth->depth, box_window, xcb_stuff_get_root_window ( xcb ), 0, 0, 200, 100, 0, XCB_WINDOW_CLASS_INPUT_OUTPUT, visual->visual_id, selmask, selval ); xcb_generic_error_t *error; @@ -668,7 +668,7 @@ void __create_window ( MenuFlags menu_flags ) } TICK_N ( "xcb create window" ); CacheState.gc = xcb_generate_id ( xcb->connection ); - xcb_create_gc ( xcb->connection, CacheState.gc, box, 0, 0 ); + xcb_create_gc ( xcb->connection, CacheState.gc, box_window, 0, 0 ); TICK_N ( "xcb create gc" ); // Create a drawable. @@ -690,7 +690,7 @@ void __create_window ( MenuFlags menu_flags ) pango_cairo_context_set_font_options ( p, fo ); TICK_N ( "pango cairo font setup" ); - CacheState.main_window = box; + CacheState.main_window = box_window; CacheState.flags = menu_flags; monitor_active ( &( CacheState.mon ) ); // Setup dpi @@ -714,7 +714,7 @@ void __create_window ( MenuFlags menu_flags ) } // Setup font. // Dummy widget. - container *win = container_create ( "window.box" ); + box *win = box_create ( "window.box_window", BOX_HORIZONTAL ); const char *font = rofi_theme_get_string ( WIDGET ( win ), "font", config.menu_font ); if ( font ) { PangoFontDescription *pfd = pango_font_description_from_string ( font ); @@ -736,13 +736,13 @@ void __create_window ( MenuFlags menu_flags ) TICK_N ( "textbox setup" ); // // make it an unmanaged window if ( ( ( menu_flags & MENU_NORMAL_WINDOW ) == 0 ) ) { - window_set_atom_prop ( box, xcb->ewmh._NET_WM_STATE, &( xcb->ewmh._NET_WM_STATE_ABOVE ), 1 ); + window_set_atom_prop ( box_window, xcb->ewmh._NET_WM_STATE, &( xcb->ewmh._NET_WM_STATE_ABOVE ), 1 ); uint32_t values[] = { 1 }; - xcb_change_window_attributes ( xcb->connection, box, XCB_CW_OVERRIDE_REDIRECT, values ); + xcb_change_window_attributes ( xcb->connection, box_window, XCB_CW_OVERRIDE_REDIRECT, values ); } else{ - window_set_atom_prop ( box, xcb->ewmh._NET_WM_WINDOW_TYPE, &( xcb->ewmh._NET_WM_WINDOW_TYPE_NORMAL ), 1 ); - x11_disable_decoration ( box ); + window_set_atom_prop ( box_window, xcb->ewmh._NET_WM_WINDOW_TYPE, &( xcb->ewmh._NET_WM_WINDOW_TYPE_NORMAL ), 1 ); + x11_disable_decoration ( box_window ); } TICK_N ( "setup window attributes" ); @@ -752,16 +752,16 @@ void __create_window ( MenuFlags menu_flags ) xcb->ewmh._NET_WM_STATE_FULLSCREEN, xcb->ewmh._NET_WM_STATE_ABOVE }; - window_set_atom_prop ( box, xcb->ewmh._NET_WM_STATE, atoms, sizeof ( atoms ) / sizeof ( xcb_atom_t ) ); + window_set_atom_prop ( box_window, xcb->ewmh._NET_WM_STATE, atoms, sizeof ( atoms ) / sizeof ( xcb_atom_t ) ); } TICK_N ( "setup window fullscreen" ); // Set the WM_NAME - xcb_change_property ( xcb->connection, XCB_PROP_MODE_REPLACE, box, xcb->ewmh._NET_WM_NAME, xcb->ewmh.UTF8_STRING, 8, 4, "rofi" ); - xcb_change_property ( xcb->connection, XCB_PROP_MODE_REPLACE, box, XCB_ATOM_WM_NAME, XCB_ATOM_STRING, 8, 4, "rofi" ); + xcb_change_property ( xcb->connection, XCB_PROP_MODE_REPLACE, box_window, xcb->ewmh._NET_WM_NAME, xcb->ewmh.UTF8_STRING, 8, 4, "rofi" ); + xcb_change_property ( xcb->connection, XCB_PROP_MODE_REPLACE, box_window, XCB_ATOM_WM_NAME, XCB_ATOM_STRING, 8, 4, "rofi" ); const char wm_class_name[] = "rofi\0Rofi"; - xcb_icccm_set_wm_class ( xcb->connection, box, sizeof ( wm_class_name ), wm_class_name ); + xcb_icccm_set_wm_class ( xcb->connection, box_window, sizeof ( wm_class_name ), wm_class_name ); TICK_N ( "setup window name and class" ); const char *transparency = rofi_theme_get_string ( WIDGET ( win ), "transparency", NULL ); @@ -1591,7 +1591,7 @@ static void rofi_view_add_widget ( RofiViewState *state, widget *parent_widget, */ if ( strcmp ( name, "mainbox") == 0 ){ state->main_box = box_create ( strbox, BOX_VERTICAL ); - container_add ( (container *)parent_widget, WIDGET ( state->main_box ) ); + box_add ( (box *)parent_widget, WIDGET ( state->main_box ), TRUE, 0 ); wid = WIDGET ( state->main_box ); defaults = "inputbar,message,listview"; } @@ -1680,7 +1680,9 @@ static void rofi_view_add_widget ( RofiViewState *state, widget *parent_widget, g_free(strbutton); } else { - g_error("The widget %s does not exists. Invalid layout.", name); + wid = box_create ( strbox, BOX_VERTICAL ); + box_add ( (box *)parent_widget, WIDGET ( wid ), TRUE, 0 ); + //g_error("The widget %s does not exists. Invalid layout.", name); } if ( wid ) { GList *list = rofi_theme_get_list ( wid, "children",defaults); @@ -1721,12 +1723,11 @@ RofiViewState *rofi_view_create ( Mode *sw, TICK_N ( "Get active monitor" ); - state->main_window = container_create ( "window.box" ); + state->main_window = box_create ( "window.box", BOX_VERTICAL ); // Get children. GList *list = rofi_theme_get_list ( WIDGET(state->main_window), "children", "mainbox"); for ( const GList *iter = list; iter != NULL; iter = g_list_next ( iter )){ rofi_view_add_widget ( state, WIDGET(state->main_window), "window", (const char *)iter->data ); - } g_list_free_full ( list, g_free ); @@ -1773,9 +1774,9 @@ int rofi_view_error_dialog ( const char *msg, int markup ) state->menu_flags = MENU_ERROR_DIALOG; state->finalize = process_result; - state->main_window = container_create ( "window.box" ); + state->main_window = box_create ( "window.box", BOX_VERTICAL ); state->main_box = box_create ( "window.mainbox.message.box", BOX_VERTICAL ); - container_add ( state->main_window, WIDGET ( state->main_box ) ); + box_add ( state->main_window, WIDGET ( state->main_box ), TRUE, 0 ); state->text = textbox_create ( "window.mainbox.message.textbox", ( TB_AUTOHEIGHT | TB_WRAP ) + ( ( markup ) ? TB_MARKUP : 0 ), NORMAL, ( msg != NULL ) ? msg : "" ); box_add ( state->main_box, WIDGET ( state->text ), TRUE, 1 ); diff --git a/source/widgets/textbox.c b/source/widgets/textbox.c index 21a4222f..3f267915 100644 --- a/source/widgets/textbox.c +++ b/source/widgets/textbox.c @@ -174,7 +174,6 @@ textbox* textbox_create ( const char *name, TextboxFlags flags, TextBoxFontType int wi = distance_get_pixel ( w, ORIENTATION_HORIZONTAL ); if ( wi > 0 ) { - printf("set width: %d\n", wi); tb->widget.w = wi; textbox_moveresize ( tb, tb->widget.x, tb->widget.y, tb->widget.w, tb->widget.h ); }