summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
authorDave Davenport <qball@gmpclient.org>2016-02-11 08:41:19 +0100
committerDave Davenport <qball@gmpclient.org>2016-02-11 08:41:19 +0100
commit11c347fad8a3281d6b3c613d9c84346508a80c55 (patch)
tree69b74602d75911f5b2e1deee4041e3655ece759c /source
parent3b007b7effa9928cff6a4dae6bffcbcaa50643ec (diff)
Use accessors in RofiView to get modi's and num modi for sidebar.
Diffstat (limited to 'source')
-rw-r--r--source/rofi.c10
-rw-r--r--source/view.c22
2 files changed, 20 insertions, 12 deletions
diff --git a/source/rofi.c b/source/rofi.c
index 90dc6041..6d5c8664 100644
--- a/source/rofi.c
+++ b/source/rofi.c
@@ -83,6 +83,16 @@ gboolean quiet = FALSE;
static void process_result ( RofiViewState *state );
gboolean main_loop_x11_event_handler ( G_GNUC_UNUSED gpointer data );
+unsigned int rofi_get_num_enabled_modi ( void )
+{
+ return num_modi;
+}
+
+const Mode * rofi_get_mode ( unsigned int index )
+{
+ return modi[index];
+}
+
/**
* @param name Name of the switcher to lookup.
*
diff --git a/source/view.c b/source/view.c
index 0d86a5eb..a4f9c90f 100644
--- a/source/view.c
+++ b/source/view.c
@@ -66,10 +66,6 @@
#include "view.h"
#include "view-internal.h"
-// TODO get rid of num_modi and modi, use an accessor.
-extern unsigned int num_modi;
-extern Mode **modi;
-
// What todo with these.
extern Display *display;
extern SnLauncheeContext *sncontext;
@@ -826,7 +822,7 @@ void rofi_view_update ( RofiViewState *state )
}
}
if ( config.sidebar_mode == TRUE ) {
- for ( unsigned int j = 0; j < num_modi; j++ ) {
+ for ( unsigned int j = 0; j < state->num_modi; j++ ) {
if ( state->modi[j] != NULL ) {
textbox_draw ( state->modi[j], d );
}
@@ -879,8 +875,8 @@ static void rofi_view_resize ( RofiViewState *state )
unsigned int sbw = config.line_margin + 8;
widget_move ( WIDGET ( state->scrollbar ), state->w - state->border - sbw, state->top_offset );
if ( config.sidebar_mode == TRUE ) {
- int width = ( state->w - ( 2 * ( state->border ) + ( num_modi - 1 ) * config.line_margin ) ) / num_modi;
- for ( unsigned int j = 0; j < num_modi; j++ ) {
+ int width = ( state->w - ( 2 * ( state->border ) + ( state->num_modi - 1 ) * config.line_margin ) ) / state->num_modi;
+ for ( unsigned int j = 0; j < state->num_modi; j++ ) {
textbox_moveresize ( state->modi[j],
state->border + j * ( width + config.line_margin ), state->h - state->line_height - state->border,
width, state->line_height );
@@ -1041,7 +1037,7 @@ static void rofi_view_mouse_navigation ( RofiViewState *state, XButtonEvent *xbe
state->update = TRUE;
return;
}
- for ( unsigned int i = 0; config.sidebar_mode == TRUE && i < num_modi; i++ ) {
+ for ( unsigned int i = 0; config.sidebar_mode == TRUE && i < state->num_modi; i++ ) {
if ( widget_intersect ( &( state->modi[i]->widget ), xbe->x, xbe->y ) ) {
( state->selected_line ) = 0;
state->retv = MENU_QUICK_SWITCH | ( i & MENU_LOWER_MASK );
@@ -1563,12 +1559,14 @@ RofiViewState *rofi_view_create ( Mode *sw,
calculate_window_position ( state );
if ( config.sidebar_mode == TRUE ) {
- int width = ( state->w - ( 2 * ( state->border ) + ( num_modi - 1 ) * config.line_margin ) ) / num_modi;
- state->modi = g_malloc0 ( num_modi * sizeof ( textbox * ) );
- for ( unsigned int j = 0; j < num_modi; j++ ) {
+ state->num_modi = rofi_get_num_enabled_modi ();
+ int width = ( state->w - ( 2 * ( state->border ) + ( state->num_modi - 1 ) * config.line_margin ) ) / state->num_modi;
+ state->modi = g_malloc0 ( state->num_modi * sizeof ( textbox * ) );
+ for ( unsigned int j = 0; j < state->num_modi; j++ ) {
+ const Mode * mode = rofi_get_mode ( j );
state->modi[j] = textbox_create ( TB_CENTER, state->border + j * ( width + config.line_margin ),
state->h - state->line_height - state->border, width, state->line_height,
- ( modi[j] == state->sw ) ? HIGHLIGHT : NORMAL, mode_get_name ( modi[j] ) );
+ ( mode == state->sw ) ? HIGHLIGHT : NORMAL, mode_get_name ( mode ) );
}
}