mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-19 20:38:08 +01:00
MenuStyle option
This commit is contained in:
@@ -3,7 +3,7 @@ Changes since version 0.52.0:
|
|||||||
|
|
||||||
- patched wmsetbg to work with dynamically loadable texture renderer code
|
- patched wmsetbg to work with dynamically loadable texture renderer code
|
||||||
- added libwmfun to distribution (forgot to do so in 0.52.0)
|
- added libwmfun to distribution (forgot to do so in 0.52.0)
|
||||||
- added alternative menu style option
|
- added MenuStyle option
|
||||||
- changed configuration updating to use notifications
|
- changed configuration updating to use notifications
|
||||||
- fixed window move through workspaces in nonopaquemove
|
- fixed window move through workspaces in nonopaquemove
|
||||||
- added message to immediately reread configuration data
|
- added message to immediately reread configuration data
|
||||||
|
|||||||
13
NEWS
13
NEWS
@@ -2,12 +2,21 @@
|
|||||||
NEWS for veteran Window Maker users
|
NEWS for veteran Window Maker users
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
|
|
||||||
--- 0.52.1
|
--- 0.53.0
|
||||||
|
|
||||||
New Option
|
New Option
|
||||||
----------
|
----------
|
||||||
|
|
||||||
AlternativeMenuStyle=YES; will make textures in menus to be unsegmented.
|
MenuStyle=<style>; will change the menu texture style.
|
||||||
|
|
||||||
|
<style> can be:
|
||||||
|
normal (default): for the traditional one texture per item, with bevels in
|
||||||
|
each
|
||||||
|
|
||||||
|
singleTexture: for a single texture that spans the whole menu, with bevels
|
||||||
|
in each item
|
||||||
|
|
||||||
|
flat: singleTexture without the bevels
|
||||||
|
|
||||||
|
|
||||||
--- 0.52.0
|
--- 0.52.0
|
||||||
|
|||||||
@@ -1337,6 +1337,7 @@ WMSetColorPanelColor(WMColorPanel *panel, WMColor *color)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
updateSwatch(WMColorPanel *panel, RColor color)
|
updateSwatch(WMColorPanel *panel, RColor color)
|
||||||
{
|
{
|
||||||
WMScreen *scr = WMWidgetScreen(panel->win);
|
WMScreen *scr = WMWidgetScreen(panel->win);
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
{
|
{
|
||||||
|
WindozeCycling = YES;
|
||||||
|
PopupSwitchMenu = NO;
|
||||||
AlternativeMenuStyle = NO;
|
AlternativeMenuStyle = NO;
|
||||||
DisableMiniwindows = NO;
|
DisableMiniwindows = NO;
|
||||||
OpenTransientOnOwnerWorkspace = NO;
|
OpenTransientOnOwnerWorkspace = NO;
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ AC_INIT(src/WindowMaker.h)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
AM_INIT_AUTOMAKE(WindowMaker, 0.52.0)
|
AM_INIT_AUTOMAKE(WindowMaker, 0.53.0)
|
||||||
|
|
||||||
AM_PROG_LIBTOOL
|
AM_PROG_LIBTOOL
|
||||||
|
|
||||||
@@ -853,6 +853,9 @@ echo "JPEG support will not be included because the JPEG library is"
|
|||||||
echo "not installed correctly or was not found. Background images"
|
echo "not installed correctly or was not found. Background images"
|
||||||
echo "from themes will not display as they usually are JPEG files."
|
echo "from themes will not display as they usually are JPEG files."
|
||||||
echo
|
echo
|
||||||
|
echo "To fix, download and install the jpeg library and/or make sure you"
|
||||||
|
echo "installed all jpeg related packages, like jpeg-devel."
|
||||||
|
echo
|
||||||
echo "WARNING WARNING WARNING WARNING WARNING WARNING WARNING"
|
echo "WARNING WARNING WARNING WARNING WARNING WARNING WARNING"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -194,6 +194,12 @@ typedef enum {
|
|||||||
#define IY_LEFT 0
|
#define IY_LEFT 0
|
||||||
|
|
||||||
|
|
||||||
|
/* menu styles */
|
||||||
|
#define MS_NORMAL 0
|
||||||
|
#define MS_SINGLE_TEXTURE 1
|
||||||
|
#define MS_FLAT 2
|
||||||
|
|
||||||
|
|
||||||
/* program states */
|
/* program states */
|
||||||
#define WSTATE_NORMAL 0
|
#define WSTATE_NORMAL 0
|
||||||
#define WSTATE_NEED_EXIT 1
|
#define WSTATE_NEED_EXIT 1
|
||||||
@@ -314,7 +320,6 @@ typedef struct WPreferences {
|
|||||||
|
|
||||||
char auto_focus; /* focus window when it's mapped */
|
char auto_focus; /* focus window when it's mapped */
|
||||||
|
|
||||||
char alt_menu_style;
|
|
||||||
|
|
||||||
char *icon_back_file; /* background image for icons */
|
char *icon_back_file; /* background image for icons */
|
||||||
|
|
||||||
@@ -332,6 +337,8 @@ typedef struct WPreferences {
|
|||||||
|
|
||||||
int icon_size; /* size of the icon */
|
int icon_size; /* size of the icon */
|
||||||
|
|
||||||
|
int menu_style; /* menu decoration style */
|
||||||
|
|
||||||
char ws_advance; /* Create new workspace and advance */
|
char ws_advance; /* Create new workspace and advance */
|
||||||
|
|
||||||
char ws_cycle; /* Cycle existing workspaces */
|
char ws_cycle; /* Cycle existing workspaces */
|
||||||
|
|||||||
@@ -347,22 +347,6 @@ updateDockNumbers(WScreen *scr)
|
|||||||
}
|
}
|
||||||
#endif /* WS_INDICATOR */
|
#endif /* WS_INDICATOR */
|
||||||
|
|
||||||
#ifdef HIDDENDOT
|
|
||||||
static void
|
|
||||||
draw_dot(WScreen *scr, Drawable d)
|
|
||||||
{
|
|
||||||
GC gc;
|
|
||||||
int y;
|
|
||||||
gc = scr->draw_gc;
|
|
||||||
y = wPreferences.icon_size-6;
|
|
||||||
XSetForeground(dpy, gc, scr->black_pixel);
|
|
||||||
XDrawLine(dpy, d, gc, 4, y, 5, y);
|
|
||||||
XDrawPoint(dpy, d, gc, 4, y+1);
|
|
||||||
XSetForeground(dpy, gc, scr->white_pixel);
|
|
||||||
XDrawLine(dpy, d, gc, 6, y, 6, y+1);
|
|
||||||
XDrawPoint(dpy, d, gc, 5, y+1);
|
|
||||||
}
|
|
||||||
#endif /* HIDDENDOT */
|
|
||||||
|
|
||||||
void
|
void
|
||||||
wAppIconPaint(WAppIcon *aicon)
|
wAppIconPaint(WAppIcon *aicon)
|
||||||
|
|||||||
@@ -316,6 +316,7 @@ wClientCheckProperty(WWindow *wwin, XPropertyEvent *event)
|
|||||||
switch (event->atom) {
|
switch (event->atom) {
|
||||||
case XA_WM_NAME:
|
case XA_WM_NAME:
|
||||||
/* window title was changed */
|
/* window title was changed */
|
||||||
|
wwin->flags.wm_name_changed = 1;
|
||||||
if (wwin->frame) {
|
if (wwin->frame) {
|
||||||
if (!wFetchName(dpy, wwin->client_win, &tmp)) {
|
if (!wFetchName(dpy, wwin->client_win, &tmp)) {
|
||||||
/* the hint was removed */
|
/* the hint was removed */
|
||||||
|
|||||||
@@ -112,7 +112,6 @@ typedef struct {
|
|||||||
} WOptionEnumeration;
|
} WOptionEnumeration;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* type converters */
|
/* type converters */
|
||||||
static int getBool();
|
static int getBool();
|
||||||
static int getInt();
|
static int getInt();
|
||||||
@@ -134,6 +133,7 @@ static int getModMask();
|
|||||||
static int getRImage();
|
static int getRImage();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* value setting functions */
|
/* value setting functions */
|
||||||
static int setJustify();
|
static int setJustify();
|
||||||
static int setIfDockPresent();
|
static int setIfDockPresent();
|
||||||
@@ -170,7 +170,7 @@ static int setIconPosition();
|
|||||||
static int setClipTitleFont();
|
static int setClipTitleFont();
|
||||||
static int setClipTitleColor();
|
static int setClipTitleColor();
|
||||||
|
|
||||||
static int setNothing();
|
static int setMenuStyle();
|
||||||
|
|
||||||
|
|
||||||
static int updateUsableArea();
|
static int updateUsableArea();
|
||||||
@@ -286,10 +286,16 @@ static WOptionEnumeration seIconPositions[] = {
|
|||||||
{NULL, 0, 0}
|
{NULL, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static WOptionEnumeration seMenuStyles[] = {
|
||||||
|
{"normal", MS_NORMAL, 0},
|
||||||
|
{"singletexture", MS_SINGLE_TEXTURE, 0},
|
||||||
|
{"flat", MS_FLAT, 0},
|
||||||
|
{NULL, 0, 0}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* All entries in the tables bellow, NEED to have a default value
|
* ALL entries in the tables bellow, NEED to have a default value
|
||||||
* defined, and this value needs to be correct.
|
* defined, and this value needs to be correct.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -475,8 +481,8 @@ WDefaultEntry optionList[] = {
|
|||||||
},
|
},
|
||||||
#endif /* WEENDOZE_CYCLE */
|
#endif /* WEENDOZE_CYCLE */
|
||||||
/* style options */
|
/* style options */
|
||||||
{"AlternativeMenuStyle", "NO", (void*)REFRESH_MENU_TEXTURE,
|
{"MenuStyle", "normal", seMenuStyles,
|
||||||
&wPreferences.alt_menu_style, getBool, setNothing
|
&wPreferences.menu_style, getEnum, setMenuStyle
|
||||||
},
|
},
|
||||||
{"WidgetColor", "(solid, gray)", NULL,
|
{"WidgetColor", "(solid, gray)", NULL,
|
||||||
NULL, getTexture, setWidgetColor,
|
NULL, getTexture, setWidgetColor,
|
||||||
@@ -2200,7 +2206,7 @@ static int
|
|||||||
getModMask(WScreen *scr, WDefaultEntry *entry, proplist_t value, void *addr,
|
getModMask(WScreen *scr, WDefaultEntry *entry, proplist_t value, void *addr,
|
||||||
void **ret)
|
void **ret)
|
||||||
{
|
{
|
||||||
unsigned int mask;
|
static unsigned int mask;
|
||||||
char *str;
|
char *str;
|
||||||
|
|
||||||
STRINGP("Modifier Key");
|
STRINGP("Modifier Key");
|
||||||
@@ -2927,9 +2933,9 @@ updateUsableArea(WScreen *scr, WDefaultEntry *entry, void *bar, void *foo)
|
|||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
setNothing(WScreen *scr, WDefaultEntry *entry, int *value, void *foo)
|
setMenuStyle(WScreen *scr, WDefaultEntry *entry, int *value, void *foo)
|
||||||
{
|
{
|
||||||
return (int)entry->extra_data;
|
return REFRESH_MENU_TEXTURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1338,7 +1338,7 @@ doWindozeCycle(WWindow *wwin, XEvent *event, Bool next)
|
|||||||
if (!wwin)
|
if (!wwin)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
puts("IN");
|
/* puts("IN");*/
|
||||||
keymap = XGetModifierMapping(dpy);
|
keymap = XGetModifierMapping(dpy);
|
||||||
|
|
||||||
|
|
||||||
@@ -1374,7 +1374,7 @@ doWindozeCycle(WWindow *wwin, XEvent *event, Bool next)
|
|||||||
WMHandleEvent(&ev);
|
WMHandleEvent(&ev);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
puts("EV");
|
/*puts("EV");*/
|
||||||
/* ignore CapsLock */
|
/* ignore CapsLock */
|
||||||
modifiers = ev.xkey.state & ValidModMask;
|
modifiers = ev.xkey.state & ValidModMask;
|
||||||
|
|
||||||
@@ -1415,14 +1415,14 @@ puts("EV");
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
puts("OUT");
|
/*puts("OUT");*/
|
||||||
XFree(keymap);
|
XFree(keymap);
|
||||||
|
|
||||||
XUngrabKeyboard(dpy, CurrentTime);
|
XUngrabKeyboard(dpy, CurrentTime);
|
||||||
wSetFocusTo(scr, newFocused);
|
wSetFocusTo(scr, newFocused);
|
||||||
scr->flags.doing_alt_tab = 0;
|
scr->flags.doing_alt_tab = 0;
|
||||||
if (openedSwitchMenu)
|
if (openedSwitchMenu)
|
||||||
OpenSwitchMenu(scr, scr->scr_width/2, scr->scr_height/2, False);
|
OpenSwitchMenu(scr, scr->scr_width/2, scr->scr_height/2, False);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
138
src/menu.c
138
src/menu.c
@@ -437,6 +437,63 @@ wMenuRemoveItem(WMenu *menu, int index)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static Pixmap
|
||||||
|
renderTexture(WMenu *menu)
|
||||||
|
{
|
||||||
|
RImage *img;
|
||||||
|
Pixmap pix;
|
||||||
|
int i;
|
||||||
|
RColor light;
|
||||||
|
RColor dark;
|
||||||
|
RColor mid;
|
||||||
|
WScreen *scr = menu->menu->screen_ptr;
|
||||||
|
WTexture *texture = scr->menu_item_texture;
|
||||||
|
|
||||||
|
if (wPreferences.menu_style == MS_NORMAL) {
|
||||||
|
img = wTextureRenderImage(texture, menu->menu->width,
|
||||||
|
menu->entry_height, WREL_MENUENTRY);
|
||||||
|
} else {
|
||||||
|
img = wTextureRenderImage(texture, menu->menu->width,
|
||||||
|
menu->menu->height+1, WREL_MENUENTRY);
|
||||||
|
}
|
||||||
|
if (!img) {
|
||||||
|
wwarning(_("could not render texture: %s"),
|
||||||
|
RMessageForError(RErrorCode));
|
||||||
|
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wPreferences.menu_style == MS_SINGLE_TEXTURE) {
|
||||||
|
light.alpha = 0;
|
||||||
|
light.red = light.green = light.blue = 80;
|
||||||
|
|
||||||
|
dark.alpha = 255;
|
||||||
|
dark.red = dark.green = dark.blue = 0;
|
||||||
|
|
||||||
|
mid.alpha = 0;
|
||||||
|
mid.red = mid.green = mid.blue = 40;
|
||||||
|
|
||||||
|
for (i = 1; i < menu->entry_no; i++) {
|
||||||
|
ROperateLine(img, RSubtractOperation, 0, i*menu->entry_height-2,
|
||||||
|
menu->menu->width-1, i*menu->entry_height-2, &mid);
|
||||||
|
|
||||||
|
RDrawLine(img, 0, i*menu->entry_height-1,
|
||||||
|
menu->menu->width-1, i*menu->entry_height-1, &dark);
|
||||||
|
|
||||||
|
ROperateLine(img, RAddOperation, 0, i*menu->entry_height,
|
||||||
|
menu->menu->width-1, i*menu->entry_height,
|
||||||
|
&light);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!RConvertImage(scr->rcontext, img, &pix)) {
|
||||||
|
wwarning(_("error rendering image:%s"), RMessageForError(RErrorCode));
|
||||||
|
}
|
||||||
|
RDestroyImage(img);
|
||||||
|
|
||||||
|
return pix;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
updateTexture(WMenu *menu)
|
updateTexture(WMenu *menu)
|
||||||
{
|
{
|
||||||
@@ -447,15 +504,7 @@ updateTexture(WMenu *menu)
|
|||||||
if (!menu->flags.brother) {
|
if (!menu->flags.brother) {
|
||||||
FREE_PIXMAP(menu->menu_texture_data);
|
FREE_PIXMAP(menu->menu_texture_data);
|
||||||
|
|
||||||
if (wPreferences.alt_menu_style) {
|
menu->menu_texture_data = renderTexture(menu);
|
||||||
wTextureRender(scr, scr->menu_item_texture,
|
|
||||||
&menu->menu_texture_data, menu->menu->width,
|
|
||||||
menu->menu->height, WREL_MENUENTRY);
|
|
||||||
} else {
|
|
||||||
wTextureRender(scr, scr->menu_item_texture,
|
|
||||||
&menu->menu_texture_data, menu->menu->width,
|
|
||||||
menu->entry_height, WREL_MENUENTRY);
|
|
||||||
}
|
|
||||||
|
|
||||||
XSetWindowBackgroundPixmap(dpy, menu->menu->window,
|
XSetWindowBackgroundPixmap(dpy, menu->menu->window,
|
||||||
menu->menu_texture_data);
|
menu->menu_texture_data);
|
||||||
@@ -629,31 +678,48 @@ wMenuDestroy(WMenu *menu, int recurse)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#define F_NORMAL 0
|
||||||
|
#define F_TOP 1
|
||||||
|
#define F_BOTTOM 2
|
||||||
|
#define F_NONE 3
|
||||||
|
|
||||||
static void
|
static void
|
||||||
drawFrame(WScreen *scr, Window win, int y, int w, int h)
|
drawFrame(WScreen *scr, Window win, int y, int w, int h, int type)
|
||||||
{
|
{
|
||||||
XSegment segs[2];
|
XSegment segs[2];
|
||||||
|
int i;
|
||||||
|
|
||||||
segs[0].x1 = 0;
|
i = 0;
|
||||||
segs[0].y1 = y;
|
segs[i].x1 = segs[i].x2 = w-1;
|
||||||
segs[0].x2 = w-1;
|
segs[i].y1 = y;
|
||||||
segs[0].y2 = y;
|
segs[i].y2 = y + h - 1;
|
||||||
segs[1].x1 = 0;
|
i++;
|
||||||
segs[1].y1 = y;
|
if (type != F_TOP && type != F_NONE) {
|
||||||
segs[1].x2 = 0;
|
segs[i].x1 = 1;
|
||||||
segs[1].y2 = y + h - 2;
|
segs[i].y1 = segs[i].y2 = y + h-2;
|
||||||
XDrawSegments(dpy, win, scr->menu_item_auxtexture->light_gc, segs, 2);
|
segs[i].x2 = w-1;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
XDrawSegments(dpy, win, scr->menu_item_auxtexture->dim_gc, segs, i);
|
||||||
|
|
||||||
XDrawLine(dpy, win, scr->menu_item_auxtexture->dark_gc, 0, y+h-1,
|
i = 0;
|
||||||
w-1, y+h-1);
|
segs[i].x1 = 0;
|
||||||
|
segs[i].y1 = y;
|
||||||
|
segs[i].x2 = 0;
|
||||||
|
segs[i].y2 = y + h - 1;
|
||||||
|
i++;
|
||||||
|
if (type != F_BOTTOM && type != F_NONE) {
|
||||||
|
segs[i].x1 = 0;
|
||||||
|
segs[i].y1 = y;
|
||||||
|
segs[i].x2 = w-1;
|
||||||
|
segs[i].y2 = y;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
XDrawSegments(dpy, win, scr->menu_item_auxtexture->light_gc, segs, i);
|
||||||
|
|
||||||
segs[0].x1 = 1;
|
if (type != F_TOP && type != F_NONE)
|
||||||
segs[0].y1 = segs[0].y2 = y + h-2;
|
XDrawLine(dpy, win, scr->menu_item_auxtexture->dark_gc, 0, y+h-1,
|
||||||
segs[0].x2 = w-1;
|
w-1, y+h-1);
|
||||||
segs[1].x1 = segs[1].x2 = w-1;
|
|
||||||
segs[1].y1 = y + 1;
|
|
||||||
segs[1].y2 = y + h-2;
|
|
||||||
XDrawSegments(dpy, win, scr->menu_item_auxtexture->dim_gc, segs, 2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -661,6 +727,7 @@ static void
|
|||||||
paintEntry(WMenu *menu, int index, int selected)
|
paintEntry(WMenu *menu, int index, int selected)
|
||||||
{
|
{
|
||||||
int x, y, w, h, tw;
|
int x, y, w, h, tw;
|
||||||
|
int type;
|
||||||
GC light, dim, dark, textGC;
|
GC light, dim, dark, textGC;
|
||||||
WScreen *scr=menu->frame->screen_ptr;
|
WScreen *scr=menu->frame->screen_ptr;
|
||||||
Window win = menu->menu->window;
|
Window win = menu->menu->window;
|
||||||
@@ -675,17 +742,28 @@ paintEntry(WMenu *menu, int index, int selected)
|
|||||||
dim = scr->menu_item_auxtexture->dim_gc;
|
dim = scr->menu_item_auxtexture->dim_gc;
|
||||||
dark = scr->menu_item_auxtexture->dark_gc;
|
dark = scr->menu_item_auxtexture->dark_gc;
|
||||||
|
|
||||||
|
if (wPreferences.menu_style == MS_FLAT && menu->entry_no > 1) {
|
||||||
|
if (index == 0)
|
||||||
|
type = F_TOP;
|
||||||
|
else if (index == menu->entry_no - 1)
|
||||||
|
type = F_BOTTOM;
|
||||||
|
else
|
||||||
|
type = F_NONE;
|
||||||
|
} else {
|
||||||
|
type = F_NORMAL;
|
||||||
|
}
|
||||||
|
|
||||||
/* paint background */
|
/* paint background */
|
||||||
if (selected) {
|
if (selected) {
|
||||||
XSetForeground(dpy, scr->select_menu_gc, scr->select_pixel);
|
XSetForeground(dpy, scr->select_menu_gc, scr->select_pixel);
|
||||||
XFillRectangle(dpy, win, scr->select_menu_gc, 1, y+1, w-2, h-3);
|
XFillRectangle(dpy, win, scr->select_menu_gc, 1, y+1, w-2, h-3);
|
||||||
if (scr->menu_item_texture->any.type == WTEX_SOLID)
|
if (scr->menu_item_texture->any.type == WTEX_SOLID)
|
||||||
drawFrame(scr, win, y, w, h);
|
drawFrame(scr, win, y, w, h, type);
|
||||||
} else {
|
} else {
|
||||||
if (scr->menu_item_texture->any.type == WTEX_SOLID) {
|
if (scr->menu_item_texture->any.type == WTEX_SOLID) {
|
||||||
XClearArea(dpy, win, 0, y + 1, w - 1, h - 3, False);
|
XClearArea(dpy, win, 0, y + 1, w - 1, h - 3, False);
|
||||||
/* draw the frame */
|
/* draw the frame */
|
||||||
drawFrame(scr, win, y, w, h);
|
drawFrame(scr, win, y, w, h, type);
|
||||||
} else {
|
} else {
|
||||||
XClearArea(dpy, win, 0, y, w, h, False);
|
XClearArea(dpy, win, 0, y, w, h, False);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -897,7 +897,10 @@ makeClientState(WWindow *wwin)
|
|||||||
appendStringInArray(state, wwin->wm_class);
|
appendStringInArray(state, wwin->wm_class);
|
||||||
|
|
||||||
/* WM_NAME */
|
/* WM_NAME */
|
||||||
|
if (wwin->flags.wm_name_changed)
|
||||||
|
appendStringInArray(state, "");
|
||||||
|
else
|
||||||
|
appendStringInArray(state, wwin->frame->name);
|
||||||
|
|
||||||
/* geometry */
|
/* geometry */
|
||||||
sprintf(buffer, "%i %i %i %i %i %i", wwin->frame_x, wwin->frame_y,
|
sprintf(buffer, "%i %i %i %i %i %i", wwin->frame_x, wwin->frame_y,
|
||||||
|
|||||||
@@ -427,7 +427,8 @@ wTextureMakeFunction(WScreen *scr, char *lib, char *func, int argc, char **argv)
|
|||||||
|
|
||||||
|
|
||||||
RImage*
|
RImage*
|
||||||
wTextureRenderImage(WTexture *texture, int width, int height, int relief)
|
wTextureRenderImage(WTexture *texture, int width, int height,
|
||||||
|
int relief)
|
||||||
{
|
{
|
||||||
RImage *image;
|
RImage *image;
|
||||||
RColor color1;
|
RColor color1;
|
||||||
@@ -598,31 +599,6 @@ wTextureRenderImage(WTexture *texture, int width, int height, int relief)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* used only for menu entries */
|
|
||||||
void
|
|
||||||
wTextureRender(WScreen *scr, WTexture *texture, Pixmap *data,
|
|
||||||
int width, int height, int relief)
|
|
||||||
{
|
|
||||||
if (!texture)
|
|
||||||
return;
|
|
||||||
/*
|
|
||||||
switch (texture->any.type) {
|
|
||||||
case WTEX_DGRADIENT:
|
|
||||||
case WTEX_VGRADIENT:
|
|
||||||
case WTEX_HGRADIENT:
|
|
||||||
case WTEX_MHGRADIENT:
|
|
||||||
case WTEX_MVGRADIENT:
|
|
||||||
case WTEX_MDGRADIENT:
|
|
||||||
case WTEX_PIXMAP:
|
|
||||||
*/
|
|
||||||
if (!*data) {
|
|
||||||
*data = renderTexture(scr, width, height, texture, relief);
|
|
||||||
}/*
|
|
||||||
break;
|
|
||||||
}*/
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
bevelImage(RImage *image, int relief)
|
bevelImage(RImage *image, int relief)
|
||||||
@@ -661,27 +637,6 @@ bevelImage(RImage *image, int relief)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
static Pixmap
|
|
||||||
renderTexture(WScreen *scr, int width, int height, WTexture *texture,
|
|
||||||
int rel)
|
|
||||||
{
|
|
||||||
RImage *img;
|
|
||||||
Pixmap pix;
|
|
||||||
|
|
||||||
img = wTextureRenderImage(texture, width, height, rel);
|
|
||||||
|
|
||||||
if (!img) {
|
|
||||||
wwarning(_("could not render texture: %s"), RMessageForError(RErrorCode));
|
|
||||||
return None;
|
|
||||||
}
|
|
||||||
if (!RConvertImage(scr->rcontext, img, &pix)) {
|
|
||||||
wwarning(_("error rendering image:%s"), RMessageForError(RErrorCode));
|
|
||||||
}
|
|
||||||
RDestroyImage(img);
|
|
||||||
return pix;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
wDrawBevel(Drawable d, unsigned width, unsigned height,
|
wDrawBevel(Drawable d, unsigned width, unsigned height,
|
||||||
WTexSolid *texture, int relief)
|
WTexSolid *texture, int relief)
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
#ifdef USER_MENU
|
|
||||||
/* User defined menu is good, but beer's always better
|
/* User defined menu is good, but beer's always better
|
||||||
* if someone wanna start hacking something, He heard...
|
* if someone wanna start hacking something, He heard...
|
||||||
* TODO
|
* TODO
|
||||||
@@ -37,6 +36,8 @@
|
|||||||
|
|
||||||
#include "wconfig.h"
|
#include "wconfig.h"
|
||||||
|
|
||||||
|
#ifdef USER_MENU
|
||||||
|
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
#include <X11/Xutil.h>
|
#include <X11/Xutil.h>
|
||||||
#include <X11/Xproto.h>
|
#include <X11/Xproto.h>
|
||||||
|
|||||||
@@ -156,10 +156,16 @@
|
|||||||
/*
|
/*
|
||||||
* disable/enable workspace indicator in the dock
|
* disable/enable workspace indicator in the dock
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#undef WS_INDICATOR
|
#undef WS_INDICATOR
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* define USER_MENU if you want user specified menus for sending
|
||||||
|
* commands to applications. Kinda experimental..
|
||||||
|
*/
|
||||||
|
#undef USER_MENU
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* define HIDDENDOT if you want a dot to be shown in the application icon
|
* define HIDDENDOT if you want a dot to be shown in the application icon
|
||||||
* of applications that are hidden.
|
* of applications that are hidden.
|
||||||
|
|||||||
@@ -2542,7 +2542,8 @@ resizebarMouseDown(WCoreWindow *sender, void *data, XEvent *event)
|
|||||||
CloseWindowMenu(wwin->screen_ptr);
|
CloseWindowMenu(wwin->screen_ptr);
|
||||||
|
|
||||||
if (wPreferences.focus_mode==WKF_CLICK
|
if (wPreferences.focus_mode==WKF_CLICK
|
||||||
&& !(event->xbutton.state&ControlMask)) {
|
&& !(event->xbutton.state&ControlMask)
|
||||||
|
&& !WFLAGP(wwin, no_focusable)) {
|
||||||
wSetFocusTo(wwin->screen_ptr, wwin);
|
wSetFocusTo(wwin->screen_ptr, wwin);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2629,7 +2630,8 @@ frameMouseDown(WObjDescriptor *desc, XEvent *event)
|
|||||||
CloseWindowMenu(wwin->screen_ptr);
|
CloseWindowMenu(wwin->screen_ptr);
|
||||||
|
|
||||||
if (wPreferences.focus_mode==WKF_CLICK
|
if (wPreferences.focus_mode==WKF_CLICK
|
||||||
&& !(event->xbutton.state&ControlMask)) {
|
&& !(event->xbutton.state&ControlMask)
|
||||||
|
&& !WFLAGP(wwin, no_focusable)) {
|
||||||
wSetFocusTo(wwin->screen_ptr, wwin);
|
wSetFocusTo(wwin->screen_ptr, wwin);
|
||||||
}
|
}
|
||||||
if (event->xbutton.button == Button1) {
|
if (event->xbutton.button == Button1) {
|
||||||
@@ -2673,7 +2675,8 @@ titlebarMouseDown(WCoreWindow *sender, void *data, XEvent *event)
|
|||||||
CloseWindowMenu(wwin->screen_ptr);
|
CloseWindowMenu(wwin->screen_ptr);
|
||||||
|
|
||||||
if (wPreferences.focus_mode==WKF_CLICK
|
if (wPreferences.focus_mode==WKF_CLICK
|
||||||
&& !(event->xbutton.state&ControlMask)) {
|
&& !(event->xbutton.state&ControlMask)
|
||||||
|
&& !WFLAGP(wwin, no_focusable)) {
|
||||||
wSetFocusTo(wwin->screen_ptr, wwin);
|
wSetFocusTo(wwin->screen_ptr, wwin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -271,6 +271,7 @@ typedef struct WWindow {
|
|||||||
|
|
||||||
unsigned int user_changed_width:1;
|
unsigned int user_changed_width:1;
|
||||||
unsigned int user_changed_height:1;
|
unsigned int user_changed_height:1;
|
||||||
|
unsigned int wm_name_changed:1;
|
||||||
|
|
||||||
#ifdef KWM_HINTS
|
#ifdef KWM_HINTS
|
||||||
unsigned int kwm_hidden_for_modules:1;
|
unsigned int kwm_hidden_for_modules:1;
|
||||||
|
|||||||
Reference in New Issue
Block a user