Age | Commit message (Collapse) | Author |
|
In xml_element_end_cb we were calling XML_StopParser when finding a
</theme> tag, but the semantics of that are the XML_Parse will return an
abort error which then results in us reporting a parse error. Instead of
explicitly trying to stop the parser we simply ignore the </theme> tags
and assume we will get an error from expat if the tag is unbalanced.
|
|
This is fallout from converting from the custom list implementation to
GList. In xml_stack_pop we were using free() instead of g_list_free_1 to
free a list node but also we were leaving the prev member of the new top
in an inconsistent (non-NULL) state which was confusing the GList
implementation resulting in a crash. We now use g_list_delete_link to
remove the top of the list.
|
|
We were assuming an error with parsing if XML_Parse returned a non-zero
value but actually the API is defined so the opposite is true so we now
only report a warning when XML_Parse returns zero.
|
|
In mb_wm_decor_grab_handler when handling motion events we would use the
motion events to request new client window geometry via
mb_wm_client_request_geometry but we weren't initializing the width and
height members which could result in the client being killed by the
server when failing to allocate an obscene amount of memory.
|
|
We currently use XRenderFindVisualFormat to determine if a particular
window has an alpha component so libmatchbox itself depents on the
xrender extension library when support for composite is enabled.
|
|
This adds a configure.ac check for expat.h and libexpat.so since the
theming code currently assumes this API.
|
|
As part of an ongoing effort to remove the overloading of the term
"client" in the API this switches the window-type classes to use a
mb-wm-window-type-xyx.[ch] filename scheme and a MBWMWindowTypeXyz
symbol name scheme instead of mb-wm-client-xyz.[ch] and MBWMClientXyz.
|
|
This removes the option of overriding the use of compositing in a theme.
|
|
This fixes some crashes due to lists now being based on the glib slice
allocated but the previous matchbox list API just used malloc/free.
There were some places in matchbox where we were using free() to free
links of a list, but now we need to use g_list_free_1.
|
|
This removes mb-wm-main-context.c since we now just use a glib mainloop
context instead. The new mainloop integration API allows matchbox to be
fed X events from an external toolkit so core matchbox no longer needs
to have any gtk specific event source integration code, since it should
be straightforward for a gtk based wm/compositor to decide to take
ownership of event fetching and pass those events through to matchbox
manually if they want.
In the process of removing references to the mb-wm-main-context API it
was necessary to refactor how we handle mouse grabs for moving and
resizing windows. Previously we would do an X grab and then then
immediately enter a tight loop, polling for X mouse events and handling
them until something triggers an ungrab and then resume fetching events
in the normal way. Now though when we do the mouse grab we just use
mb_wm_manager_add_event_handler to register a temporary interest in
mouse events and mb_wm_manager_remove_event_handler when the grab is
finished. This means we can continue to use the normal event delivery
mechanism during a grab and more importantly we don't block the mainloop
which would really upset window managers and compositors needing to
process other asynchronous events during a grab.
|
|
Like the clutter based compositor it is based on the code of the simple
manager and it builds on the mb-wm-comp-mgr-xrender code that used to
live under the matchbox directory but has now been moved to part of the
compositor itself.
|
|
We now simply print a warning and fallback to the default material if we
fail to parse a theme's xml.
|
|
|
|
|
|
So the naming of MBWindowManager is consistent with other matchbox
objects the new name is MBWMManager. The API has also been modified so
that method functions aren't simply using the mb_wm_method_name scheme
they new use a mb_wm_manager_method_name scheme. Some of the property
setters were missing an explicit "set" in the name which has been added,
and in anticipation that we will start to replace the use of "client"
with "window" some of methods corresponding to windows have been renamed
ahead of time.
|
|
This actually replaces all use of the mb_wm_util_list API so all the
code now just uses the g_list API directly.
|
|
This makes the mb_wm_util_list API pass straight through to the g_list
API.
|
|
This makes it the responsibility of managers/ to provide their own
CompMgr subclasses if they want to support compositing. This defines a
new manager called "clutter" based on the simple manager and the
mb-wm-comp-mgr-clutter code has been moved under managers/clutter.
The way matchbox is now configured has been tweaked. There is now a
--enable-compositing option that determines if libmatchbox supports
compositing which is required if you want to implement a new manager
that handles compositing. Also there is a --with-managers= option that
takes a coma separated list of which managers to build, including
simple,maemo and clutter.
|
|
It doesn't make much sense to have to reimplement basic C utility APIs
such as linked lists and hash tables so this makes glib a required
dependency for matchbox 2.
|
|
|
|
There currently lots of inconsistent ways we refer to matchbox 2; it can
be mbwm2, matchbox-wm-2, matchbox2, matchbox-window-manager-2 and things
are also confusing when considering the naming of pkg-config files and for
choosing the directory name for installing headers.
The approach I'm starting to settle on (this goes back on some of the
renaming changes I made recently, so sorry for the churn) is to consider
the canonical name of the project just "matchbox" and then we use the
package/library versioning to define it as "2.0".
Headers now get installed in $prefix/include/matchbox-2.0/matchbox and
the top level header has been renamed from mb-wm.h to matchbox.h. The
pkg-config file will be installed as matchbox-2.0.pc
|
|
|
|
If you need to use MBWMTheme you should include "mb-wm-theme.h". The
previous approach of putting all the object typedefs in mb-wm-types.h
feels like it hid odd inter-object dependencies because it helped to
avoid circular dependancy issues but imho I think the lines between
objects interfaces should be clearer.
|
|
This gets the clutter compositor working with clutter 1.3
|
|
Some misc #include fixes to enable managers/maemo to build again
|
|
we now expect 2.63, 1.11, and 2.26 respectively
|
|
The micro organisation of source files was a bit unnecessary given the
small size of matchbox2 and made the makefiles a bit more complex than
needs be. We now just have a single Makefile.am for libmatchbox2 which
uses a few automake conditionals to decide when certain files should be
excluded from the build.
|
|
This updates {simple,maemo}/Makefile.am so they now just link with
libmatchbox2 instead of cherry picking which internal libraries they
want to statically link with.
|
|
Move mbwm2 towards primarily providing a library for building window and
composite managers. The library is now built unconditionally and the
window managers under the managers/ subdirectory should instead be made
to link against this library instead of statically linking to the
internal .la files.
|
|
|
|
This simply renames the --enable-libmatchbox configure option to have a
2 suffix.
|
|
Anyone who builds the matchbox2 source should expect that if they modify
configure.ac or a Makefile.am file then the autotool magic should be
re-run so the changes take immediate affect. With the AM_MAINTAINER_MODE
option though you have to explicitly opt in to the bahaviour that we'd
get anyway without using the macro
|
|
So we can see past all the noise of compiling and actually see
compilation warnings we enable the silent automake build rules option
in configure.ac
|
|
This nabs the autogen.sh from Clutter as a basis than can handle the
gtkdocizing of the project
|
|
This adds the basis for creating an API reference for libmatchbox2
|
|
This renames the matchbox directory matchbox2 and it also moves the
/matchbox/managers directory to sit alongside the matchbox2 directory.
The idea being that everything under matchbox2 should be code that gets
linked into libmatchbox2 while code sitting alongside can then provide
examples that actually consume the libmatchbox2 api.
|
|
|
|
|
|
|
|
* matchbox/core/mb-wm-stack.c:
(mb_wm_stack_remove):
Fixed bug in stack size accounting (patch by Aurélien Bauchet
<abauchet@comwax.com>).
|
|
* matchbox/core/mb-window-manager.c:
When the root window resizes, update the work area rectangles.
|
|
* matchbox/core/mb-window-manager.c:
* matchbox/core/mb-wm-atoms.c:
* matchbox/core/mb-wm-client-window.c:
* matchbox/core/mb-wm-client-window.h:
* matchbox/core/mb-wm-types.h:
Use WM_NORMAL_HINTS for window gravity (instead of the X
attribute) and user position (patch by Aurélien Bauchet
<abauchet@comwax.com>).
|
|
* matchbox/core/mb-window-manager.[ch]:
Make get_desktop_geometry a vfunc, so that subclasses can override
it.
|
|
* matchbox/managers/simple/Makefile.am:
* matchbox/managers/maemo/Makefile.am:
Fixed order of libraries for the linker so we can build
with --as-needed.
|
|
|
|
* configure.ac
* matchbox/client-types/Makefile.am
* matchbox/comp-mgr/Makefile.am
* matchbox/core/Makefile.am
* matchbox/theme-engines/Makefile.am
* matchbox/Makefile.am
* matchbox/managers/simple/Makefile.am:
Allows building managers and libmatchbox at the same time. By default
managers remain disabled if libmatchbox is enabled, but you can now
enable managers explicitly to get both. This also removes lots of
Makefile.am ifdef checks where we were toggling between
noinst_LIBRARIES ending in .a vs .la. All CLIENT_LIBS are listed as
.la now and all noinst libs are build as .la. Libtool then figures
out the right thing to do.
|
|
* matchbox/core/mb-wm-client.c:
Plumbs in a call to mb_wm_handle_hang_client in
mb_wm_client_ping_timeout_cb, so that derivative managers can now just
implement wm_class->client_responding and wm_class->client_hang to
handle unresponsive clients.
|
|
* matchbox/core/mb-wm-client.c:
Adds a check in mb_wm_client_ping_start that the client supports
the NET_WM_PING protocol.
Adds a verbose comment in mb_wm_client_deliver_delete about not being
able check for failures of WM_DELETE messages. (Since I recently had
a problem in a derivative WM that was attempting just that.)
|
|
* matchbox/theme-engines/mb-wm-theme-png.c:
mb_wm_theme_png_get_button_position now propery determines the button
positions in the case that the decor has been expanded larger than the
themes template image.
|
|
* configure.ac:
Look for clutter-0.8 now instead of 0.7
|