This is not a final version, is only a version for developers.
This version includes compatibility with debconf 9.
This version will be modified to change the libwutil2 symbols
to a new upstream version, probably 0.95.4.
This patch do this changes:
1. Change (add/remove) blank lines
2. Join some if's in only one
3. Change c++ comments to c comments (// -> /* */)
4. Add / remove curly brackets if needed
5. Change spaces (add/remove) & set correct indentation
The functions wDefaultGetIconFile(), get_default_icon_filename() and
get_generic_value() use the argument noDefault in order to avoid searching the
default icon. This double negation is difficult to read though. This patch
changes it to be True if the default icon should be included or false if not.
This patch changes the noDefault argument to default_icon, then the
True is now False and False is True.
The main change is at get_generic_value():
- /* Search the default icon name - See noDefault argument! */
- if (!value && !noDefault) {
+ /* Search the default icon name - See default_icon argument! */
+ if (!value && default_icon) {
Because the functions wDefaultGetIconFile() and get_default_icon_filename()
mainly forwards the noDefault argument to get_generic_value().
The icon size should be set when the icon is created. Therefore the icon size
for net_icon_image should be set at get_wwindow_image_from_x11(), function that
creates the image.
The function scaleDownIfNeeded's code is duplicated with the code of
wIconValidateIconSize(), then this function can be removed. The icon
size in the switchpanel should be ~48 pixels, to allow the frame around
the icon. Then, we always should resize the icon to this size. The standard
icon size is specified in WPreferences.icon_size (usually 64 pixels).
The icons should be scaled if their size is "max_size - ~3 pixels".
Tipically, max_size is 64 pixels. With the current wIconValidateIconSize
the max size for an icon is "64 pixels", then the icon don't have border
and is ugly. This problem is in the dock icons and in the switchpanel.
The new wIconValidateIconSize function don't use the fixel value of 64
pixels, uses the argument max_size to get the final icon size. The icon
is scaled holding the aspect ratio and reserve ~2 or ~3 pixels to hold
left space to the icon border. Now the icon is inside the icon space,
with border.
This patch removes the preprocessor option of DONT_SCALE_ICONS, because
all the icons should be scaled if needed, to hold a beatiful interface.
The default icon (defIcon) is never used because the function wDefaultGetImage
always returns a icon (it searches the default icon). So we can remove the
defIcon variable, its creation and remove code.
The function create_default_icon sets the panel's default icon. This
is interesting to have a "cache" icon and don't search the default
icon more than one time if the icons don't have icon associated.
The code of create_default_icon was included in the addIconForWindow()
function, this patch only moves it to get a better (clear) code.
The code to find the icon in the function getWindowMakerIconImage()
is duplicated, because it is the same code as in get_default_icon_filename()
This patch includes the prototypes of get_default_icon_filename()
and get_default_icon_rimage() in defaults.h, so these functions
can be used in other files.
The function wDefaultGetImage() is splitted in two:
1. get_default_icon_filename(): This function returns the full
path of an icon. The function searches the icon in the database
using instance and class.
2. get_default_icon_rimage(): This function returns the RImage for
a given image path (full path). This function validates the icon
size, so the icon is fully usable.
The function get_default_icon_filename() now adds the .app icons in the
search (using wApplicationExtractDirPackIcon()). To do it, the command
should be included, because this function searches '"command".app' icons.
Setting the command to NULL, this case is not used.
To do it we need the function wApplicationExtractDirPackIcon() defined
at appicon.c, so we need set the function as non-static and provide their
prototype in appicon.h.
This patch also includes an extra pointer check at wDefaultGetStartWorkspace
to make sure that WDWindowAttributes exists.
The variables waiting_save_ack, dragged_while_fmaximized,
buttons_dont_fit, rebuild_texture and needs_full_repaint are not used,
so they can be removed.
Even though net_state_from_client was never being set, it was
being tested inside a
if (!wwin->flags.net_state_from_client)
which according to testing was always being true (probably because gcc
initializes it to zero). But this situation is confusing, so it's
better to remove the if() test altogether as that is the intention
if net_state_from_client is not explicitly set (which it isn't in
the current wmaker source).
This situation is analogous to:
[mafra@Pilar:c]$ cat init.c
int main(void)
{
int a;
if (!a)
printf("No a = %d\n", a);
return 0;
}
[mafra@Pilar:c]$ ./init
No a = 0
The functions related to colormap are moved from funcs.h to the new
file colormap.h. These files are included where needed.
The functions wColormapInstallRoot and wColormapUninstallRoot are
removed, because they are not used.
New functions
static void add_to_appicon_list()
static void remove_from_appicon_list()
to add or remove appicons from the app_icon_list, making the code easier
to follow.
The functions of main.c should be included in main.h, not in funcs.h.
This patch adds the main.h file and moves the function prototypes to
this file.
The not needed "include funcs.h" are removed.
The contents of the rootmenu.h file are not used and can be removed,
but the prototypes of rootmenu.c are in funcs.h and should be moved
to the correct (rootmenu.h) file.
There are some code duplication in winmenu.c. Two new functions,
- open_window_menu_core
- prepare_menu_position
Join the common code and then the duplicated code can be removed.
The superfluous.[ch] files have a few minor issues, this patch addresses some of them:
- Move the defines to the top of the superfluous.c file
- Include the ifdef NORMAL_ICON_KABOOM inside the DoKaboom() function
because the DoKaboom is used without the NORMAL_ICON_KABOOM ifdef in
other files.
- Include the ifdef WINDOW_BIRTH_ZOOM inside the DoWindowBirth() function,
therefore the function don't needs to be defined twice (with and whitout
WINDOW_BIRTH_ZOOM define.
- Now the functions are defined in superfluous.h and the externs are not
needed.
- We need include the dock.h in the superflous.h because is used by the
definition of MakeGhostDock().
- We need include the superfluous.h in window.c (removing the extern)
The icon painting is moved to the function makeAppIconFor()
including the check for no_appicon.
wAppIconCreate is now static because is only used in makeAppIconFor()
The path of the CacheIcons is defined at CACHE_ICON_PATH. The path
~/GNUstep/Library/WindowMaker/CachedPixmaps can be changed in a future
and the comment is incorrect.
The function extractIcon is removed, and its behaviour is moved to
save_app_icon, because this function is always called.
To do that, save_app_icon doesn't need to check if the icon is saved (it's
done at wIconStore). The icon now is saved always (if it doesn't exist),
like extractIcon() used to do.
When the application is created, the WAppIcon now is created always,
but it is only painted if the flag is not set.
The icon initialization to NULL can be done now at app_icon_create_from_docks
because it is always called.
The function app_icon_create_from_docks is moved to appicon.c, because
it is a function to create application icons.
The static function findDockIconFor is moved too because it is only used
at app_icon_create_from_docks().
The function wAppIconSave is splitted in two functions:
wAppIconSave() + save_app_icon_core()
The function save_app_icon_core will be used in other functions as
common code.
The Bool value is not used, therefore it suffices to return void.
wAppIconChangeImage is removed from appicon.h, because it is not implemented.
Small code cleanup for wAppIconCreateForDock at appicon.h.
The icon functions wApplicationExtractDirPackIcon() wApplicationSaveIconPathFor()
are moved to appicon.c from application.c.
This functions are Application Icon related and should be included in appicon.
The function get_name_for_icon is renamed to get_name_for_wwin.
The previous contents of get_name_for_icon are now at the new
function get_name_for_instance_class.
The function get_name_for_icon returns now the name of the icon,
without the full icon path and without extension (.xpm). Now is
not static.
The full path, including the folder creation, is done now by
wmkdirhier() (WINGs). This function is much better, because
supports "infinite" folders, not like the old get_name_for_icon
which could only create the specific folder for Cache Icons.
Using this functions, wIconStore() do the same work, but in a better
way, more clear.
This patch creates some functions:
1. Rename getnameforicon() to get_name_for_icon()
2. New function get_icon_cache_path, to get the icon cache folder
($HOME + GNUstep/Library/WindowMaker/CachedPixmaps). This folder
is defined now in the preprocessor. Not used yet, in next commits.
3. New function get_wwindow_image_from_wmhints to read the image from
X11 wmhints. Previous code at wIconStore() now changed.
The function wDefaultFillAttributes can be changed a lot:
1. Initialitation to NULL: If the pointers are initialized to NULL
then, the "if's" don't need the else block:
WMPropList *value, *dw, *dc, *dn, *da;
dw = dc = dn = da = NULL;
if's:
= if (instance)
= key2 = WMCreatePLString(instance);
- else
- key2 = NULL;
2. Added StrConcatDot in the class + instance block:
= if (class && instance) {
+ buffer = StrConcatDot(instance, class);
- buffer = wmalloc(strlen(class) + strlen(instance) + 2);
- sprintf(buffer, "%s.%s", instance, class);
3. init_wdefaults(scr); moved above. This function is used only
to load the default value "AnyWindow" (value "*"), to search
the default value. Can be moved above without problems.
4. Preprocessor code of APPLY_VAL moved to the top of the file.
5. New function get_value_from_instanceclass() to do the rest of
the (repetitive) code. This function is called to create the
proplist, search the value, and return the proplist.
EXTRA:
1. Added StrConcatDot (like dot 2) in wDefaultChangeIcon()
2. Added a comment in get_value()
The argument "src" is removed in the function get_generic_value()
because it is not used.
The function wDefaultGetIconFile() is moved close to
wDefaultGetStartWorkspace() because both are similar.
The function removeAppIconFor() does exactly the same thing as the code inside
wApplicationDestroy(), including the last call to wArrangeIcons(). So let's
simply remove the code and call the function instead.
This patch checks if the no_appicon flag is set, then, the icon
is not created, therefore cannot be painted neither saved.
Some comments added to clarify the code.
The functions makeAppIconFor and removeAppIconFor are moved from
winspector.c to appicon.c, and now are not static.
The reason to move these functions is because are used to create
and remove app_icons, therefore should be included in this file.
Finally, this functions will be updated and splitted in next patches.
The new function app_icon_create_from_docks do all the needed stuff to create
the application app_icon using a previous image in docks.
The contents of the app_icon_create_from_docks were moved from the
wApplicationCreate function. Now this function is more clear.
New function to save the icon "save_app_icon". This function is
created in appicon.c, because is related to app_icons. The contents
are from application.c. No important modifications are included in
this function. Removed the includes not needed.
This patch includes the changes to create the package for
debian.
Changes are included in changelog:
* New upstream release 0.95.3
* Removed debian/clean file. Upstream removes now the files.
* Bumped to standard version 3.9.3
* Important!: Removed symbol "W_DraggingInfo" in libwutil2 and
libwings2, because the struct W_DraggingInfo is now declared
as "typedef", therefore the struct is not included.
This change is included in upstream, see line 126 of the file
WINGs/WINGs/WINGsP.h
* Patch 53_Debian_WMState.diff changed, because the WMState file
in upstream is now different. Now, the dock launch WPrefs.
* Removed /etc/X11/WindowMaker files.
* Removed from debian/wmaker-common.dirs
* Removed (duplicated) files in debian/wmaker-common.install
* New path for menu.hook: /usr/share/WindowMaker
* Changed in the menu-method files (wmaker and wmappearance.
* Removed menu.posthook and menu.prehook.
* Changed the menu behaviour. Applications/* contents moved to
the root menu.
The new function wIconCreateCore do the common work to create a WIcon.
This code was before in wIconCreateWithIconFile() and wIconCreateWithIconFile().
The new function wGetWorkspaceNumber returns the workspace number
for a given workspace name.
The code of this function is already used in session.c and wdefaults.c
and now is moved to workspace.c
In wSessionRestoreLastWorkspace the char value is checked before
calling the function, because without string, the function don't do
nothing.
This patch removes the unneeded curly brackets in multiple files.
It also add some comments in the code. In usermenu.c removes some
variables not used.
Changes to appicon.h:
- Spaces replaced by tabs in the struct
- Removed unused variables:
- client_machine, never assigned
- gnustep_app, never used
- Functions sort by return type
Then, in dock.c, the block with client_machine is never true,
then can be removed. The host variable then is never used.
The function canReceiveFocus should check if the window is no_focusable first.
If the window is not focusable but is miniaturized, the window is shown in the
switchpanel.
How to reproduce the problem:
- Open an application
- Open the window properties, advanced options
- Set that the application can not get the focus and save
- Test the switchpanel (Alt+Tab) the window doesn't appear
- Minimize the window
- Test the switchpanel (Alt+Tab), the window appears
- If the window is selected (restored), and test again the switchpanel, the window doesn't appear!
A new function is created to get the image from the X11 window.
The function updateIconImage is splitted in two blocks, one is moved
to get_wwindow_image_from_x11 with the X11 code, and other is used
to update the Application and Window icons (kept in the same function).
Doug Barton reported that using "Technical drawing-like" for "Size display"
under WPrefs "Miscellaneous Ergonomic Preferences" together with opaque
resize would lead to artifacts left on screen when resizing.
This patch fixes it (and it also fixes some minor coding style issues
in the surroundings).
The file "clean", which contains "WindowMaker/Defaults/WMRootMenu"
can be removed, because this file was included to be cleaned in
the commit 01907f9983
The Application/* items are moved to the root menu, removing the
"Applications" submenu. The files from /etc/X11/WindowMaker moved
to /etc/GNUstep/Defaults
The path /etc/X11/WindowMaker is not needed now. The files were
deleted or moved to /usr/share/WindowMaker. Some files were the
same in /etc/X11/WindowMaker and /usr/share/WindowMaker.
The configuration file menu.hook is moved to /etc/GNUstep/Defaults
Duplicated:
- wmmacros
- appearence.menu (copied & generated).
- background.menu
Removed:
- menu.prehook
- menu.posthook
Moved:
- menu.hook (generated).
Display a standard Window Maker balloon with the workspace name when the
mouse enters the clip area.
This complements commit 4954d4df23 ("clip: Do not display balloon with
workspace name") because now the balloon which appears on the clip is the
same as in other parts of wmaker.
Signed-off-by: Carlos R. Mafra <crmafra@gmail.com>
In commit e1453087f57... the function copy_file() was renamed to
wcopy_file(), then the symbols file needs to be updated.
The changelog includes a new debian bug closed.
This upload includes the debian changes of 0.95.0 and 0.95.1
- Debian stuff (themes, menus,...) is moved to different folder.
- Many changes in debian/rules file
- New files to avoid lines in debian/rules (new menu files)
- This is a little extract form the debian/changelog file:
* New upstream version 0.95.1
* The WINGs's file proplist-compat.h is removed in upstream.
- Removed the line in debian/libwings-dev.install
* Updated debian/libwutil2.symbols with new symbol.
* libpng12-dev dependencies changed to libpng-dev. [Closes: #648123]
* wterm package suggestion removed.
* Menu shows "Run..." option. [Closes: #165075]
Thanks to Andreas Tscharner for their patch.
* Menu shows the background files [Closes: #655122]
* Added patch 54_Debian_wmmacros.diff.
Based on changelog: Marcelo E. Magallon Tue, 17 Nov 1998
* Xterm and WMPrefs are now Debian specific.
* Added patch 53_Debian_WMState.diff.
Based on changelog: Marcelo E. Magallon Sun, 26 Nov 2000
* Fix wmaker-common dependencies. [Closes: #654668]
* Manpages moved from wmaker-common to wmaker (Lintian problem).
* Removed old stuff in wmaker.post* and wmaker-common.post* about
update-alternatives.
* Fix to the FTBFS. [Closes: #654524]
* New debian/watch file
* New upstream version 0.95.0, now from git. [Closes: #401900]
[Closes: #514438, #607550, #218110, #583734, #105351, #549157]
[Closes: #283610, #311563, #310285, #329783, #280819, #284048]
[Closes: #292391, #361241, #364290, #148370, #287459, #122076]
[Closes: #175503, #79598, #78088, #68381, #38184, #41434, #41434]
[Closes: #94960, #39543, #63265, #69499, #94446, #77488, #329783]
Thanks to Andreas Tscharner for their bug revision.
* This new version is based in wmaker-crm a wmaker fork, because
wmaker (original) is not updated.
* New debian/rules file. [Closes: #590244]
* Many many changes
* /usr/lib/WindowMaker/WindowMaker is now /usr/lib/WindowMaker/wmaker
* wmaker script launch now /usr/lib/WindowMaker/wmaker
* New maintainer. [Closes: #632875]
* New package wmaker-common (arch independent files).
* Removed the asclock diversions from the wmaker install scripts
wmaker.postrm and wmaker.preinst because asclock binary is not
included in wmaker package (see asclock package).
* New package wmaker-common with the arch independent files.
* debian/patches are now DEP-3.
* debian/copyright is now DEP-5.
* Bumped Standars-Version 3.9.2.
* Manpages moved to upstream.
* Solved problems with .la files (lintian clean).
* libwmaker0-dev isn't included, because was removed in upstream.