2005-07-01 Matthias Clasen * === Released 2.7.1 === * NEWS: Updates 2005-07-01 Matthias Clasen * gtk/gtkfilesel.c (cmpl_init_state): Prevent an infinite loop when G_FILENAME_ENCODING is invalid. (#309280, Padraig Brady) Thu Jun 30 14:17:24 2005 Manish Singh * gdk/x11/gdkprivate-x11.h: declare _gdk_xgrab_check_button_event. * gtk/gtkbutton.c: fix signature of gtk_button_grab_broken. 2005-06-30 Matthias Clasen * gdk/x11/gdkvisual-x11.c (gdk_visual_decompose_mask): Avoid infinite loop if a mask is zero. (#309222, David Saxton) * gtk/gtktreemodelfilter.c (gtk_tree_model_filter_fetch_child): Clarify the code, gcc 4 complains about predecrement in MAX(). * modules/input/gtkimcontextxim.c (gtk_im_context_xim_finalize): Don't prematurely unregister callbacks. * NEWS: Updates 2005-06-29 Matthias Clasen * gtk/gtkbutton.c (gtk_button_grab_broken): Handle broken grabs. * gtk/gtkrange.c (gtk_range_grab_broken): Handle broken grabs. * gdk/gdkevents.h: Add a boolean to specify wether the broken grab was implicit. * gdk/x11/gdkdisplay-x11.c (gdk_display_pointer_is_grabbed): As the documentation states, don't return TRUE for implicit grabs. * gdk/x11/gdkdisplay-x11.h (struct _GdkDisplayX11): Add a boolean field to store wether a pointer grab is implicit. * gdk/x11/gdkmain-x11.c (_gdk_xgrab_check_button_event): Track implicit grabs. * gdk/x11/gdkevents-x11.c (gdk_event_translate): Call _gdk_xgrab_check_button_event for button events. 2005-06-28 Matthias Clasen * gtk/gtkiconview.c (gtk_icon_view_calculate_item_size2): Make sure that cell boxes are always completely inside the item area. 2005-06-27 Matthias Clasen * demos/gtk-demo/main.c (create_tree): Make the list of demos scrollable. * gtk/gtktextlayout.c (gtk_text_layout_move_iter_to_line_end): Fix positioning at the end of the line for lines ending in invisible characters. (gtk_text_layout_get_line_display): Set display->layout to a PangoLayout, even for totally invisible lines. * gtk/gtkmenushell.c (gtk_menu_shell_grab_broken): Ignore GrabBroken events which are caused by overgrabbing inside the application; menus rely on these for their operation. * gdk/gdkevents.h (struct _GdkEventGrabBroken): Add a grab_window field. * gdk/win32/gdkevents-win32.c (gdk_event_translate): Set grab_window to NULL when generating GrabBroken events for WM_KILLFOCUS messages. * gdk/x11/gdkmain-x11.c (_gdk_xgrab_check_unmap) (_gdk_xgrab_check_destroy): Set grab_window to NULL when generating GrabBroken events when the grab window becomes unviewable or is destroyed. * gdk/x11/gdkmain-x11.c (gdk_pointer_grab, gdk_keyboard_grab): Generate GrabBroken events when overriding a grab inside the application. In this case, set grab_window to the new grab_window. 2005-06-27 Matthias Clasen * gtk/gtkbutton.c (gtk_real_button_activate): Continue to activate even if we can't grab the keyboard. (gtk_button_finish_activate): Only ungrab when we have a keyboard grab. (#172998, William Jon McCann) 2005-06-27 Matthias Clasen * modules/input/gtkimcontextxim.c (gtk_im_context_xim_finalize): Avoid a segfault. (#309054) 2005-06-27 Matthias Clasen * gdk/x11/gdkdisplay-x11.h (struct _GdkDisplayX11): Add fields for grab timestamps. * gdk/x11/gdkmain-x11.c (gdk_pointer_grab, gdk_keyboard_grab): Store grab timestamps when grabbing. * gdk/x11/gdkdisplay-x11.c (gdk_display_keyboard_ungrab) (gdk_display_pointer_ungrab): Don't unset the grab_window if the timestamps indicate that the ungrab will fails. * gtk/gtkmenu.c (gtk_menu_grab_notify): Cancel menus when they are grab-shadowed by something thats not a submenu. (#145416, Euan MacGregor) 2005-06-27 Owen Taylor * gtk/gtk[hv]ruler.c (gtk_[hv]ruler_draw_ticks): Fix indentation. 2005-06-27 Kjartan Maraas * gtk/gtkhruler.c: (gtk_hruler_draw_ticks): Fix leaks * gtk/gtkvruler.c: (gtk_vruler_draw_ticks): Same Closes bug #308953. 2005-06-27 Matthias Clasen * gtk/gtkiconcache.c (_gtk_icon_cache_new_for_path): Use GMappedFile. * configure.in: Require GLib 2.7.1 2005-06-26 Matthias Clasen * modules/input/gtkimcontextxim.c (gtk_im_context_xim_finalize): Unregister XIM callbacks here. (#309054) * modules/input/gtkimcontextxim.h: Small cleanup. * gtk/gtkmenu.c (gtk_menu_paint): Pay attention to the scroll offset when drawing the box. (#308834, Tom von Schwerdtner) 2005-06-26 Tor Lillqvist * gdk/Makefile.am * gtk/Makefile.am: Current GNU tools do understand the PRIVATE keyword, so no need to remove those entries from the import library. libtool installs the .dll.a import library itself, so no need to do it here. Install the .def file. Sun Jun 26 00:04:36 2005 Manish Singh * gdk/gdkevents.c (gdk_event_get_time, gdk_event_get_state): add GDK_GRAB_BROKEN to the switch cases. * gtk/gtkmenushell.c (gtk_menu_shell_grab_broken): remove unused variables. * gtk/gtkpaned.c (gtk_paned_grab_broken): return TRUE. 2005-06-26 Matthias Clasen * gtk/gtktreeview.c (gtk_tree_view_grab_broken): Stop column header drag operations if the grab is broken. * gtk/gtkhsv.c (gtk_hsv_grab_broken): Stop the drag if the grab is broken. * gtk/gtkcombobox.c (gtk_combo_box_popdown): Don't do explicitly ungrab pointer and keyboard. We're unmapping the grab window anyway. (gtk_combo_box_popup): Handle grab failures. 2005-06-25 Matthias Clasen * gdk/x11/gdkmain-x11.c (gdk_keyboard_grab, gdk_pointer_grab): Don't emit grab-broken for overgrabbing, until we figure out how to do that without breaking the menu code. 2005-06-25 Matthias Clasen Add a GrabBroken event to GDK, and a grab-broken-event signal to GtkWidget. (#107320, Simon Cooke, initial patch by John Ehresman) * gdk/gdkevents.h: Add a GDK_GRAB_BROKEN event type, define a GdkEventGrabBroken event struct. * gdk/win32/gdkevents-win32.c (gdk_event_translate): Generate GrabBroken events in response to WM_KILLFOCUS. * gdk/x11/gdkmain-x11.c: Generate GrabBroken events when a grab is broken by the window becoming unviewable, or by another grab from the same client. * gtk/gtkwidget.h (GtkWidgetClass): Add grab_broken_event. * gtk/gtkwidget.c (gtk_widget_event_internal): Translate GrabBroken events into grab_broken_event signals. * gtk/gtkmain.c (gtk_main_do_event): Propagate GrabBroken events. * gtk/gtkmenushell.c (gtk_menu_shell_grab_broken): Deactivate the menu when the grab is broken. * gtk/gtkcolorsel.c (gtk_color_selection_grab_broken): Stop the color picker if the grab is broken. * gtk/gtkpaned.c (gtk_paned_grab_broken): Stop the drag if the grab is broken. 2005-06-25 Matthias Clasen Add some new stock items. (#166480, Kristof Vansant) * gtk/stock-icons/stock_fullscreen_16.png: * gtk/stock-icons/stock_fullscreen_24.png: * gtk/stock-icons/stock_leave_fullscreen_16.png: * gtk/stock-icons/stock_leave_fullscreen_24.png: * gtk/stock-icons/stock_info_16.png: * gtk/stock-icons/stock_info_24.png: New icons. * gtk/stock-icons/Makefile.am: Add new icons. * gtk/gtkstock.h: Define names for the new icons. * gtk/gtkstock.c (builtin_items): Register new stock items. * gtk/gtkiconfactory.c (get_default_icons): Register new stock icons. 2005-06-24 Owen Taylor * gdk/gdkrgb.c (gdk_rgb_select_conv): Fix up selection of conversion functions for MSB machines: convert_0888[_br] now work on bytes so are endian independent. (Reported by David Zeuthen) 2005-06-24 Matthias Clasen * gtk/gtktextview.c (gtk_text_view_scroll_hpages): Don't jump to the next line if we are at the end of the line. (gtk_text_view_move_cursor_internal): Make movement by paragraphs up/down symmetric. (#307055, Behnam Esfahbod) 2005-06-23 Tor Lillqvist Improve and simplify line segment rendering on Win32, especially the implementation of GDK_CAP_NOT_LAST, and dashed lines. Fixes bugs #306396 and #308413. * gdk/win32/gdkprivate-win32.h (GdkGCWin32): Save the GdkGC's line_style, cap_style and join_style as such in the GdkGCWin32. Don't need to keep the pen_double_dash flag, we can check the line_style. * gdk/win32/gdkgc-win32.c (fixup_pen): New internal function. Sets up the GDI pen type, style, end cap and join attributes to use based on the pen width, GDK line style, end cap style, and join style. For a narrow (zero-width) GDK pen with the GDK_CAP_NOT_LAST end cap style, which typically are used for XOR drawing where it is essential that the last pixel is not drawn, use a GDI cosmetic pen. Only for a cosmetic pen does GDI not draw the last pixel. I deduced this by experimetation, the documentation is rather vague. For other GDK pens use a geometric GDI pen. If the width is 0 or 1 and the GDK end cap style is GDK_CAP_BUTT, and the line style is GDK_LINE_SOLID, use PS_ENDCAP_ROUND. This ensures that also single-pixel length lines are drawn. (For sngle-pixel width lines roundness as such is of course irrelevant.) For dashed lines, use PS_ENDCAP_FLAT. For wide lines use PS_ENDCAP_FLAT, _ROUND or _SQUARE, respectively, for GDK_CAP_BUTT, GDK_CAP_ROUND and GDK_CAP_PROJECTING. For one pixel on-off dashed lines, use PS_ALTERNATE, it seems to work better than PS_USERSTYLE. For other dashed lines, use PS_USERSTYLE and the dashes as set by the user (or the default four-pixel on-off style). (gdk_win32_gc_values_to_win32values, gdk_win32_gc_set_dashes): Call fixup_pen() to do the pen settings after modifying some of the GDK GC attributes that affect pens. * gdk/win32/gdkdrawable-win32.c (render_line_horizontal, render_line_vertical, draw_segments): Check GdkGCWin32::line_style instead of the the removed pen_double_dash member. Don't use PATCOPY unconditionally in the PatBlt() call, use a raster op code that depends on the GC function in use. (draw_rectangle, draw_segments, draw_lines): Be more careful in deciding when to do the manual dash rendering. (draw_segments): Don't do any manual "last point" drawing at all. The above changes takes care of narrow line segments being drawn correctly in most cases, at least on NT-based Windows. 2005-06-23 Matthias Clasen * gtk/gtkfilesystemunix.c (gtk_file_system_unix_get_folder): Fix an error in the cache timeout logic. (#166601, Morten Welinder) * gtk/gtktreeview.c (gtk_tree_view_key_press): Change the keynav for header reordering and resizing to Alt-arrows and Shift-Alt-arrows, following a proposal by the keynav authority. (#308666, Calum Benson) * gtk/gtkiconcache.c (_gtk_icon_cache_new_for_path): Remove a leftover debugging envvar. 2005-06-23 Owen Taylor * gdk/gdkcairo.c (gdk_cairo_set_source_pixbuf): Fix the big endian case for 3-channel source. (Reported by David Zeuthen) 2005-06-23 Matthias Clasen * gtk/gtkbutton.c (gtk_button_construct_child): Don't trigger warnings if there are extra references to the hbox. (#308677, Dan Winship) * gtk/gtkfilesystemunix.c (bookmark_list_write): Use g_file_set_contents(). (#308722, Morten Welinder) 2005-06-22 Matthias Clasen * gdk/x11/gdkdnd-x11.c (xdnd_finished_filter): Set the time field in the event. (#308573, Morten Welinder) * gtk/gtkfilesystemunix.c: Remove gratitious differences between the stable branch and HEAD, which sneaked in with the bookmark renaming. 2005-06-22 Kjartan Maraas * gtk/gtkhsv.c: (gtk_hsv_expose): Don't leak the cairo context Closes bug #308581. 2005-06-21 Matthias Clasen * gtk/gtkarrow.c: * gtk/gtkimage.c: * gtk/gtklabel.c: * gtk/gtkpixmap.c: Modify all of the GtkMisc widgets to round down on centering calculations to match the behaviour of other parts of GTK+. (#307419, Ryan Lortie) 2005-06-21 Matthias Clasen * gtk/gtkdnd.c (gtk_drag_source_set): Connect to button-release-event as well, to handle touchscreen scenarios better. (#171490, Markku Vire) * gtk/*.h: Trivial cleanups. (#169647, #303455, Fabricio Barros Cabral, Benoit Carpentier) * gdk/gdk.symbols: * gdk/gdkwindow.h: * gdk/x11/gdkgeometry-x11.c (gdk_window_move_region): New function which can be used to implement scrolling in non-window widgets. (#135165, Søren Sandmann)