2002-02-07 Havoc Pennington <hp@pobox.com>
Throughout: move to meta_topic rather than meta_verbose so
metacity.log can start being more useful
* src/util.h (enum): add more debug topics
* src/frames.c: clean up some cruft that caused warnings
2002-02-07 Havoc Pennington <hp@pobox.com>
* src/theme.c (colorize_pixbuf): use the intensity of the gray
pixel for both saturation and value, not just value.
2002-02-07 Havoc Pennington <hp@pobox.com>
* src/theme.c (colorize_pixbuf): get algorithm right (use HSV/RGB
conversion) at cost of making it a lot slower. It doesn't matter
anyhow with the cache, though.
2002-02-06 Havoc Pennington <hp@pobox.com>
* src/theme-viewer.c: benchmark theme on startup
* src/theme-parser.c (parse_draw_op_element): fix "colorize !=
NULL" to "colorize_spec != NULL" and free pixbuf on color spec
failure
* src/theme.c (colorize_pixbuf): minor reformatting, raise
function calls out of inner loop, clamp r/g/b values to uchar
range before assigning to uchar
(draw_op_as_pixbuf): cache the colorized pixbuf
(meta_draw_op_free): free the cache pixbuf
2002-02-07 Anders Carlsson <andersca@gnu.org>
* src/theme-parser.c: (parse_draw_op_element):
Add support for "colorize" image attribute.
* src/theme.c: (colorize_pixbuf):
New function that colorizes a pixbuf.
(pos_tokenize): Allow "\n" as a whitespace character.
(meta_draw_op_free): Free colorize_spec;
(draw_op_as_pixbuf): Colorize image if needed.
* src/theme.h: Add colorize_spec to struct.
2002-02-06 Havoc Pennington <hp@pobox.com>
* src/main.c (prefs_changed_callback): redo window
sizes/appearance when the theme changes
* src/display.c (meta_display_retheme_all): new function
* src/theme-parser.c (locate_attributes): remove error handling
for MAX_ATTRS reached, add an assert instead, the way this code
ended up the attrs in the array depend on the code not the theme
file.
2002-02-06 Havoc Pennington <hp@pobox.com>
* src/main.c (main): disable custom log handler and fatal mask for
now
* src/theme.c (meta_draw_op_list_draw):
Add META_DRAW_CLIP
* src/main.c: load theme, monitor current theme setting
* src/prefs.c: add "current theme" setting
* src/stack.c (meta_stack_free): don't try to free
last_root_children_stacked if it doesn't exist
* src/themewidget.c: pluggable GtkMisc subclass to use
for menu icons
* src/screen.c (meta_screen_manage_all_windows): fix
signed/unsigned warning
* src/frames.c: port to theme system
(meta_frames_style_set): chain up
* theme-format.txt: new file
* configure.in: add more compiler warnings
* src/theme.c: add various stuff needed to get theme parser
working. Remove the "spacer" concept from FrameLayout object.
Add draw op that references a draw op list.
* configure.in: require GTK 1.3.13
* src/Makefile.am: add theme-parser.[hc], implement loading a
theme
* src/theme.c: add "draw title" and "draw window icon" operations
(meta_draw_op_draw): put object_width/object_height in expression
environment before computing x/y. Handle out-of-memory when
creating pixbufs. Assorted other cleanups.
2002-02-07 Anders Carlsson <andersca@gnu.org>
* src/themes/Crux/metacity-theme-1.xml:
Simplify things so we can remove some
now unnecessary .png files.
* src/themes/Crux/*.png: Remove some files.
2002-02-02 Havoc Pennington <hp@pobox.com>
* src/theme-viewer.c: test % operator
* src/theme.c (pos_tokenize): add % to switch for operators
* src/theme.c: rework theme stuff so we have
MetaDrawOp/MetaDrawOpList instead of MetaTextureSpec/MetaShapeSpec
2002-01-27 Havoc Pennington <hp@pobox.com>
* src/display.c (meta_set_syncing): move in here so util.c doesn't
require display.[hc]
* src/theme.h, src/theme.c: implement coordinate expression
parser, write MetaShapeSpec declaration
* src/util.c (meta_exit): move in here so we can link
to util.c with a different main()
* src/theme.h: rename the MetaWindow* enums to MetaFrame*
2002-01-27 Havoc Pennington <hp@pobox.com>
* src/frames.c (get_control): Only consider the bottom of the
titlebar a resize control; I keep accidentally resizing windows
instead of activating them. Also, give south resizing priority
over north, if the window is so small the active regions overlap
* src/theme.c: add MetaTheme, get MetaFrameStyleSet into
a usable state
* src/common.h: move window type back to window.h, decided
not to use it on frame side
(MetaFrameType): add this instead
2002-01-27 Havoc Pennington <hp@pobox.com>
* src/display.c (event_callback): make the check for whether to
eat focus click a lot more complicated
* src/window.c (meta_window_same_application): new function
* src/prefs.h, src/prefs.c: add application based pref
* src/metacity.schemas: add "application_based" setting to
give me a mode to fool with being application based,
without being unusable in the meantime. Yeah the crack flows
freely these days. Everyone knew it would happen.
2002-01-27 Havoc Pennington <hp@pobox.com>
* src/frames.c: separate code to draw frame from the
expose_event handler, so in principle we can draw the
frame to a pixmap, but this isn't used yet.
2002-01-19 Havoc Pennington <hp@pobox.com>
* src/wm-tester/test-resizing.c: cheesy client with static
bit gravity, used to test the below change.
* src/window.c (meta_window_move_resize_internal): implement
Owen's proposal for window resizing.
http://mail.gnome.org/archives/wm-spec-list/1999-November/msg00088.html
Currently you have to do METACITY_USE_STATIC_GRAVITY=1 in order to
use it, because some GDK bug is screwing up exposes on my frames
when it's enabled.
* src/display.c (meta_display_create_x_cursor): fix glyph for
NE/NW cursors
* src/frames.c (get_control): add ability to resize from top
* src/frame.c (meta_frame_get_flags): can't resize shaded windows
(meta_frame_sync_to_window): add gravity arg
* src/common.h (MetaWindowType): move here from window.h so
it can be used in themes stuff.
(MetaFrameFlags): remove META_FRAME_TRANSIENT since it
overlaps with window type and was unused.
2002-01-18 Havoc Pennington <hp@pobox.com>
* src/window.c (constrain_position): give priority to keeping NW
corner onscreen rather than SE, if we need to shift the window
to fit inside constraints
* src/frames.c (meta_frames_get_geometry): don't depend on the
current window size
* src/theme.c: move geometry stuff in here, to be calculated as
part of the theme
* src/core.c (meta_core_get_client_size): new function to replace
meta_core_get_frame_size() so we don't have weird cycles
in the geometry calculation
2002-01-15 Havoc Pennington <hp@redhat.com>
* src/keybindings.c (handle_tab_backward): fix crash
when grab failed due to another operation in progress
(handle_tab_forward): fix crash when grab failed
2002-01-10 Havoc Pennington <hp@pobox.com>
* src/frame.c (meta_window_destroy_frame): only bump
unmaps_pending if the window was mapped
(meta_window_ensure_frame): ditto
* src/keybindings.c: change arrow key bindings to use Ctrl+Alt not
just Alt, and add debug mode key bindings
* src/stack.c (meta_stack_get_default_focus_window): don't choose
a default focus window with unmaps pending, since we probably just
unmapped it.
* src/display.c (event_callback): move notify_focus on UnmapNotify
after the window_free check, so we can move focus to another
window when we unmanage
* src/window.c (meta_window_hide): invalidate work areas when
hiding a window with struts
(meta_window_free): invalidate work areas when unmanaging a window
with struts
2002-01-09 Havoc Pennington <hp@pobox.com>
* src/window.c, src/window.h: store strut information,
update it on property changes, etc. etc. so we avoid panel
on maximize.
* src/workspace.c (meta_workspace_get_work_area): add accessor for
work area so we can compute it lazily
* src/display.h, src/display.c: add _NET_WM_STRUT atom
and _WIN_HINTS atom
2002-01-08 Havoc Pennington <hp@pobox.com>
* configure.in (ACLOCAL): add code to save ACLOCAL_FLAGS
* src/frames.c (meta_frames_expose_event): max dither
* src/testgradient.c (render_simple): change dither mode to MAX
to avoid banding
* src/theme.c: lose the gradient cache, and put in some initial
data types for the theme format
2002-01-07 Havoc Pennington <hp@redhat.com>
* src/frames.c (meta_frames_expose_event): make gradient a bit
more subtle (don't go to the full background, but to a blend of
selection and background; put lighter color on top)
2002-01-06 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_notify_focus): put in attempted fix
for the GTK 1.2 plug/socket screwup, now that my fixed debug spew
reveals what's actually happening. ;-)
* src/gradient.c (meta_gradient_description_new): object
to store gradient descriptions
* src/window.c (meta_window_notify_focus): fix the debug spew
that was confusing me
* src/wm-tester/focus-window.c: add little program to focus
a window ID
2002-01-06 Havoc Pennington <hp@pobox.com>
* src/theme.c (meta_theme_get_gradient): change to use spiffy
gradient code.
* src/gradient.c: copy lovely gradient code from WindowMaker,
as usual Dan and Alfredo have very nice code
2002-01-05 Havoc Pennington <hp@pobox.com>
* src/frames.c (meta_frames_expose_event): draw titlebar highlight
with snazzy gradient that needs some tweaking to be less
dumb-looking
* src/theme.c: replace old theme.[hc] contents with newer stuff
that doesn't do anything
2002-01-05 Havoc Pennington <hp@pobox.com>
GTK 1.2 plug/socket clients still broken, don't know why.
* src/screen.c (meta_screen_new): select focus change on root
window, for debugging
* src/display.c (event_callback): when unfocusing, use
no_focus_window to hold the focus
* src/display.h (struct _MetaDisplay): have a no_focus_window to
hold the focus when we don't want to have anything focused.
Then we can avoid confusing focusing-the-frame stuff.
* src/window.c (meta_window_notify_focus): improve some debug spew
(meta_window_notify_focus): add hack from WindowMaker to ignore
focus in events with detail > NotifyNonlinearVirtual
2002-01-04 Havoc Pennington <hp@pobox.com>
* src/screen.c (meta_screen_free): set event mask on root window
to 0 so other window managers (such as ourselves restarting) can
start up; addresses race condition on restart where the old WM
still had RedirectMask when the new WM was trying to start up.
* src/display.c (meta_display_close): free each screen
* src/window.c (meta_window_show): always focus new windows in
click-to-focus mode
2002-01-03 Havoc Pennington <hp@pobox.com>
* src/window.c: use meta_XFree not XFree
* src/display.h (meta_XFree): add null-safe XFree
* src/util.c (meta_warning): have message prefix indicate that
it's a warning
(meta_fatal): indicate it's an error
* src/window.c (update_sm_hints): clean up using
meta_prop_get_latin1_string
(update_role): ditto
(read_client_leader): clean up using meta_prop_get_window
(update_net_wm_type): clean up using meta_prop_get_cardinal
(update_initial_workspace): ditto
(update_net_wm_type): clean up using meta_prop_get_atom_list
(read_rgb_icon): get result from XGetWindowProperty return value
not from error trap
(update_kwm_icon): ditto
(meta_window_new): fix to read WM_STATE correctly
2002-01-03 Havoc Pennington <hp@pobox.com>
* src/window.c (update_net_wm_state): clean up using
meta_prop_get_atom_list
(update_mwm_hints): clean up using meta_prop_get_motif_hints
* src/Makefile.am (metacity_SOURCES): add xprops.[hc]
* src/xprops.c: new file with convenience functions for X
properties
2002-01-03 Havoc Pennington <hp@pobox.com>
* src/workspace.c (meta_workspace_activate): focus top window when
switching to a new workspace
* src/util.c (meta_topic): start putting verbose output in
categories
* src/window.c (meta_window_shade): focus frame after we queue
the calc_showing so the maps/unmaps have already happened.
* src/display.c (meta_display_get_current_time): add the "get time
of current event" function and call it occasionally.
* src/window.c (meta_window_free): if we have focus, call
meta_screen_focus_top_window().
(meta_window_minimize): ditto
(meta_window_delete): ditto
* src/screen.c (meta_screen_ensure_tab_popup): fix memory leak -
didn't free tab list
(meta_screen_focus_top_window): new function to use when we unmap
or unmanage a focused window
* src/stack.c (meta_stack_get_default_focus_window): function used
in meta_screen_focus_top_window
2001-12-21 Havoc Pennington <hp@redhat.com>
* src/frame.c (meta_window_ensure_frame): add a server grab
here since we were failing to have one when calling the function
2001-12-10 Havoc Pennington <hp@pobox.com>
Rework the click-client-area-to-focus support to use synchronous
grabs, avoids a big mess, lets us pass through click when
required (for dock/desktop). Disadvantage is all left-button
clicks now require window manager approval. ;-)
* src/display.c (event_callback): don't focus dock/desktop when
the mouse enters them; require a click.
(meta_change_button_grab): allow sync grabs
(meta_display_grab_unfocused_window_buttons): establish a
synchronous grab and maintain it all the time, rename to
meta_display_grab_focus_window_button
* src/window.c: change to reflect display.c
2001-12-10 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_update_unfocused_button_grabs): don't
allow grab on docks/desktop for now; needs fixing later to
do the grab, but pass thru click, so we can focus those windows.
And in fact we need to do that even in sloppy mode.
2001-12-10 Havoc Pennington <hp@pobox.com>
* src/screen.c (meta_screen_foreach_window): fix broken
"tmp = tmp->data"
Implement do-not-pass-thru-click for click-to-focus mode.
* src/screen.c (update_focus_mode): when focus mode changes,
update all the window grabs
* src/display.c (meta_display_grab_unfocused_window_buttons):
implement grabbing button 1 on client area of unfocused
click-to-focus windows
* src/window.c (meta_window_update_unfocused_button_grabs): update
whether we're grabbing unmodified button 1 on client area
according to focus state and focus mode
(meta_window_new): start out with proper grab state
2001-12-09 Havoc Pennington <hp@pobox.com>
* src/workspace.c (meta_workspace_free): update number of
workspaces hint
* src/screen.c (update_num_workspaces): implement number of
workspaces setting
* src/window.c (meta_window_configure_request): honor configure
requests on windows of type NORMAL, but still be mean to those of
type DIALOG
* src/main.c (main): add more log domains to those we set a log
handler for, and only set warnings fatal in debug mode
* src/metacity.schemas: add number of workspaces setting
2001-12-09 Havoc Pennington <hp@pobox.com>
* src/display.c (event_callback): in click-to-focus mode don't
focus on enter notify. Implement unfocusing on LeaveNotify in
mouse focus mode. Click to focus just ends up working if we
do nothing on enter/leave, because of the way things already
worked. Except I need to add some relatively complex hack to
allow clicking on client area, right now you have to click
on the frame.
2001-12-09 Havoc Pennington <hp@pobox.com>
* src/main.c (main): move SM init a bit later in the process, and
init prefs
* src/session.c: fix no SM case (though I hardly know why I'm
bothering)
* src/main.c (main): call bindtextdomain
* src/util.h (_): actually call gettext
* configure.in: put in AM_GLIB_GNU_GETTEXT and gconf stuff
* src/prefs.c: Preferences - this marks the beginning of our doom.
None of them are actually implemented yet, but we monitor
some stuff from gconf.
2001-12-07 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_unminimize): when unminimizing an app,
if we're in "show desktop" (all windows minimized) mode, leave
show desktop mode. Will occasionally be a bit weird, but allows
people to recover via task list if they accidentally do the show
desktop thing, and don't know what's going on.
2001-12-03 Laszlo Peter <laca@ireland.sun.com>
* src/frames.c: add a dummy element to the enum so
the signals array is not empty. (breaks the build with Forte C)
* src/window.c: s/__FUNCTION__/G_GNUC_FUNCTION/
2001-11-27 Havoc Pennington <hp@pobox.com>
* src/window.c (constrain_position): change so that window can be
offscreen to the bottom or the right, as long as a small top-left
corner of the window remains onscreen. However, windows still
can't go off the left or top.
2001-10-29 Havoc Pennington <hp@pobox.com>
* src/window.c (idle_calc_showing): handle queue/unqueue of
calc showings as we are iterating over the pending list
(meta_window_show): focus placed transients in here instead
of in meta_window_place - now it should actually work, yay
* src/place.c (meta_window_place): remove focusing of transient
child from here; this was really broken
2001-10-29 Havoc Pennington <hp@pobox.com>
* README: note exciting new unminimize feature for the tab popup
* src/keybindings.c (process_tab_grab): use meta_window_activate()
when choosing a window with tab popup, this should deiconify it
* src/window.c (meta_window_client_message): use
meta_window_activate for _NET_ACTIVE_WINDOW message
(meta_window_activate): new function to raise/focus/unminimize
(meta_window_flush_calc_showing): new function
(meta_window_focus): force a calc showing on focus, so that we can
focus the window if appropriate (it must be mapped)
2001-10-26 Havoc Pennington <hp@pobox.com>
* src/display.c (meta_display_grab_window_buttons): fix for
ignoring NumLock on Alt-windowclick (previous NumLock fix
was only for key grabs not button grabs)
2001-10-25 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_visible_on_workspace):
I was using meta_workspace_contains_window() in a number of
places where on_all_workspaces should also have been considered,
thus this new function. Fixes bugs such as pinned windows
not appearing in the tab order.
(meta_window_client_message): use meta_window_visible_on_workspace
* src/stack.c (find_tab_forward): ditto
(find_tab_backward): ditto
(meta_stack_get_tab_next): ditto
(meta_stack_get_tab_list): ditto
* src/place.c (get_windows_on_same_workspace): ditto
* src/keybindings.c (handle_focus_previous): ditto
(handle_focus_previous): ditto
2001-10-22 Havoc Pennington <hp@pobox.com>
* src/stack.c (meta_stack_sync_to_server): fix to keep desktop
window from appearing on top of everything else, among other stack
bugs. Untested.
2001-10-15 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_new): use queried attributes to check
whether window should be initially maximized, rather than window
rect
2001-10-15 Havoc Pennington <hp@pobox.com>
* src/main.c (meta_restart): add a restart feature, for debugging
* src/tools/metacity-restart.c: little utility program to trigger
the restart
2001-10-14 Havoc Pennington <hp@pobox.com>
* src/frames.c (meta_frames_button_press_event): raise/focus
windows on left-click, seem to have broken that yesterday
* src/keybindings.c, src/display.c, src/window.c: add keybinding
to show/hide all normal windows (so you can see the desktop).
Currently Ctrl+Alt+D, which I don't like, but yay.
2001-10-14 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_new): take a window mapped at
fullscreen size/pos to desire maximization; once I add a
fullscreen state, will change to copy kwin and take this mapping
as a desire for fullscreen, but for now testing with maximization.
* src/window.h: remove fullscreen window type, now proposing it
as a window state instead.
2001-10-14 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_maximize): always raise windows on
maximize
(meta_window_client_message): when activating a window, move
it to current workspace, instead of moving user to the
window's workspace.
2001-10-14 Havoc Pennington <hp@pobox.com>
* src/display.c (event_callback): only handle events here if
the modmask from our button grab is active. i.e. only the
Alt-click is handled here.
* src/frames.c: add check for whether button presses are in the
frame client area before handling them, so we don't weirdly let
you move a frame by clicking in its client area if the client
hasn't selected button press events.
2001-10-13 Havoc Pennington <hp@pobox.com>
* src/stack.c (meta_stack_sync_to_server): set last window before
setting newp, so we don't get the current window as the last
window and screw everything up
(IN_TAB_CHAIN): use type not layer to decide if a window is
in the tab chain, keeps panel out of alt-tab choices
2001-10-13 Havoc Pennington <hp@redhat.com>
* configure.in: add bad hack to work with GTK 1.3.9.90 RPMs from
gnomehide for now
* src/ui.c: another piece of bad hack in here
2001-10-12 Mikael Hallendal <micke@codefactory.se>
* src/ui.c (meta_ui_get_default_window_icon): use
gdk_pixbuf_new_from_inline
(meta_ui_get_default_mini_icon): use
gdk_pixbuf_new_from_inline
2001-10-11 Christian Rose <menthos@menthos.com>
* configure.in: Added "sv" to ALL_LINGUAS.
* po/sv.po: Added Swedish translation.
* po/POTFILES.in: Added files.
* po/.cvsignore: Added messages and *.pot.
2001-10-10 Havoc Pennington <hp@pobox.com>
* src/stack.c (meta_stack_free): fix mem leak of the MetaStack
object
(meta_stack_sync_to_server): try to avoid the restack-flicker
thing
2001-10-07 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_client_message): don't allow
shade/maximize/minimize for windows that don't support those
operations. (minimizing the panel = bad)
2001-10-04 Havoc Pennington <hp@pobox.com>
* src/keybindings.c (meta_change_keygrab): add code to grab all
modifier combinations, so keybindings work with NumLock etc.
* src/menu.c (meta_window_menu_new): remove newlines from menu
items
2001-09-27 Havoc Pennington <hp@pobox.com>
* src/session.c (save_state): when encoding text for session file,
escape XML entities
2001-09-21 Alex Graveley <alex@ximian.com>
* src/Makefile.am (metacity_SOURCES): Add inlinepixbufs.h so
that it gets generated.
* src/frames.c (meta_frames_style_set): Update for new opaque
PangoFontMetrics.
2001-09-17 Havoc Pennington <hp@pobox.com>
* src/ui.c (meta_ui_get_default_mini_icon):
(meta_ui_get_default_window_icon): ref the returned icon, oops.
* src/main.c (main): get the GLib warning/error output into
the metacity logfile, set warnings to be always fatal
* configure.in: bump version to 2.3.13
* src/window.c (get_text_property): hrm, fix bug where we didn't
check errors on XGetTextProperty
2001-09-17 Havoc Pennington <hp@pobox.com>
* src/ui.c: use the inline image data for default icon
* src/common.h (META_MINI_ICON_HEIGHT): move icon size defines
here
* src/Makefile.am: Create an inlinepixbufs.h header with inline
images
2001-09-16 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_lower): new function
* configure.in: bump version to 2.3.8
* src/display.c (event_callback): raise dock on enter notify,
lower it on leave notify (need to refine this behavior)
* src/stack.c (compute_layer): experiment with putting the panel
in the normal layer, and raising it on mouseover
2001-09-15 Havoc Pennington <hp@pobox.com>
* src/window.c: add support for a mini icon in the titlebar
(update_icon): re-enable support for _NET_WM_ICON
* src/session.c (save_state): add an ferror check when writing
session file
2001-09-11 Havoc Pennington <hp@pobox.com>
* src/window.c: fix up handling of text properties, so we
get UTF8_STRING as that type and not as text list, and so
we properly convert from text list to UTF-8
2001-09-10 Havoc Pennington <hp@pobox.com>
* src/window.c: Don't separate user_has_moved/user_has_resized,
fixes bug in east-resizing Emacs, among other things
* src/frame.c (meta_frame_sync_to_window): return immediately if
nothing to do
* src/util.c (ensure_logfile): replace rather than truncate old
logfiles