1
0
Fork 0
mirror of https://github.com/davatorium/rofi.git synced 2024-12-09 14:09:41 -05:00

Add line.

This commit is contained in:
Qball Cow 2014-01-22 13:07:52 +01:00
parent f4da5aceb2
commit 498c007193
3 changed files with 39 additions and 8 deletions

View file

@ -62,6 +62,7 @@
#include "run-dialog.h" #include "run-dialog.h"
#include "ssh-dialog.h" #include "ssh-dialog.h"
#define LINE_MARGIN 3
#define INNER_MARGIN 5 #define INNER_MARGIN 5
#define OPAQUE 0xffffffff #define OPAQUE 0xffffffff
@ -234,7 +235,7 @@ static int find_arg_int( int argc, char *argv[], char *key, int def )
} }
unsigned int NumlockMask = 0; unsigned int NumlockMask = 0;
Display *display; Display *display = NULL;
Screen *screen; Screen *screen;
Window root; Window root;
int screen_id; int screen_id;
@ -700,8 +701,8 @@ unsigned int rundialog_modmask;
KeySym rundialog_keysym; KeySym rundialog_keysym;
unsigned int sshdialog_modmask; unsigned int sshdialog_modmask;
KeySym sshdialog_keysym; KeySym sshdialog_keysym;
// flags to set if we switch modes on the fly
Window main_window = None; Window main_window = None;
GC gc = NULL;
#include "textbox.h" #include "textbox.h"
@ -814,6 +815,11 @@ int menu( char **lines, char **input, char *prompt, int selected, Time *time, in
} else { } else {
box = XCreateSimpleWindow( display, root, x, 0, w, 300, 1, color_get( config_menu_bc ), color_get( config_menu_bg ) ); box = XCreateSimpleWindow( display, root, x, 0, w, 300, 1, color_get( config_menu_bc ), color_get( config_menu_bg ) );
XSelectInput( display, box, ExposureMask ); XSelectInput( display, box, ExposureMask );
gc = XCreateGC( display, box, 0, 0 );
XSetLineAttributes(display, gc, 2, LineOnOffDash, CapButt, JoinMiter);
XSetForeground( display, gc, color_get( config_menu_bc ) );
// make it an unmanaged window // make it an unmanaged window
window_set_atom_prop( box, netatoms[_NET_WM_STATE], &netatoms[_NET_WM_STATE_ABOVE], 1 ); window_set_atom_prop( box, netatoms[_NET_WM_STATE], &netatoms[_NET_WM_STATE_ABOVE], 1 );
//window_set_atom_prop(box, netatoms[_NET_WM_WINDOW_TYPE], &netatoms[_NET_WM_WINDOW_TYPE_DOCK], 1); //window_set_atom_prop(box, netatoms[_NET_WM_WINDOW_TYPE], &netatoms[_NET_WM_WINDOW_TYPE_DOCK], 1);
@ -849,7 +855,7 @@ int menu( char **lines, char **input, char *prompt, int selected, Time *time, in
for ( i = 0; i < max_lines; i++ ) { for ( i = 0; i < max_lines; i++ ) {
boxes[i] = textbox_create( box, TB_AUTOHEIGHT, INNER_MARGIN, ( i+1 ) * line_height + boxes[i] = textbox_create( box, TB_AUTOHEIGHT, INNER_MARGIN, ( i+1 ) * line_height +
INNER_MARGIN, w-( 2*INNER_MARGIN ), 1, INNER_MARGIN+LINE_MARGIN, w-( 2*INNER_MARGIN ), 1,
config_menu_font, config_menu_fg, config_menu_bg, lines[i], NULL ); config_menu_font, config_menu_fg, config_menu_bg, lines[i], NULL );
textbox_show( boxes[i] ); textbox_show( boxes[i] );
} }
@ -888,7 +894,7 @@ int menu( char **lines, char **input, char *prompt, int selected, Time *time, in
// resize window vertically to suit // resize window vertically to suit
// Subtract the margin of the last row. // Subtract the margin of the last row.
int h = line_height * ( max_lines+1 ) + INNER_MARGIN*2 - row_margin; int h = line_height * ( max_lines+1 ) + INNER_MARGIN*2 - row_margin+LINE_MARGIN;
int y = mon.y + ( mon.h - h )/2; int y = mon.y + ( mon.h - h )/2;
XMoveResizeWindow( display, box, x, y, w, h ); XMoveResizeWindow( display, box, x, y, w, h );
XMapRaised( display, box ); XMapRaised( display, box );
@ -903,6 +909,9 @@ int menu( char **lines, char **input, char *prompt, int selected, Time *time, in
while ( XCheckTypedEvent( display, Expose, &ev ) ); while ( XCheckTypedEvent( display, Expose, &ev ) );
menu_draw( text, boxes, max_lines, selected, filtered ); menu_draw( text, boxes, max_lines, selected, filtered );
// Why do we need the specian -1?
XDrawLine( display, main_window, gc, INNER_MARGIN, line_height+INNER_MARGIN,
w-( INNER_MARGIN )-1, line_height+INNER_MARGIN );
} else if ( ev.type == KeyPress ) { } else if ( ev.type == KeyPress ) {
while ( XCheckTypedEvent( display, KeyPress, &ev ) ); while ( XCheckTypedEvent( display, KeyPress, &ev ) );
@ -1143,6 +1152,7 @@ void run_switcher( int fmode, SwitcherMode mode )
do { do {
SwitcherMode retv = MODE_EXIT; SwitcherMode retv = MODE_EXIT;
if ( mode == WINDOW_SWITCHER ) { if ( mode == WINDOW_SWITCHER ) {
retv = run_switcher_window( &input ); retv = run_switcher_window( &input );
} else if ( mode == RUN_DIALOG ) { } else if ( mode == RUN_DIALOG ) {
@ -1150,6 +1160,7 @@ void run_switcher( int fmode, SwitcherMode mode )
} else if ( mode == SSH_DIALOG ) { } else if ( mode == SSH_DIALOG ) {
retv = ssh_switcher_dialog( &input ); retv = ssh_switcher_dialog( &input );
} }
if ( retv == NEXT_DIALOG ) { if ( retv == NEXT_DIALOG ) {
mode = ( mode+1 )%NUM_DIALOGS; mode = ( mode+1 )%NUM_DIALOGS;
} else { } else {
@ -1261,6 +1272,15 @@ void help()
static inline int program_end() static inline int program_end()
{ {
if ( display != NULL ) {
if ( main_window != None ) {
XFreeGC( display,gc );
XDestroyWindow( display,main_window );
XCloseDisplay( display );
}
}
winlist_free( cache_xattr ); winlist_free( cache_xattr );
winlist_free( cache_client ); winlist_free( cache_client );
#ifdef I3 #ifdef I3

View file

@ -177,7 +177,18 @@ void textbox_free( textbox *tb )
if ( tb->prompt ) free( tb->prompt ); if ( tb->prompt ) free( tb->prompt );
if ( tb->font ) XftFontClose( display, tb->font ); if ( tb->font ) {
XftColorFree ( display,
DefaultVisual( display, DefaultScreen( display ) ),
DefaultColormap( display, DefaultScreen( display ) ),
&tb->color_fg );
XftColorFree ( display,
DefaultVisual( display, DefaultScreen( display ) ),
DefaultColormap( display, DefaultScreen( display ) ),
&tb->color_bg );
XftFontClose( display, tb->font );
}
XDestroyWindow( display, tb->window ); XDestroyWindow( display, tb->window );
free( tb ); free( tb );