2003-09-27 Matthias Clasen <maclas@gmx.de>
* gtk/gtkitemfactory.h: Deprecate GtkItemFactory in favor
of GtkUIManager. Just leave GtkTranslateFunc undeprecated,
since GtkActionGroup uses it.
2003-09-27 Matthias Clasen <maclas@gmx.de>
* tests/testtext.c: Turn off GTK_DISABLE_DEPRECATED, since
this test uses the soon-to-be-deprecated GtkItemFactory.
* demos/gtk-demo/Makefile.am (demos): Add ui_manager.c,
remove item_factory.c
* demos/gtk-demo/ui_manager.c: Duplicate of item_factory.c
using GtkUIManager instead of GtkItemFactory.
2003-09-27 Matthias Clasen <maclas@gmx.de>
* tests/testmerge.c: Demonstrate the use of the
connect-proxy signal.
* gtk/gtkaction.c (connect_proxy): Add connect-proxy and
disconnect-proxy signals to do small customizations
like displaying tooltips in the statusbar without
custom actions. (#122894, Philip Langdale)
* gtk/gtkuimanager.c (update_node): Don't leak tooltip.
Fri Sep 26 23:49:44 2003 Kristian Rietveld <kris@gtk.org>
Landing the new ComboBox. Note that only gtkcombobox.h and
gtkcomboboxentry.h are public.
* gtk/gtkcellview.[ch], gtk/gtkcellviewmenuitem.[ch],
gtk/gtkcombobox.[ch], gtk/gtkcomboboxentry.[ch]: new files.
* gtk/Makefile.am, gtk/gtk.h: adding the new files.
* tests/testcombo.c: and a new test.
* tests/Makefile.am: adding the new test.
2003-09-25 Tor Lillqvist <tml@iki.fi>
* demos/gtk-demo/main.c: Don't use hardcoded DEMOCODEDIR on Windows.
2003-09-21 Tor Lillqvist <tml@iki.fi>
* gdk/win32/gdkevents-win32.c (handle_wm_paint): New
function. Code split out from gdk_event_translate(). Needed
because gdk_event_get_graphics_expose() couldn't do anything
sensible otherwise. (Not that I think graphics exposes work anyway
in gdk/win32, but at least now the code could work.)
(gdk_event_get_graphics_expose): Call handle_wm_paint() instead of
gdk_event_translate(), which couldn't have worked as it doesn't
take any pre-allocated GdkEvent parameter any longer.
(gdk_event_translate): Handle WM_MOUSEACTIVATE: Don't let
GDK_WINDOW_TEMP windows be activated. (#122578, John Ehresman)
2003-09-24 Matthias Clasen <maclas@gmx.de>
* gtk/gtkaction.c (connect_proxy): Sync tooltips on toolitems.
* gtk/gtkuimanager.c (update_node): Don't complain about missing
actions on popups. Re-set "tooltip" property on toolitems after
adding them to parent to trigger proxy update.
2003-09-22 Matthias Clasen <maclas@gmx.de>
* tests/testmerge.c (main): Initially activate the JUSTIFY_RIGHT
group member to test the fix for #122904.
* gtk/gtkactiongroup.c (gtk_action_group_add_radio_actions_full):
Add the action to the group before activating it, otherwise we
may end up with multiple active group members. (#122904, Marco
Pesenti Gritti)
2003-09-21 Matthias Clasen <maclas@gmx.de>
Changes to make cross-process merging feasible:
* gtk/gtkuimanager.[hc]: Add a readonly "ui" property which holds the
merged UI definition. Remove the "changed" signal, since its role
is now filled by "notify::ui". Instead add a "actions-changed" signal
which gets emitted when the set of actions changes.
* gtk/gtktoggleactionprivate.h:
* gtk/gtktoggleaction.[hc] (gtk_toggle_action_[sg]et_draw_as_radio):
Add a "draw_as_radio" property to toggle actions so that they can be
used as proxies for radio actions much like the "draw_as_radio"
property on check menu items enables them to operate as proxies for
radio actions.
Prevent the "show_all" trap for action-based menus (see
http://mail.gnome.org/archives/gtk-devel-list/2003-September/
msg00260.html):
* gtk/gtkmenu.c (gtk_menu_{hide,show}_all): Remove g_return_if_fail()
calls from static functions.
* gtk/gtkuimanager.c (update_node):
* gtk/gtkaction.c (connect_proxy): Set "no_show_all" on constructed
widgets whose visibility is externally controlled.
* gtk/gtkwidget.[hc] (gtk_widget_[gs]et_no_show_all): Add a boolean
"no_show_all" property with setter and getter. When TRUE, it keeps
gtk_widget_{hide,show}_all() from modifying the visibility of the
widget and its children.
2003-09-20 Tor Lillqvist <tml@iki.fi>
* gtk-zip.sh.in: Don't use zip -r on the etc directory, to avoid
including editor backup files. List files we want explicitly.
* gtk/gtkmain.c (_gtk_get_lc_ctype): New function. On Unix, just
calls setlocale (LC_CTYPE, NULL). On Windows, looks for the
LC_ALL, LC_CTYPE and LANG environment variables, than calls
g_win32_getlocale().
(gtk_get_default_language): Code snippet moved to above function,
call it.
* gtk/gtkimmulticontext.c (gtk_im_multicontext_get_slave)
* gtk/gtkrc.c (gtk_rc_context_parse_file): Call
_gtk_get_lc_ctype() instead of setlocale().
2003-09-19 Tor Lillqvist <tml@iki.fi>
* gdk/win32/gdkkeys-win32.c (update_keymap): Handle dead keysyms
present on the US-International keyboard. For clarity, order
keysyms in case statement according to numeric value.
(gdk_keymap_translate_keyboard_state): Handle Caps Lock
correctly. (#120176, Ken Rastatter and Owen Taylor)
2003-09-18 Matthias Clasen <maclas@gmx.de>
* gtk/gtkaction.c (gtk_action_finalize): Call g_closure_unref() to
unref a closure, not g_object_unref(). (#122637, Marco Pesenti Gritti)
2003-09-18 Matthias Clasen <maclas@gmx.de>
Install accelerators on actions, not on proxies, support
accelerator-only actions:
* gtk/gtkmenu.c (get_accel_path): New function to get the accel path
and its lock status either via _gtk_widget_get_accel_path() or by
looking at the accel_path stored in the menu item itself and determining
its lock status by peeking into the contained accel label. This was
already (accidentally) committed a week ago.
* gtk/gtkaction.h (gtk_action_set_accel_group):
(gtk_action_[dis]connect_accelerator): New functions.
* gtk/gtkaction.c (struct _GtkActionPrivate): Add accel_group,
accel_closure and accel_count. We must have a reference to the accel_group,
since we need it in connect_proxy. The count is necessary to ensure
that the accelerator isn't removed before the last proxy requesting
it has been unmerged.
(connect_proxy): Connect the accelerator to the
action now, only set the accel_path on the menuitem.
(remove_proxy): Disconnect the accelerator from the action, not from
the menuitem.
(gtk_action_set_accel_group): Set the accel group.
(gtk_action_[dis]connect_accelerator): Count the number of times
this functions have been called and install/remove the accelerator if
the count leaves/reaches zero.
* gtk/gtkuimanager.h (GtkUIManagerItemType): Add
GTK_UI_MANAGER_ACCELERATOR.
* gtk/gtkuimanager.c (NodeType): Add NODE_TYPE_ACCELERATOR.
(start_element_handler): Create NODE_TYPE_ACCELERATOR nodes from
<accelerator> elements.
(gtk_ui_manager_add_ui): Create NODE_TYPE_ACCELERATOR nodes when
type is GTK_UI_MANAGER_ACCELERATOR.
(update_node): Set the accel group on actions before creating their
proxies. Don't set the accel group on created menus. For
NODE_TYPE_ACCELERATOR nodes, [dis]connect the actions' accelerator.
(print_node): Also emit <accelerator> elements.
* tests/testmerge.c (dump_accels): Add a "Dump Accels" button.
2003-09-17 Matthias Clasen <maclas@gmx.de>
* gtk/gtkuimanager.c (text_handler): Report unexpected character
data as error from the GMarkup parser, otherwise things like
gtk_ui_manager_add_ui_from_string (ui, "Hi there!", -1, &error)
pass unexpectedly.
* gtk/gtkuimanager.c (update_smart_separators): New function which
implements "smart" separators by iterating once over the entries of a
menu, hiding and showing separators as necessary.
(update_node): Mark separators used as fences of placeholders as
hidden. Explicitly added separators are marked as smart. Call
update_smart_separators after updating a menu or toolbar node.
Connect update_smart_separators to "notify::visible" signal on menu
and tool items.
* tests/merge-[12].ui: Test smart separators.
* gtk/tmpl/gtkuimanager.sgml: Add a paragraph about smart separators.
2003-09-15 Matthias Clasen <maclas@gmx.de>
* gtk/gtkactiongroup.[hc]: (gtk_action_group_add_radio_actions):
(gtk_action_group_add_radio_actions_full): Add value parameter to allow
setting the currently selected group member before connecting signals.
(GtkToggleActionEntry): Separate struct for constructing toggle actions,
including a boolean to initialize the action state before connecting
signals.
(gtk_action_group_add_toggle_actions):
(gtk_action_group_add_toggle_actions_full): New functions to construct
toggle actions from an array of GtkToggleActionEntries.
* demos/gtk-demo/appwindow.c:
* tests/testactions.c:
* tests/testmerge.c: Adjust to new action group API.
* gtk/gtk-sections.txt: Add gtk_action_group_add_toggle_actions[_full].
Sun Sep 14 16:59:52 2003 Soeren Sandmann <sandmann@daimi.au.dk>
* gtk/gtktoolbar.c (gtk_toolbar_init): Name the arrow
"gtk-toolbar-arrow" so themes can special-case it.
Sun Sep 14 15:49:00 2003 Soeren Sandmann <sandmann@daimi.au.dk>
* gtk/gtktoolbar.c (toolbar_item_is_homogeneous): Unref the
PangoFontMetrics. Patch from Steve Chaplin (#122257).
2003-09-14 Tor Lillqvist <tml@iki.fi>
* gdk/win32/gdkwindow-win32.c (show_window_internal): Remove
special-case code for WS_EX_TRANSPARENT (GDK_INPUT_ONLY) windows,
the usefulness of which was already in doubt. Removing it fixes
bugs #118575 and #121851.
Fri Sep 12 16:32:53 2003 Jonathan Blandford <jrb@redhat.com>
Merge from stable.
* gtk/gtktreeview.c (gtk_tree_view_button_press): only save the
pressed button (used to determine if we want to initiate a drag later
on) if the current grab widget is either NULL or tree_view (Reported
by Jeroen Zwartepoorte).
Wed Sep 10 22:25:04 2003 Kristian Rietveld <kris@gtk.org>
The table menu patch! Turns GtkMenu into a table, so you can attach
menu items in numerous new ways! Be creative!
Contains some bug fixes and RTL adaptions from Matthias Clasen.
* gtk/gtkmenu.c [toplevel]: introduce ATTACH_INFO_KEY, extend
GtkMenuPrivate, introduce AttachInfo, add child properties enum,
(gtk_menu_free_private), (gtk_menu_get_private): we have to free
the heights array in the private struct,
(gtk_menu_class_init): reorder code a bit, install child properties,
(get_attach_info), (get_child_attach): new utility functions,
(gtk_menu_set_child_property), (gtk_menu_get_child_property): introduce
child properties, for the attach info,
(gtk_menu_remove): remove AttachInfo from menu item,
(gtk_menu_real_insert): implemented algorithm to automagically place
inserted menu items at the correct place in the table,
(gtk_menu_size_request), (gtk_menu_size_allocate),
(compute_child_offset): reworked/rewritten to support table menus,
(gtk_menu_attach): new function,
(find_child_containing), (gtk_menu_move_current): new functions to
get table menu keynav right.
* gtk/gtkmenu.h: add gtk_menu_attach() prototype.
2003-09-10 Matthias Clasen <maclas@gmx.de>
* gtk/gtksocket.c (gtk_socket_filter_func): Only remove
PropertyNotify events from the stream if they have been handled,
in order to enable extending the plug<->socket communication via
properties.
Wed Sep 10 01:06:44 2003 Kristian Rietveld <kris@gtk.org>
Big TreeView DnD fixage, makes drops on empty models work, makes
TreeStore DnD work and gets rid of gtk-tree-model-drop-append.
Related bugs #95362 and #113314. I don't want to touch this code
ever again.
* gtk/gtktreeprivate.h (GtkTreePrivate): add empty_view_drop field.
* gtk/gtktreednd.c (gtk_tree_get_row_drag_data): add check
for selection_data->length.
* gtk/gtktreeview.c (struct DestRow), (dest_row_free),
(set_dest_row), (get_dest_row): we don't store just the row ref
anymore, but a struct with the row ref and additional info,
(set_destination_row): handle drops on empty space and some
style fixes,
(get_logical_dest_row): also return path_down_mode/drop_append_mode
flags, handle dropping childs on their new parents, rewrite
drop append handling into something saner,
(gtk_tree_view_drag_motion): show a "drop possible arrow" on empty
spaces,
(gtk_tree_view_drag_drop): updates for updated backend,
(gtk_tree_view_drag_data_received): updates for updated backend,
path down mode (treestore DnD) handling,
(gtk_tree_view_set_drag_dest_row): set empty_view_drop flag,
when we are trying to drop a row on an empty model,
(gtk_tree_view_get_drag_dest_row): handle empty_view_drop flag.
* gtk/gtkliststore.c (gtk_list_store_drag_data_received),
(gtk_list_store_row_drop_possible): style and drop-append fixes.
* gtk/gtktreestore.c (gtk_tree_store_drag_data_received): ditto.
2003-09-08 Alexander Larsson <alexl@redhat.com>
* gtk/gtkeventbox.[hc]:
Implement gtk_event_box_get/set_input_only()
* tests/testgtk.c:
Tests for the new input only event boxes
Mon Sep 8 21:44:20 2003 Kristian Rietveld <kris@gtk.org>
Fixes from David Hampton <hampton@employees.org> via gtk-devel-list.
* gtk/gtktreemodelfilter.c (gtk_tree_model_filter_elt_get_path): fix
the call to gtk_tree_model_filter_add_root,
(gtk_tree_model_filter_row_changed): bail out if c_path is not above
the virtual root, allow building levels on the second try to convert
the child path to a filter path,
(gtk_tree_model_filter_convert_iter_to_child_iter): pass the virtual
root when calling gtk_tree_model_filter_elt_get_path.
2003-09-07 Matthias Clasen <maclas@gmx.de>
* gtk/gtkuimanager.c (update_node): Fix a C99ism. (#121640,
Josh Beam)
Fixes for accelerator handling during (un)merging:
* gtk/gtkuimanager.c (update_node): Move setting info-action
after the switch, since the old action is needed in some cases.
In cases of proxy type mismatch, disconnect the old proxy from
the old action.
* gtk/gtkaction.c (remove_proxy): Renamed from
gtk_action_remove_proxy(). Move unsetting of the accelerator
here from disconnect_proxy() in order to catch all cases of
removing a proxy.
(gtk_action_disconnect_proxy): Fix logic in g_return_if_fail()
to fail if proxy isn't a proxy of action.
2003-09-06 Matthias Clasen <maclas@gmx.de>
* gtk/gtkaction.c (gtk_action_connect_proxy): Disconnect from
prev_action, not from action. (Fix by David Hampton)
Fri Sep 5 14:15:10 2003 Owen Taylor <otaylor@redhat.com>
* Back out locale-dependent interpretation of
KP_Decimal, the official XFree86 interpretation
is that KP_Decimal => . KP_Separator => ,
always, independent of locale.
(#105161, Frederic Crozat,
http://bugs.xfree86.org/show_bug.cgi?id=534)
2003-09-04 Matthias Clasen <maclas@gmx.de>
* tests/testmerge.c: Test buttons and toggle buttons as proxies.
* gtk/gtktoggleaction.c (connect_proxy):
(gtk_toggle_action_real_toggled): Support toggle buttons as proxies. Note
that a "draw_as_radio" property is needed for check buttons similar to
check menu items, in order to fully support button proxies for radio actions.
* gtk/gtkaction.c (connect_proxy): Allow buttons as proxies.
2003-09-04 Matthias Clasen <maclas@gmx.de>
* tests/testmerge.c (toggle_dynamic): Test gtk_ui_manager_add_ui().
* gtk/gtkuimanager.h: Add GtkUIManagerItemType enum which is needed for the
'type' argument of gtk_ui_manager_add_ui().
* gtk/gtkuimanager.[hc] (gtk_ui_manager_add_ui): Add 'type' and 'top' arguments
to make this function as powerful as the XML methods of adding UI. (#120647)
* gtk/gtk-sections.txt: Add GtkUIManagerItemType.
* tests/merge-2.ui: Use "position" instead of "pos".
* gtk/gtkuimanager.c (start_element_handler): No need
to be terse: Change the name of the "pos" attribute
to "position".
* gtk/tmpl/gtkuimanager.sgml: Change the name of the "pos"
attribute to "position".
* gtk/gtkuimanager.c: Un-prefix GtkUIManagerNodeType and
GtkUIManagerNode to shorten the names and to make the
GTK_UI_MANAGER_<TYPE> names available for a public enum.
Wed Sep 3 23:18:17 2003 Kristian Rietveld <kris@gtk.org>
Merge from stable.
* gtk/gtkmenu.c (gtk_menu_real_move_scroll): for the END case,
use end_position - page_size instead of G_MAXINT, since
gtk_menu_scroll_to doesn't CLAMP anymore internally. (Fixes#121237,
reported by Havoc Pennington).