2002-03-06 Havoc Pennington <hp@redhat.com>
* src/frames.c (meta_frames_manage_window): use hash_table_replace
instead of g_hash_table_insert
* src/main.c (main): only enable verbose/debug if you set
METACITY_VERBOSE/METACITY_DEBUG
* src/util.c (ensure_logfile): only use a log file if
METACITY_USE_LOGFILE is set
* src/display.c (meta_display_for_x_display): add warning if
MetaDisplay isn't found
* src/window.c (meta_window_free): add an assertion that we
successfully cleared the grab window
2002-03-05 Havoc Pennington <hp@pobox.com>
Work on opaque animations more, still suck too much
to turn on. Not sure how to make them good.
* src/effects.c (meta_effects_draw_box_animation):
add a slide-up mode for shading
* src/ui.c (meta_image_window_set): change image window to work by
setting back pixmap on the GtkWindow, instead of using GtkImage.
2002-03-04 Havoc Pennington <hp@pobox.com>
* src/main.c (main): try ignoring SIGXFSZ, though I'm not
sure what that does exactly. I'm hoping it gives me EFBIG.
* src/util.c (ensure_logfile): log to a file in /tmp instead
of to ~/metacity.log.
2002-03-02 Havoc Pennington <hp@pobox.com>
* src/window.c (recalc_window_features): disable resize etc. if
we're fullscreen
(constrain_size): fix size constraints when fullscreen
* src/display.c (meta_display_open): fix missing comma that
ended up concatenating two of the properties breaking
FULLSCREEN state and PING protocol
2002-03-02 Havoc Pennington <hp@pobox.com>
* src/display.c: Add hacking to fix the problem that we made our
XGrabPointer() during Alt+Tab actually succeed, so on popping down
Alt+Tab we got an EnterNotify from the ungrab, which resulted in
focusing the window under the mouse. i.e. Alt+Tab didn't work with
sloppy focus.
2002-02-26 Havoc Pennington <hp@pobox.com>
Screw around with Anders's ping patch so he'll get plenty of CVS
conflicts. ;-)
* src/display.c (meta_display_ping_window): spew warnings
if we try to call this with CurrentTime
(meta_display_ping_timeout): remove ping from the pending pings
after it times out.
* src/util.h: added PING debug category
* src/display.c (remove_pending_pings_for_window): don't remove
"tmp" just before "tmp->next", don't break out of loop after
finding the first match
(meta_display_open): no trailing comma in array init
(event_callback): move the processing of ping replies into a
separate function
* src/screen.c (set_supported_hint): add _NET_WM_PING to supported
list
* src/display.h: change gpointer to void*
2002-02-26 Anders Carlsson <andersca@gnu.org>
* src/display.c: (ping_data_free),
(remove_pending_pings_for_window), (meta_display_open),
(event_callback), (meta_display_unregister_x_window),
(meta_display_ping_timeout), (meta_display_ping_window),
(meta_display_window_has_pending_pings):
Implement meta_display_ping_window, and filter out scroll wheel
events.
* src/display.h:
Add MetaWindowPingFunc, meta_display_ping_window and
meta_display_window_has_pending_pings.
2002-02-24 Havoc Pennington <hp@pobox.com>
* src/display.c (xcursor_for_op): switch on the op passed in, not
the active op. Gives us the right cursor during resizing, etc.
* src/errors.c: rearrange all the error stuff to adapt to the GDK
change a while back, so now we print our X errors again
* src/display.c (meta_display_begin_grab_op): remove KeyPressMask
and KeyReleaseMask from the XGrabPointer(), this caused BadValue
and kept the grab from ever succeeding. Fixes the problem with the
GTK resize grip - this is why you shouldn't break your X error
spew. ;-)
* src/display.c: debug spew tweaks
* src/window.c (meta_window_client_message): do some
s/verbose/topic/ stuff
2002-02-19 Havoc Pennington <hp@pobox.com>
* src/ui.c (meta_ui_init): put in hack to keep Pango from mangling
our server grab and locking up on startup. (hack doesn't work
but I want to fix it on my real computer not this laptop)
* src/window.c: Implement _NET_WM_STATE_FULLSCREEN
* src/display.c (meta_display_open): add atoms for
_NET_WM_STATE_FULLSCREEN
2002-02-14 Havoc Pennington <hp@pobox.com>
* src/theme-viewer.c: use the preview widget here
* src/preview-widget.h, src/preview-widget.c: make the theme
preview into a nice widget
* src/frames.c (meta_frames_ensure_layout): replace frame layout
if the frame style changes, this only ends up mattering if you
e.g. changed the font size for windows in a different state such
as maximized, which is crack, but the code may as well be correct
* src/theme.c (meta_theme_get_frame_style): new function so we can
detect an invalid cache of the PangoLayout in a frame
2002-02-13 Anders Carlsson <andersca@gnu.org>
* src/theme.c (meta_pango_font_desc_get_text_height): Use
pango_context_get_metrics instead of loading the font.
2002-02-12 Anders Carlsson <andersca@gnu.org>
* src/frames.c (meta_frames_manage_window): Set prelit_control
to META_FRAME_CONTROL_NONE.
(meta_frames_update_prelit_control): New function for setting
the prelit control.
(meta_frames_paint_to_drawable): Set prelight state.
(meta_frames_enter_notify_event): Update prelit control.
(meta_frames_leave_notify_event): Likewise.
(meta_frames_motion_notify_event): Likewise.
* src/frames.h (struct _MetaUIFrame): add prelit_control.
2002-02-09 Havoc Pennington <hp@pobox.com>
* src/theme.c (meta_theme_set_current): add a newline to an error
message
* src/themes/Gorilla: add Gorilla theme by Jakub Steiner ported to
metacity by Kenneth Christiansen
2002-02-09 Havoc Pennington <hp@pobox.com>
* src/theme.c (meta_draw_op_draw_with_env): implement wacky "tile"
draw op to lose some of the PNG files in Gorilla theme
* src/theme-parser.c: parse the tile primitive
2002-02-09 Havoc Pennington <hp@pobox.com>
* src/window.c (update_icon): port to icon cache
* src/iconcache.c, src/iconcache.c: begin process of cleaning up
window.c by moving the icon-reading code in here, based on the
code in libwnck, which was in turn based on the earlier metacity
code
2002-02-09 Havoc Pennington <hp@pobox.com>
* src/stack.c (meta_stack_sync_to_server): hmm, and don't set
last_window at all if we don't ++newp. Fixes even more obscure
stacking bug.
2002-02-09 Havoc Pennington <hp@pobox.com>
* src/stack.c (meta_stack_sync_to_server): assign last_window
prior to ++newp, so we don't try to stack windows with respect to
themselves. Fixes some obscure stacking bugs.
2002-02-09 Havoc Pennington <hp@pobox.com>
* src/theme-parser.c: try to make more error message strings the
same, easier for translators
* src/theme.c (meta_draw_op_free): free color spec for line op
(meta_theme_free): free the integer_constants hash
* src/theme-parser.c (parse_boolean): move above first use
* src/theme-viewer.c: fixes for theme.h changes
* src/frames.c (queue_recalc_func): don't recreate layout
immediately, just save title text. should speed things up.
(meta_frames_set_title): just remove the layout here also,
and save title text.
* src/theme-parser.c (parse_toplevel_element): parse title_scale
attribute on frame_geometry
* src/theme.c: support setting the text size
* src/frames.c: support setting the text size
* theme-format.txt: updates
2002-02-09 Havoc Pennington <hp@pobox.com>
* src/themes/Atlanta/metacity-theme-1.xml: put in some kind of
distinctive frame for UTILITY, though it's ugly. Also put in the
borderless look for maximized windows.
* src/stack.c (compute_layer): put splash screen in the splash
layer
* src/stack.h (enum): create a splash screen layer
* src/place.c (meta_window_place): center splashscreen, and fix a
typo in the centering code
* src/window.c (recalc_window_features): disable most features on
splash screens
* src/screen.c (set_supported_hint): add UTILITY and SPLASHSCREEN
hints
* src/window.c: add UTILITY, SPLASHSCREEN implementation
* src/window.h (enum): add UTILITY, SPLASHSCREEN types
* src/theme-parser.c (parse_toplevel_element): parser support
for has_title attribute
* src/theme.c (meta_frame_layout_get_borders): handle a has_title
field in the layout, for utility windows that don't display a
title (would be better to be able to shrink the title text,
but that's kind of tricky to implement :-/)
2002-02-08 Havoc Pennington <hp@pobox.com>
* src/screen.c (set_supported_hint): add _NET_WM_STATE_HIDDEN
to _NET_SUPPORTED
* src/keybindings.c (meta_set_keybindings_disabled): put in header
file, to fix warning.
* src/display.c (meta_display_open): add _NET_WM_STATE_HIDDEN atom
* src/window.c (set_net_wm_state): set _NET_WM_STATE_HIDDEN for
shaded and minimized windows
(meta_window_show): call set_net_wm_state() if we map the window
or frame
(meta_window_hide): call set_net_wm_state() if we unmap the window
or frame
2002-02-08 Havoc Pennington <hp@pobox.com>
* src/window.c (set_net_wm_state): only set skip pager/tasklist if
the app set it, don't set it again based on semantic type.
2002-02-08 Anders Carlsson <andersca@gnu.org>
* src/theme.c (scale_and_alpha_pixbuf): If we're only
scaling horizontally or vertically, use GDK_INTERP_NEAREST.
002-02-08 Havoc Pennington <hp@pobox.com>
* src/display.c (meta_display_grab_focus_window_button): grab
buttons 2 and 3 also, so you can focus a window with those,
#70840
(event_callback): fix this to let you focus a window with any
unmodified click, and also with Alt+button1
* configure.in (AC_OUTPUT): add po/Makefile.in
* autogen.sh: port to glib-gettextize, remove stupid
auto-find-subdirs crap
* Makefile.am (SUBDIRS): add po to subdirs, #70615
* src/window.c (meta_window_activate): unshaded window if shaded,
I thought this was in bugzilla but I don't see it. anyway thanks
whoever mentioned it to me.
2002-02-08 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_show): when mapping a window with
struts, invalidate the work areas it's on. Should fix at least
part of the problem with windows maximizing over panels.
* src/workspace.c (meta_workspace_invalidate_work_area): also
queue move/resize on sticky windows
* src/tools/Makefile.am: consolidate reload-theme, restart into a
"metacity-message" app and add enable/disable keybindings to the
messages it knows about.
* src/keybindings.c:
(meta_change_keygrab): grab keyboard synchronously
(meta_display_process_key_event): if all keybindings are toggled
off, ReplayKeyboard, else AsyncKeyboard, except that the debug
binding for toggling back on is always processed
(meta_set_keybindings_disabled): function to disable/enable
all keybindings
2002-02-07 Havoc Pennington <hp@pobox.com>
* src/run-metacity.sh: if DEMO_TEST is set then run the window
demo
* src/tools/metacity-window-demo.c: Create an app with all the
semantic window types, for testing and for designing themes.
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-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
2001-09-08 Havoc Pennington <hp@pobox.com>
* src/ui.c (meta_ui_init): don't use gdk_display_name
* src/frame.c (meta_window_ensure_frame): create frame
with screen default visual, rather than client window visual;
for DRI games, the client window visual was not allowed to be
a child of another window with the same visual, apparently.
Anyhow now we copy twm, etc. so it must be correct.
* src/place.c (meta_window_place): if a transient is placed and
its parent has focus, focus the transient.
2001-09-01 Havoc Pennington <hp@pobox.com>
* src/errors.c: clean up the code, and replace GDK X error handler
with one that chains up to GDK but first logs the error to logfile.
2001-08-29 Havoc Pennington <hp@pobox.com>
* src/display.c (meta_display_open): wrong atom name -
_NET_SUPPORTED not _NET_WM_SUPPORTED
* src/window.c (meta_window_configure_request): geez, why were we
honoring configure requests for width/height for normal windows.
Denied!
(meta_window_client_message): _NET_WM_MOVERESIZE support, sort of
(doesn't quite work, acts like owner_events = true?)
* src/display.c: add _NET_WM_MOVERESIZE atom
2001-08-28 Havoc Pennington <hp@pobox.com>
Unbreak tab popup a bit.
* src/stack.c (meta_stack_get_tab_list): add workspace argument
(meta_stack_get_tab_next): add workspace argument
* src/window.c: implement recording of the last user-initiated
window position, so we can magically handle moving panels around
really nicely.
* src/wm-tester/main.c (set_up_icon_windows): fix to use new GTK
API
2001-08-24 Havoc Pennington <hp@pobox.com>
* src/window.c (constrain_position): force fullscreen windows to
be at 0,0
* src/ui.c: use NULL colormap to get bitmaps, requires
very latest GTK from CVS or it will spew warnings
and not work.
* src/window.c (constrain_size): disallow larger than screen in
all cases, even if user has performed a resize operation.
(constrain_position): keep window boxed onscreen.
* src/keybindings.c (meta_display_process_key_event): revert an
earlier change that disabled global keybindings when a grab is in
effect; instead, only disable global keybindings if a _keyboard_
grab is in effect. The earlier change was just a broken
workaround, the problems it fixed should have been solved by the
addition of XGrabKeyboard() on the metacity keyboard grabs.
This should fix the problem with
pick-up-window-and-move-to-another-desktop.
2001-08-23 Havoc Pennington <hp@pobox.com>
* src/window.c (update_icon): attempt to use the mask as well as
the pixmap. Probably doesn't work so well.
* src/tabpopup.c: make this look a little nicer
2001-08-22 Havoc Pennington <hp@pobox.com>
* src/window.c (update_icon): half-ass implementation of
getting pixmap icons (WM_NORMAL_HINTS and KWM_WIN_ICON).
Ignores mask for now, with possibly ugly results for
some apps.
(read_rgb_icon): fixage
2001-08-19 Havoc Pennington <hp@pobox.com>
* src/window.c: add a "fullscreen" semantic type; if a window
requests the screen size exactly, and is undecorated, and is not a
desktop window, we consider it a fullscreen window and keep it on
top.
Totally untested.
2001-08-19 Havoc Pennington <hp@pobox.com>
* src/screen.c (set_supported_hint): we support _NET_WM_ICON
* src/wm-tester/main.c: add stuff to test _NET_WM_ICON
(but it doesn't work, so it isn't tested yet)
* src/window.c (update_icon): read _NET_WM_ICON
* src/screen.c (meta_screen_new): set the WM_ICON_SIZE hint
* src/tabpopup.c (meta_ui_tab_popup_select): remove assertion
* src/window.c (meta_window_get_icon_geometry): fix obscure
memleak
2001-08-19 Havoc Pennington <hp@pobox.com>
* src/tabpopup.c: add prototype thingy to display windows we're
cycling through with tab. Not wired up to keybindings yet.
2001-08-18 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_configure_request):
(meta_window_move_resize_internal): Make a half-hearted
not-very-tested attempt to handle window resizes correctly with
respect to window gravity.
2001-08-18 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_get_gravity_position): hrm, I fixed
this wrong the other day. Fixes static gravity when moving
windows.
2001-08-18 Havoc Pennington <hp@pobox.com>
* src/ui.c (meta_image_window_set_position): also set the current
size. Lame hack of the day.
* src/effects.c (effects_draw_box_animation_timeout): use the
delay exposes feature to avoid the scren dirt
* src/ui.c
(meta_ui_push_delay_exposes):
(meta_ui_pop_delay_exposes): feature to let us delay redraws until
after we do server-grabbed draw-on-inferiors effects
2001-08-18 Havoc Pennington <hp@pobox.com>
* src/effects.c (effects_draw_box_animation_timeout): use the
delay exposes feature to avoid the scren dirt
* src/ui.c (meta_image_window_set_position): use gtk_window_move()
to set the position
(meta_ui_push_delay_exposes):
(meta_ui_pop_delay_exposes): feature to let us delay redraws until
after we do server-grabbed draw-on-inferiors effects
2001-08-06 Havoc Pennington <hp@pobox.com>
* src/effects.c (meta_effects_draw_box_animation): Get start
time after we do the pixbuf from drawable, so we don't count
time spent getting pixbuf from drawable in the animation time.
2001-08-06 Havoc Pennington <hp@pobox.com>
* src/effects.c: add opaque minimize/shade feature. The wireframe
seemed kind of confusing and unclear from a UI standpoint.
I know, I know. The bloat begins here.
Also, we don't need to grab the server during opaque min/shade,
which has some nice implications.
* src/ui.c: Add features to render a window with an image in it,
and also wrap pixbuf_from_drawable
* src/effects.c (meta_effects_draw_box_animation):
modify to be smoother (at least theoretically) by
syncing to current time and "dropping frames"
as appropriate.
* src/window.c (meta_window_shade): draw animation
for shading too
2001-08-06 Havoc Pennington <hp@pobox.com>
* src/effects.c (meta_effects_draw_box_animation):
modify to be smoother (at least theoretically) by
syncing to current time and "dropping frames"
as appropriate. A precursor to flashier animations
that take more CPU to do.
* src/window.c (meta_window_shade): draw animation
for shading too
2001-08-05 Anders Carlsson <andersca@gnu.org>
* src/display.h, src/display.c: Add _NET_WM_ICON_GEOMETRY atom.
* src/window.c (meta_window_calc_showing): See if the window has
an icon geometry and show a morphing animation from the window's
coordinates to the icon's coordinates.
(meta_window_get_icon_geometry): New function that fetches a
window's icon geometry.
* src/Makefile.am: Add effects.[ch].
* src/effects.c: New file with cool effects.
2001-08-03 Havoc Pennington <hp@pobox.com>
* src/keybindings.c: Add Alt + left/right arrow to
move between workspaces.
* src/screen.c (set_wm_check_hint): put property pointing back to
itself on the _WIN_SUPPORTING_WM_CHECK window.