This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project wmaker-crm.git.
The branch, next has been updated discards 45374b598fe2917eb678a8f18418ef940b47f825 (commit) discards 6f67f80aa411adc960c4431dc4aff46652ac9228 (commit) discards e6a2edbc9c31404d8f22e1923603a1422067cffd (commit) discards 68aee92278b2222d6414c43059d1e26699fcf005 (commit) discards b11cd0cf1656150c4d9cee58631d1de7723b9e82 (commit) discards ae92bccb14432a8e4ab6619f5171a7b56506e5e6 (commit) via 2086eefb7e5c658bf0f99feb2aa4b118b188e2b1 (commit) via 842e145e0aeef633b7d0f938f57098469fee7cfe (commit) via b4cf94aacd0f9fcffd802b0a8e47e0d162ca1f20 (commit) via 2ebfcd9c5c9350d89f2346304ed8c02883020785 (commit) via 1cef020eb322f1bc2978d49ec2d846dd9d1cc15d (commit) via 30fe0fb05f6fd0030155c2643a93a562c8278711 (commit) via d1c9f791d870d88ec4f02e31b29600e1afbaa58a (commit) This update added new revisions after undoing existing revisions. That is to say, the old revision is not a strict subset of the new revision. This situation occurs when you --force push a change and generate a repository containing something like this: * -- * -- B -- O -- O -- O (45374b598fe2917eb678a8f18418ef940b47f825) \ N -- N -- N (2086eefb7e5c658bf0f99feb2aa4b118b188e2b1) When this happens we assume that you've already had alert emails for all of the O revisions, and so we here report only the revisions in the N branch from the common base, B. Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- http://repo.or.cz/w/wmaker-crm.git/commit/2086eefb7e5c658bf0f99feb2aa4b118b188e2b1 commit 2086eefb7e5c658bf0f99feb2aa4b118b188e2b1 Author: Christophe CURIS <christophe.cu...@free.fr> Date: Sat Apr 18 23:56:19 2015 +0200 texi2txt: add workaround for a known bug in "mawk" As reported by Douglas Torrance, the script that generates the plain text documentation from the texinfo source would crash due to the cross- references when the version of awk used is "mawk". This is actually a known bug in mawk: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=172774 It looks like the bug have been fixed in mawk, but Debian is still providing a broken version. To avoid problems, this patch is introducing a workaround in the matching pattern that causes the issue every time it is being used. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/script/generate-txt-from-texi.sh b/script/generate-txt-from-texi.sh index 5554e6e..3800c72 100755 --- a/script/generate-txt-from-texi.sh +++ b/script/generate-txt-from-texi.sh @@ -212,12 +212,12 @@ function end_conditional(name, local_i) { # with @value; they can also be defined from command-line (-D) # they are stored in the global array "variable[name]" function set_variable(line, local_idx, local_name, local_value) { - gsub(/^[ \t]*/, "", line); + gsub(/^[ \t]+/, "", line); local_idx = match(line, /[ \t]/); if (local_idx > 0) { local_name = substr(line, 1, local_idx - 1); local_value = substr(line, local_idx + 1); - gsub(/^[ \t]*/, "", local_value); + gsub(/^[ \t]+/, "", local_value); } else { local_name = line; local_value = ""; @@ -473,7 +473,7 @@ function new_node(args, local_nb, local_arr, local_i) { if ((local_nb < 1) || (local_nb > 4)) { report_error("bad number of argument " local_nb " for @node at line " NR); } - gsub(/^[ \t]*/, "", local_arr[1]); + gsub(/^[ \t]+/, "", local_arr[1]); gsub(/[ \t]*$/, "", local_arr[1]); if (local_arr[1] == "") { report_error("missing node name for @node at line " NR); @@ -572,7 +572,7 @@ function generate_cross_reference(args, cmd, local_nb, local_arr, local local_arr[1] = execute_commands(local_arr[1]); for (local_i = 1; local_i <= local_nb; local_i++) { - gsub(/^[ \t]*/, "", local_arr[local_i]); + gsub(/^[ \t]+/, "", local_arr[local_i]); gsub(/[ \t]*$/, "", local_arr[local_i]); } http://repo.or.cz/w/wmaker-crm.git/commit/842e145e0aeef633b7d0f938f57098469fee7cfe commit 842e145e0aeef633b7d0f938f57098469fee7cfe Author: Christophe CURIS <christophe.cu...@free.fr> Date: Sat Apr 18 20:17:30 2015 +0200 doc: re-generate the top directory documentation when "make dist" is invoked As pointed by Douglas Torrance, there are some case where the 2 docs INSTALL-WMAKER and README.i18n are not re-generated properly, one of the cases being if the user grabs the sources from Git to make a source package only (ie, without compiling anything). This patch adds a hook to "make dist" so it will re-generate the docs if needed. Because the "dist-hook" is run after Automake has copied the files to the temporary directory (distdir) then we also include an explicit copy of the files there to have the latest version. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/doc/build/Makefile.am b/doc/build/Makefile.am index c80394e..dc656e9 100644 --- a/doc/build/Makefile.am +++ b/doc/build/Makefile.am @@ -7,6 +7,13 @@ EXTRA_DIST = Readme \ # How to re-generate automatically the top-level text files all-local: $(top_srcdir)/INSTALL-WMAKER $(top_srcdir)/README.i18n +# We also re-generate the documentation when "make dist" is used, because we cannot +# be assured that the doc currently present in the directory is up-to-date, for example +# if the user did not run "make (all)" for valid reason +dist-hook: $(top_srcdir)/INSTALL-WMAKER $(top_srcdir)/README.i18n + cp -f $(top_srcdir)/INSTALL-WMAKER $(top_distdir)/INSTALL-WMAKER + cp -f $(top_srcdir)/README.i18n $(top_distdir)/README.i18n + $(top_srcdir)/INSTALL-WMAKER: $(srcdir)/Compilation.texi $(top_srcdir)/script/generate-txt-from-texi.sh $(AM_V_GEN)if test ! -e "$(top_srcdir)/INSTALL-WMAKER" -o -w "$(top_srcdir)/INSTALL-WMAKER" ; then \ $(top_srcdir)/script/generate-txt-from-texi.sh \ http://repo.or.cz/w/wmaker-crm.git/commit/b4cf94aacd0f9fcffd802b0a8e47e0d162ca1f20 commit b4cf94aacd0f9fcffd802b0a8e47e0d162ca1f20 Author: Christophe CURIS <christophe.cu...@free.fr> Date: Mon Apr 6 17:58:12 2015 +0200 Code refactoring: replaced macro 'XDND' by 'USE_DOCK_XDND' for consistency The usual way to define a macro in is to name macro with 'USE_xxx' when they are used to enable a feature 'xxx'. As the feature concerns the Dock and not DnD in general (WINGs support is not disabled), make it a bit more clear in the macro name and document the configure flag in the Installation Manual. Took opportunity to compile the corresponding file only when the feature is not disabled. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/configure.ac b/configure.ac index 4e55a94..6a02376 100644 --- a/configure.ac +++ b/configure.ac @@ -502,15 +502,16 @@ AS_IF([test "x$enable_modelock" = "xyes"], dnl XDND Drag-nd-Drop support dnl ========================= AC_ARG_ENABLE([xdnd], - [AS_HELP_STRING([--disable-xdnd], [disable Drag-nd-Drop support])], + [AS_HELP_STRING([--disable-xdnd], [disable support for Drag-and-Drop on the dock @<:@default=enabled@:>@])], [AS_CASE(["$enableval"], [yes|no], [], [AC_MSG_ERROR([bad value $enableval for --disable-xdnd]) ]) ], [enable_xdnd=yes]) AS_IF([test "x$enable_xdnd" = "xyes"], - [supported_xext="$supported_xext XDnD" - AC_DEFINE([XDND], [1], [whether Drag-nd-Drop support should be enabled])], + [supported_core="$supported_core XDnD" + AC_DEFINE([USE_DOCK_XDND], [1], [whether Drag-and-Drop on the dock should be enabled])], [unsupported="$unsupported XDnd"]) +AM_CONDITIONAL([USE_DOCK_XDND], [test "x$enable_dock_xdnd" != "xno"]) dnl XShape support diff --git a/doc/build/Compilation.texi b/doc/build/Compilation.texi index 8d1fcfd..4db3ae0 100644 --- a/doc/build/Compilation.texi +++ b/doc/build/Compilation.texi @@ -571,6 +571,11 @@ Disable support for Motif's MWM Window Manager hints. These attributes were introduced by the Motif toolkit to ask for special window appearance requests. Nowadays this is covered by the NetWM/EWMH specification, but there are still applications that rely on MWM Hints. +@item --disable-xdnd +Disable support for dragging and dropping files on the dock, which launches a user-specified command +with that file. +Starting from version 0.65.6 this feature is enabled by default. + @item --enable-ld-version-script This feature is auto-detected, and you should not use this option. When compiling a library (@file{wrlib}, ...), @emph{gcc} has the possibility to filter the list of diff --git a/src/Makefile.am b/src/Makefile.am index 56ebe08..7fe9db7 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -84,7 +84,6 @@ wmaker_SOURCES = \ usermenu.c \ usermenu.h \ xdnd.h \ - xdnd.c \ xinerama.h \ xinerama.c \ xmodifier.h \ @@ -108,6 +107,9 @@ wmaker_SOURCES = \ wsmap.c \ wsmap.h +if USE_DOCK_XDND +wmaker_SOURCES += xdnd.c +endif if USE_MWM_HINTS wmaker_SOURCES += motif.h motif.c endif diff --git a/src/appicon.c b/src/appicon.c index ed03ffc..14dba97 100644 --- a/src/appicon.c +++ b/src/appicon.c @@ -51,7 +51,7 @@ #include "placement.h" #include "misc.h" #include "event.h" -#ifdef XDND +#ifdef USE_DOCK_XDND #include "xdnd.h" #endif @@ -130,7 +130,7 @@ WAppIcon *wAppIconCreateForDock(WScreen *scr, const char *command, const char *w tile = TILE_CLIP; aicon->icon = icon_create_for_dock(scr, command, wm_instance, wm_class, tile); -#ifdef XDND +#ifdef USE_DOCK_XDND wXDNDMakeAwareness(aicon->icon->core->window); #endif @@ -309,7 +309,7 @@ static WAppIcon *wAppIconCreate(WWindow *leader_win) aicon->wm_instance = wstrdup(leader_win->wm_instance); aicon->icon = icon_create_for_wwindow(leader_win); -#ifdef XDND +#ifdef USE_DOCK_XDND wXDNDMakeAwareness(aicon->icon->core->window); #endif @@ -332,7 +332,7 @@ void wAppIconDestroy(WAppIcon * aicon) wIconDestroy(aicon->icon); if (aicon->command) wfree(aicon->command); -#ifdef XDND +#ifdef USE_DOCK_XDND if (aicon->dnd_command) wfree(aicon->dnd_command); #endif diff --git a/src/appicon.h b/src/appicon.h index 2456ba2..eb1904b 100644 --- a/src/appicon.h +++ b/src/appicon.h @@ -37,7 +37,7 @@ typedef struct WAppIcon { WIcon *icon; int x_pos, y_pos; /* absolute screen coordinate */ char *command; /* command used to launch app */ -#ifdef XDND +#ifdef USE_DOCK_XDND char *dnd_command; /* command to use when something is */ /* dropped on us */ #endif diff --git a/src/dialog.c b/src/dialog.c index 25c321e..b7b8f53 100644 --- a/src/dialog.c +++ b/src/dialog.c @@ -1316,7 +1316,7 @@ void wShowInfoPanel(WScreen *scr) strbuf = wstrappend(strbuf, ", MWM"); #endif -#ifdef XDND +#ifdef USE_DOCK_XDND strbuf = wstrappend(strbuf, ", XDnD"); #endif diff --git a/src/dock.c b/src/dock.c index 8853fa3..d4aca09 100644 --- a/src/dock.c +++ b/src/dock.c @@ -72,7 +72,7 @@ static WMPropList *dCommand = NULL; static WMPropList *dPasteCommand = NULL; -#ifdef XDND /* XXX was OFFIX */ +#ifdef USE_DOCK_XDND static WMPropList *dDropCommand = NULL; #endif static WMPropList *dAutoLaunch, *dLock; @@ -135,7 +135,7 @@ static void make_keys(void) dCommand = WMRetainPropList(WMCreatePLString("Command")); dPasteCommand = WMRetainPropList(WMCreatePLString("PasteCommand")); -#ifdef XDND +#ifdef USE_DOCK_XDND dDropCommand = WMRetainPropList(WMCreatePLString("DropCommand")); #endif dLock = WMRetainPropList(WMCreatePLString("Lock")); @@ -1496,13 +1496,13 @@ static WMPropList *make_icon_state(WAppIcon *btn) if (btn->dock != btn->icon->core->screen_ptr->dock && (btn->xindex != 0 || btn->yindex != 0)) WMPutInPLDictionary(node, dOmnipresent, omnipresent); -#ifdef XDND /* was OFFIX */ +#ifdef USE_DOCK_XDND if (btn->dnd_command) { command = WMCreatePLString(btn->dnd_command); WMPutInPLDictionary(node, dDropCommand, command); WMReleasePropList(command); } -#endif /* XDND */ +#endif /* USE_DOCK_XDND */ if (btn->paste_command) { command = WMCreatePLString(btn->paste_command); @@ -1682,7 +1682,7 @@ static WAppIcon *restore_icon_state(WScreen *scr, WMPropList *info, int type, in aicon->icon->core->descriptor.parent_type = WCLASS_DOCK_ICON; aicon->icon->core->descriptor.parent = aicon; -#ifdef XDND /* was OFFIX */ +#ifdef USE_DOCK_XDND cmd = WMGetFromPLDictionary(info, dDropCommand); if (cmd) aicon->dnd_command = wstrdup(WMGetFromPLString(cmd)); @@ -1769,7 +1769,7 @@ WAppIcon *wClipRestoreState(WScreen *scr, WMPropList *clip_state) wScreenKeepInside(scr, &icon->x_pos, &icon->y_pos, ICON_SIZE, ICON_SIZE); } } -#ifdef XDND /* was OFFIX */ +#ifdef USE_DOCK_XDND value = WMGetFromPLDictionary(clip_state, dDropCommand); if (value && WMIsPLString(value)) icon->dnd_command = wstrdup(WMGetFromPLString(value)); @@ -2035,7 +2035,7 @@ void wDockDoAutoLaunch(WDock *dock, int workspace) } } -#ifdef XDND /* was OFFIX */ +#ifdef USE_DOCK_XDND static WDock *findDock(WScreen *scr, XEvent *event, int *icon_pos) { WDock *dock; @@ -2117,7 +2117,7 @@ int wDockReceiveDNDDrop(WScreen *scr, XEvent *event) } return False; } -#endif /* XDND */ +#endif /* USE_DOCK_XDND */ Bool wDockAttachIcon(WDock *dock, WAppIcon *icon, int x, int y, Bool update_icon) { @@ -2221,7 +2221,7 @@ Bool wDockAttachIcon(WDock *dock, WAppIcon *icon, int x, int y, Bool update_icon if (wPreferences.auto_arrange_icons) wArrangeIcons(dock->screen_ptr, True); -#ifdef XDND /* was OFFIX */ +#ifdef USE_DOCK_XDND if (icon->command && !icon->dnd_command) { int len = strlen(icon->command) + 8; icon->dnd_command = wmalloc(len); @@ -2401,7 +2401,7 @@ void wDockDetach(WDock *dock, WAppIcon *icon) wfree(icon->command); icon->command = NULL; } -#ifdef XDND /* was OFFIX */ +#ifdef USE_DOCK_XDND if (icon->dnd_command) { wfree(icon->dnd_command); icon->dnd_command = NULL; @@ -3347,7 +3347,7 @@ static void trackDeadProcess(pid_t pid, unsigned char status, WDock *dock) char msg[PATH_MAX]; char *cmd; -#ifdef XDND +#ifdef USE_DOCK_XDND if (icon->drop_launch) cmd = icon->dnd_command; else @@ -4770,11 +4770,11 @@ static WDock * drawerRestoreState(WScreen *scr, WMPropList *drawer_state) drawer = wDockCreate(scr, WM_DRAWER, WMGetFromPLString(value)); /* restore DnD command and paste command */ -#ifdef XDND +#ifdef USE_DOCK_XDND value = WMGetFromPLDictionary(drawer_state, dDropCommand); if (value && WMIsPLString(value)) drawer->icon_array[0]->dnd_command = wstrdup(WMGetFromPLString(value)); -#endif /* XDND */ +#endif /* USE_DOCK_XDND */ value = WMGetFromPLDictionary(drawer_state, dPasteCommand); if (value && WMIsPLString(value)) @@ -4912,14 +4912,14 @@ static WMPropList *drawerSaveState(WDock *drawer) WMPutInPLDictionary(drawer_state, dPosition, pstr); WMReleasePropList(pstr); -#ifdef XDND +#ifdef USE_DOCK_XDND /* Store its DnD command */ if (ai->dnd_command) { pstr = WMCreatePLString(ai->dnd_command); WMPutInPLDictionary(drawer_state, dDropCommand, pstr); WMReleasePropList(pstr); } -#endif /* XDND */ +#endif /* USE_DOCK_XDND */ /* Store its paste command */ if (ai->paste_command) { diff --git a/src/dock.h b/src/dock.h index 23281a9..1e00e5f 100644 --- a/src/dock.h +++ b/src/dock.h @@ -92,7 +92,7 @@ WAppIcon *wDockFindIconForWindow(WDock *dock, Window window); void wDockDoAutoLaunch(WDock *dock, int workspace); void wDockLaunchWithState(WAppIcon *btn, WSavedState *state); -#ifdef XDND +#ifdef USE_DOCK_XDND int wDockReceiveDNDDrop(WScreen *scr, XEvent *event); #endif diff --git a/src/dockedapp.c b/src/dockedapp.c index 44eaacd..a7c12d7 100644 --- a/src/dockedapp.c +++ b/src/dockedapp.c @@ -66,7 +66,7 @@ static void updatePasteCommand(WAppIcon * icon, char *command) icon->paste_command = command; } -#ifdef XDND +#ifdef USE_DOCK_XDND static void updateDNDCommand(WAppIcon * icon, char *command) { if (icon->dnd_command) @@ -77,7 +77,7 @@ static void updateDNDCommand(WAppIcon * icon, char *command) } icon->dnd_command = command; } -#endif /* XDND */ +#endif /* USE_DOCK_XDND */ static void updateSettingsPanelIcon(AppSettingsPanel * panel) { @@ -199,7 +199,7 @@ static void panelBtnCallback(WMWidget * self, void *data) text = NULL; } updateCommand(panel->editedIcon, text); -#ifdef XDND +#ifdef USE_DOCK_XDND /* cannot free text from this, because it will be not be duplicated * in updateDNDCommand */ text = WMGetTextFieldText(panel->dndCommandField); @@ -307,7 +307,7 @@ void ShowDockAppSettingsPanel(WAppIcon * aicon) panel->dndCommandLabel = WMCreateLabel(panel->dndCommandFrame); WMResizeWidget(panel->dndCommandLabel, 256, 18); WMMoveWidget(panel->dndCommandLabel, 10, 45); -#ifdef XDND +#ifdef USE_DOCK_XDND WMSetTextFieldText(panel->dndCommandField, aicon->dnd_command); WMSetLabelText(panel->dndCommandLabel, _("%d will be replaced with the file name")); #else diff --git a/src/event.c b/src/event.c index 3e2ecb6..ce316ee 100644 --- a/src/event.c +++ b/src/event.c @@ -40,7 +40,7 @@ #ifdef USE_XSHAPE # include <X11/extensions/shape.h> #endif -#ifdef XDND +#ifdef USE_DOCK_XDND #include "xdnd.h" #endif @@ -539,7 +539,7 @@ static void saveTimestamp(XEvent * event) break; case SelectionNotify: w_global.timestamp.last_event = event->xselection.time; -#ifdef XDND +#ifdef USE_DOCK_XDND wXDNDProcessSelection(event); #endif break; @@ -1073,10 +1073,10 @@ static void handleClientMessage(XEvent * event) scr->flags.ignore_focus_events = event->xclient.data.l[0] ? 1 : 0; } else if (wNETWMProcessClientMessage(&event->xclient)) { /* do nothing */ -#ifdef XDND +#ifdef USE_DOCK_XDND } else if (wXDNDProcessClientMessage(&event->xclient)) { /* do nothing */ -#endif /* XDND */ +#endif /* USE_DOCK_XDND */ } else { /* * Non-standard thing, but needed by OffiX DND. diff --git a/src/misc.c b/src/misc.c index a12a97d..137d78e 100644 --- a/src/misc.c +++ b/src/misc.c @@ -622,7 +622,7 @@ char *ExpandOptions(WScreen *scr, const char *cmdline) } break; -#ifdef XDND +#ifdef USE_DOCK_XDND case 'd': if (!scr->xdestring) { scr->flags.dnd_data_convertion_status = 1; @@ -639,7 +639,7 @@ char *ExpandOptions(WScreen *scr, const char *cmdline) strcat(out, scr->xdestring); optr += slen; break; -#endif /* XDND */ +#endif /* USE_DOCK_XDND */ case 's': if (!selection) { diff --git a/src/screen.h b/src/screen.h index dd524b8..8ffb6f9 100644 --- a/src/screen.h +++ b/src/screen.h @@ -283,7 +283,7 @@ typedef struct _WScreen { /* for window shortcuts */ WMArray *shortcutWindows[MAX_WINDOW_SHORTCUTS]; -#ifdef XDND +#ifdef USE_DOCK_XDND char *xdestring; #endif diff --git a/src/startup.c b/src/startup.c index c369dba..5f43cfd 100644 --- a/src/startup.c +++ b/src/startup.c @@ -68,7 +68,7 @@ #include "wmspec.h" #include "event.h" #include "switchmenu.h" -#ifdef XDND +#ifdef USE_DOCK_XDND #include "xdnd.h" #endif @@ -469,7 +469,7 @@ void StartUp(Bool defaultScreenOnly) w_global.atom.wm.ignore_focus_events = atom[20]; -#ifdef XDND +#ifdef USE_DOCK_XDND wXDNDInitializeAtoms(); #endif diff --git a/src/xdnd.c b/src/xdnd.c index afbbd44..63e6d9c 100644 --- a/src/xdnd.c +++ b/src/xdnd.c @@ -20,19 +20,20 @@ /* Many part of code are ripped of an example from JX's site */ -#include "wconfig.h" +#include "config.h" -#ifdef XDND +#include <stdlib.h> +#include <stdio.h> +#include <string.h> + +#include <X11/Xlib.h> +#include <X11/Xatom.h> #include "WindowMaker.h" #include "dock.h" #include "xdnd.h" #include "workspace.h" -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <X11/Xatom.h> static Atom _XA_XdndAware; static Atom _XA_XdndEnter; @@ -315,4 +316,3 @@ Bool wXDNDProcessClientMessage(XClientMessageEvent *event) } return False; } -#endif http://repo.or.cz/w/wmaker-crm.git/commit/2ebfcd9c5c9350d89f2346304ed8c02883020785 commit 2ebfcd9c5c9350d89f2346304ed8c02883020785 Author: Christophe CURIS <christophe.cu...@free.fr> Date: Mon Apr 6 17:58:11 2015 +0200 configure: Added option to disable Motif WM Hints support The old behaviour was to expect the user to go modify manually a source file which is not a great idea because that's typically the kind of things in charge of the configure script. As a side effect, we can now use an automake conditional to avoid compiling the source file in charge of the feature when not used, instead of trying to compile an empty-looking file. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/configure.ac b/configure.ac index fac385a..4e55a94 100644 --- a/configure.ac +++ b/configure.ac @@ -237,6 +237,7 @@ AX_PTHREAD dnl Tracking on what is detected for final status dnl ============================================= unsupported="" +supported_core="" supported_xext="" supported_gfx="" @@ -286,6 +287,21 @@ AC_ARG_WITH(incs-from, AS_HELP_STRING([--with-incs-from], [pass compiler flags t [inc_search_path="$withval $inc_search_path"]) +dnl Features Configuration +dnl ====================== +AC_ARG_ENABLE([mwm-hints], + [AS_HELP_STRING([--disable-mwm-hints], [disable support for Motif WM hints @<:@default=enabled@:>@])], + [AS_CASE(["$enableval"], + [yes|no], [], + [AC_MSG_ERROR([bad value $enableval for --enable-mwm-hints])])], + [enable_mwm_hints="yes"]) +AS_IF([test "x$enable_mwm_hints" = "xno"], + [unsupported="$unsupported MWMHints"], + [AC_DEFINE([USE_MWM_HINTS], [1], [Defined when used did not request to disable Motif WM hints]) + supported_core="$supported_core MWMHints"]) +AM_CONDITIONAL([USE_MWM_HINTS], [test "x$enable_mwm_hints" != "xno"]) + + dnl Boehm GC dnl ======== AC_ARG_ENABLE([boehm-gc], @@ -887,6 +903,7 @@ echo "Installation path prefix : $prefix" echo "Installation path for binaries : $_bindir" echo "Installation path for libraries : $libdir" echo "Installation path for WPrefs.app : $wprefs_base_dir" | sed -e 's|\${prefix}|'"$prefix|" +echo "Supported core features: :$supported_core" echo "Supported X extensions: :$supported_xext" echo "Supported graphic format libraries :$supported_gfx" echo "Unsupported features :$unsupported" diff --git a/doc/build/Compilation.texi b/doc/build/Compilation.texi index 8d8efea..8d1fcfd 100644 --- a/doc/build/Compilation.texi +++ b/doc/build/Compilation.texi @@ -566,8 +566,10 @@ screen size. @subsection Feature Selection @table @option -@item --disable-motif +@item --disable-mwm-hints Disable support for Motif's MWM Window Manager hints. +These attributes were introduced by the Motif toolkit to ask for special window appearance requests. +Nowadays this is covered by the NetWM/EWMH specification, but there are still applications that rely on MWM Hints. @item --enable-ld-version-script This feature is auto-detected, and you should not use this option. diff --git a/src/Makefile.am b/src/Makefile.am index e149f7d..56ebe08 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -52,8 +52,6 @@ wmaker_SOURCES = \ misc.h \ monitor.c \ monitor.h \ - motif.c \ - motif.h \ moveres.c \ pixmap.c \ pixmap.h \ @@ -110,6 +108,10 @@ wmaker_SOURCES = \ wsmap.c \ wsmap.h +if USE_MWM_HINTS +wmaker_SOURCES += motif.h motif.c +endif + if WM_OSDEP_BSD wmaker_SOURCES += osdep_bsd.c endif diff --git a/src/motif.c b/src/motif.c index 55afdac..b649f82 100644 --- a/src/motif.c +++ b/src/motif.c @@ -21,8 +21,6 @@ #include "wconfig.h" -#ifdef USE_MWM_HINTS - #include <X11/Xlib.h> #include <X11/Xutil.h> #include <stdlib.h> @@ -200,5 +198,3 @@ void wMWMCheckClientHints(WWindow *wwin) if (getMWMHints(wwin->client_win, &hints)) setupMWMHints(wwin, &hints); } - -#endif /* USE_MWM_HINTS */ diff --git a/src/wconfig.h.in b/src/wconfig.h.in index 49bb11d..4a56e04 100644 --- a/src/wconfig.h.in +++ b/src/wconfig.h.in @@ -36,9 +36,6 @@ /* If you want animations for iconification, shading, icon arrangement etc. */ #define ANIMATIONS -/* support for Motif window manager (mwm) window hints */ -#define USE_MWM_HINTS - /* * Undefine BALLOON_TEXT if you don't want balloons for showing extra * information, like window titles that are not fully visible. http://repo.or.cz/w/wmaker-crm.git/commit/1cef020eb322f1bc2978d49ec2d846dd9d1cc15d commit 1cef020eb322f1bc2978d49ec2d846dd9d1cc15d Author: Christophe CURIS <christophe.cu...@free.fr> Date: Mon Apr 6 17:58:10 2015 +0200 Code refactoring: replaced macro 'MWM_HINTS' by 'USE_MWM_HINTS' for consistency The usual way to define a macro in is to name macro with 'USE_xxx' when they are used to enable a feature 'xxx'. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/src/dialog.c b/src/dialog.c index 6bb3424..25c321e 100644 --- a/src/dialog.c +++ b/src/dialog.c @@ -1312,7 +1312,7 @@ void wShowInfoPanel(WScreen *scr) strbuf = wstrappend(strbuf, _("\nAdditional support for: ")); strbuf = wstrappend(strbuf, "WMSPEC"); -#ifdef MWM_HINTS +#ifdef USE_MWM_HINTS strbuf = wstrappend(strbuf, ", MWM"); #endif diff --git a/src/motif.c b/src/motif.c index 7eaba31..55afdac 100644 --- a/src/motif.c +++ b/src/motif.c @@ -21,7 +21,7 @@ #include "wconfig.h" -#ifdef MWM_HINTS +#ifdef USE_MWM_HINTS #include <X11/Xlib.h> #include <X11/Xutil.h> @@ -201,4 +201,4 @@ void wMWMCheckClientHints(WWindow *wwin) setupMWMHints(wwin, &hints); } -#endif /* MWM_HINTS */ +#endif /* USE_MWM_HINTS */ diff --git a/src/wconfig.h.in b/src/wconfig.h.in index 2930bcb..49bb11d 100644 --- a/src/wconfig.h.in +++ b/src/wconfig.h.in @@ -37,7 +37,7 @@ #define ANIMATIONS /* support for Motif window manager (mwm) window hints */ -#define MWM_HINTS +#define USE_MWM_HINTS /* * Undefine BALLOON_TEXT if you don't want balloons for showing extra diff --git a/src/window.c b/src/window.c index d46eca3..121cd16 100644 --- a/src/window.c +++ b/src/window.c @@ -65,7 +65,7 @@ #include "winmenu.h" #include "osdep.h" -#ifdef MWM_HINTS +#ifdef USE_MWM_HINTS # include "motif.h" #endif #include "wmspec.h" @@ -343,9 +343,9 @@ void wWindowSetupInitialAttributes(WWindow *wwin, int *level, int *workspace) int tmp_workspace = -1; int tmp_level = INT_MIN; /* INT_MIN is never used by the window levels */ -#ifdef MWM_HINTS +#ifdef USE_MWM_HINTS wMWMCheckClientHints(wwin); -#endif /* MWM_HINTS */ +#endif /* USE_MWM_HINTS */ wNETWMCheckClientHints(wwin, &tmp_level, &tmp_workspace); http://repo.or.cz/w/wmaker-crm.git/commit/30fe0fb05f6fd0030155c2643a93a562c8278711 commit 30fe0fb05f6fd0030155c2643a93a562c8278711 Author: Christophe CURIS <christophe.cu...@free.fr> Date: Mon Apr 6 17:58:09 2015 +0200 check-doc: add an option to ignore some explicit options from the command's help There are a few rare cases where some options listed in the program's built-in help page may not be documented for a valid reason. This patch provides an option to the checking script to not complain about them, but: - the listed options must include a comment about why, to ensure that the user thinks twice about it and because it is better for maintainability; - the listed option must be part of the options listed by the application to ensure the command line invocation of the script will remain up to date. This new option is then used for the check of the "configure" options because for a few of them the right place to document them is in the INSTALL file provided by Autoconf and not in our Window Maker specific doc. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/Makefile.am b/Makefile.am index a6221e9..5b52d1a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -96,6 +96,15 @@ check-local: configure-documentation configure-documentation: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ - --program "$(top_srcdir)/configure" --text-doc "$(top_srcdir)/INSTALL-WMAKER" + --program "$(top_srcdir)/configure" --text-doc "$(top_srcdir)/INSTALL-WMAKER" \ + --ignore-prg 'with-PACKAGE,without-PACKAGE # only template names from Autoconf' \ + --ignore-prg 'program-prefix,program-suffix,program-transform-name # in INSTALL' \ + --ignore-prg 'version,quiet,srcdir,build,host,cache-file,no-create # in INSTALL' \ + --ignore-prg 'enable-silent-rules,disable-silent-rules # should be in INSTALL' \ + --ignore-prg 'enable-dependency-tracking,disable-dependency-tracking # in INSTALL' \ + --ignore-prg 'enable-shared,enable-static # should be in INSTALL' \ + --ignore-prg 'disable-option-checking,enable-fast-install # should be in INSTALL' \ + --ignore-prg 'disable-libtool-lock,with-pic,with-gnu-ld,with-sysroot # for libtool' \ + --ignore-prg 'with-x # no use, it would not work without X' .PHONY: configure-documentation diff --git a/script/check-cmdline-options-doc.sh b/script/check-cmdline-options-doc.sh index 76ad9f7..ff4a4be 100755 --- a/script/check-cmdline-options-doc.sh +++ b/script/check-cmdline-options-doc.sh @@ -51,6 +51,8 @@ print_help() { echo "$0: check program's list of options against its documentation" echo "Usage: $0 options..." echo "valid options are:" + echo " --ignore-prg arg : ignore option '--arg' from program's output" + echo " (syntax: 'arg1,arg2,... # reason', args without leading '--')" echo " --man-page file : program's documentation file, in man format" echo " --program name : name of the program to run with '--help'" echo " --text-doc file : program's documentation file, in plain text format" @@ -60,6 +62,16 @@ print_help() { # Extract command line arguments while [ $# -gt 0 ]; do case $1 in + --ignore-prg) + shift + echo "$1" | grep '#' > /dev/null || echo "Warning: no reason provided for --ignore-prg on \"$1\"" >&2 + for arg in `echo "$1" | sed -e 's/#.*$// ; s/,/ /g' ` + do + ignore_arg_program="$ignore_arg_program +--$arg" + done + ;; + --man-page) shift [ -z "$man_page$text_doc" ] || arg_error "only 1 documentation file can be used (option: --man-page)" @@ -112,6 +124,17 @@ prog_options=`$prog_name --help | sed -n '/^[ \t]*-/ { s/^[ \t]*// ; s/^-[^-],[ [ "x$prog_options" = "x" ] && arg_error "program '$prog_name --help' did not return any option" +# We filter options that user wants us to, but we warn if the user asked to filter an option that is +# not actually present, to make sure his command line invocation stays up to date +for filter in $ignore_arg_program +do + if echo "$prog_options" | grep "^$filter\$" > /dev/null ; then + prog_options=`echo "$prog_options" | grep -v "^$filter\$" ` + else + echo "Warning: program's option does not contain \"$filter\", specified in \"--ignore-prg\"" + fi +done + if [ -n "$man_page" ]; then # In the man page format, the options must be grouped in the section "OPTIONS" http://repo.or.cz/w/wmaker-crm.git/commit/d1c9f791d870d88ec4f02e31b29600e1afbaa58a commit d1c9f791d870d88ec4f02e31b29600e1afbaa58a Author: Christophe CURIS <christophe.cu...@free.fr> Date: Mon Apr 6 17:58:08 2015 +0200 doc: describe the "new" options to the "configure" script As there are many options, they have been split into 5 sections; added documentation for all the legacy Window Maker options that were missing and for the new ones; added documentation for a few of the "autotools" standard options that can be considered interesting. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/doc/build/Compilation.texi b/doc/build/Compilation.texi index 51d53d7..8d8efea 100644 --- a/doc/build/Compilation.texi +++ b/doc/build/Compilation.texi @@ -170,6 +170,7 @@ package, you will also need: @section Optional Dependencies +@anchor{Optional Dependencies} These libraries are not required to make @sc{Window Maker} work, but they are supported in case you want to use them. Version numbers are indicative, but other versions might work too. @@ -208,12 +209,24 @@ so you probably want this format supported. For @emph{GIF} image support, @uref{http://giflib.sourceforge.net/} +@item @emph{WebP} 0.4.1 or newer + +The reference library from @emph{Google} for their image format, +@uref{https://developers.google.com/speed/webp/download} + @item @emph{GNU xgettext} If you want to use translated messages, you will need @emph{GNU gettext}. Other versions of @emph{gettext} are not compatible and will not work. Get the @emph{GNU} version from @uref{http://www.gnu.org/software/gettext/} +@item @emph{Pango} 1.36.8 or newer + +This library can be used by the @emph{WINGs} toolkit to improve support for @emph{UTF-8} and for +languages written in right-to-left direction, in some widgets. +You have to explicitly ask for its support through (@pxref{Configure Options}). +You can get it from @uref{http://www.pango.org/Download} + @item @emph{libbsd} This library can be used by the @emph{WINGs} utility library to make use of @command{strlcat} and @@ -234,6 +247,12 @@ The needed header comes with the kernel, typical packages names include: @item @file{linux-glibc-devel} for @emph{OpenSuSE} @end itemize +@item @emph{MagickWand} 6.8.9-9 or newer + +If found, then the library @emph{WRaster} can use the @emph{ImageMagick} library to let +@sc{Window Maker} support more image formats, like @emph{SVG}, @emph{BMP}, @emph{TGA}, ... +You can get it from @uref{http://www.imagemagick.org/} + @item @emph{Boehm GC} This library can be used by the @emph{WINGs} utility toolkit to use a @@ -386,22 +405,100 @@ Normally, you won't need any of them. To get the list of all options, run @command{./configure --help} + +@subsection Installation Directory + +The default installation path will be in the @file{/usr/local} hierarchy; +a number of option can customise this: + +@table @option +@item --prefix=@i{PREFIX} +@itemx --exec-prefix=@i{EPREFIX} +@itemx --bindir=@i{DIR} +@itemx --sysconfdir=@i{DIR} +@itemx --libdir=@i{DIR} +@itemx --includedir=@i{DIR} +@itemx --datarootdir=@i{DIR} +@itemx --datadir=@i{DIR} +@itemx --localedir=@i{DIR} +@itemx --mandir=@i{DIR} +Standard options from @emph{autoconf} to define target paths, +you probably want to read @ref{Installation Names,,,INSTALL,@file{INSTALL}}. + +@item --sbindir=@i{DIR} +@itemx --libexecdir=@i{DIR} +@itemx --sharedstatedir=@i{DIR} +@itemx --localstatedir=@i{DIR} +@itemx --oldincludedir=@i{DIR} +@itemx --infodir=@i{DIR} +@itemx --docdir=@i{DIR} +@itemx --htmldir=@i{DIR} +@itemx --dvidir=@i{DIR} +@itemx --pdfdir=@i{DIR} +@itemx --psdir=@i{DIR} +More standard options from @emph{autoconf}, today these are not used by @sc{Window Maker}; +they are provided automatically by @emph{autoconf} for consistency. + +@item --with-gnustepdir=@i{PATH} +Specific to @sc{Window Maker}, defines the directory where @file{WPrefs.app} will be installed, +if you want to install it like a @emph{GNUstep} applications. +If not specified, it will be installed like usual programs. + +@item --with-pixmapdir=@i{DIR} +Specific to @sc{Window Maker}, this option defines an additional path where @emph{pixmaps} will be +searched. Nothing will be installed there; the default path taken is @file{@emph{DATADIR}/pixmaps}, +where @var{DATADIR} is the path defined from @option{--datadir}. + +@end table + + +@subsection External Libraries + +Unless specifically written, @command{configure} will try to detect automatically for the libraries; +if you explicitly provide @option{--enable-@emph{FEATURE}} then it will break with an error message +if the library cannot be linked; +if you specify @option{--disable-@emph{FEATURE}} then it will not try to search for the library. +You can find more information about the libraries in the +@ref{Optional Dependencies}. + @table @option +@item --enable-boehm-gc +Never enabled by default, use Boehm GC instead of the default @emph{libc} @command{malloc()} + @item --disable-gif -disable use of @emph{GIF} library +Disable GIF support in @emph{WRaster} library; when enabled use @file{libgif} or @file{libungif}. @item --disable-jpeg -disable use of @emph{JPEG} library +Disable JPEG support in @emph{WRaster} library; when enabled use @file{libjpeg}. + +@item --without-libbsd +Refuse use of the @file{libbsd} compatibility library in @emph{WINGs} utility library, +even if your system provides it. + +@item --disable-magick +Disable @emph{ImageMagick's MagickWand} support in @emph{WRaster}, used to support for image formats. + +@item --enable-pango +Disabled by default, enable @emph{Pango} text layout support in @emph{WINGs}. @item --disable-png -disables use of @emph{PNG} library +Disable PNG support in @emph{WRaster}; when enabled use @file{libpng}. @item --disable-tiff -disable use of @emph{TIFF} library +Disable TIFF support in @emph{WRaster}. when enabled use @file{libtiff}. + +@item --disable-webp +Disable WEBP support in @emph{WRaster}. when enabled use @file{libwebp}. @item --disable-xpm -disables use of the @emph{XPM} library even if it is available on your system. +Disable use of @file{libXpm} for XPM support in @emph{WRaster}, use internal code instead. + +@end table +The following options can be used to tell @command{configure} about extra paths that needs to be +used when compiling against libraries: + +@table @option @item --with-libs-from specify additional paths for libraries to be searched. The @option{-L} flag must precede each path, like: @@ -416,20 +513,109 @@ The @option{-I} flag must precede each paths, like: --with-incs-from="-I/opt/headers -I/usr/local/include" @end example +@end table + + +@subsection X11 and Extensions + +@command{configure} will try to detect automatically the compilation paths for X11 headers and +libraries, and which X Extensions support can be enabled. +if you explicitly provide @option{--enable-@emph{FEATURE}} then it will break with an error message +if the extension cannot be used; +if you specify @option{--disable-@emph{FEATURE}} then it will not check for the extension. + +@table @option +@item --x-includes=@i{DIR} +@itemx --x-libraries=@i{DIR} +@emph{Autoconf}'s option to specify search paths for @emph{X11}, +for the case were it would not have been able to detect it automatically. + +@item --disable-xlocale +If you activated support for Native Languages, then @emph{X11} may use a hack to also configure its +locale support when the program configure the locale for itself. +The @command{configure} script detects if the @emph{Xlib} supports this or not; +this options explicitly disable this initialisation mechanism. + @item --enable-modelock XKB language status lock support. If you don't know what it is you probably don't need it. +The default is to not enable it. @item --disable-shm -disable use of the MIT shared memory extension. This will slow down -texture generation a little bit, but in some cases it seems to be -necessary due to a bug that manifests as messed icons and textures. +Disable use of the @emph{MIT shared memory} extension. +This will slow down texture generation a little bit, but in some cases it seems to be necessary due +to a bug that manifests as messed icons and textures. @item --disable-shape -disables shaped windows (for @command{oclock}, @command{xeyes}, etc.) +Disables support for @emph{shaped} windows (for @command{oclock}, @command{xeyes}, etc.). + +@item --enable-xinerama +The @emph{Xinerama} extension provides information about the different screens connected when +running a multi-head setting (if you plug more than one monitor). + +@item --enable-randr +The @emph{RandR} extension provides feedback when changing the multiple-monitor configuration in X11 +and allows to re-configure how screens are organised. + +At current time, it is not enabled by default because it is NOT recommended (buggy); +@sc{Window Maker} only restart itself when the configuration change, to take into account the new +screen size. + +@end table + +@subsection Feature Selection + +@table @option @item --disable-motif Disable support for Motif's MWM Window Manager hints. +@item --enable-ld-version-script +This feature is auto-detected, and you should not use this option. +When compiling a library (@file{wrlib}, ...), @emph{gcc} has the possibility to filter the list of +functions that will be visible, to keep only the public API, because it helps running programs +faster. + +The @command{configure} script checks if this feature is available; +if you specify this option it will not check anymore and blindly trust you that it is supposed to +work, which is not a good idea as you may encounter problems later when compiling. + +@item --enable-usermenu +This feature, disabled by default, allows to add a user-defined custom menu to applications; +when choosing an entry of the menu it will send the key combination defined by the user to that +application. @xref{Application User Menu,,,NEWS,@file{NEWS}} for more information. + +@item --with-menu-textdomain=@i{DOMAIN} +Selection of the domain used for translation of the menus; +@pxref{Translations for Menus,,,wmaker_i18n,@file{README.i18n}}. + +@end table + + +@subsection Developer Stuff + +These options are disabled by default: + +@table @option +@item --config-cache +If you intend to re-run the @command{configure} script often, you probably want to include this +option, so it will save and re-use the status of what have been detected in the file +@file{config.cache}. + +@item --enable-debug +Enable debugging features (debug symbol, some extra verbosity and checks) and add a number of +check flags (warnings) for the compiler (in @emph{gcc} fashion). + +@item --enable-lcov=@i{DIRECTORY} +Enable generation of code coverage and profiling data; +if the @file{@i{DIRECTORY}} is not specified, use @file{coverage-report}. + +This option was meant to be use with @emph{gcc}; +it was not used recently so it is probable that is does not work anymore; +the @command{configure} script will not even check that your compiling environment has the +appropriate requirements and works with this. +Despite all this, if you think there's a use for it and feel in the mood to help, do not hesitate to +discuss on the mailing list @value{emailsupport} to get it working. + @end table ----------------------------------------------------------------------- Summary of changes: doc/build/Compilation.texi | 2 +- script/generate-txt-from-texi.sh | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) repo.or.cz automatic notification. Contact project admin crma...@gmail.com if you want to unsubscribe, or site admin ad...@repo.or.cz if you receive no reply. -- wmaker-crm.git ("The Window Maker window manager") -- To unsubscribe, send mail to wmaker-dev-unsubscr...@lists.windowmaker.org.