1
0
Fork 0
mirror of https://github.com/davatorium/rofi.git synced 2025-02-10 15:44:41 -05:00

Document more headers.

This commit is contained in:
Dave Davenport 2016-10-14 16:46:54 +02:00
parent b4c599f022
commit ce341f6885
16 changed files with 237 additions and 61 deletions

View file

@ -5,9 +5,18 @@
* @defgroup COBIMode Combi * @defgroup COBIMode Combi
* @ingroup MODES * @ingroup MODES
* *
* Dialog that can combine multiple #Mode into one view.
*
* This mode uses the following options from the #config object:
* * #Settings::combi_modi
*
* It creates the following option:
* * Settings::display_combi
*
* @{ * @{
*/ */
/** #Mode object representing the combi dialog. */
extern Mode combi_mode; extern Mode combi_mode;
/*@}*/ /*@}*/

View file

@ -15,6 +15,9 @@
*/ */
int dmenu_switcher_dialog ( void ); int dmenu_switcher_dialog ( void );
/**
* Print dmenu mode commandline options to stdout, for use in help menu.
*/
void print_dmenu_options ( void ); void print_dmenu_options ( void );
/*@}*/ /*@}*/

View file

@ -8,6 +8,7 @@
*/ */
#include <config.h> #include <config.h>
#ifdef ENABLE_DRUN #ifdef ENABLE_DRUN
/** #Mode object representing the desktop menu run dialog. */
extern Mode drun_mode; extern Mode drun_mode;
#endif // ENABLE_DRUN #endif // ENABLE_DRUN
/*@}*/ /*@}*/

View file

@ -10,7 +10,7 @@
* @{ * @{
*/ */
/** /**
* Internal handle to the help key mode * #Mode object representing the help key mode view
*/ */
extern Mode help_keys_mode; extern Mode help_keys_mode;
/*@}*/ /*@}*/

View file

@ -12,6 +12,7 @@
* *
* @{ * @{
*/ */
/** #Mode object representing the run dialog. */
extern Mode run_mode; extern Mode run_mode;
/*@}*/ /*@}*/

View file

@ -17,9 +17,7 @@
* @{ * @{
*/ */
/** /** #Mode object representing the ssh dialog. */
* SSH Mode object.
*/
extern Mode ssh_mode; extern Mode ssh_mode;
/*@}*/ /*@}*/
#endif // ROFI_DIALOG_SSH_H #endif // ROFI_DIALOG_SSH_H

View file

@ -44,13 +44,13 @@ const Mode * rofi_get_mode ( unsigned int index );
*/ */
void rofi_set_return_code ( int code ); void rofi_set_return_code ( int code );
/** Reset terminal */ /** Reset terminal */
#define color_reset "\033[0m" #define color_reset "\033[0m"
/** Set terminal text bold */ /** Set terminal text bold */
#define color_bold "\033[1m" #define color_bold "\033[1m"
/** Set terminal text italic */ /** Set terminal text italic */
#define color_italic "\033[2m" #define color_italic "\033[2m"
/** Set terminal foreground text green */ /** Set terminal foreground text green */
#define color_green "\033[0;32m" #define color_green "\033[0;32m"
/** Appends instructions on how to report an error. */ /** Appends instructions on how to report an error. */
#define ERROR_MSG( a ) a "\n" \ #define ERROR_MSG( a ) a "\n" \

View file

@ -17,6 +17,10 @@
* *
* @{ * @{
*/ */
/**
* Internal structure of a textbox widget.
* @TODO make this internal to textbox
*/
typedef struct typedef struct
{ {
widget widget; widget widget;
@ -37,6 +41,9 @@ typedef struct
guint blink_timeout; guint blink_timeout;
} textbox; } textbox;
/**
* Flags for configuring textbox behaviour and looks during creation.
*/
typedef enum typedef enum
{ {
TB_AUTOHEIGHT = 1 << 0, TB_AUTOHEIGHT = 1 << 0,
@ -50,25 +57,46 @@ typedef enum
TB_PASSWORD = 1 << 22, TB_PASSWORD = 1 << 22,
TB_INDICATOR = 1 << 23, TB_INDICATOR = 1 << 23,
} TextboxFlags; } TextboxFlags;
/**
* Flags indicating current state of the textbox.
*/
typedef enum typedef enum
{ {
// Render font normally /** Normal */
NORMAL = 0, NORMAL = 0,
/** Text in box is urgent. */
URGENT = 1, URGENT = 1,
/** Text in box is active. */
ACTIVE = 2, ACTIVE = 2,
/** Text in box is selected. */
SELECTED = 4, SELECTED = 4,
/** Text in box has pango markup. */
MARKUP = 8, MARKUP = 8,
// Alternating row. /** Text is on an alternate row */
ALT = 16, ALT = 16,
// Render font highlighted (inverted colors.) /** Render font highlighted (inverted colors.) */
HIGHLIGHT = 32, HIGHLIGHT = 32,
/** Mask for alternate and highlighted */
FMOD_MASK = ( ALT | HIGHLIGHT ), FMOD_MASK = ( ALT | HIGHLIGHT ),
/** Mask of bits indicating state */
STATE_MASK = ~( SELECTED | MARKUP | ALT | HIGHLIGHT ) STATE_MASK = ~( SELECTED | MARKUP | ALT | HIGHLIGHT )
} TextBoxFontType; } TextBoxFontType;
/**
* @param flags #TextboxFlags indicating the type of textbox.
* @param x horizontal positon of textbox
* @param y vertical position of textbox
* @param w width of textbox
* @param h height of textbox
* @param tbft #TextBoxFontType current state of textbox.
* @param text intial text to display.
*
* Create a new textbox widget.
*
* free with #widget_free
* @returns a new #textbox
*/
textbox* textbox_create ( TextboxFlags flags, textbox* textbox_create ( TextboxFlags flags,
short x, short y, short w, short h, short x, short y, short w, short h,
TextBoxFontType tbft, TextBoxFontType tbft,
@ -89,6 +117,14 @@ void textbox_font ( textbox *tb, TextBoxFontType tbft );
*/ */
void textbox_text ( textbox *tb, const char *text ); void textbox_text ( textbox *tb, const char *text );
/**
* @param tb Handle to the textbox
* @param action the #KeyBindingAction to execute on textbox
*
* Execute an action on the textbox.
*
* @return TRUE if action was taken.
*/
int textbox_keybinding ( textbox *tb, KeyBindingAction action ); int textbox_keybinding ( textbox *tb, KeyBindingAction action );
/** /**
* @param tb Handle to the textbox * @param tb Handle to the textbox
@ -208,11 +244,44 @@ void textbox_cursor_inc ( textbox *tb );
*/ */
void textbox_delete ( textbox *tb, int pos, int dlen ); void textbox_delete ( textbox *tb, int pos, int dlen );
/**
* @param tb Handle to the textbox
* @param x The new horizontal position to place with textbox
* @param y The new vertical position to place with textbox
* @param w The new width of the textbox
* @param h The new height of the textbox
*
* Move and resize the textbox.
* @TODO remove for #widget_resize and #widget_move
*/
void textbox_moveresize ( textbox *tb, int x, int y, int w, int h ); void textbox_moveresize ( textbox *tb, int x, int y, int w, int h );
/**
* Get the (estimated) with of a character, can be used to calculate window width.
*
* @returns the estimated width of a character.
*/
int textbox_get_estimated_char_height ( void ); int textbox_get_estimated_char_height ( void );
/**
* @param p The new default PangoContext
*
* Set the default pango context (with font description) for all textboxes.
*/
void textbox_set_pango_context ( PangoContext *p ); void textbox_set_pango_context ( PangoContext *p );
/**
* @param tb Handle to the textbox
* @param list New pango attributes
*
* Sets #list as active pango attributes.
*/
void textbox_set_pango_attributes ( textbox *tb, PangoAttrList *list ); void textbox_set_pango_attributes ( textbox *tb, PangoAttrList *list );
/**
* @param tb Handle to the textbox
*
* Get the list of currently active pango attributes.
*
* @returns the pango attributes
*/
PangoAttrList *textbox_get_pango_attributes ( textbox *tb ); PangoAttrList *textbox_get_pango_attributes ( textbox *tb );
/** /**

View file

@ -141,7 +141,6 @@ gboolean widget_need_redraw ( widget *wid );
*/ */
gboolean widget_clicked ( widget *wid, xcb_button_press_event_t *xbe ); gboolean widget_clicked ( widget *wid, xcb_button_press_event_t *xbe );
/** /**
* @param wid The widget handle * @param wid The widget handle
* @param cb The widget click callback * @param cb The widget click callback

View file

@ -23,15 +23,22 @@
*/ */
char* window_get_text_prop ( xcb_window_t w, xcb_atom_t atom ); char* window_get_text_prop ( xcb_window_t w, xcb_atom_t atom );
/**
* @param w The xcb_window_t to set property on
* @param prop Atom of the property to change
* @param atoms List of atoms to change the property too
* @param count The length of the #atoms list.
*
* Set property on window.
*/
void window_set_atom_prop ( xcb_window_t w, xcb_atom_t prop, xcb_atom_t *atoms, int count ); void window_set_atom_prop ( xcb_window_t w, xcb_atom_t prop, xcb_atom_t *atoms, int count );
/** /** For getting the atoms in an enum */
* xcb_window_t info.
*/
#define ATOM_ENUM( x ) x #define ATOM_ENUM( x ) x
/** Get the atoms as strings. */
#define ATOM_CHAR( x ) # x #define ATOM_CHAR( x ) # x
// usable space on a monitor /** Atoms we want to pre-load */
#define EWMH_ATOMS( X ) \ #define EWMH_ATOMS( X ) \
X ( _NET_WM_WINDOW_OPACITY ), \ X ( _NET_WM_WINDOW_OPACITY ), \
X ( I3_SOCKET_PATH ), \ X ( I3_SOCKET_PATH ), \
@ -42,53 +49,93 @@ void window_set_atom_prop ( xcb_window_t w, xcb_atom_t prop, xcb_atom_t *atoms,
X ( _MOTIF_WM_HINTS ), \ X ( _MOTIF_WM_HINTS ), \
X ( ESETROOT_PMAP_ID ) X ( ESETROOT_PMAP_ID )
/** enumeration of the atoms. */
enum { EWMH_ATOMS ( ATOM_ENUM ), NUM_NETATOMS }; enum { EWMH_ATOMS ( ATOM_ENUM ), NUM_NETATOMS };
/** atoms as string */
extern const char *netatom_names[]; extern const char *netatom_names[];
/** atoms */
extern xcb_atom_t netatoms[NUM_NETATOMS]; extern xcb_atom_t netatoms[NUM_NETATOMS];
/**
* Enumerator describing the different modifier keys.
*/
enum enum
{ {
/** Shift key */
X11MOD_SHIFT, X11MOD_SHIFT,
/** Control Key */
X11MOD_CONTROL, X11MOD_CONTROL,
/** Alt key */
X11MOD_ALT, X11MOD_ALT,
/** Meta key */
X11MOD_META, X11MOD_META,
/** Super (window) key */
X11MOD_SUPER, X11MOD_SUPER,
/** Hyper key */
X11MOD_HYPER, X11MOD_HYPER,
/** Any modifier */
X11MOD_ANY, X11MOD_ANY,
/** Number of modifier keys */
NUM_X11MOD NUM_X11MOD
}; };
/**
* Structure describing a workarea/monitor.
*/
typedef struct _workarea typedef struct _workarea
{ {
/** numeric monitor id. */
int monitor_id; int monitor_id;
/** if monitor is set as primary monitor. */
int primary; int primary;
int x, y, w, h; /** Horizontal location (in pixels) of the monitor. */
int x;
/** Vertical location (in pixels) of the monitor. */
int y;
/** Width of the monitor. */
int w;
/** Height of the monitor */
int h;
/** Output name of the monitor, e.g. eDP1 or VGA-1 */
char *name; char *name;
/** Pointer to next monitor */
struct _workarea *next; struct _workarea *next;
} workarea; } workarea;
int monitor_active ( workarea *mon );
// find the dimensions of the monitor displaying point x,y
void monitor_dimensions ( int x, int y, workarea *mon );
// Find the dimensions of the monitor specified by user.
int monitor_get_dimension ( int monitor_id, workarea *mon );
int monitor_get_smallest_size ( void );
/** /**
* Release keyboard. * @param mon workarea to be filled in.
*
* Fills in #mon with the information about the monitor rofi should show on.
*
* @returns TRUE if monitor is found, FALSE if no monitor could be detected.
*/
int monitor_active ( workarea *mon );
/**
* Release keyboard grab on root window.
*/ */
void release_keyboard ( void ); void release_keyboard ( void );
/**
* Release pointer grab on root window.
*/
void release_pointer ( void ); void release_pointer ( void );
/** /**
* @param w xcb_window_t we want to grab keyboard on. * @param w xcb_window_t we want to grab keyboard on.
* *
* Grab keyboard and mouse. * Grab keyboard.
* *
* @return 1 when keyboard is grabbed, 0 not. * @return 1 when keyboard is grabbed, 0 not.
*/ */
int take_keyboard ( xcb_window_t w ); int take_keyboard ( xcb_window_t w );
/**
* @param w xcb_window_t we want to grab mouse on.
*
* Grab mouse.
*
* @return 1 when mouse is grabbed, 0 not.
*/
int take_pointer ( xcb_window_t w ); int take_pointer ( xcb_window_t w );
/** /**
@ -98,6 +145,13 @@ int take_pointer ( xcb_window_t w );
*/ */
unsigned int x11_canonalize_mask ( unsigned int mask ); unsigned int x11_canonalize_mask ( unsigned int mask );
/**
* @param xkb the xkb structure.
*
* Calculates the mask of all active modifier keys.
*
* @returns the mask describing all active modifier keys.
*/
unsigned int x11_get_current_mask ( xkb_stuff *xkb ); unsigned int x11_get_current_mask ( xkb_stuff *xkb );
/** /**
@ -126,10 +180,21 @@ void x11_set_window_opacity ( xcb_window_t box, unsigned int opacity );
*/ */
void x11_setup ( xkb_stuff *xkb ); void x11_setup ( xkb_stuff *xkb );
extern xcb_depth_t *depth; /**
* Depth of visual
*/
extern xcb_depth_t *depth;
/**
* Visual to use for creating window
*/
extern xcb_visualtype_t *visual; extern xcb_visualtype_t *visual;
extern xcb_colormap_t map; /**
extern xcb_depth_t *root_depth; * Color map to use for creating window
*/
extern xcb_colormap_t map;
/**
* Depth of root window.
*/
extern xcb_visualtype_t *root_visual; extern xcb_visualtype_t *root_visual;
/** /**
* This function tries to create a 32bit TrueColor colormap. * This function tries to create a 32bit TrueColor colormap.
@ -137,9 +202,19 @@ extern xcb_visualtype_t *root_visual;
*/ */
void x11_create_visual_and_colormap ( void ); void x11_create_visual_and_colormap ( void );
/**
* Structure describing a cairo color.
*/
typedef struct typedef struct
{ {
double red, green, blue, alpha; /** red channel */
double red;
/** green channel */
double green;
/** blue channel */
double blue;
/** alpha channel */
double alpha;
} Color; } Color;
/** /**
@ -149,10 +224,32 @@ typedef struct
*/ */
Color color_get ( const char *const name ); Color color_get ( const char *const name );
/**
* @param d cairo drawing context to set color on
*
* Set cairo drawing context source color to the background color.
*/
void color_background ( cairo_t *d ); void color_background ( cairo_t *d );
/**
* @param d cairo drawing context to set color on
*
* Set cairo drawing context source color to the border color.
*/
void color_border ( cairo_t *d ); void color_border ( cairo_t *d );
/**
* @param d cairo drawing context to set color on
*
* Set cairo drawing context source color to the separator color.
*/
void color_separator ( cairo_t *d ); void color_separator ( cairo_t *d );
/**
* @param d cairo drawing context to set color on.
* @param col The color to set.
*
* Sets col as cairo source color.
*/
void x11_helper_set_cairo_rgba ( cairo_t *d, Color col ); void x11_helper_set_cairo_rgba ( cairo_t *d, Color col );
/** /**
@ -167,7 +264,20 @@ cairo_surface_t * x11_helper_get_bg_surface ( void );
* Used for positioning rofi. * Used for positioning rofi.
*/ */
void x11_build_monitor_layout ( void ); void x11_build_monitor_layout ( void );
/**
* Dump the monitor layout to stdout.
*/
void x11_dump_monitor_layout ( void ); void x11_dump_monitor_layout ( void );
/**
* @param mask the mask to check for key
* @param key the key to check in mask
*
* Check if key is in the modifier mask.
*
* @returns TRUE if key is in the modifier mask
*/
int x11_modifier_active ( unsigned int mask, int key ); int x11_modifier_active ( unsigned int mask, int key );
/** /**

View file

@ -537,12 +537,8 @@ int config_sanity_check ( void )
// Check size // Check size
{ {
int ssize = monitor_get_smallest_size ( );
workarea mon; workarea mon;
if ( monitor_active ( &mon ) ) { if ( !monitor_active ( &mon ) ) {
ssize = MIN ( mon.w, mon.h );
}
else{
const char *name = config.monitor; const char *name = config.monitor;
if ( name && name[0] == '-' ) { if ( name && name[0] == '-' ) {
int index = name[1] - '0'; int index = name[1] - '0';

View file

@ -113,7 +113,7 @@ void widget_queue_redraw ( widget *wid )
// Find toplevel widget. // Find toplevel widget.
while ( iter->parent != NULL ) { while ( iter->parent != NULL ) {
iter->need_redraw = TRUE; iter->need_redraw = TRUE;
iter = iter->parent; iter = iter->parent;
} }
iter->need_redraw = TRUE; iter->need_redraw = TRUE;
} }

View file

@ -71,7 +71,6 @@ xcb_stuff *xcb = &xcb_int;
xcb_depth_t *depth = NULL; xcb_depth_t *depth = NULL;
xcb_visualtype_t *visual = NULL; xcb_visualtype_t *visual = NULL;
xcb_colormap_t map = XCB_COLORMAP_NONE; xcb_colormap_t map = XCB_COLORMAP_NONE;
xcb_depth_t *root_depth = NULL;
xcb_visualtype_t *root_visual = NULL; xcb_visualtype_t *root_visual = NULL;
xcb_atom_t netatoms[NUM_NETATOMS]; xcb_atom_t netatoms[NUM_NETATOMS];
const char *netatom_names[] = { EWMH_ATOMS ( ATOM_CHAR ) }; const char *netatom_names[] = { EWMH_ATOMS ( ATOM_CHAR ) };
@ -325,17 +324,7 @@ void x11_dump_monitor_layout ( void )
} }
} }
int monitor_get_smallest_size ( void ) static int monitor_get_dimension ( int monitor_id, workarea *mon )
{
int size = MIN ( xcb->screen->width_in_pixels, xcb->screen->height_in_pixels );
for ( workarea *iter = xcb->monitors; iter; iter = iter->next ) {
size = MIN ( iter->w, size );
size = MIN ( iter->h, size );
}
return size;
}
int monitor_get_dimension ( int monitor_id, workarea *mon )
{ {
memset ( mon, 0, sizeof ( workarea ) ); memset ( mon, 0, sizeof ( workarea ) );
mon->w = xcb->screen->width_in_pixels; mon->w = xcb->screen->width_in_pixels;
@ -351,7 +340,7 @@ int monitor_get_dimension ( int monitor_id, workarea *mon )
return FALSE; return FALSE;
} }
// find the dimensions of the monitor displaying point x,y // find the dimensions of the monitor displaying point x,y
void monitor_dimensions ( int x, int y, workarea *mon ) static void monitor_dimensions ( int x, int y, workarea *mon )
{ {
memset ( mon, 0, sizeof ( workarea ) ); memset ( mon, 0, sizeof ( workarea ) );
mon->w = xcb->screen->width_in_pixels; mon->w = xcb->screen->width_in_pixels;
@ -415,7 +404,7 @@ static int monitor_active_from_id ( int mon_id, workarea *mon )
if ( xcb_ewmh_get_desktop_viewport_reply ( &xcb->ewmh, c, &vp, NULL ) ) { if ( xcb_ewmh_get_desktop_viewport_reply ( &xcb->ewmh, c, &vp, NULL ) ) {
if ( current_desktop < vp.desktop_viewport_len ) { if ( current_desktop < vp.desktop_viewport_len ) {
monitor_dimensions ( vp.desktop_viewport[current_desktop].x, monitor_dimensions ( vp.desktop_viewport[current_desktop].x,
vp.desktop_viewport[current_desktop].y, mon ); vp.desktop_viewport[current_desktop].y, mon );
xcb_ewmh_get_desktop_viewport_reply_wipe ( &vp ); xcb_ewmh_get_desktop_viewport_reply_wipe ( &vp );
return TRUE; return TRUE;
} }
@ -467,7 +456,7 @@ static int monitor_active_from_id ( int mon_id, workarea *mon )
// This is our give up point. // This is our give up point.
return FALSE; return FALSE;
} }
g_log ( LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "Failed to find monitor, fall back to monitor showing mouse."); g_log ( LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "Failed to find monitor, fall back to monitor showing mouse." );
return monitor_active_from_id ( -5, mon ); return monitor_active_from_id ( -5, mon );
} }
@ -766,6 +755,7 @@ void x11_setup ( xkb_stuff *xkb )
void x11_create_visual_and_colormap ( void ) void x11_create_visual_and_colormap ( void )
{ {
xcb_depth_t *root_depth = NULL;
xcb_depth_iterator_t depth_iter; xcb_depth_iterator_t depth_iter;
for ( depth_iter = xcb_screen_allowed_depths_iterator ( xcb->screen ); depth_iter.rem; xcb_depth_next ( &depth_iter ) ) { for ( depth_iter = xcb_screen_allowed_depths_iterator ( xcb->screen ); depth_iter.rem; xcb_depth_next ( &depth_iter ) ) {
xcb_depth_t *d = depth_iter.data; xcb_depth_t *d = depth_iter.data;