Compare commits

..

4048 Commits

Author SHA1 Message Date
Matthias Clasen
5b2be2f6f1 GdkTouchCluster Clarify doc language
'Transient' is what was meant here, not 'transitive'.
2012-02-18 18:05:00 +01:00
Matthias Clasen
b51662cafa GdkCrossingMode: Remove duplicated doc entry 2012-02-18 18:05:00 +01:00
Carlos Garnacho
a328313885 gtk: Release captured events down the hierarchy
Instead of releasing directly onto the target widget,
release down the hierarchy as if uncaptured.
2012-02-18 18:05:00 +01:00
Carlos Garnacho
8528385c80 touchcluster: use an array to store touch IDs
A GList doesn't make much sense for storing guints, so
now a GArray is used internally.

gdk_touch_cluster_get_touches() has changed to return an
allocated guint*, and gdk_touch_cluster_get_n_touches()
has been added too.
2012-02-18 18:05:00 +01:00
Carlos Garnacho
c7eba11400 scrolledwindow: store whether the last button press was valid independently
Use a separate boolean instead of coding it up in the last button press
coordinates. This incidentally fixes 0-threshold on kinetic scrolling,
allowing the child widget to get button releases before it prematurely
gets ::grab-broken.
2012-02-18 17:48:54 +01:00
Carlos Garnacho
2cb50c9af2 scrolledwindow: Do not handle dnd-threshold=0
There's no need for it as the GtkSettings property has a lower
limit of 1.
2012-02-18 17:48:54 +01:00
Carlos Garnacho
bc5e401de4 docs: Add section about multitouch and other interaction patterns
This is a ripoff of http://live.gnome.org/GTK%2B/DeviceInteractionPatterns,
with better phrasing in general, some more factual points, and multitouch
explained.
2012-02-18 17:48:54 +01:00
Carlos Garnacho
fb99b5eeb4 improve docs for multitouch features 2012-02-18 17:48:53 +01:00
Carlos Garnacho
d6e23b0924 gtk,gestures: Only match 0-length strokes with homologous stock ones
Avoids spurious stroke matching with fleeting touches.
2012-02-18 17:48:53 +01:00
Carlos Garnacho
42c0d95791 gtk,gestures: Handle multitouch gestures
Gestures are only compared with stock gestures with the same number
of strokes. If a gesture consists of several strokes, the first stroke
is compared (and any possible angle skew is gotten from it), and then
the other strokes are correlated and also compared.

If there's no feasible correlation of strokes, or the gestures yield
an accumulated confidence that's below the threshold, the gesture is
not considered to match.

testgestures has been also added a simple 2-finger gesture for testing.
2012-02-18 17:48:53 +01:00
Carlos Garnacho
6d7ac9e87e textview: Set background on the widget's window
The widget window is usually covered by the bin_window,
this is just necessary so the parent scrolled window
picks the right color for drawing the overshoot area.
2012-02-18 17:48:53 +01:00
Carlos Garnacho
607a1e8fc5 iconview: Set background on the widget's window
The widget window is usually covered by the bin_window,
this is just necessary so the parent scrolled window
picks the right color for drawing the overshoot area.
2012-02-18 17:48:53 +01:00
Carlos Garnacho
02eeed70bd treeview: Set background on the widget's window
The widget window is usually covered by the bin_window,
this is just necessary so the parent scrolled window
picks the right color for drawing the overshoot area.
2012-02-18 17:48:53 +01:00
Carlos Garnacho
849661a573 scrolledwindow: Use the child widget's window bg color for the overshoot area
This makes the overshoot area seamless, if the child plays along.
2012-02-18 17:48:53 +01:00
Carlos Garnacho
ca84ac7a6a tests: only handle gestures on testgestures after the last stroke is lifted 2012-02-18 17:48:53 +01:00
Carlos Garnacho
8d421b2af2 gtkwidget: only emit ::gesture when the last stroke is lifted 2012-02-18 17:48:53 +01:00
Carlos Garnacho
b2776581da gtk,gestures: Add gtk_gestures_interpreter_get_n_active_strokes
This call gets the number of currently active strokes, finished
strokes (i.e. those that already had a GDK_BUTTON/TOUCH_RELEASE
processed) don't count.
2012-02-18 17:48:53 +01:00
Carlos Garnacho
f7eb9edb9b entry: Only allow press-and-hold on the text_area window
This avoids oddities in spinbuttons, press-and-hold shouldn't
be triggered on the buttons.
2012-02-18 17:48:53 +01:00
Carlos Garnacho
fe87311f51 gtk,pah: Don't cancel a ::press-and-hold that's scheduled to be activated
There was a slight window where the operation could be cancelled, causing
an assert as the p-a-h data is NULL.
2012-02-18 17:48:52 +01:00
Carlos Garnacho
c38159d4d7 gdkwindow: Add device parameter to gdk_window_create_touch_cluster()
gdk_touch_cluster_set_device() had to be called right after anyway,
so set the device directly within this call, and favor the most common
scenario where there's just 1 single multitouch device behind 1 master
device.
2012-02-18 17:48:52 +01:00
Carlos Garnacho
075911ccfd demos: Demonstrate further features in the multitouch demo
Now that GtkButton and GtkScale are multitouch approved, it's
sufficient to enable GDK_TOUCH_MASK on them to have them deal
with multitouch devices.

The scales set rgba of the currently selected rectangle, and
the button adds more rectangles, those can be manipulated
simultaneously together with the rectangles, the only limit
is the number of touches the touchscreen hw is able to detect.
2012-02-18 17:48:52 +01:00
Carlos Garnacho
20a5364a5f gdk: Listen to touch events by default on the native window
GDK will only receive touch events when dealing with a multitouch
device, so these must be transformed to pointer events if the
client-side window receiving the event doesn't listen to touch
events, and the touch sequence the event is from does emulate
the pointer.

If a sequence emulates pointer events, it will result in a
button-press, N motions with GDK_BUTTON1_MASK set and a
button-release event, and it will deliver crossing events
as specified by the current device grab.
2012-02-18 17:48:52 +01:00
Carlos Garnacho
4a3037574d gdk,devicemanager: Mark touch events emulating the pointer as such 2012-02-18 17:48:52 +01:00
Carlos Garnacho
fee9840d52 gdk: Only trigger motion hints machinery on motion events
Touch events have no need for it, plus the concept behind
gdk_event_request_motions() doesn't wrap around multiple
touches within a device.
2012-02-18 17:48:52 +01:00
Carlos Garnacho
10bd4f8a72 gdk: Have touch grabs behave like the implicit grab wrt crossing events
These are equivalent to an implicit grab (with !owner_events), so
if the touch leaves or enters the grab window, the other window
won't receive the corresponding counter-event.
2012-02-18 17:48:52 +01:00
Carlos Garnacho
1d986aa8a4 gtk,button: Handle touch events
Touch events don't generate crossing events themselves, so
do not rely on these to determine whether the button release
happened within the event window.
2012-02-18 17:48:52 +01:00
Carlos Garnacho
33790437ce gtk,range: Don't perform a GTK+ grab
The implicit grab on priv->event_window already warrants that this
widget is the only one getting events while the button is pressed,
so don't spare the GTK+ grab here.
2012-02-18 17:48:52 +01:00
Carlos Garnacho
239f52d543 gtk: rewrite touch events wrt the window group too
Likewise to pointer events, have touch events during a device
grab with owner_events=TRUE be delivered normally as long as
the widget pertains to the same window group.
2012-02-18 17:48:52 +01:00
Carlos Garnacho
f2d71d3da5 gdk,csw: handle implicit touch grabs
If the touch sequence happens on a window with GDK_TOUCH_MASK set,
a GdkTouchGrabInfo is created to back it up. Else a device grab is
only created if the sequence emulates the pointer.

If both a device and a touch grab are present on a window, the later
of them both is obeyed, Any grab on the device happening after a
touch grab generates grab broken on all the windows an implicit
touch grab was going on, and all touches would be automatically
removed from every touch cluster.
2012-02-18 17:48:52 +01:00
Carlos Garnacho
61e625d9a6 gdk,display: Add internal API to deal with touch implicit grabs
The necessary information about a touch implicit grab is stored in
GdkTouchGrabInfo structs, these are meant to be transient to the
touch sequence
2012-02-18 17:48:52 +01:00
Carlos Garnacho
9e3330c90b gdk,csw: Don't change window_under_pointer for pure touch events
Only touch events that emulate the pointer do change it.
2012-02-18 17:48:52 +01:00
Carlos Garnacho
108c831e23 gdk,xi2: set pointer emulated flags on events with XIPointerEmulated 2012-02-18 17:48:51 +01:00
Carlos Garnacho
77f071b5ff gdk: Add internal API to set "pointer emulated" flag on events
This flag will be used for non-pointer events that are emulated
from eg. touch events, or pointer events being emulated.
2012-02-18 17:48:51 +01:00
Carlos Garnacho
fb35e29a19 gdk,xi2: Set GDK_BUTTON1_MASK on touch events
GTK+ handles both touch and pointer events through the same
event handlers, so enable this modifier on touch events to
avoid much special casing.
2012-02-18 17:48:51 +01:00
Carlos Garnacho
b1f4497697 gdk,xi2: Only enable multitouch if the server reports XI2.2
This enables multitouch-enabled GTK+ to run on older X servers.
2012-02-18 17:48:51 +01:00
Carlos Garnacho
29569e6049 gdk,xi2: Update to latest XInput2.2 spec 2012-02-18 17:48:51 +01:00
Carlos Garnacho
c201145d02 gtk,pah: Handle press-and-hold on touch devices 2012-02-18 17:48:51 +01:00
Carlos Garnacho
eb214aae74 gdk: Add gdk_event_get_touch_area()
If given an event coming from a touch devices,
this functions will read the MT major/minor/orientation
axes and return a cairo_region_t with the touch shape.
2012-02-18 17:48:51 +01:00
Carlos Garnacho
fbef4384aa gestures: Add some unit tests 2012-02-18 17:48:51 +01:00
Carlos Garnacho
88909ac9b2 gtk: Document helper GtkWidget gestures API 2012-02-18 17:48:51 +01:00
Carlos Garnacho
84d9872a26 gestures: Add API documentation 2012-02-18 17:48:51 +01:00
Carlos Garnacho
576ba1a03d gtk: Add helper API to handle gestures
Although GtkGesturesInterpreter can be used standalone, GtkWidget
deserves helper API to enable support for gestures. gestures can
be enabled/disabled, and the ::gesture signal can be used to get
the gesture ID.

The internal GtkWidget gestures interpreter is only handled by
touch events, if gestures are needed for other devices, a
standalone gestures interpreter must be used.
2012-02-18 17:48:51 +01:00
Carlos Garnacho
bb448f619c tests: Add testgestures
This testcase handles all gestures offered by GtkGestureType,
and also creates and registers a custom M-shaped GtkGesture.
2012-02-18 17:48:51 +01:00
Carlos Garnacho
9827003e06 gestures: Implement gestures interpretation
The algorithm works on 2 GtkGestures, it finds out the similarity
of these by bending the user provided gesture so it equals a stock
one, the differences in areas are used to determine the level of
confidence on both gestures being similar.
2012-02-18 17:48:51 +01:00
Carlos Garnacho
14100b867c Add a gestures interpreter base implementation
This object is currently shallow, the API is defined but no gesture
interpretation is performed. Additional API is declared to create
and define gestures, which may consist of several strokes with an
offset.
2012-02-18 17:48:51 +01:00
Carlos Garnacho
5926e3cfec xi2: Use GDK_SOURCE_TOUCH for multitouch devices
Any device with XITouchValuatorClassInfo classes qualify as
multitouch now.
2012-02-18 17:48:50 +01:00
Carlos Garnacho
e09d7b5456 gdk: Update touch events to latest spec 2012-02-18 17:48:50 +01:00
Carlos Garnacho
c9b8f866df gtk-demo: Add multitouch demo
Pretty much ignores pointer events currently, so you're out
of luck to see anything happening at all if you don't have
a multitouch device...
2012-02-18 17:48:50 +01:00
Carlos Garnacho
eea525ac89 Add multitouch-event signal and vfunc to GtkWidget 2012-02-18 17:48:50 +01:00
Carlos Garnacho
76e7a9e5b7 Add machinery to emit GdkEventMultiTouch events
These events are created from GDK_TOUCH_MOTION/PRESS/RELEASE
events, if the touch ID generating the event is within a
touch cluster, that event is stored and not pushed to the queue,
so a touch ID can only emit GDK_TOUCH_* or GDK_MULTITOUCH_* events
at the same time.
2012-02-18 17:48:50 +01:00
Carlos Garnacho
5a523e500b Define GdkEventMultiTouch and its related event types.
This event will gather all touches within a GdkTouchCluster,
including an array of the latest GDK_TOUCH_MOTION events for
the touch IDs contained in there.
2012-02-18 17:48:50 +01:00
Carlos Garnacho
33ea7850c9 Add gdk_window_[create|remove]_touch_cluster()
These are the functions to create/destroy a GdkTouchCluster,
as they are associated to GdkWindows.
2012-02-18 17:48:50 +01:00
Carlos Garnacho
9856a2faeb Introduce GdkTouchCluster
This is a per-window/device object to gather a group of touch IDs
as a single entity.
2012-02-18 17:48:50 +01:00
Carlos Garnacho
a19c4b207c Add gdk_event_get_touch_id()
Just a helper function to get the touch ID from touch events, it
returns FALSE in any other case.
2012-02-18 17:48:50 +01:00
Carlos Garnacho
264739e6ad Make touch events go through csw/widget event handling.
In GtkWidget, touch events go through the same handler
than motion events, with the difference that touch_id
will have something meaningful there.

Touch events need to be explicitly selected, so if this
is enabled, the possibility of different motion streams
with different touch IDs must be handled in some way.
2012-02-18 17:48:50 +01:00
Carlos Garnacho
10b4eaa10b Handle TouchBegin/End events
These are translated into GDK_TOUCH_PRESS/RELEASE GdkEvents,
which use the GdkEventButton struct, a touch_id parameter
has been added there to cope with touches.
2012-02-18 17:48:50 +01:00
Carlos Garnacho
be21cc53bc Add initial handling of TouchMotion events.
GdkDeviceManagerXI2 now handles TouchMotion and TouchMotionUnowned
events, which are translated to GDK_TOUCH_MOTION events.
2012-02-18 17:48:49 +01:00
Carlos Garnacho
cda35f142f Add touch motion event type and mask.
These events' struct is the same than GdkEventMotion, which has been
added a touch_id parameter. The gdk_event_* functions have been modified
to also handle this event type.
2012-02-18 17:48:49 +01:00
Carlos Garnacho
5c98ea081e configure: Detect XInput 2.1 2012-02-18 17:48:49 +01:00
Carlos Garnacho
78866ca13d gdk,xi2: Add major/minor properties to XI2 device manager
This may be used to turn on/off the features that are added to
new XInput2 revisions.
2012-02-18 17:48:49 +01:00
Carlos Garnacho
d4382300b4 gtk,range: Have slider jump to the pointer coordinates on touch devices
This widget is too narrow to make touch interaction tricky enough, so
don't add the penalty of having the slider run farther from the touch
coordinates if it happens to miss the slider.
2012-02-18 17:48:49 +01:00
Carlos Garnacho
7ef01e70f7 gtk,scrolledwindow: Ensure the view snaps back when overshooting
Instead of just stopping the acceleration source ID, check whether
it's overshooting, and let it snap back if needed after ::grab-notify
and ::button-release-event
2012-02-18 17:48:49 +01:00
Carlos Garnacho
10316b6ab2 gtk,scrolledwindow: set slower inverse acceleration on the overshoot area
This is so snapping back is more fluid and noticeable.
2012-02-18 17:48:49 +01:00
Carlos Garnacho
e11d9904bc gtk,scrolledwindow: Improve initial velocity calculation
Velocity calculation has been refactored out of the captured motion events
handler, and also has more tolerance defore determining that a drag is actually
still.
2012-02-18 17:48:49 +01:00
Carlos Garnacho
f1d33f76c7 gtk,menu: Don't popdown submenus on button release for touch devices
This is so submenus stay open as the parent menu item is pressed/released,
as the user would typically lift the finger in order to select a submenu
item.
2012-02-18 17:48:49 +01:00
Carlos Garnacho
fe72a8192d gtk,settings: Deprecate gtk-touchscreen-mode
It's not used anywhere in GTK+ anymore.
2012-02-18 17:48:49 +01:00
Carlos Garnacho
bf543ac8f4 gtk,range: Remove gtk-touchscreen-mode usage
Emulated crossing events with mode GDK_CROSSING_TOUCH_PRESS/RELEASE
already catter dinamically for the "don't prelight on touch devices"
usecase.
2012-02-18 17:48:49 +01:00
Carlos Garnacho
93f7a97f01 gtk,togglebutton: Remove gtk-touchcreen-mode usage
Emulated crossing events with mode GDK_CROSSING_TOUCH_PRESS/RELEASE
already catter dinamically for the "don't prelight on touch devices"
usecase.
2012-02-18 17:48:49 +01:00
Carlos Garnacho
cc188dffa9 gtk,menushell: Remove gtk-touchscreen-mode usage
This usage in a keybinding signal is hardly related to touchscreens,
so just remove it.
2012-02-18 17:48:49 +01:00
Carlos Garnacho
33e3b9ddbb gtk,menu: Remove gtk-touchscreen-mode from scrolling code
scrolling is handled via ::captured-event dynamically, so remove
this now unused code.
2012-02-18 17:48:49 +01:00
Carlos Garnacho
8c4b0b66b8 gtk,menu: Select the first item for touch devices
This was done through gtk-touchscreen-mode, now is handled
dynamically on the current event source device.
2012-02-18 17:48:49 +01:00
Carlos Garnacho
2781c9544b gtk,menu: Implement scrolling through ::captured-event for touch devices
This makes overflown menus scrollable via direct manipulation. Once past
the threshold, the item below the pointer is unselected and scrolling
starts.
2012-02-18 17:48:48 +01:00
Carlos Garnacho
4765dde5cf gtk,menu: handle item selection for touch devices dynamically
Instead of using gtk-touchscreen-mode, the behavior changes depending
on the source device in use.
2012-02-18 17:48:48 +01:00
Carlos Garnacho
658b0e8092 gtk,textview: Pop up context menu on press-and-hold 2012-02-18 17:48:48 +01:00
Carlos Garnacho
0e5d05f8e0 gtk,textview: Also cancel DnD on ::grab-notify
If is about to start when the drag device is grabbed
somewhere else, unset drag start x/y so DnD doesn't
happen anyway.
2012-02-18 17:48:48 +01:00
Carlos Garnacho
f1570c5c92 gtk,entry: Pop up menu on press-and-hold 2012-02-18 17:48:48 +01:00
Carlos Garnacho
e042c53caa gtk,label: Pop up menu on press-and-hold 2012-02-18 17:48:48 +01:00
Carlos Garnacho
a7b6859561 xi2: Get the effective group state by ORing the XIGroupState values 2012-02-18 17:48:48 +01:00
Carlos Garnacho
14235c9c17 gdk: Ensure that GdkPointerWindowInfo is only generated for pointers 2012-02-18 17:48:48 +01:00
Carlos Garnacho
6a6bed8e04 gtk: Only set widget under device on non-virtual crossing events
_gtk_widget_set_device_window() is suppose to make accounting of
the topmost widget under the device at each time, so avoid setting
it on virtual crossing events as the device is already in another
window.
2012-02-18 17:48:48 +01:00
Carlos Garnacho
7a07995944 gtk,scrolledwindow: remove scrollbars auto-hide
This is in a really sorry state, and scrollbars need to be
thought out for the new design anyway.
2012-02-18 17:48:48 +01:00
Carlos Garnacho
62afe5cda6 gtk,scrolledwindow: capture crossing events when dragging
Also, instead of connecting 2 more times to ::captured-event,
have it all go through a single handler.
2012-02-18 17:48:48 +01:00
Carlos Garnacho
95f6b7fa82 gtk,scrolledwindow: Add GtkKineticScrollingFlags
gtk_scrolled_window_set_kinetic_scrolling() now takes a set of flags,
GTK_KINETIC_SCROLLING_CAPTURE_BUTTON_PRESS makes the "capture button
press and maybe replay later" vs "let button press go through, but
trust in ::grab-broken to undo things" an opt-in, by default that
flag is set, which is the most conservative approach.
2012-02-18 17:48:48 +01:00
Carlos Garnacho
ae2438df90 gtk,scrolledwindow: Grab only after starting drag
This is so the grab doesn't break the implicit grab on the
child widget's window, which avoids that the button press and
release are possibly sent to different windows, and after the
grab was actually broken.
2012-02-18 17:48:47 +01:00
Carlos Garnacho
fafb78e38e gdk: Generate crossing events around touch devices' press/release
Anytime a touch device interacts, the crossing events generation
will change to a touch mode where only events with mode
GDK_CROSSING_TOUCH_PRESS/RELEASE are handled, and those are sent
around button press/release. Those are virtual as the master
device may still stay on the window.

Whenever there is a switch of slave device (the user starts
using another non-touch device), a crossing event with mode
GDK_CROSSING_DEVICE_SWITCH may generated if needed, and the normal
crossing event handling is resumed.
2012-02-18 17:48:47 +01:00
Carlos Garnacho
4068758bb8 gdk: Keep track of the last slave device used
This last slave device (stored per master) is used to fill
in the missing slave device in synthesized crossing events
not directly caused by a device event (ie. due to configure
events or grabs)
2012-02-18 17:48:47 +01:00
Carlos Garnacho
bb87595220 gtk,tooltips: Use the source device instead of gtk-touchscreen-mode
This makes tooltips behavior dynamic based on the interacting device.
2012-02-18 17:48:47 +01:00
Carlos Garnacho
001a1517da gtk,scrolledwindow: Clamp early overshooting when snapping back
Fixes the situation where overshooting in scrolled windows with a
small viewport could end up overshooting right to the opposite
side, and then back again indefinitely.
2012-02-18 17:48:47 +01:00
Carlos Garnacho
76b285f475 gtk: Handle motion hints for ::captured-event
Request automatically more motion events in behalf of
the original widget if it listens to motion hints. So
the capturing widget doesn't need to handle such
implementation details.
2012-02-18 17:48:47 +01:00
Carlos Garnacho
0b796299c1 gtk,scrolledwindow: capture motions until the kinetic scrolling cancellation
If the widget which events are captured listens to motion hints, there
are situations where neither the scrolled window or the child widget
request more motions.
2012-02-18 17:48:47 +01:00
Carlos Garnacho
5d2af3e13d gtk,pah: Show a bigger press-and-hold indicator on touchscreens
On touch devices it uses a 2.5cm diameter via gdk_screen_get_width_mm()
in the hope that it'll pop out of the finger area.
2012-02-18 17:48:47 +01:00
Carlos Garnacho
15d2f1697d gtk,scrolledwindow: Unset dragging device on ::grab-notify
The child widget may still call gtk_(device_)grab_add, which left
the scrolled window in an inconsistent state.
2012-02-18 17:48:47 +01:00
Carlos Garnacho
460a54ce15 gtk,scrolledwindow: Rework physics behind kinetic scrolling
The maths being used didn't resemble much about velocities or
friction/deceleration, so reimplement it in terms of velocity
vectors and decelerations, measured in pixels/ms^2.

Overshooting is also handled within the deceleration effect,
turning into a constant acceleration vector in the opposite
direction so it returns elastically within the boundaries.
2012-02-18 17:48:47 +01:00
Carlos Garnacho
3ab0ccf643 gtk,scrolledwindow: Implement overshooting
An extra GdkWindow has been added, this window is the parent
of the child widget, and is the one getting resized/moved when
overshooting.

The unclamped adjustments' values are also stored in
GtkScrolledWindowPrivate as a separate value, overshooting is
pretty specific to GtkScrolledWindow and it isn't worth to
expose API in GtkAlignment for this single purpose.

This method allows GtkScrollable children to be blissfully
unaware of overshooting, as otherwise they'd have to handle
rather odd adjustment values themselves.
2012-02-18 17:48:47 +01:00
Carlos Garnacho
cebd79e7eb gtk,scrolledwindow: Add window for overshooting
This window is the child widget's parent window, and will
be the one that's moved when overshooting.
2012-02-18 17:48:47 +01:00
Carlos Garnacho
4e321365cf scrolledwindow: Handle nested scrolled windows in kinetic scrolling
The innermost scrolled window always gets to capture the events, all
scrolled windows above it just let the event go through. Ideally
reaching a limit on the innermost scrolled window would propagate
the dragging up the hierarchy in order to keep following the touch
coords, although that'd involve rather evil hacks just to cater
for broken UIs.
2012-02-18 17:48:47 +01:00
Carlos Garnacho
1b088606f7 gtk: Add event storing/replaying to GtkWidget::captured-event
It now returns a GtkCapturedEventFlags which tells whether the
widget captured the event, and additionally whether the event
should be stored for later replay.

gtk_widget_release_captured_events() has been added too so
all stored events are released onto the widget that was initially
to receive the events.
2012-02-18 17:48:46 +01:00
Carlos Garnacho
7bf410f927 scrolledwindow: Use event times when calculating deceleration
Using g_get_current_time() isn't going to be realistic on lagging
events.
2012-02-18 17:48:46 +01:00
Carlos Garnacho
5476f09d35 scrolledwindow: bypass kinetic scrolling if no scrollbars are shown 2012-02-18 17:48:46 +01:00
Carlos Garnacho
a49c9a27fb scrolledwindow: Remove priv->event_window
It looks like a leftover from pre-captured-event iterations of
the patch, it is completely unnecessary now.
2012-02-18 17:48:46 +01:00
Carlos Garnacho
e5a3cf5a36 scrolledwindow: Don't use p-a-h for the "let event go through" timeout
Just use a timeout there, the press-and-hold feedback is undesirable
here.
2012-02-18 17:48:46 +01:00
Carlos Garnacho
59a0f62079 gtk,pah: Hook directly into gtk_main_do_event()
Press and hold couldn't reasonably work if nested widgets
handle ::captured-event, once the widget inits press-and-hold,
it'd better also handle possible cancellation on motion and
button release, which isn't guaranteed with ::capture-event.

Also, tentatively start press-and-hold by default on the
grab_widget, and before event capturing happens, this avoids
awkward situations like the scrolled window preventing/delaying
press-and-hold to happen on the child textview for example.
2012-02-18 17:48:46 +01:00
Carlos Garnacho
fbbd6b2c2e scrolledwindow: Enable kinetic scrolling by default 2012-02-18 17:48:46 +01:00
Carlos Garnacho
d77977aa62 scrolledwindow: add another shortcut to bypass event capture
When clicked again close to the previous button press location
(assuming it had ~0 movement), the scrolled window wil allow
the child to handle the events immediately.

This is so the user doesn't have to wait to the p-a-h timeout
in order to operate on the scrolledwindow child.
2012-02-18 17:48:46 +01:00
Carlos Garnacho
da35350ee3 scrolledwindow: Only do kinetic scrolling on touch devices
This is sort of meaningless on pointer devices, besides it implies
a different input event handling on child widgets that's unnecessary
there.
2012-02-18 17:48:46 +01:00
Carlos Garnacho
40996af9c1 scrolledwindow: Don't crash on 0-sized motion buffer 2012-02-18 17:48:46 +01:00
Carlos Garnacho
7e29b38bd4 scrolledwindow: Set also a GTK+ grab on p-a-h scrolling
This is so the widget is ensured to receive the events
regardless of the pointer position.
2012-02-18 17:48:46 +01:00
Carlos Garnacho
c1b86a5eab scrolledwindow: Add GdkDevice parameter to ::press-and-hold handler 2012-02-18 17:48:46 +01:00
Carlos Garnacho
68587c203c gtk: Handle press-and-hold for touch devices
Also, only react to the first button
2012-02-18 17:48:46 +01:00
Carlos Garnacho
80e08d1b1b gtk: Add a GdkDevice parameter to ::press-and-hold
This would be useful when popping up menus, just so we
know what device to trigger it for.
2012-02-18 17:48:46 +01:00
Carlos Garnacho
0a05318277 gtk: Clean up press-and-hold code
The press and hold animation now fully relies on style context
transitions, finishing the p-a-h operation right after it
finishes. There's also no need to connect to ::drag-begin as
::grab-notify will also tell when a grab begins.
2012-02-18 17:48:45 +01:00
Carlos Garnacho
5c187245a4 tests: Add an entry to testpressandhold
Useful for checking behavior while selecting,
starting drags, subwindows...
2012-02-18 17:48:45 +01:00
Carlos Garnacho
739059cc91 entry: Handle ::grab-notify
Store the device, and unset private fields whenever the device
is shadowed by another GTK+ grab, so popping up menus while
selecting (i.e. press-and-hold) doesn't leave it in a confused
state.
2012-02-18 17:48:45 +01:00
Carlos Garnacho
86e966b944 gtk: Do not use deprecated APIs on press-and-hold 2012-02-18 17:48:45 +01:00
Carlos Garnacho
ef08d3975c tests: Update testkineticscrolling to use GtkGrid 2012-02-18 17:48:45 +01:00
Carlos Garnacho
c50007b33a gtk: connect to grab-notify for press and hold
This is so press and hold is cancelled if a click actually
causes an inner widget to do a GTK+ grab.
2012-02-18 17:48:45 +01:00
Carlos Garnacho
9f20e16683 gtk: Propagate ::captured-event up the hierarchy for crossing events 2012-02-18 17:48:45 +01:00
Carlos Garnacho
4f2ce2f7b6 gtk: emit ::captured-event starting from the GTK grab widget 2012-02-18 17:48:45 +01:00
Carlos Garcia Campos
a404a56254 scrolledwindow: Allow selections and drag-and-drop when kinetic scrolling is enabled
If the scrolling doesn't start after a long press, the scrolling is
cancelled and events are handled by child widget normally.
2012-02-18 17:48:45 +01:00
Carlos Garcia Campos
7a59b443ee Add GtkWidget::press-and-hold signal
Press-and-hold signal is emitted when the mouse button is pressed for a
given amount of time, specified in the new "press-and-hold-timeout"
GtkSetting. It's commonly used in mobile platforms to emulate a right
click to show a context menu. This patch is based on previous patches by
Kristian Rietveld and Danielle Madeley.

https://bugzilla.gnome.org/show_bug.cgi?id=315645
2012-02-18 17:48:45 +01:00
Carlos Garnacho
127bfd71d7 gtksettings: Set animation for press-and-hold through GtkStyleProvider
The "gtk-press-and-hold-timeout" setting has also been added, to control
its duration.
2012-02-18 17:48:45 +01:00
Carlos Garnacho
35341511b9 themingengine: Implement press-and-hold notification renderer
gtk_render_activity() uses it for the GTK_STYLE_CLASS_PRESS_AND_HOLD
style class.
2012-02-18 17:48:45 +01:00
Carlos Garcia Campos
65888ac515 scrolledwindow: Add auto-hide-scrollbars style property
To hide the scrollbars in kinetic mode when not scrolling.
2012-02-18 17:48:45 +01:00
Carlos Garcia Campos
313f51d1f8 tests: Add new test for kinetic scrolling 2012-02-18 17:48:44 +01:00
Carlos Garcia Campos
5ddf0f4e5f test: Add checkbox to enable/disable kinetic scrolling in scrolled window test 2012-02-18 17:48:44 +01:00
Carlos Garcia Campos
5e726db14e scrolledwindow: Initial kinetic scrolling support 2012-02-18 17:48:44 +01:00
Carlos Garcia Campos
705dde471f timeline: Add _gtk_timeline_get_elapsed_time()
To get the time in milliseconds since the last frame
2012-02-18 17:48:44 +01:00
Carlos Garcia Campos
d83640dc34 Add GtkWidget::captured-event signal
https://bugzilla.gnome.org/show_bug.cgi?id=641836
2012-02-18 17:48:44 +01:00
Carlos Garnacho
ed20c3255b gdk: Add GDK_SOURCE_TOUCH
This device source applies to touch capable devices, most
notably touchscreens.
2012-02-18 17:48:44 +01:00
Yaron Shahrabani
0a189935ad Updated Hebrew translation 2012-02-18 14:59:12 +02:00
Yaron Shahrabani
1f5681e419 Updated Hebrew translation. 2012-02-18 14:42:42 +02:00
Cosimo Cecchi
8dd4a0adf1 color-swatch: don't render our active badge if background-image is set
If the color active swatch has been set a background image from the
theme, use it as an asset, and do not draw our custom thing.
2012-02-18 09:55:45 +01:00
Cosimo Cecchi
dcec8dfdde color-swatch: render a background if the swatch doesn't have a color
We still want to call into the background rendering code, to draw the
default background.
2012-02-18 09:55:45 +01:00
Cosimo Cecchi
8e85702dca color-swatch: derive directly from GtkWidget
Instead of GtkDrawingArea, since that calls in realize
gtk_style_context_set_background(). We don't want that to happen, given
that we do all the painting ourselves in _draw().
2012-02-18 09:55:45 +01:00
Chao-Hsiung Liao
b58d50a0da Updated Traditional Chinese translation(Hong Kong and Taiwan) 2012-02-18 08:49:57 +08:00
Daniel Mustieles
1578585c08 Updated Spanish translation 2012-02-17 18:02:22 +01:00
Daniel Mustieles
a18b3f2ed4 Updated Spanish translation 2012-02-17 17:50:13 +01:00
Cosimo Cecchi
039eb8dc04 color-editor: mark the GtkColorSwatch as not selectable 2012-02-17 17:03:15 +01:00
Cosimo Cecchi
5f0c4fc20f color-swatch: add a "selectable" property to GtkColorSwatch
We don't want e.g. the swatch in GtkColorEditor to get the select badge
when it's clicked, so make this a property (on by default).
2012-02-17 17:03:15 +01:00
Fran Diéguez
04b36dabd0 Updated Galician translations 2012-02-16 15:00:06 +01:00
Claudio Saavedra
cfe65a0d6c GtkNotebook: and another fix
https://bugzilla.gnome.org/show_bug.cgi?id=669116
2012-02-16 12:33:26 +02:00
Claudio Saavedra
ccf7867c35 GtkNotebook: fix one child-notify emission
Forgot to increase the counter in the for loop, doing it now.

https://bugzilla.gnome.org/show_bug.cgi?id=669116
2012-02-16 12:28:46 +02:00
Benjamin Otte
bf89bc624b widget-factory: Don't crash when showing about dialog 2012-02-15 15:14:31 +01:00
Javier Jardón
392fdff8e5 docs: GtkWidget's "state-flags-changed" is a signal not a property 2012-02-15 13:43:58 +00:00
Daniel Mustieles
444f562955 Updated Spanish translation 2012-02-15 13:11:35 +01:00
Daniel Mustieles
db8555ed31 Updated Spanish translation 2012-02-15 13:05:43 +01:00
Daniel Mustieles
cc1b29cd67 Updated Spanish translation 2012-02-15 13:01:13 +01:00
Murray Cumming
a0b4ab109d Documentation: Correct references to properties.
These should use :, not ::, though signals would use ::.
See
http://developer.gnome.org/gtk-doc-manual/unstable/documenting_syntax.html.en
and
http://developer.gnome.org/gtk-doc-manual/unstable/documenting_symbols.html.en
2012-02-15 11:43:33 +01:00
Rico Tzschichholz
87d979f498 Remove obsolete reference to gtk.css.raleigh 2012-02-15 08:03:05 +01:00
Matthias Clasen
f9be52cb2f Add color and font chooser to the widget gallery 2012-02-14 23:48:36 -05:00
Matthias Clasen
fae1be06cd Docs: Reorder a sections 2012-02-14 23:36:02 -05:00
Matthias Clasen
e1a625aa78 GtkColorSwatch: Add accessible actions 2012-02-14 21:16:52 -05:00
Claudio Saavedra
347328adb0 GtkNotebook: emit child-notify::position on drag 'n drop reorder
https://bugzilla.gnome.org/show_bug.cgi?id=669116
2012-02-15 01:05:12 +02:00
Claudio Saavedra
cb775a6a6d GtkNotebook: emit child-notify::position on page add/removal
For each page added/removed, notify all the other children changing
position.

https://bugzilla.gnome.org/show_bug.cgi?id=669116
2012-02-15 01:05:12 +02:00
Matthias Clasen
6c2b7a9441 Revert "Add a button to back to the palette"
This reverts commit 32f1a5ad83.
2012-02-14 16:39:05 -05:00
Cosimo Cecchi
bef12c003c color-scale: remove Adwaita GtkColorScale trough hack
Instead of special-casing Adwaita, apply the half-width logic for themes
that have a scale slider with vertical proportions.
Also, simplify the rendering code a bit by factoring out the trough
sizing logic.
2012-02-14 16:37:05 -05:00
Cosimo Cecchi
19da38b811 colorchooser: factor out a private method to get the checkboard pattern
And use it in the color widgets.
2012-02-14 16:37:04 -05:00
Matthias Clasen
453aecd346 Improve a11y names for colors
Only read alpha if it is != 1, and read percentages also for
'unnamed' palette colors.
2012-02-14 16:37:04 -05:00
Matthias Clasen
2d57c5c374 Update TODO 2012-02-14 16:37:04 -05:00
Matthias Clasen
c2426516c4 Update POTFILES 2012-02-14 16:37:04 -05:00
Matthias Clasen
18ea4825cf Mark color names as translatable 2012-02-14 16:37:04 -05:00
Matthias Clasen
1f698e4f62 GtkColorScale: fix an RTL issue
When using a horizontal scale in RTL, we need to flip the
background image to go along with the flipped scale.
2012-02-14 16:37:04 -05:00
Cosimo Cecchi
49a23acd89 test-toplevelembed: use new GtkColorChooserDialog 2012-02-14 16:37:03 -05:00
Cosimo Cecchi
80f0feda98 testgtk: use GtkColorChooserDialog instead of GtkColorSelectionDialog 2012-02-14 16:37:03 -05:00
Cosimo Cecchi
06b34b3fc1 prop-editor: don't use GtkColorButton deprecated API 2012-02-14 16:37:02 -05:00
Cosimo Cecchi
92322a63f5 gtk-demo: use the new GtkColorChooserDialog in the color demo 2012-02-14 16:37:02 -05:00
Cosimo Cecchi
5e77e1c117 colorsel: include gtkcolorutils.h
Fix the build
2012-02-14 16:37:02 -05:00
Cosimo Cecchi
6dbb4d6384 color-widget: don't use a GtkAlignment to center the color editor
We can just use a GtkBox, and set hexpand=TRUE/halign=CENTER to allocate
the editor in the middle of the box.
2012-02-14 16:37:01 -05:00
Cosimo Cecchi
988cbb6300 color-editor: don't use a GtkAlignment to layout popups
Set a margin on the contents and use a box instead.
2012-02-14 16:37:01 -05:00
Cosimo Cecchi
1cbaca6c60 color-editor: don't use an alignment to give the popup extra space 2012-02-14 16:37:01 -05:00
Cosimo Cecchi
2abe72283e color-editor: also set a row spacing in the popup tooltip 2012-02-14 16:37:01 -05:00
Cosimo Cecchi
126e941466 color-button: simplify internal children
Instead of going GtkAlignment->GtkFrame->GtkAlignment, just pack a
GtkDrawingArea inside the button, and use halign/margin properties to
get the desired layout.
2012-02-14 16:37:01 -05:00
Cosimo Cecchi
51c6e8329d color-swatch: cleanup unused property enum value 2012-02-14 16:37:01 -05:00
Matthias Clasen
91b4781ae9 Revert an accidental commit 2012-02-14 16:37:00 -05:00
Matthias Clasen
92618eb8e2 GtkColorSwatch: Use widget state instead of a custom 'selected' 2012-02-14 16:37:00 -05:00
Matthias Clasen
9cc827fcd1 A11y improvements 2012-02-14 16:37:00 -05:00
Matthias Clasen
40974b1463 GtkColorSwatch: Drop an unnecessary field 2012-02-14 16:37:00 -05:00
Matthias Clasen
dc1929a9de Avoid a 10th custom color 2012-02-14 16:37:00 -05:00
Matthias Clasen
57e057df60 Fill the custom palette up some more 2012-02-14 16:37:00 -05:00
Matthias Clasen
32f1a5ad83 Add a button to back to the palette
This is just for trying this out; if it is considered good,
it will be moved into GtkColorChooserDialog
2012-02-14 16:36:59 -05:00
Matthias Clasen
1f05f94885 GtkColorChooserDialog: propagate notification for ::show-editor 2012-02-14 16:36:59 -05:00
Matthias Clasen
05e2124f24 GtkColorChooserWidget: emit notification for ::show-editor 2012-02-14 16:36:59 -05:00
Matthias Clasen
1fd311803a Document gtk_color_chooser_add_palette 2012-02-14 16:36:59 -05:00
Matthias Clasen
7f44feab19 Fix use_alpha initialization and propagation
We must set use_alpha to TRUE initially, and when passing it
down to the swatches, we must iterate over the custom box, too.
2012-02-14 16:36:59 -05:00
Matthias Clasen
3a7ed2e7bd Remove unused variables 2012-02-14 16:36:59 -05:00
Matthias Clasen
bad24bc119 Consistently private headers
Add a 'private' suffix to all newly introduced private
headers.
2012-02-14 16:36:58 -05:00
Matthias Clasen
5aaeaa7b81 Fix the build
A G_BEGIN_DECLS went missing here.
2012-02-14 16:36:58 -05:00
Cosimo Cecchi
bcc4186388 color-swatch: remove gtk_color_swatch_set_corner_radii()
It's unused now.
2012-02-14 16:36:58 -05:00
Cosimo Cecchi
74a53b542b color-widget: use a GtkBox for the custom section
Since we only allow a single row there, it's better to just use a
GtkBox, and use :first-child, :last-child and :only-child to style
swatches in there.
2012-02-14 16:36:58 -05:00
Cosimo Cecchi
9da3d8b7b9 color-widget: add LEFT/RIGHT/TOP/BOTTOM style classes to the swatches
As we add them to the grid, for setting theming properties.
2012-02-14 16:36:58 -05:00
Cosimo Cecchi
73944c6e81 color-editor: don't call gtk_color_swatch_set_corner_radii()
It's going away.
2012-02-14 16:36:58 -05:00
Cosimo Cecchi
a9c2a586b1 color-swatch: don't hardcode list-add-symbolic as swatch icon
We have that as a property, we should use it.
2012-02-14 16:36:57 -05:00
Cosimo Cecchi
83de34882b color-swatch: allow styling the "active badge"
Instead of calling gtk_render_check() there, just render a symbolic
icon, falling back to a built-in one if the icon is not available.
Also, add a style class for the active badge on the swatch:
"color-active-badge".
2012-02-14 16:36:57 -05:00
Cosimo Cecchi
1ccedc5fa4 color-swatch: use GtkThemingBackground to draw the background
This allows e.g. for the corner radii to be styled directly from the
theme.
2012-02-14 16:36:57 -05:00
Cosimo Cecchi
33e54e45be color-swatch: add a color-light/color-dark style class for intensity
Themes might want to set different colors on the badge if the displayed
color is light or dark. Use a style class for this when we set a color
on the swatch.
2012-02-14 16:36:57 -05:00
Cosimo Cecchi
46187037a3 themingbackground: make it based on GtkStyleContext
Instead of GtkThemingEngine. This will allow for the object to be also
used from inside e.g. a _draw() method.
2012-02-14 16:36:57 -05:00
Cosimo Cecchi
ae132c0a1a roundedbox: add _apply_border_radius() variations for engine/context
And make the base function just use the raw corner radii struct.
2012-02-14 16:36:56 -05:00
Cosimo Cecchi
4c61f1f663 themingengine: add a private _gtk_theming_engine_get_context()
We'll need this later.
2012-02-14 16:36:56 -05:00
Cosimo Cecchi
4e37d56d51 themingengine: move _gtk_theming_engine_set_context to private header
Where it belongs.
2012-02-14 16:36:56 -05:00
Matthias Clasen
8f201d62d9 Add API to set palettes
I'm not really convinced by this; the API is a little complicated.
May need more thought.
2012-02-14 16:36:56 -05:00
Matthias Clasen
d7cff0797e Misc cleanups 2012-02-14 16:36:56 -05:00
Matthias Clasen
ed5aa953d5 testcolorchooser: Add more options
Add a --edit option that brings the color chooser up in
single-color edit mode right away.
2012-02-14 16:36:56 -05:00
Matthias Clasen
cb128cc6e9 Deprecate old color selection widgets
GtkColorSelectionDialog, GtkColorSelection and GtkHSV have
been superseded by the GtkColorChooser* family of widgets.
2012-02-14 16:36:55 -05:00
Matthias Clasen
23a5f7a22c Add docs 2012-02-14 16:36:55 -05:00
Matthias Clasen
03a2b338ee Small documentation tweaks in font choosers 2012-02-14 16:36:55 -05:00
Matthias Clasen
c5cfb6e02b Rework the API a bit
Rename get/set_color to get/set_rgba and show_alpha to use_alpha,
to match existing GtkColorButton API and let GtkColorButton implement
GtkColorChooser.
2012-02-14 16:36:55 -05:00
Matthias Clasen
1f68d7d827 Simplify GtkColorScale private api a bit 2012-02-14 16:36:55 -05:00
Matthias Clasen
6ed16b5b41 Fix up exported symbols
Only GtkColorChooser* is public for now.
2012-02-14 16:36:54 -05:00
Matthias Clasen
43ffb8521d Add a small comments 2012-02-14 16:36:54 -05:00
Matthias Clasen
1f7cc92219 Dismiss popups on show
This ensures that the editor always comes up without popups,
even when it is reused.
2012-02-14 16:36:54 -05:00
Matthias Clasen
3f92e24cb7 Add more todos 2012-02-14 16:36:54 -05:00
Matthias Clasen
cc127c64a9 Add some accessible labels 2012-02-14 16:36:54 -05:00
Matthias Clasen
327e36e360 Mark strings for translation 2012-02-14 16:36:53 -05:00
Matthias Clasen
f2aaffaf07 Finishing touches
Implement popups in the editor, fix window sizing, fix RTL flipping.
GtkColorPlane is now using adjustments, and GtkColorEditor is using
adjustments as its model as well.
2012-02-14 16:36:53 -05:00
Matthias Clasen
cd300835d7 Allow context menus on scale sliders
This will be used for a popup in the color chooser.
2012-02-14 16:36:53 -05:00
Matthias Clasen
e56adaebea Only activate on double-click 2012-02-14 16:36:53 -05:00
Matthias Clasen
dbbe4c12fa Remove an erraneous g_free call 2012-02-14 16:36:53 -05:00
Matthias Clasen
296cd814e5 Add an Adwaita hack
When the theme is Adwaita, let the thumb extend out over the
colored trough.
2012-02-14 16:36:53 -05:00
Matthias Clasen
5bd4c234fb Draw no trough for color scales 2012-02-14 16:36:52 -05:00
Matthias Clasen
4226551fff Move color scales into separate widget 2012-02-14 16:36:52 -05:00
Matthias Clasen
bdb8931bda Fix a few problems with custom color replacement
We were allowing one too many custom colors in, and when one
of them was dropped, we did not update the shape of the penultimate
one.
2012-02-14 16:36:52 -05:00
Matthias Clasen
3a35895a00 Make color chooser always come up with palette 2012-02-14 16:36:52 -05:00
Matthias Clasen
d3b30bff0c Show new color chooser from color button 2012-02-14 16:36:52 -05:00
Matthias Clasen
2a8d3f78e9 Use a swatch in the editor
For now, we simply make it insensitive to turn off unwanted
interactivity.
2012-02-14 16:36:51 -05:00
Matthias Clasen
ff1f5de62f Don't waste memory 2012-02-14 16:36:51 -05:00
Matthias Clasen
1720e8ebf3 Preliminary color sliders 2012-02-14 16:36:51 -05:00
Matthias Clasen
8178578359 Make alpha optional 2012-02-14 16:36:51 -05:00
Matthias Clasen
8d1565df94 Show alpha in the palette as well 2012-02-14 16:36:51 -05:00
Matthias Clasen
9161119329 No popup menu on the button 2012-02-14 16:36:50 -05:00
Matthias Clasen
9b81322409 Make saving custom colors work as intended
The custom colors are now pushed over to the right as new ones
are added, and everything beyond the 9th row gets dropped.
Customized colors are added to the custom colors array.
2012-02-14 16:36:50 -05:00
Matthias Clasen
e1bf3b6650 Choose a different initial color when adding custom colors
Going for pure red 'hides' the hairline at the edge of the
plane. This color makes it nicely visible.
2012-02-14 16:36:50 -05:00
Jon McCann
efccf87961 Show editor when clicking custom button 2012-02-14 16:36:50 -05:00
Jon McCann
2c24e3cb6a Align label with swatches 2012-02-14 16:36:50 -05:00
Jon McCann
ce8212c5a8 Add Tangoish grayscales 2012-02-14 16:36:50 -05:00
Jon McCann
ea6ac7131e Use the Tango palette by default 2012-02-14 16:36:49 -05:00
Matthias Clasen
e06ccb0fbb Move the plane into a separate widget 2012-02-14 16:36:49 -05:00
Matthias Clasen
021f5e0365 Initial work on a color editor
This replaces GtkHSV with a compound widget featuring
a hue slider and an sv-plane, amongst others.
2012-02-14 16:36:49 -05:00
Matthias Clasen
759765114f Add a simple color chooser test 2012-02-14 16:36:49 -05:00
Matthias Clasen
3b6e316e74 Initial cut at implementing a new color chooser
This is a partial implementation of
https://live.gnome.org/GnomeOS/Design/Whiteboards/ColorSelection
The new color editor has not been implemented yet.
2012-02-14 16:36:49 -05:00
Matthias Clasen
e2bde55277 Remove leftover debug spew 2012-02-14 13:08:27 -05:00
Cosimo Cecchi
abdbe207fe about-dialog: set proper spacing between columnns in credits section
Spacing ended up being really tight; add another 6px.

https://bugzilla.gnome.org/show_bug.cgi?id=668114
2012-02-14 11:26:16 -05:00
Cosimo Cecchi
a04fa5300a about-dialog: don't set a margin around the license area
Make it consistent with the credits page.

https://bugzilla.gnome.org/show_bug.cgi?id=670077
2012-02-14 11:21:52 -05:00
Cosimo Cecchi
8dc9866e2a about-dialog: add a stroke around the credits area
Makes it consistent with e.g. the license page.

https://bugzilla.gnome.org/show_bug.cgi?id=670078
2012-02-14 11:19:04 -05:00
Alexander Larsson
4b200a0429 Set a bg on GtkViewport to ensure we get fast scrolling
Otherwise it will use the default alpha transparency and
not scroll efficiently.
2012-02-14 15:18:30 +01:00
Cosimo Cecchi
713c532940 treeview: don't use gtk_render_focus() for dnd indicator
There's no reason this should be a focus ring rather than an actual
frame. In the past this was probably used to get a dashed effect, but
now we even support that natively for borders.
2012-02-13 22:43:07 -05:00
Cosimo Cecchi
a3b097639f treeview: set "dnd" style class when drawing drag and drop indicators
This is useful to theme the rings that appear around rows on drag and
drop.
2012-02-13 22:19:53 -05:00
Alexander Larsson
42c2d51ad9 Always make offscreen window rgba
This fixes issues where the new default bg of transparent
didn't work, making offscreen windows black.

I don't think this is a practical performance problem.
Offscreen windows are rarely used and generally used for
graphics tricks like alpha anyway.
2012-02-13 15:06:09 +01:00
Alexander Larsson
2d972058ab Fix up win32 CSS
Now that we removed the default css a lot of stuff needed fixing
2012-02-13 12:24:06 +01:00
Murray Cumming
842d3ac53d GtkButton: Small documentation improvements 2012-02-13 09:18:07 +01:00
Benjamin Otte
90e65f30ab a11y: Mark cells as defunct when deleting them
Just unreffing isn't enough, atk-bridge might have a reference to the
object still.
2012-02-12 16:45:14 +01:00
Matthias Clasen
a96c122fa4 Plug a small memory leak 2012-02-11 13:06:12 -05:00
Benjamin Otte
194a48bd4a a11y: Redo ref_accessible_at_point()
use direct access to the RBTree instead of fiddling with the path.

Removes the lat caller of get_index() and with it count_rows(), so those
are gone now.
2012-02-11 05:11:00 +01:00
Benjamin Otte
01193bcae2 tests: Reenable a11y tree-relationships test
It passes now.
2012-02-11 04:46:43 +01:00
Benjamin Otte
3827d75f64 a11y: create focus cell accessibles when they get focused 2012-02-11 04:44:27 +01:00
Benjamin Otte
bf8d9ceb2f a11y: Split out cell creation function 2012-02-11 04:41:45 +01:00
Benjamin Otte
315ac9413b a11y: Set relations without tree path
We can directly use at the rbtree's parent.
2012-02-11 04:13:04 +01:00
Benjamin Otte
6130c65470 a11y: Remove unused variable 2012-02-11 03:42:14 +01:00
Benjamin Otte
da30c8253b a11y: Keep treeview accessibles around
Refcounting behavior kinda requires that we track of accessibles until
the row goes away. This is necessary for reference handling and for some
assumptions that atk-bridge does.
2012-02-11 03:37:25 +01:00
Benjamin Otte
5e587229c8 a11y: Remove old treeview focus tracking code 2012-02-11 03:14:22 +01:00
Benjamin Otte
24db6d7a6f a11y: Emit focus change events when focus cell changes 2012-02-11 03:02:20 +01:00
Benjamin Otte
5fe947640c treeview: Add internal get_cursor_node() API 2012-02-11 03:02:20 +01:00
Benjamin Otte
07f8336dbd a11y: Update treeview focused status
... when the cursor row changes. Also emit active-descendant-changed.
2012-02-11 02:50:26 +01:00
Benjamin Otte
00a810ae04 treeview: Add private get_focus_column() API 2012-02-11 02:49:12 +01:00
Benjamin Otte
f90ff5d50b treeview: Notify accessible about focus changes 2012-02-11 02:38:48 +01:00
Benjamin Otte
a4559f1e19 treeview: Tell accessible about focus column changes 2012-02-11 01:59:19 +01:00
Sebastian Keller
f33fe5b677 docs: Add documentation for alpha() in CSS 2012-02-11 01:48:03 +01:00
Claudio Saavedra
e2339f5ebd GtkNotebook: emit child-notify::position a few more times
When moving a page around, all children changing their position
need to be notified.

There are still other places where proper notification is missing
(drag 'n drop, etc.)

https://bugzilla.gnome.org/show_bug.cgi?id=669116
2012-02-10 16:39:44 +02:00
Benjamin Otte
3b1d8beab0 accessible: Unset widget on dispose, not finalize
Unsetting the widget causes events to get emitted and we want to
(a) really emit that event to our signal handlers
(b) still be recognized as a real GObject while doing that

https://bugzilla.gnome.org/show_bug.cgi?id=669794
2012-02-10 13:21:06 +01:00
Benjamin Otte
5e3c2524f8 reftests: Add a test for misrendering of transparent windows
If a widget with a GDK window is set to be transparent in the CSS, it
gets drawn as black instead. This test checks that the fix works.
2012-02-10 11:46:19 +01:00
Ryan Lortie
6d430ad713 widget factory: link against gdkpixbuf
Otherwise we fail to link, seeing this:

/usr/bin/ld: gtk3_widget_factory-widget-factory.o: undefined reference
to symbol 'gdk_pixbuf_new_from_resource'
2012-02-09 17:54:22 -05:00
Rui Matos
db2eb85e4a x11: Cancel _NET_WM_MOVERESIZE if we get a matching ButtonRelease
This implements the following part of the EWMH spec:

"The special value _NET_WM_MOVERESIZE_CANCEL also allows clients to cancel the
operation by sending such message if they detect the release themselves
(clients should send it if they get the button release after sending the move
resize message, indicating that the WM did not get a grab in time to get the
release)."

In particular, it fixes the case of clicking widgets that use
gdk_window_begin_[resize|move]_drag*() and the click "sticking", i.e. the
mouse button getting released but the resize or move operation remaining in
effect.

https://bugzilla.gnome.org/show_bug.cgi?id=669208
2012-02-09 23:44:09 +01:00
Alexander Larsson
cdc6e82720 Remove all default css and make Raleigh a pure fallback theme
It was problematic to maintain Raleigh going forward, as any
changes in it affected all themes. Also, its more robust if
each theme is a full standalone css rather than relying on
an inherited css base.

So, this changes Raleigh to a standalone theme that we can tweak
without accidentally breaking other themes, and makes the
default theme empty. In fact, we don't even add the default
provider anymore as its always empty.
2012-02-09 23:19:17 +01:00
Piotr Drąg
7de0672650 Updated POTFILES.skip 2012-02-09 21:32:56 +01:00
Alexander Larsson
251cffb638 Fix transparency handling with non-double-buffered drawing
Sometimes we need to read back the window content into our double
buffer due to rendering a window with alpha when there is
no implicit paint or it has been flushed due to non-db drawing
before.

However, in this case we can't use gdk_cairo_set_source_window as
it might trigger an implicit paint flush as we detect what we
think is a direct non-double buffered window draw operation, which
will flush the implicit paint operation that we're just setting up.

To fix this we use the raw gdk_window_ref_impl_surface operation
to get the source surface.
2012-02-09 21:14:07 +01:00
Alexander Larsson
5d9736fe13 Fix non-double-buffered drawing
There was a sign issue in a coordinate transform that made us
flush the wrong region when flushing an implicit paint.
The non-double buffered drawing would then be drawn over the
right area, but then at the end of the implicit paint this
would be overdrawn with the area we didn't properly remove
from the implicit paint.

Also, the translation from window coords to impl window
coords is now done before removing any active double
buffered paints, as these are also in impl window coords.
2012-02-09 21:14:07 +01:00
Kalev Lember
b21dd67d60 win32: Don't crash when installed in a top-level directory
Avoid NULL-pointer dereference when package installation directory
doesn't contain any slashes.

Reported by Paweł Forysiuk.
2012-02-09 17:58:21 +02:00
Alexander Larsson
fed1cfb122 Make the default background for GdkWindows transparent
With the changes in default CSS to make the default background transparent
we ran into issues where intermediate GdkWindow (for instance the
view_window in GtkViewport) where we didn't set an explicit background
(because before they were always covered). So instead of showing throught
the transparent windows were showing the default backgroind of the intermediate
window (i.e. black).

With this change we also needed to fix GtkViewport, as it was previously
relying on the bin and view windows to cover widget->window so that the
border was not visible if shadow_type was NONE.
2012-02-09 16:39:23 +01:00
Alexander Larsson
6723feae8a viewport: Set frame styleclass when getting border size during size allocation
Without this you don't get the right border/padding for widget->window
and the border shows up under the scrolled contents.
2012-02-09 16:39:23 +01:00
Matthias Clasen
c525fe27f3 Set BUILT_SOURCES 2012-02-09 09:10:50 -05:00
Matthias Clasen
56f8cf91e0 widget-factory: add the logo 2012-02-09 09:06:32 -05:00
Matthias Clasen
71efe31f16 Move widget-factory to demos/
Lets install this, for the benefit of artists everywhere.
2012-02-09 08:45:40 -05:00
Matthias Clasen
41e98b14d3 gtk-demo: Use preprocessing for resources
Strip blanks from ui files, and convert pngs into pixdata.
This is useful and serves as a test of these preprocessing
options at the same time.
2012-02-09 08:08:23 -05:00
Matthias Clasen
72ede43928 gtk-demo: Use gdk-pixbuf resource api
This is nicer than manual stream manipulation.
2012-02-09 08:08:23 -05:00
Matthias Clasen
b4c31b070f widget-factory: add an about dialog
This is a first step towards making widget-factory an installed
demo.
2012-02-09 08:08:23 -05:00
Baurzhan Muftakhidinov
bc95f03f37 [l10n] Updated Kazakh translation 2012-02-09 15:09:30 +06:00
Matthias Clasen
c2512d1c03 Avoid a C99ism
Move variable declarations to the beginning of the block.
https://bugzilla.gnome.org/show_bug.cgi?id=669511
2012-02-08 07:26:25 -05:00
Diego Escalante Urrelo
63865720b7 gtkbuilder-menus: translation-domain can be NULL
GtkBuilder defaults its translation-domain to NULL, which is a perfectly
fine value for d_gettext() and friends.

https://bugzilla.gnome.org/show_bug.cgi?id=669638
2012-02-08 04:36:26 -05:00
Diego Escalante Urrelo
a0f6fc137b gtkactiongroup: clarify set_translation_domain docs
NULL is an actual useful value for
gtk_action_group_set_translation_domain, but this information is buried
in g_dgettext() documentation.

Be extra redundant, to make it obvious that NULL is ok.

https://bugzilla.gnome.org/show_bug.cgi?id=669636
2012-02-08 04:36:26 -05:00
Mattias Põldaru
afcd3c9f70 [l10n] Updated Estonian translation 2012-02-08 10:59:07 +02:00
Matthias Clasen
9a2ea96a1b Bump version 2012-02-06 17:32:46 -05:00
Matthias Clasen
de1b5e67b6 3.3.14 2012-02-06 16:38:47 -05:00
Matthias Clasen
20c3f95e7b Adapt expected output
A recent string change in GtkAboutDialog needs to be reflected
here.
2012-02-06 16:11:27 -05:00
Benjamin Otte
33864064f4 tests: Remove untrue assertion
Even if something is not at the top, things might still not be scrolled.
For example in the case where things are exactly at the center.
2012-02-06 21:53:36 +01:00
Benjamin Otte
75eddfffbb tests: Don't test something we can't test
When using GtkTreeStore, don't compute row positions assuming
everything's a list store, which is how get_row_start_for_index() works.

So instead, do a laxer check and don't insist on proper alignment.
2012-02-06 21:53:35 +01:00
Benjamin Otte
6a381b0c1d tests: Remove unused argument from treeview-scrolling test 2012-02-06 21:53:35 +01:00
Matthias Clasen
9e14789b63 Work around a drawing problem with small notebooks 2012-02-06 15:50:40 -05:00
Matthias Clasen
137bab8710 More resetting 2012-02-06 15:43:47 -05:00
Matthias Clasen
9ec7d6b68e Use larger screen for tests
We used to run Xvfb with 800x600, which turns out to be too small
for some of our reftests. Bump it to 1024x768.
2012-02-06 15:09:24 -05:00
Matthias Clasen
ac9a94b7af Fix declarations-valid-15 css parser test 2012-02-06 14:44:21 -05:00
Benjamin Otte
40a89fccb5 reftests: Fix background-origin reftest for all themes
We want to @import reset-to-defaults.css here.
2012-02-06 20:43:05 +01:00
Benjamin Otte
33961154b6 tests: Fix height checks in treeview scrolling test
If things get centered in the scrolling area depens on the height of the
row, too.
2012-02-06 20:43:05 +01:00
Benjamin Otte
c2a6dcc73c tests: Fix assertion emission
We want to assert() when doing the actual check, not do some
  g_assert (testing_failed());
2012-02-06 20:43:05 +01:00
Matthias Clasen
b5d5e6427a Fix declarations-valid-14 css parser test 2012-02-06 14:06:20 -05:00
Matthias Clasen
81465d2d97 Updates 2012-02-06 11:51:34 -05:00
Alexander Larsson
cb625d21b4 Fix leak when parsing image urls 2012-02-06 15:06:29 +01:00
Swecha Localization Team
af200feb0e Updated Telugu Translations 2012-02-06 17:30:09 +05:30
Piotr Drąg
bd05c1f959 Add bloatpad to POTFILES.skip
It doesn't break the build yet, but it will once intltool is fixed to accept translatable='yes'
2012-02-06 02:38:25 +01:00
Matthias Clasen
c064bdb00c Mark strings as translable in bloatpad
We don't have any intention of actually translating bloatpad,
but this ends up as example in the docs.
2012-02-05 19:12:41 -05:00
Matthias Clasen
a45b3df9d0 Bump requirements of glib and gdk-pixbuf 2012-02-05 17:56:22 -05:00
Fran Diéguez
68f51ee980 Updated Galician translations 2012-02-05 23:45:17 +01:00
Kjartan Maraas
aa390b5e57 Updated Norwegian bokmål translation 2012-02-04 12:31:58 +01:00
Daniel Mustieles
8971d5ed74 Updated Spanish translation 2012-02-03 18:06:49 +01:00
Ignacio Casal Quinteiro
022e17afbc aboutdialog: add a \n in the copyright text 2012-02-03 17:13:38 +01:00
Alexander Larsson
fb0c53a0ed Fix crash with theme resource file
The freeing the GResource in gtk_css_provider_reset caused problems
because it was called from gtk_css_provider_load_from_path() inside
gtk_css_provider_get_named(). We fix this by delaying the
setting of priv->resource until we successfully loaded the file.
2012-02-03 16:37:54 +01:00
Alexander Larsson
6b2f10321f Remove accidental leftover spew 2012-02-03 16:27:32 +01:00
Alexander Larsson
b5b9965283 css: Remove any loaded resource in gtk_css_provider_reset 2012-02-03 16:01:51 +01:00
Alexander Larsson
610ea728b2 Special case resource pixbuf files loading
This means we can share the pixbuf data when using GdkPixdata
images in the resource.
2012-02-03 15:51:55 +01:00
Alexander Larsson
57386285fa Support a gtk.gresource file in themes
This lets themes install a .gresource for efficient loading
of resources. This resource file will (if it exists) be automatically
loaded (mmaped) when the theme is used and unloaded when not used.
2012-02-03 15:50:49 +01:00
Piotr Drąg
35db0819ff Updated POTFILES.skip 2012-02-02 17:25:40 +01:00
Daniel Mustieles
fa3544e744 Updated Spanish translation 2012-02-02 12:13:29 +01:00
Benjamin Otte
f855238cc7 reftests: Improve 'unresolvable' test
Include reset-to-defaults here, too
2012-02-02 03:14:02 +01:00
Benjamin Otte
8cdbebae71 reftests: Fix css-match-exact
Ensure that background-colors are always set. And import
reset-to-defaults so that there's no background image or so.
2012-02-02 03:14:02 +01:00
Benjamin Otte
1484208b4c reftests: Fix entry-progress-coloring test
Use reset-to-defaults here.
2012-02-02 03:14:02 +01:00
Benjamin Otte
bc1a689e55 reftests: Add another background-size test
This one tests the keywords for the background-size property
2012-02-02 03:14:02 +01:00
Benjamin Otte
e84af235ee css: Implement padding as numbers
Also remove the now unused border parsing function for shorthands.
2012-02-02 03:14:02 +01:00
Benjamin Otte
f2352a5f35 reftests: Fix border-image-url reftest
"border-style: none;" sets border widths to 0. So no border was drawn.
Use "border-style: groove" instead. (If the border was drawn that way,
it'd look noticably different.)

Also include reset-to-defaults.css so we really get default CSS.
2012-02-02 03:14:02 +01:00
Benjamin Otte
2fdadb053c tests: Add 'px' to css tests 2012-02-02 03:14:02 +01:00
Benjamin Otte
f1c73fcc0c reftests: Add 'px' to all properties 2012-02-02 03:14:02 +01:00
Benjamin Otte
cc83986eb8 reftests: Make test runner always use image surfaces
See comment in code for why.
2012-02-02 03:14:01 +01:00
Benjamin Otte
3c4b8a676f css: Port margin properties to GtkCssNumber 2012-02-02 03:14:01 +01:00
Benjamin Otte
cfebd1ec06 reftests: Add reftest for background-size 2012-02-02 03:14:01 +01:00
Benjamin Otte
1eeafcf569 reftests: Put border-image-repeat test back
This reverts commit 001d42f369.

Because now that we have background-size support, we can use it to make
stuff work!
2012-02-02 03:14:01 +01:00
Benjamin Otte
ceed732d65 reftests: set style properties to 0 in reset-to-defaults
GtkButton doesn't conform to CSS with these properties.
Bad GtkButton!
2012-02-02 03:14:01 +01:00
Benjamin Otte
2434dbc10a themingbackground: Implement background-size support 2012-02-02 03:14:01 +01:00
Benjamin Otte
82b739c490 tests: Add parsing test for background-size 2012-02-02 03:14:01 +01:00
Benjamin Otte
1979d048d3 css: Implement parsing for 'background-size' 2012-02-02 03:14:01 +01:00
Benjamin Otte
d56ac0d4df reftests: Add a bunch of linear gradient tests 2012-02-02 03:14:01 +01:00
Benjamin Otte
2e901752b1 tests: Add parsing tests for linear gradients 2012-02-02 03:14:01 +01:00
Benjamin Otte
811e848832 css: Implement repeating linear gradients 2012-02-02 03:14:00 +01:00
Benjamin Otte
5df9b0188a css: Implement CSS 3 linear-gradient() syntax 2012-02-02 03:14:00 +01:00
Benjamin Otte
f22c986102 tests: Update CSS tests for borders
Borders now expect 'px'.
2012-02-02 03:14:00 +01:00
Benjamin Otte
0c140daff2 css: Implement support for angles 2012-02-02 03:14:00 +01:00
Benjamin Otte
a63ff72406 css: Convert border-radius to GtkCssNumber
We can do % now, wohoo!
2012-02-02 03:14:00 +01:00
Benjamin Otte
82c2dad178 themingengine: Add a private function to query lengths 2012-02-02 03:14:00 +01:00
Benjamin Otte
762ea4793f css: Make border-width a length property 2012-02-02 03:14:00 +01:00
Benjamin Otte
a81ac3d5cd css: Add a check function for specified types
... and use it.

It seems kinda necessary for the refactoring I'm about to do...
2012-02-02 03:14:00 +01:00
Benjamin Otte
9551f542bd css: Ensure proper type for parsing custom properties 2012-02-02 03:14:00 +01:00
Benjamin Otte
893807bee0 css: Add GtkCssNumber 2012-02-02 03:14:00 +01:00
Benjamin Otte
bd8fefb20e styleproperties: Add a warning
GtkStyleProperties stores computed values. Make sure it does.
2012-02-02 03:14:00 +01:00
Benjamin Otte
032e8f9f9b styleproperty: Simplifiy registering function
... and rename it to conform to the actual type.

We don't need 2 registering functions anymore now that we can use the
specified type.
2012-02-02 03:13:58 +01:00
Benjamin Otte
6ba33e7af5 css: Allow bypassing the compute_value() stage
This is useful when overriding values.
2012-02-02 03:13:38 +01:00
Benjamin Otte
e4c2d9b259 csslookup: Query the bitmask
Checking if the value is NULL is the wrong thing to do - the bitmask is
usd to keep track of that.

The reason for that will become apparent in the next patch.
2012-02-02 03:13:38 +01:00
Benjamin Otte
4c8e9ee6b6 css: Remove two unused declarations 2012-02-02 03:13:38 +01:00
Benjamin Otte
c8786c3b97 css: color_compute no longer needs to check type
The input is always a symbolic color.
2012-02-02 03:13:38 +01:00
Benjamin Otte
5e5e8367ce css: Initialize value before calling compute function 2012-02-02 03:13:38 +01:00
Benjamin Otte
f7e0ce3b28 css: Initialize values to their specified type
.. when parsing.
2012-02-02 03:13:38 +01:00
Benjamin Otte
25affd4766 css: Create SymbolicColor fallback properties for colors 2012-02-02 03:13:38 +01:00
Benjamin Otte
c2fb315878 css: parse 'currentColor' for symbolic colors 2012-02-02 03:13:38 +01:00
Benjamin Otte
9fa764abec styleproperty: Introduce "specified type" and "computed type"
Make the types explicit. This way, we can actually do useful stuff with
them (like sanity checks, d'oh).
2012-02-02 03:13:34 +01:00
Benjamin Otte
05f14af24c css: Make the 'currentColor' keyword a symbolic color
This is the first step on a quest to ensure that there is only ever one
GType in use for GValues in every stage of the CSS resolving process.
2012-02-02 00:40:33 +01:00
Benjamin Otte
6b04c0f828 raleigh: remove general 'padding' declaration
Fixes reftests that were broken after images and labels applied padding.
Things look much more cramped now. On the plus side, treeview headers
and comboboxes have better spacing. Menubars look like crap now though.

Needs someone with artistical talent to figure out.
2012-02-02 00:14:01 +01:00
Benjamin Otte
21e20b0d5b raleigh: Remove unnecessary border-width declaration 2012-02-02 00:09:05 +01:00
Benjamin Otte
4dd9a73c8a raleigh: Don't set bg-color for all widgets
Just set oit for things that need it.
(FIXME: Buttons should probably not need it, but spinbuttons and
treeview headers don't have a proper background without it.)
2012-02-02 00:05:51 +01:00
Cosimo Cecchi
95f5ca062b reftests: set border-image: none in border-image-url's reference CSS
Fix border-image-url reftest
2012-02-01 17:59:28 -05:00
Cosimo Cecchi
d61a84bb3a reftests: add a bunch of missing reset-to-defaults
Fix the css-match-* reftests.
2012-02-01 17:59:27 -05:00
Cosimo Cecchi
2ae2c443d0 app-chooser-dialog: cancel the PK operation when the dialog is dismissed
This doesn't really seem to have any effect; probably PK doesn't listen
for changes on the passed-in cancellable, but it's correct.

Related to: https://bugzilla.gnome.org/show_bug.cgi?id=649121
2012-02-01 13:21:43 -05:00
Cosimo Cecchi
623b5192cc app-chooser-dialog: make sure to hold a ref when doing async ops
Hold a ref to the GtkDialog while doing async operations with the
GtkAppChooserOnline object.
This is needed, since somebody could call gtk_widget_destroy() on us
while an async operation is in progress. We don't want to be finalized
in that case, but mark the fact that we were dismissed and just return
from the callback in that case.
This avoids crashing if the dialog is destroyed in the middle of a PK
operation.

https://bugzilla.gnome.org/show_bug.cgi?id=649121
2012-02-01 13:21:43 -05:00
Benjamin Otte
c0ee68b7fe gtkmain: Invoke keysnoopers unconditionally
Now that ATK no longer uses a key snooper but is invoked directly,
checking in advance for existing snoopers is wrong and stops ATK from
working.

Also: code reduction without performance loss == good thing.

https://bugzilla.gnome.org/show_bug.cgi?id=669176
2012-02-01 15:45:49 +01:00
Cosimo Cecchi
26ff536069 combobox: fix cell area allocation in menu mode for RTL
We were missing a padding to subtract from the child widget here.
2012-01-31 20:30:43 -05:00
Cosimo Cecchi
aa16f469bc combobox: fix dropdown menu alignment for RTL languages
We need to add in the left padding, instead of subtracting it in that
case.
2012-01-31 20:30:43 -05:00
Cosimo Cecchi
65e6248542 combobox: use gtk_container_class_handle_border_width()
Avoids us fiddling with the border width manually in our size request
and allocation cycles.
2012-01-31 20:30:43 -05:00
Cosimo Cecchi
cf7f0cb27a combobox: always trim the allocated area by padding and border for child
When we're size allocating the children widgets, always trim the
allocation for padding and border of GtkComboBox, as that's all the area
they have available.
2012-01-31 20:30:42 -05:00
Cosimo Cecchi
ec6b36add5 combobox: cleanup allocation of children in list mode
Instead of setting the same values for child allocation in different
places, just do it once.
2012-01-31 20:30:42 -05:00
Cosimo Cecchi
a8211b75b2 combobox: cleanup and comment the allocation code somewhat 2012-01-31 20:30:42 -05:00
Cosimo Cecchi
00325e992b combobox: make sure to respect the GtkComboBox padding in menu mode
When the combobox is in menu mode, we still shouldn't discard the
GtkComboBox padding value; it's wrong to allocate it to the button.
2012-01-31 20:30:42 -05:00
Cosimo Cecchi
c598a9501f combobox: cleanup GTK_COMBO_BOX_SIZE_ALLOCATE_BUTTON
It was using the wrong padding values for RTL, and generally, using the
same variables in a distant macro makes this method even more
complicated than it already is...
2012-01-31 20:30:41 -05:00
Cosimo Cecchi
1bbd2c48c5 combobox: simplify size request code by using the button content box
Similar to what we did for size_allocate.
2012-01-31 20:30:41 -05:00
Cosimo Cecchi
821365af15 combobox: move the allocation of the button contents box directly
If we're in menu mode with no children, instead of tweaking the
allocation of the arrow and the separator separately, tweak the
allocation of the box that contain both.
2012-01-31 20:30:41 -05:00
Cosimo Cecchi
93523e70a0 combobox: allocate the CSS borders to GtkComboBox
Consider borders in the allocation/size-request machinery, like every
widget should do.
2012-01-31 20:30:40 -05:00
Cosimo Cecchi
4675ed27fd combobox: remove handling of focus-padding and focus-line-width
GtkComboBox always handles focus through its children, so there's no
need to request and allocate them again.
In fact, Adwaita was forcing these style properties to zero for
GtkComboBox.
2012-01-31 20:30:40 -05:00
Javier Jardón
9d7a722b38 gtkentry: Fix compilation warnings 2012-01-31 20:46:14 +00:00
Javier Jardón
44135ba2eb gtkspinbutton: Fix compilation warning 2012-01-31 20:46:13 +00:00
Ryan Lortie
8abc74680d Bring back the GMenu separators
4240bfb74a contained a likely copy/paste
mishap that accidentally disabled all separators for GtkMenus created
from GMenuModels.

Bring them back.
2012-01-31 13:23:34 -05:00
Cosimo Cecchi
0e395ea5a2 entry: deprecate the progress-border style property
Since we don't use it anymore.
2012-01-31 10:04:27 -05:00
Cosimo Cecchi
8dab59e5c9 entry: use the CSS margin for the progress margin offset
The progressbar inside GtkEntry has a progress-border style property,
which is actually the margin of the progressbar inside the GtkEntry
allocation.
Use a CSS margin instead of reading the progress-border property.
2012-01-31 10:04:27 -05:00
Cosimo Cecchi
5ec36a015c entry: use padding on the image area to position the image
Don't assume the padding of the icons is the same padding of the rest of
the entry.
This also allows to set different paddings for left and right icons.
2012-01-31 10:04:27 -05:00
Cosimo Cecchi
2cbe088674 entry: deprecate inner-border and gtk_entry_get/set_inner_border()
They're unused in GTK now and have suitable replacements in the CSS
properties.
2012-01-31 10:04:27 -05:00
Cosimo Cecchi
dd2bbd1b85 cell-renderer-text: don't use gtk_entry_set_inner_border()
There's no need to, since now the theme can just tweak the padding like:

.cell.entry {
  padding: 12;
}
2012-01-31 10:04:26 -05:00
Cosimo Cecchi
a5b189093b cell-renderer: add the CELL style class to the editing widget
When we create an editing widget, add the CELL style class to it, for
identification by the themes.
2012-01-31 10:04:26 -05:00
Cosimo Cecchi
4b90ba2701 entry: always add padding to the allocation
Even when we don't have a frame. We just ignore the borders in this
case.
2012-01-31 10:04:26 -05:00
Cosimo Cecchi
d140411698 entry: don't consider inner-border for allocation and layout
We want to deprecate the inner-border property and use the standard CSS
border/padding properties. Start with replacing its uses in GtkEntry.
2012-01-31 10:04:26 -05:00
Cosimo Cecchi
3ca795d447 entry: don't blindly center the text area in the allocated height
Since top/bottom borders might be different.
2012-01-31 10:04:25 -05:00
Cosimo Cecchi
8275a20026 entry: change _gtk_entry_get_borders() to return a GtkBorder 2012-01-31 10:04:25 -05:00
Cosimo Cecchi
5b2c1ee828 entry: allocate the CSS borders to GtkEntry
Every widget should allocate its borders. Make this true for GtkEntry.
2012-01-31 10:04:25 -05:00
Marek Kasik
9afe13bf91 printing: Don't crash when printing
This commit fixes crash which occurs in Firefox, Thunderbird and Inkscape
during printing. This crash was caused because of wrong handling of Custom
CUPS options. (#543520)
2012-01-31 12:15:43 +01:00
Michael Meeks
0481fbf7ce broadway: terminate v7 input to avoid parsing uninit memory. 2012-01-31 10:39:01 +00:00
Ryan Lortie
4041accda3 GtkBuilder menus: reject all attributes on <item>
These were just being silently ignored before.  That's bad, since it
used to be valid to have these.
2012-01-31 00:09:11 -05:00
Matthias Clasen
36242f8035 Bump version 2012-01-30 23:16:43 -05:00
Matthias Clasen
25231e36a2 3.3.12 2012-01-30 23:15:55 -05:00
Matthias Clasen
26da21f352 Drop some unintentional exports 2012-01-30 22:14:05 -05:00
Matthias Clasen
f663d4c82e Fix menu xml syntax in tests 2012-01-30 22:14:05 -05:00
Benjamin Otte
50c5bf97ea shorthand: Only unset values that are set
Otherwise g_value_unset() complains. And that breaks the testsuite.
2012-01-31 03:59:32 +01:00
Benjamin Otte
f01cef05c8 window: Avoid unnecessary attach-widget resets 2012-01-31 03:43:43 +01:00
Matthias Clasen
9b6ae2e9d5 Fix make check
Several unwanted symbols have sneaked in.
2012-01-30 20:46:44 -05:00
Matthias Clasen
4497ac6b58 Document the gtkbuilder xml file better
Replace the (invalid) DTD in the GtkBuilder docs by a
RELAX NG schema. Also install the schema in /usr/share/gtk-3.0,
so it can be used to validate GtkBuilder ui files.
2012-01-30 20:32:22 -05:00
Matthias Clasen
585a6652d5 Use G_SOURCE_CONTINUE/REMOVE
Now that GLib provides these macros, we should use them
to make the code more readable.
2012-01-30 19:12:27 -05:00
Matthias Clasen
7a080413ad Typo fix 2012-01-30 18:38:04 -05:00
Kristian Høgsberg
12e661c801 wayland: Fix return type from gdk_wayland_window_configure()
Should be void.  Copy and paste error.
2012-01-30 09:07:24 -05:00
Chao-Hsiung Liao
b2eadbc723 Updated Traditional Chinese translation(Hong Kong and Taiwan) 2012-01-29 23:03:31 +08:00
Kristian Høgsberg
aae9a71986 wayland: Also synthesize a configure event from gdk_window_wayland_move_resize 2012-01-29 07:32:44 -05:00
Matej Urbančič
1cf1fbdbbf Updated Slovenian translation 2012-01-28 20:42:10 +01:00
Kjartan Maraas
c32fedc264 Updated Norwegian bokmål translation 2012-01-28 15:44:51 +01:00
Carlos Garcia Campos
3c486ee96d testgtk: Use symbolic names for button numbers 2012-01-27 09:47:44 +01:00
Carlos Garcia Campos
80b414efc2 examples: Use symbolic names for button numbers 2012-01-27 09:47:44 +01:00
Carlos Garcia Campos
f7c6c97710 gtk-demo: Use symbolic names for button numbers 2012-01-27 09:47:44 +01:00
Carlos Garcia Campos
67c3bf7b02 gtktreeviewcolumn: Use symbolic names for button numbers 2012-01-27 09:47:44 +01:00
Carlos Garcia Campos
349b1eff03 gtktreeview: Use symbolic names for button numbers 2012-01-27 09:47:44 +01:00
Carlos Garcia Campos
4e41b5c5fd gtktextview: Use symbolic names for button numbers 2012-01-27 09:47:44 +01:00
Carlos Garcia Campos
f20551e2ed gtkstatusicon: Use symbolic names for button numbers 2012-01-27 09:47:44 +01:00
Carlos Garcia Campos
f84ec775d8 gtkspinbutton: Use symbolic names for button numbers 2012-01-27 09:47:44 +01:00
Carlos Garcia Campos
99c903ec04 gtkrange: Use symbolic names for button numbers 2012-01-27 09:47:44 +01:00
Carlos Garcia Campos
15711a3bf7 gtkpathbar: Use symbolic names for button numbers 2012-01-27 09:47:44 +01:00
Carlos Garcia Campos
0453f91f02 gtkpaned: Use symbolic names for button numbers 2012-01-27 09:47:43 +01:00
Carlos Garcia Campos
594903ecde gtknotebook: Use symbolic names for button numbers 2012-01-27 09:47:43 +01:00
Carlos Garcia Campos
59a1434557 gtkmenutoolbutton: Use symbolic names for button numbers 2012-01-27 09:47:43 +01:00
Carlos Garcia Campos
73449a4e28 gtkmenu: Use symbolic names for button numbers 2012-01-27 09:47:43 +01:00
Carlos Garcia Campos
38d869cb8e gtklabel: Use symbolic names for button numbers 2012-01-27 09:47:43 +01:00
Carlos Garcia Campos
c7756f0410 gtkiconview: Use symbolic names for button numbers 2012-01-27 09:47:43 +01:00
Carlos Garcia Campos
203f600373 gtkhsv: Use symbolic names for button numbers 2012-01-27 09:47:43 +01:00
Carlos Garcia Campos
76420c4793 gtkexpander: Use symbolic names for button numbers 2012-01-27 09:47:43 +01:00
Carlos Garcia Campos
d088e729e5 gtkentry: Use symbolic names for button numbers 2012-01-27 09:47:43 +01:00
Carlos Garcia Campos
6e9b06028c gtkdnd: Use symbolic names for button numbers 2012-01-27 09:47:43 +01:00
Carlos Garcia Campos
7f2b08c04d gtkcombobox: Use symbolic names for button numbers 2012-01-27 09:47:43 +01:00
Carlos Garcia Campos
2dbfa88459 gtkcolorsel: Use symbolic names for button numbers 2012-01-27 09:47:43 +01:00
Carlos Garcia Campos
f8e9d264da gtkcellarea: Use symbolic names for button numbers 2012-01-27 09:47:43 +01:00
Carlos Garcia Campos
c5d9c6f27c gtkcalendar: Use symbolic names for button numbers 2012-01-27 09:47:42 +01:00
Carlos Garcia Campos
e796f3a4e7 gtkbutton: Use symbolic names for button numbers 2012-01-27 09:47:42 +01:00
Carlos Garcia Campos
ffd6dab8aa gtkappchooserwidget: Use symbolic names for button numbers 2012-01-27 09:47:42 +01:00
Carlos Garcia Campos
f11e5a3f4d gtkaboutdialog: Use symbolic names for button numbers 2012-01-27 09:47:42 +01:00
Carlos Garcia Campos
bc5d8da0c6 gdkevents: Use symbolic names for button numbers 2012-01-27 09:47:42 +01:00
Carlos Garcia Campos
2890ac842f gdk: Add macros for left, middle and right buttons
https://bugzilla.gnome.org/show_bug.cgi?id=668688
2012-01-27 09:47:42 +01:00
Daniel Mustieles
7a39912cae Updated Spanish translation 2012-01-26 17:14:25 +01:00
Piotr Drąg
0fb61e883e Updated POTFILES.in 2012-01-26 15:22:19 +01:00
Piotr Drąg
78d2ac2cb6 Updated POTFILES.in 2012-01-26 15:22:01 +01:00
Marek Kasik
e0d32d9456 printing: Fix a typo
Fix a typo which crashes on my printer.
2012-01-26 10:52:47 +01:00
Michael Natterer
90b991dd13 quartz: s/gdk_cursor_ref/g_object_ref/ 2012-01-26 10:37:12 +01:00
Michael Natterer
3ca7ec693f Bug 667691 - implement gdk_window_restack() for Quartz
Apply patch from Paul Davis which implements this missing function.
(cherry picked from commit e1c107a094)
2012-01-26 10:25:47 +01:00
Will Newton
96cfd3f8c7 iconcache: Always check return value of find_image_offset.
find_image_offset returns 0 if it failed to find a matching image.
Check this return value in _gtk_icon_cache_get_icon to avoid
making bad memory accesses later.

Signed-off-by: Will Newton <will.newton@imgtec.com>

https://bugzilla.gnome.org/show_bug.cgi?id=667745
2012-01-25 22:57:52 -05:00
Matthias Clasen
dbd66a8f02 GtkMenu: Improve annotations
Add a 'Rename to' annotation so gtk_menu_popup_for_device
appears in bindings as gtk_menu_popup (which we skip anyway).

https://bugzilla.gnome.org/show_bug.cgi?id=657385
2012-01-25 21:14:52 -05:00
Matthias Clasen
4c1a45f9ab Add some menu markup documentation 2012-01-25 20:59:22 -05:00
Ryan Lortie
7c1717886a Remove one last user of gmenumarkup 2012-01-25 20:56:06 -05:00
Ryan Lortie
e2750a4f5e GtkTimeline: protect the timeline from unref
The timeline frame function emits several signals, assuming that the
timeline will exist after these signals return.  This assumption can be
invalid if signal handlers unref the timeline.

https://bugzilla.gnome.org/show_bug.cgi?id=668675
2012-01-25 20:29:31 -05:00
Ryan Lortie
eed307713b GtkBuilder: change format of menus
Change the format of GtkBuilder <menu> to be more in-line with the style
of the rest of GtkBuilder so that we can do translation in a consistent
way.

The format is now substantially more difficult to hand-write, but tools
should be along soon.

There is an xslt program attached to the bug to help you convert your
existing .ui files from the old format to the new one.

https://bugzilla.gnome.org/show_bug.cgi?id=668696
2012-01-25 19:42:19 -05:00
Cosimo Cecchi
c76cccd437 application: sync clipboard and recent manager on shutdown
This mimics the code for gtk_main(), since GApplication iterates the
main context directly.
2012-01-25 18:31:25 -05:00
Matthias Clasen
d00368cac9 GtkAboutDialog: Make credits section extensible
This commit adds API that allows to add new named sections
to the Credits part of GtkAboutDialog, in addition to the
hardcoded sections for authors, documenters, artists and
translators.

https://bugzilla.gnome.org/show_bug.cgi?id=484693
2012-01-25 18:25:43 -05:00
Dieter Verfaillie
fe1907708c win32: fix gdk_win32_window_raise
When calling gtk_window_present(), gdk_win32_window_raise did not
actually raise the window anymore. Replacing BringWindowToTop() with
SetForegroundWindow() fixes this.

During testing, we also discovered that sometimes SetForeGroundWindow()
will (correctly) refuse to raise the window and fail(for example: sometimes
when dragging a different application at the time of a gtk_window_present()
call). To prevent a GdkWarning from being produced, usage of the API_CALL
macro has been removed for this case.

Additional goodies of SetForeGroundWindow:
- it brings the window to the front when the process owning the
  window to raise is the foreground process (for example when
  gtk_window_present is called from a GtkStatusIcon's activate
  signal handler)
- it limits itself to flashing the task bar button associated
  with the window if the process owning the window to raise
  is *not* the foreground process (for example when gtk_window_present
  is called from a g_timeout_add callback function)

https://bugzilla.gnome.org/show_bug.cgi?id=665760
2012-01-25 20:32:50 +01:00
Benjamin Otte
8da4c2affa css: Return GArrays from shorthand parsing
GValueArray is deprecated now.
2012-01-25 19:05:33 +01:00
Benjamin Otte
fd4f701c50 css: Use GArray in GtkCssComputedValues
GValueArray is deprecated in glib. Also, bump the required glib version
for g_array_set_clear_func().
2012-01-25 19:05:33 +01:00
Javier Jardón
104d9cab37 gdkapplaunchcontext: Add tags to code example 2012-01-25 17:36:57 +00:00
Alexander Larsson
fa6ad2ca04 broadway: Properly handle masked websocket messages
Thanks to Rafal Luzynski for pointing this out.

https://bugzilla.gnome.org/show_bug.cgi?id=656521
2012-01-25 11:47:16 +01:00
Matthias Clasen
1e869311c1 GtkApplicationWindow: Some more docs 2012-01-24 22:51:05 -05:00
Matthias Clasen
38f395481c Doc tweaks 2012-01-24 22:41:36 -05:00
Matthias Clasen
7d56c052d4 Fix a doc typo 2012-01-24 22:28:34 -05:00
Matthias Clasen
d818bdc297 gtk3-demo-application: add an example for the new api
Turn the menutoolbutton menu into one that is gmenu/gaction backed.
2012-01-24 22:27:28 -05:00
Matthias Clasen
4240bfb74a Add API to create menus from models
This is needed to bring context menus, etc into the GAction world.
2012-01-24 22:25:35 -05:00
Matthias Clasen
e7d6400149 GtkApplication: documentation additions
Document that startup() needs to chain up first.
2012-01-24 22:22:08 -05:00
Matthias Clasen
1819543e1e GtkModelMenu: Plug a memleak 2012-01-24 21:30:33 -05:00
Siegfried-Angel Gevatter Pujals
1ae4b1ecc1 g_content_type_guess expects a path, not an URI 2012-01-24 19:22:54 +01:00
Siegfried-Angel Gevatter Pujals
0d9d3025c6 Fix mem leak introduced with my previous commit 2012-01-24 19:05:29 +01:00
Kjartan Maraas
8599c98780 Updated Norwegian bokmål translation 2012-01-24 18:17:05 +01:00
Benjamin Otte
2f3ffd5fde treeview: Fix comparison to catch all cases
Otherwise, we could sometimes fail to update the cursor node when the
right row was deleted.

Also, I'd like to file a formal complaint that this node/tree
differentiation makes writing comparisons too complicated.

https://bugzilla.gnome.org/show_bug.cgi?id=668169
2012-01-24 17:55:14 +01:00
Siegfried-Angel Gevatter Pujals
080f8740f2 GtkRecentManager: guess mime-type from filename when file doesn't exist 2012-01-24 13:59:12 +01:00
Andre Klapper
d0393d7376 Typofix in documentation 2012-01-24 13:52:53 +01:00
Matthias Clasen
4c2e53a468 Silence a compiler warning 2012-01-24 00:41:26 -05:00
Matthias Clasen
3104e5d2c1 Add an example for settings<>action integration
Turn the 'color' action in gtk3-demo-application into an
action that is backed by a setting.
2012-01-24 00:07:03 -05:00
Matthias Clasen
0363a7a2e3 Bloatpad: propertly escape <> in markup 2012-01-23 22:14:28 -05:00
Matthias Clasen
5c10f8ce8c Pedantic spelling fix
Its 'theming', not 'themeing'.
2012-01-23 16:48:02 -05:00
Paolo Borelli
1326466309 Render background of a GtkImage
Useful to e.g. style the bg color of a symbolic icon
2012-01-23 21:03:05 +01:00
Paolo Borelli
31e89b44da Fix gtkmisc padding calculation
Actually sum css padding and gtkmisc padding as intended in the previous
patch.
2012-01-23 21:03:05 +01:00
Ryan Lortie
880daf8bb2 GtkApplication: change the accel prefix we use
GtkApplication adds to the global accel map using the prefix <Actions>
which is also used by GtkAction.  This causes GtkApplicationWindow to
try to parse GtkAction-added accels as if they were its own (which
fails).

Switch to a different namespace -- <GAction>/.

https://bugzilla.gnome.org/show_bug.cgi?id=668367
2012-01-23 11:17:07 -05:00
Paolo Borelli
e34589ddea Factor out _gtk_misc_get_padding_and_border
The new semi-private function will allow to implement support for css
padding and border in widgets inheriting from GtkMisc.
Use the new function for GtkLabel, GtkArrow and GtkImage.
2012-01-22 13:36:47 +01:00
Matej Urbančič
bf7779bfb7 Updated Slovenian translation 2012-01-21 21:04:20 +01:00
Colin Walters
a9614a39a4 gtkmenuitem: Silence a compiler warning 2012-01-21 10:29:07 -05:00
Philip Withnall
5df87d06d4 progressbar: Tidy up the gtk-doc comments a little 2012-01-21 10:05:10 +00:00
Matthias Clasen
835e37f08f GtkApplicationWindow: Improve app menu label
When we are showing the app menu in process, use the application
name, if it has been set. Otherwise, we still fall back to
"Application".
2012-01-20 20:06:25 -05:00
Matthias Clasen
c06887c9f0 Bloatpad: Set the application name
This will be picked up for the app menu label in fallback mode
in the near future.
2012-01-20 20:05:43 -05:00
Matthias Clasen
0c514dc7dd Correct an introspection annotation
Mistake pointed out in bug 668265.
2012-01-20 19:46:53 -05:00
Matthias Clasen
d5656b6139 bump rev 2012-01-20 16:13:37 -05:00
Matthias Clasen
d9f1ac1c9c 3.3.10 2012-01-20 16:12:25 -05:00
Matthias Clasen
15b4198a80 Bump GLib dep
This is needed for the app menu moves.
2012-01-20 15:30:46 -05:00
Matthias Clasen
391cd36a5b Updates 2012-01-20 15:29:09 -05:00
Matthias Clasen
691a94214a Fix doc syntax 2012-01-20 08:17:39 -05:00
Matthias Clasen
284ff06ef6 GtkApplication: fix !x11 build
Since we moved the menu models to GTK+, we need to deal with
them on all platforms, even if we don't do anything special
with them on win32.
2012-01-20 08:16:35 -05:00
Alexander Larsson
d80bad037f Fix builddir != srcdir build issue 2012-01-20 13:48:33 +01:00
Alexander Larsson
7ec927a386 Fix visibility notification event reporting
We were checking the event mask for GDK_VISIBILITY_NOTIFY,
not GDK_VISIBILITY_NOTIFY_MASK, which was clearly a typo.
2012-01-20 11:01:49 +01:00
Matthias Clasen
681871dd9e GtkApplicationWindow: Fix resize grip positioning
Based on a patch by Carlos Garcia Campos, bug 668248
2012-01-20 01:01:08 -05:00
Cosimo Cecchi
4b7ec2be82 main: fix a compilation warning 2012-01-19 13:51:32 -05:00
Michael Natterer
0ea1924494 quartz: add virtual modifiers already in GDK, just as X11 does it
Key event states  will now always contain GDK_META_MASK in addition
to GDK_MOD2_MASK.
(cherry picked from commit d915d17ff6)
2012-01-19 16:29:41 +01:00
Kristian Høgsberg
b9190c7fe9 wayland: Destroy shell surface as we destroy the surface 2012-01-19 09:57:43 -05:00
Daniel Mustieles
fa17e23ce7 Updated Spanish translation 2012-01-19 11:01:28 +01:00
Benjamin Otte
dbabff0846 a11y: Invoke key snooper directly
Gets around the deprecated function warnings.
2012-01-19 10:32:21 +01:00
Cosimo Cecchi
637e6688da notebook: fixup previous commit
Oops, I hit push too early.
2012-01-18 16:14:31 -05:00
Cosimo Cecchi
70cf23a729 notebook: don't force ACTIVE state flag on the label for active tab
This is just wrong, since it's not the tab label being active, but the
tab itself.
2012-01-18 16:13:25 -05:00
Ryan Lortie
ba9546ff32 Don't call set_application() in gtk_window_realize
This call has no effect and with the newly-added restrictions it's
violating the set-application-after-realized rule.

https://bugzilla.gnome.org/show_bug.cgi?id=668203
2012-01-18 14:53:08 -05:00
Ryan Lortie
60317cbf1a move menus over from GLib
App menu and menubar are now properties of GtkApplication and their bus
location is exported using X window properties.

https://bugzilla.gnome.org/show_bug.cgi?id=668118
2012-01-18 13:40:05 -05:00
Benjamin Otte
ed8e7d1793 Revert "a11y: Remove keysnooping support"
This reverts commit 0c8ecba7dc.

The change broke Orca completely, and we need a proper fix first.
So we have to live with the bugs intorduced by this until then.
2012-01-18 18:33:11 +01:00
Kristian Høgsberg
4c79e25915 wayland: Report middle and right buttons correctly
The linux evdev button codes have right as 274 and left as 273.
2012-01-18 12:04:18 -05:00
Rob Bradford
29641ecd07 wayland: Update modifiers handling to match new semantics
Due to changes in the behaviour of the virtual modifiers around MOD1 the
implementation of the map_virtual_modifiers vfunc was mangling the modifiers
and making keybindings not work correctly.

This change updates the implementation to match the X11 implementation's
behaviour.
2012-01-18 16:32:44 +00:00
Matthias Clasen
1839caa7b7 GtkScale Remove an unused variable 2012-01-18 11:06:33 -05:00
Benjamin Otte
9770184643 css: Fix memleak in shadow parsing 2012-01-18 10:46:46 +01:00
Matthias Clasen
345d865ac6 GtkScale: Fix late setting of marks 2012-01-18 00:58:38 -05:00
Matthias Clasen
d6f9eb1ff8 Add more GtkScale mark tests
This code tests adding scale marks 'late', and how this interact
with inversion.
2012-01-18 00:58:38 -05:00
Benjamin Berg
27f3c3c031 Strip "Custom." prefix when getting default options from cups. 2012-01-17 20:33:32 +01:00
Kristian Høgsberg
b9509ec15d wayland: Handle request for selection atoms when there's no selection 2012-01-17 11:10:59 -05:00
Ryan Lortie
85fcd50b3f Revert "set the G_PARAM_CONSTRUCT flag on the GtkWindow:application property"
This reverts commit d4fe912879.

This patch caused some unanticipated compatibility issues.
2012-01-17 10:56:30 -05:00
Colin Walters
626c08a847 tests/visuals: Squash a compiler warning 2012-01-17 10:24:39 -05:00
Rob Bradford
dba9c2e5a7 wayland: Adapt move_resize vfunc implementation to match semantics
Callers of this function were passing in -1, -1 for the width and height if
they just wanted the window moving - rather than the size changing. We need to
respect that behaviour and don't try and set the width/height to those
dimensions.

Now pop-up windows (ala combo-boxes) work!
2012-01-17 15:05:03 +00:00
Matthias Clasen
299a4eca28 Back to odd 2012-01-16 23:14:07 -05:00
Matthias Clasen
4d76860697 3.3.8 2012-01-16 23:13:27 -05:00
Matthias Clasen
0bf41f38ee Remove appchooser tests from the Makefile as well 2012-01-16 22:37:26 -05:00
Matthias Clasen
173740a2f6 Remove the appchooser a11y dump test as well
This test is also affected by treeview a11y fallout.
2012-01-16 21:55:43 -05:00
Matthias Clasen
1aff20b93e Remove tree.ui a11y dump test
This is just broken currently; it needs fixing before it can come
back.
2012-01-16 21:07:36 -05:00
Matthias Clasen
d8b86bcb2b Disable broken tree-relationships tests for now
Needs to be fixed up before it can come back.
2012-01-16 21:06:11 -05:00
Matthias Clasen
3e6b37726a Remove a check that broke the color chooser a11y dump
With the visible check, the opacity slider ended up without
a labeled-by, which is sad.
2012-01-16 21:05:01 -05:00
Matthias Clasen
f29195e741 Adapt to focus changes in the treeview 2012-01-16 21:04:24 -05:00
Matthias Clasen
001d42f369 Remove broken border-image-repeat test
It will come back when it works
2012-01-16 19:14:20 -05:00
Alexandre Rostovtsev
e2053a582a Add Since: to gdk_x11_device_get_id(), gdk_x11_device_manager_lookup(), gdk_x11_window_set_utf8_property() docs
https://bugzilla.gnome.org/show_bug.cgi?id=667730
2012-01-16 18:08:16 -05:00
Matthias Clasen
57126ae56b GtkScale: Always chain up in notify
Pointed out by Stefan Sauer.
2012-01-16 18:05:44 -05:00
Matthias Clasen
edd888f92b Updates 2012-01-16 17:36:31 -05:00
Matthias Clasen
f802b7e0a8 Bump GLib dep to 2.31.10
Needed for GResource
2012-01-16 17:24:27 -05:00
Ryan Lortie
a55ef45515 gtk3-demo-application: fix sections
<section> doesn't need to be given in a menubar but it does need to be
given for submenus, so add those ones back.
2012-01-16 17:19:26 -05:00
Matthias Clasen
7a3e1bbc41 configure: Set GLIB_COMPILE_RESOURCES 2012-01-16 17:07:46 -05:00
Matthias Clasen
2a6a354aa8 gtk-demo: Improve the GtkApplication demo
Following suggestions in bug 667968
2012-01-16 17:07:12 -05:00
Kristian Høgsberg
7328cc73aa wayland: Set GdkWindow focused state based on keyboard focus 2012-01-16 15:36:28 -05:00
Kristian Høgsberg
5f07e937c8 wayland: Implement client side keyboard repeat 2012-01-16 15:36:27 -05:00
Rico Tzschichholz
85da4ca5bd gtk.symbols: updated 2012-01-16 19:45:27 +01:00
Rico Tzschichholz
8b183af57f build: Add missing files to EXTRA_DIST 2012-01-16 19:27:23 +01:00
Benjamin Otte
6f9cc94fae cssprovider: Improve error handling for import errors
We don't want to include the whitespace after an import statement.
Because people tend to add newlines after @import, we report the wrong
lines for failed imports. And that's bad.
2012-01-16 18:44:43 +01:00
Benjamin Otte
a213b0b33e image: Fix gcc warnings 2012-01-16 18:39:52 +01:00
Benjamin Otte
f04c12bd2c tests: Add a deprecation warning
This should probably have been added a while ago...
2012-01-16 18:34:41 +01:00
Benjamin Otte
1b0231b743 css: Don't import CSS too early
First, finish parsing the import rule including the semicolon. Then try
to actually import.

test: css/parser/at-invalid-01.css
2012-01-16 18:34:41 +01:00
Benjamin Otte
4653c7017f css: Fix memleak
https://bugzilla.gnome.org/show_bug.cgi?id=667910
2012-01-16 18:34:41 +01:00
Kjartan Maraas
8411088c54 Updated Norwegian bokmål translation 2012-01-16 17:04:31 +01:00
Rui Matos
f0a80fa308 x11: Fix the _NET_SUPPORTING_WM_CHECK window fetch to be spec compliant
"The child window MUST also have the _NET_SUPPORTING_WM_CHECK property set to
the ID of the child window. […] If the _NET_SUPPORTING_WM_CHECK window on the
client window is missing or not properly set, clients SHOULD assume that no
conforming Window Manager is present."

This commit implements that, which allows us to not have to do a
XGetWindowProperty() every N seconds when running under a compliant WM.

This is also a more correct fix for the bug handled in commit
daf29bffed.

https://bugzilla.gnome.org/show_bug.cgi?id=666921
2012-01-16 15:38:33 +00:00
Javier Jardón
608637b562 Trivial doc fix
Use GLib consistently capitalized in the docs.
2012-01-16 14:49:38 +00:00
Alexander Larsson
c6e253564c Add missing cursors 2012-01-16 14:36:18 +01:00
Alexander Larsson
e46971306a Ensure we can load images via resource:// uris from CSS 2012-01-16 14:19:19 +01:00
Alexander Larsson
6afeb8d355 Move fallback dnd cursors to resources 2012-01-16 14:19:19 +01:00
Alexander Larsson
622b78c000 Add GtkImage constructors from resources
Atm you can't read back the resource path like
you can with filenames. Maybe we should add that.
2012-01-16 14:19:18 +01:00
Alexander Larsson
1a36414da7 Access win32 css as resource, not custom generated C code 2012-01-16 14:19:18 +01:00
Alexander Larsson
4f0cc6572b Add Gtk resource file with the default CSS file 2012-01-16 14:19:16 +01:00
Alexander Larsson
739ab8548d Add gtk_ui_manager_add_ui_from_resource
This is a helper function to easily add ui from resource files.
2012-01-16 13:59:58 +01:00
Alexander Larsson
c72a76c754 Add resource support for GtkBuilder
There are new calls to load ui files from resources, and
you can now read pixbufs by using relative paths in a ui
file read from a resource, or by using absolute resource:/// uris.
2012-01-16 13:59:58 +01:00
Alexander Larsson
84883ccf7c Fix build
Was getting this error:

main.c:785:13: error: ‘gtk_demos’ undeclared (first use in this function)
main.c:785:13: note: each undeclared identifier is reported only once for each function it appears in
main.c: In function ‘main’:
2012-01-16 13:58:23 +01:00
Matthias Clasen
cf172a5873 Revert "GtkNotebook: fix crash when DnD tabs between windows"
This reverts commit eeb9de80e1.
2012-01-15 18:54:05 -05:00
Matthias Clasen
261abe55c4 Forgotten file 2012-01-15 14:46:31 -05:00
Matthias Clasen
eb4a685691 GtkScale: Fix marks for inverted scales
Problem pointed out by Stefan Sauer in bug 667598. The solution
here is different from his patch. We always draw marks in increasing
direction, and flip the marks and stop positions to match.
2012-01-15 14:13:10 -05:00
Matthias Clasen
fa7207dcdd Add an non-symmetric mark example
This makes it easier to spot problems with inverting.
2012-01-15 14:13:10 -05:00
Matthias Clasen
800e605cb3 GtkScale: remove an unused argument
All callers were passing 1 for 'match', so just get rid of it.
Patch provided by Stefan Sauer, in bug 667590.
2012-01-15 14:13:10 -05:00
Matthias Clasen
eda949c5f3 Make testscale more versatile 2012-01-15 14:13:10 -05:00
Stefan Sauer
9bedf0128f scale: use a GList instead of a GSList
The range widget can be inverted, this will help us to handle that case.
2012-01-15 14:13:10 -05:00
Daniel Mustieles
aaf7a0ac28 Updated Spanish translation 2012-01-15 19:29:58 +01:00
Matthias Clasen
b9b23f4f18 GtkRange: fix resize-grip overlap handling
We only want to shrink the scrollbar allocation by the actual
overlap, not always by the full size of the resize grip.
2012-01-14 20:35:19 -05:00
Matthias Clasen
b0936a12d9 GtkStatusbar: Fix resize-grip overlap calculation
The allocation is relative to the window, so the way the statusbar
was doing the overlap calculation was wrong.
2012-01-14 20:35:19 -05:00
Matthias Clasen
9ef2fdf956 GtkApplicationWindow: another size allocation fix
Set the window allocation before giving allocations to children,
in case the children want to refer to the window allocation.
2012-01-14 20:35:19 -05:00
Matthias Clasen
45d9b912d9 Add a GtkApplication example to gtk3-demo 2012-01-14 20:35:18 -05:00
Fran Diéguez
3b6665aad2 Updated Galician translations 2012-01-15 00:43:07 +01:00
Matthias Clasen
eced73c441 GtkApplicationWindow: Fix size-request logic
When finding the width for a given height, we can pass the full
height to both the menubar and the content. Instead, give the
menubar its minimum height, and give the rest to the content.
2012-01-14 13:26:09 -05:00
Matthias Clasen
7234a2617e GtkApplicationWindow: Fix size-allocation logic
The code was not properly removing the menubar height from the
height given to the content, causing the statusbar to drop off
the bottom of the window in some examples.
2012-01-14 13:24:39 -05:00
Paolo Borelli
208bfbd053 Do not leak tree path when setting the model. 2012-01-14 14:33:23 +01:00
Paolo Borelli
9ad78370eb Destroy cairo context after painting css image url 2012-01-14 11:52:48 +01:00
Cosimo Cecchi
e0efeba27e parser: remove unused _gtk_css_parser_read_uri()
It's not used anymore now.
2012-01-13 18:09:30 -05:00
Cosimo Cecchi
ddd164c230 provider: use _gtk_css_parse_read_url() in parse_import()
Instead of _gtk_css_parser_read_uri(), which is going away.
2012-01-13 18:08:12 -05:00
Cosimo Cecchi
d1f3fe4342 parser: remove a duplicate copy of gtk_css_parse_url()
Move the function to gtkcssparser.c and use it in both places.
2012-01-13 17:55:53 -05:00
Piotr Drąg
4f4e42239a Updated POTFILES.in 2012-01-13 21:07:26 +01:00
Rob Bradford
2d837769a0 wayland: Add basic implementation of GtkClipboard for Wayland
This follows the approach used by the Quartz port - that of a separate
implementation matching GtkClipboard.

The simple clipboard tests in gtk3-demo function correctly but there are
almost certainly leaks and bugs.
2012-01-13 16:50:47 +00:00
Rob Bradford
08f5483fb7 wayland: Free the internal selection data when the selection is cleared 2012-01-13 16:50:47 +00:00
Rob Bradford
1e0b22c176 wayland: Fix memory handling for the selection callbacks 2012-01-13 16:50:47 +00:00
Rob Bradford
368d6c50b7 wayland: Add basic API for setting and clearing the selection on the device 2012-01-13 16:50:47 +00:00
Rob Bradford
cd795de6bf wayland: Expose basic mechanism for getting selection content by callback
This version has a couple of TODOs/FIXMEs:

* We should do something better than g_io_channel_read_to_end
* Need to check the mime type is valid
2012-01-13 16:50:47 +00:00
Rob Bradford
9d90a17a7c wayland: Add call to get types available for the selection as atoms 2012-01-13 16:50:47 +00:00
Rob Bradford
fe3f275945 wayland: Remove unused variables to silence compiler warning 2012-01-13 16:50:47 +00:00
Kristian Høgsberg
0e10fae36c wayland: Set surface type based on GdkWindow hint 2012-01-13 09:50:38 -05:00
Daniel Mustieles
e77ed49f84 Updated Spanish translation 2012-01-13 14:42:21 +01:00
Rob Bradford
9e29ef5f3b wayland: Update to new SHM buffer format type 2012-01-13 11:36:36 +00:00
Yaron Shahrabani
96e729d500 Updated Hebrew translation. 2012-01-13 09:37:09 +02:00
Yaron Shahrabani
09f56c3272 Updated Hebrew translation. 2012-01-13 09:35:54 +02:00
Matthias Clasen
05acb492b6 Updates 2012-01-12 22:56:17 -05:00
Matthias Clasen
46ee761c0d Expand the docs for GtkWindow::attached-to 2012-01-12 20:39:48 -05:00
Cosimo Cecchi
27f6441bb2 visuals: remove copy paste leftover 2012-01-12 17:31:00 -05:00
Piotr Drąg
14d66b5d0a Updated POTFILES.skip 2012-01-12 23:23:29 +01:00
Cosimo Cecchi
9283ca93c5 visuals: add a runner for visual GtkBuilder files
This is useful to sketch out in GtkBuilder widgets in different states
all at once, so that we can check theming is right for them.
Add some initial UI files for primary-toolbar and inline-toolbar widgets.
2012-01-12 17:05:36 -05:00
Dan Winship
dc100a8e7b gtk.symbols: fix a symbol name 2012-01-12 15:06:59 -05:00
Khaled Hosny
94f9e365b4 Update Arabic translation 2012-01-12 21:56:58 +02:00
Cosimo Cecchi
c4a13b5287 window: improve docs for gtk_window_set_attached_to() 2012-01-12 14:03:00 -05:00
Andrea Cimitan
4a18fe7ef2 Introduce gtk_window_get/set_attached_to()
gtk_window_get/set_attached_to() is a new API that allows for windows to
be attached to a GtkWidget.
The attachment is a logical binding between the toplevel window and the
widget that generated it; this kind of information is currently used to
propagate style information from the widget to the window, but is also
useful e.g. for accessibility.

https://bugzilla.gnome.org/show_bug.cgi?id=666103
2012-01-12 14:03:00 -05:00
Benjamin Otte
133179fd25 treeview: Do not focus a path on model change
Instead, focus nothing and wait until we get focus before doing so. This
restores previous behaviour but still emits proper cursor-changed
events.

Fixes a bunch of bugs in the filechooser which populates the treeview
asynchronously.

https://bugzilla.gnome.org/show_bug.cgi?id=613728
2012-01-12 19:37:15 +01:00
Benjamin Otte
feb1f8de1c filechooser: Use SELECTION_SINGLE
We want to allow people to unselect the item.
2012-01-12 19:37:15 +01:00
Rob Bradford
e7e86ba5f4 wayland: Remove unused variable from grab implementation 2012-01-12 13:48:57 +00:00
Rob Bradford
0aa210866c wayland: Fix compilation warning for destroy function implementation 2012-01-12 13:48:57 +00:00
Rob Bradford
f791687d3b wayland: Fix implementation of gdk_atom_name 2012-01-12 13:48:57 +00:00
Rob Bradford
7f404a1fee wayland: Remove unused variable 2012-01-12 13:48:46 +00:00
Javier Jardón
c958667a92 gtkapplication.c: Add missing "Since" tag 2012-01-12 12:58:56 +00:00
Daniel Mustieles
f70267f1ae Updated Spanish translation 2012-01-12 10:30:11 +01:00
Benjamin Otte
ff1e1e1f91 a11y: Disconnect from buffer signals
This way, we don't get crashes when the buffer is still in use after a
TextView gets finalized.

https://bugzilla.gnome.org/show_bug.cgi?id=667632
2012-01-12 04:45:34 +01:00
Benjamin Otte
cac47f45b7 accessible: Remove stray semicolon
Note to self: Use -Wempty-body more
2012-01-12 04:45:34 +01:00
Benjamin Otte
4a33eb1aae styleproperty: Fix 'currentColor'
It was always looking at the 'color' keyword for the parent context
instead of only doing that when used with the 'color' property.

Tested by border-color-default.ui reftest.
2012-01-12 04:38:33 +01:00
Benjamin Otte
581cc59945 stylecontext: Don't unref animation description
We get it without a ref since 6962b49a99
2012-01-12 01:10:26 +01:00
Cosimo Cecchi
d994ace41e tests: add a CSS test for currentColor in border-color 2012-01-11 17:37:21 -05:00
Cosimo Cecchi
09b4658c06 shorthand: fix parsing of currentColor for border-color shorthand
Code for border-color was missing the currentColor parsing.
2012-01-11 17:35:59 -05:00
Cosimo Cecchi
984834ea57 reftests: fix background-area reftest
background-clip: content-box broke when I made GtkButton allocate its
border-width, as for the CSS box model.
2012-01-11 16:13:09 -05:00
Dan Winship
9c7d795d5a testlogout: actually quit if told to
https://bugzilla.gnome.org/show_bug.cgi?id=667705
2012-01-11 12:00:06 -05:00
Dan Winship
05c484dcb0 GtkApplication: add inhibitor dialog under OS X
Since OS X doesn't have an inhibitors API, we need to display the
inhibit reason ourselves.

https://bugzilla.gnome.org/show_bug.cgi?id=667705
2012-01-11 12:00:06 -05:00
Dan Winship
7afc7081c1 GtkApplication: fix/simplify OS X implementation
Make the OS X implementation compile, and remove the code that was
only needed to support user interaction during the quit request.

https://bugzilla.gnome.org/show_bug.cgi?id=667705
2012-01-11 12:00:06 -05:00
Cosimo Cecchi
b02591bfae widget-factory: make the combobox entry focusable 2012-01-11 11:46:56 -05:00
Cosimo Cecchi
d286a1ff4c widget-factory: add items to the entry dropdown 2012-01-11 11:22:45 -05:00
Benjamin Otte
945b9ff9e2 reftests: Add reftest for empty area fix 2012-01-11 15:48:54 +01:00
Benjamin Otte
6100900e1a themingengine: Don't draw background image if no area
If the background positioning area is empty (width/height <=0), don't
attempt to draw the background image.
2012-01-11 15:48:54 +01:00
Benjamin Otte
a815f10299 API: Add gtk_style_context_get_section()
This API allows querying the location where style properties were
defined. An example implementation will be committed soon.
2012-01-11 15:48:54 +01:00
Benjamin Otte
6962b49a99 css: Introduce GtkCssComputedValues
To be used for storing computed values. Is the replacement for
GtkStyleProperties, which is now legacy code.
2012-01-11 15:48:54 +01:00
Benjamin Otte
694a9114af stylecontext: Simplify even more code 2012-01-11 15:48:54 +01:00
Benjamin Otte
f27f8db2d8 stylecontext: Use our own color resolve function
... instead of using the StyleProperties.
2012-01-11 15:48:54 +01:00
Benjamin Otte
abcae0cea4 stylecontext: Simplify function
Also, make it easier to port to what I want to do next. ;)
2012-01-11 15:48:54 +01:00
Benjamin Otte
5939baa556 styleproperty: Make query function take a vfunc
This way we can use different methods to query properties and aren't
bound to a GtkStyleProperties object.
2012-01-11 15:48:54 +01:00
Benjamin Otte
738f96252e shorthand: Get rid of GParameter dance
Instead assign properties directly.
2012-01-11 15:48:54 +01:00
Benjamin Otte
53b2f05a64 shorthand: Unify unpack_border()
Just use the property names.
2012-01-11 15:48:54 +01:00
Benjamin Otte
df88700230 shorthand: Do an unpack function to assign to everything
It's basically the opposite to pack_first_element() - it takes the given
value and stores it in all subproperties.
2012-01-11 15:48:54 +01:00
Benjamin Otte
73fac24a3a shorthand: Add a "pack_first_element" pack function
And use it where appropriate.
See the docs in the function for what it does.
2012-01-11 15:48:53 +01:00
Benjamin Otte
6ebb85a69e shorthand: Unify border parsing code
Parse border.{top,right,bottom,left} into subproperties {1,2,3,4}.
2012-01-11 15:48:53 +01:00
Benjamin Otte
78fee2f54b shorthand: Remove hack
This hack was used for parsing back before the refactoring.
2012-01-11 15:48:53 +01:00
Benjamin Otte
e603992ac7 shorthand: Move pack funcs from base class
Also make the vfuncs take the shorthand as an argument.
2012-01-11 15:48:53 +01:00
Benjamin Otte
aa98aca45f styleproperties: Remove color set function
Now that we do resolvage with the style context directly, this is no
longer needed.
2012-01-11 15:48:53 +01:00
Matthias Clasen
5f8c77f6d5 Don't leak plugin actions
Pointed out by Guillaume Desmottes in bug 667695.
2012-01-11 09:44:30 -05:00
Carlos Garcia Campos
b9c7f057f1 printing: gtk_print_settings_load_key_file() ignores group_name 2012-01-11 15:38:51 +01:00
Ryan Lortie
7fdf2e0bde document GtkActionable
This should have been done before it was merged...
2012-01-11 13:39:19 +01:00
Christophe Fergeau
ba2d3d1469 Remove duplicate definition of GtkStylePrintFunc 2012-01-11 13:10:28 +01:00
Rico Tzschichholz
f24dd8f067 Fix some missing renames of GtkApplicationEndStyle 2012-01-11 08:49:34 +01:00
Ryan Lortie
b7a28de755 GtkButton: don't do string compare on property set
Just set the property unconditionally.

https://bugzilla.gnome.org/show_bug.cgi?id=667394
2012-01-11 00:26:56 -05:00
Ryan Lortie
ab91527032 Rename gtk_application_window_get_observer
This should have been called _create_observer

https://bugzilla.gnome.org/show_bug.cgi?id=667394

Fixup switch
2012-01-11 00:26:47 -05:00
Matthias Clasen
bec43213da Add a switch
Add a switch. This demonstrates:
- that switches can be placed in toolbars
- that GtkSwitch is actionable
- that actions can be shared between multiple actionables
2012-01-11 00:10:51 -05:00
Matthias Clasen
fdc2e29d69 GtkSwitch: Implement GtkActionable 2012-01-11 00:10:34 -05:00
Matthias Clasen
7c0c65ec8d Rename GtkApplicationEndStyle
Call it EndSession to make it clearer what this is about.
2012-01-10 22:16:01 -05:00
Matthias Clasen
bb80081620 Bloatpad: Register with the session 2012-01-10 21:46:51 -05:00
Matthias Clasen
1c486fb8b8 Simplify logout notification api
We don't expose ::quit-requested as API anymore. Instead, we expect
users to register inhibitors when needed. Without quit-requested,
there is no need for ::quit-cancelled and gtk_application_quit_response
anymore.

We still emit ::quit when the application is about to quit.
2012-01-10 21:45:30 -05:00
Javier Jardón
c1f44c0f83 migrating-unique-GtkApplication: Update to new GApplication api 2012-01-10 16:23:53 +00:00
Rico Tzschichholz
71f6b2d40a tests: Fix typo in Makefile.am 2012-01-10 17:00:57 +01:00
Guillaume Desmottes
d4fe912879 set the G_PARAM_CONSTRUCT flag on the GtkWindow:application property
This allows subclass to get the value of this property in their constructed
method.

https://bugzilla.gnome.org/show_bug.cgi?id=667628
2012-01-10 16:03:57 +01:00
Patrick Welche
2ceb092afc Non-XInput2 build fix
The part in gdkwindow-x11.c which uses XIEvent and friends is "protected"
by HAVE_XGENERICEVENTS, i.e., XGetEventData() has been found. (Xlib.h)

XIEvent and friends are defined in <X11/extension/XInput2.h> which is
included by gdkdisplay-x11.h if XINPUT_2 is defined.

The patch makes sure XIEvent is only used if XINPUT_2 is defined.

https://bugzilla.gnome.org/show_bug.cgi?id=667534
2012-01-10 13:54:22 +00:00
Daniel Mustieles
d05db5f5ff Updated Spanish translation 2012-01-10 10:43:22 +01:00
Timo Jyrinki
938cd0a746 Updated Finnish translations by Jiri Grönroos. 2012-01-10 09:54:13 +01:00
Matthias Clasen
9cb4518a24 Fix wrong refencences in the docs
Replace all references to g_application_set_app_menu and
g_application_set_menubar by their gtk variants, which
actually exist. Pointed out in bug 667546
2012-01-09 17:30:09 -05:00
Matthias Clasen
64f3347cd7 Fall back to the builtin icons for spinbutton +/-
We do have list-add/-remove icons in the builtin icon theme,
so why not use them ?
2012-01-09 17:15:17 -05:00
Matthias Clasen
8ca309bd37 Add missing symbols 2012-01-09 16:19:50 -05:00
Benjamin Otte
c4566da282 styleproperty: Call style properties init function in more places
In particular, call it when querying properties by id. This is necessary
for make check to not die.
2012-01-09 22:08:48 +01:00
Matthias Clasen
2dc10600ea Fix doc markup 2012-01-09 14:13:44 -05:00
Piotr Drąg
d9ffc6e40c Updated POTFILES.in and POTFILES.skip 2012-01-09 19:51:50 +01:00
Rui Matos
e9adaabc5e Rename 'window-unfocused' to 'backdrop'
'window-unfocused' is too long and mentions "focus" which is historically
loaded with the meaning "input focus".

'backdrop' isn't generally used in GUI speak and still conveys the state the
widgets in an unfocused or background toplevel window are in.
2012-01-09 18:38:00 +01:00
Benjamin Otte
7a00a95508 themingengine: Move border-image handling into render_frame_internal()
This fixes 2 bugs:
1) extensions didn't get border images
2) border-images caused outlines to not be drawn
2012-01-09 18:38:00 +01:00
Benjamin Otte
0c483cab0c roundedbox: close path
Just because we do it everywhere else, too.
2012-01-09 18:38:00 +01:00
Benjamin Otte
c15839f4be themingengine: Implement outline support 2012-01-09 18:38:00 +01:00
Benjamin Otte
68cfb80631 themingengine: Split out the border drawing function 2012-01-09 18:38:00 +01:00
Benjamin Otte
e9cd339573 css: Add outline CSS properties 2012-01-09 18:38:00 +01:00
Benjamin Otte
1b9e15485e themingengine: Implement 'dotted' and 'dashed' 2012-01-09 18:38:00 +01:00
Benjamin Otte
34a62d779b css: Introduce a corner order enum
Same order as CSS again.

The nice thing about this is that now edge i in a rounded box follows
corner i and is followed by corner (i + 1) % 4.
2012-01-09 18:38:00 +01:00
Benjamin Otte
998055c835 css: Introduce GtkCssSide
... and use it.

This is basically an encoding of the order of sides in CSS. So when
parsing things, this is the way we parse things in.
2012-01-09 18:37:59 +01:00
Benjamin Otte
9e8e9a77b7 themingengine: Implement ridge and groove 2012-01-09 18:37:59 +01:00
Benjamin Otte
4ce34a8e13 themingengine: Redo color handling
Don't work on malloc()ed colors. Instead, use an array on the heap. This
makes it easier to copy the array.
2012-01-09 18:37:59 +01:00
Benjamin Otte
d21e7506e7 themingengine: Refactor drawing code
... and implement 'double' border-style as proof-of-concept.
2012-01-09 18:37:59 +01:00
Benjamin Otte
fbde62d8e7 css: border-style: hidden computes a 0 border 2012-01-09 18:37:59 +01:00
Benjamin Otte
de3111f1ff API: Add all border styles from CSS 3 2012-01-09 18:37:59 +01:00
Benjamin Otte
fd3afa3606 styleproperty: Simplify code
Merge 1-line function into only caller
2012-01-09 18:37:59 +01:00
Benjamin Otte
3d6a76a866 tests: Add a test for all the border shorthands
Too much fun with random test generation, so I did a big one.
2012-01-09 18:37:59 +01:00
Paolo Borelli
c167b4129e Also add border-{top|right|bottom|left} shorthands 2012-01-09 18:37:59 +01:00
Paolo Borelli
0120aaace5 Add the border css shorthand 2012-01-09 18:37:59 +01:00
Benjamin Otte
f021291423 tests: Fix for changes in this branch
The expected results are now more correct,  but still not perfect.
2012-01-09 18:37:59 +01:00
Paolo Borelli
6525ed76e0 Rename parse_border
For consistency we will use this name for the boder shorthand.
2012-01-09 18:37:59 +01:00
Paolo Borelli
04ea69ab38 Add reftets for border-style property 2012-01-09 18:37:59 +01:00
Benjamin Otte
cc2446d29b reftests: Add a CSS file to reset properties to default values
We can use this to be independant of themes. See the comment at the top
of the file
2012-01-09 18:37:59 +01:00
Paolo Borelli
b8aea82743 Use the border-style subproperties for drawing
Use the newly introduced per-side property to draw frames.
2012-01-09 18:37:59 +01:00
Benjamin Otte
2c5a8420b5 Set border-width to 0 in compute function
This reverts commit c276f53796 and
implements the same feature using the compute function.
A nice side effect is that gtk_style_property_get_border() and
gtk_style_property_get("border") to the same thing now.
2012-01-09 18:37:58 +01:00
Paolo Borelli
e69f14cf2b Add border-{top|left|bottom|right}-style properties
Add all the border-style subproperties and turn border-style itself in a
shorthand.
2012-01-09 18:37:58 +01:00
Benjamin Otte
066f3be659 themingengine: Remove an optimization
We optimize the case later on, so no need to do it here.
2012-01-09 18:37:58 +01:00
Benjamin Otte
0e48cc6dae spinbutton: Pass the right size
We need a better diffrentiation between icon sizes - ie GtkIconSize vs
pixel size. Or more CSS.
2012-01-09 18:37:58 +01:00
Benjamin Otte
bbf5fe179d background: Implement all options of background-repeat 2012-01-09 18:37:58 +01:00
Benjamin Otte
af8c7ebecd tests: Add test for background-repeat 2012-01-09 18:37:58 +01:00
Benjamin Otte
bc9373fb43 styleproperty: Parse all values for background-repeat
... and its component in the background property.
2012-01-09 18:37:58 +01:00
Benjamin Otte
77af93bad9 reftests: Add a test for 'background'
It just tests all the permutations to make sure my idea for implementing
random ordering actually works.

It does (at least currently).
2012-01-09 18:37:58 +01:00
Benjamin Otte
181ac0280d shorthand: Implement the 'background' shorthand
Weee, shorthands are now really trivial \o/
2012-01-09 18:37:58 +01:00
Benjamin Otte
a43553ab86 cssimage: Add _gtk_css_image_can_parse()
Looks at the first token of the stream to see if this looks like an
image declaration. If it does: return %TRUE.
2012-01-09 18:37:58 +01:00
Benjamin Otte
4b7ca9602d background: Simplify background-repeat
It used to be a struct, now it's just an enum
2012-01-09 18:37:58 +01:00
Benjamin Otte
07aa7f6b20 css: Remove GtkCssBorderRadius
It's not used anymore.
2012-01-09 18:37:58 +01:00
Paolo Borelli
fee09e726f Introduce _gtk_css_parser_try_length
This starts to introduce the proper API abstraction for when we will
support different units
2012-01-09 18:37:58 +01:00
Benjamin Otte
fce45757cb borderimage: Change memory management
Making it a on-stack object simplifies things a lot.
2012-01-09 18:37:58 +01:00
Benjamin Otte
9b47a6a4e3 border-image: Remove pack/unpack functions
They are not used anymore. Also, it's no longer necessary to register
GtkBorderImage as a custom GType.
2012-01-09 18:37:58 +01:00
Benjamin Otte
96abf8c725 shorthand: Make border-image unget/settable 2012-01-09 18:37:57 +01:00
Benjamin Otte
f014d4f02e shorthand: Don't require pack/unpack functions
When using G_TYPE_NONE as the shorthand's type, the property is not
gettable/settable using regular APIs, so it essentially doesn't exist.
As it should be.
2012-01-09 18:37:57 +01:00
Benjamin Otte
84bc280440 borderimage: Add _gtk_border_image_new_for_context()
and use it.
2012-01-09 18:37:57 +01:00
Benjamin Otte
cee05fbeb8 borderimage: Remove unused enums 2012-01-09 18:37:57 +01:00
Benjamin Otte
cc3e4c4eec reftests: Ensure no explicit colors are set on labels 2012-01-09 18:37:57 +01:00
Benjamin Otte
af8dd87867 styleproperty: Use a custom resolve function for colors
We want to make sure to fall back to the initial value of the property
if resolving fails.

This is kinda tricky, because the initial value itself might need
resolving, too.
2012-01-09 18:37:57 +01:00
Benjamin Otte
d10f851201 reftests: Fix a bunch of invalid CSS cases
use 'transparent' instead of 'none' for colors.
2012-01-09 18:37:57 +01:00
Benjamin Otte
839b0f5317 css: Handle 'currentColor' special value
Computes to the value of the 'color' property, or when used on that
property, is treated as 'inherit'.
2012-01-09 18:37:57 +01:00
Benjamin Otte
84d294ee7f stylecontext: NMake safe to call into during lookup
When resolving a lookup, we may want to query the current style context,
as in the next patch. This works now.
2012-01-09 18:37:57 +01:00
Benjamin Otte
6dfab12e1b styleproperty: Change order for property registration
Some properties depend on other properties, handle those first.
2012-01-09 18:37:57 +01:00
Benjamin Otte
d021ed7c5e win32: Remove GtkWin32ThemePart
Its job is done by GtkCssImage now.
2012-01-09 18:37:57 +01:00
Benjamin Otte
37b11b6c8a borderimage: Convert to using GtkCssImage 2012-01-09 18:37:57 +01:00
Benjamin Otte
52af00686b themingbackground: Convert to GtkCssImage
The conversion is incomplete and requires some work to account for
all the CSS crazies, like repeat modes and background-size.
2012-01-09 18:37:57 +01:00
Benjamin Otte
60b8b7a398 csslookup: Use the new gtk_style_context_peek_property() 2012-01-09 18:37:57 +01:00
Benjamin Otte
53b4fd69db themingengine: Add _gtk_theming_engine_peek_property()
This is useful for getting at computed values and allows accessing
images before the code autoconverts them to a cairo pattern.
2012-01-09 18:37:57 +01:00
Benjamin Otte
2c8ef919ae stylecontext: Add _gtk_style_context_peek_property()
This allows peeking at the computed value for a property. This is useful
for looking at GtkCssImage.
2012-01-09 18:37:56 +01:00
Benjamin Otte
a35df38443 theme: Apply background merging code
It was unused and untested and did not do at all what the CSS spec says.
2012-01-09 18:37:56 +01:00
Benjamin Otte
0bc170cd84 styleproperty: Convert background-image from pattern to GtkCssImage 2012-01-09 18:37:56 +01:00
Benjamin Otte
2bb899b5c0 cssimage: Add a few convenience functions 2012-01-09 18:37:56 +01:00
Benjamin Otte
cdd4ed6600 styleproperty: Use factored-out gradient parser 2012-01-09 18:37:56 +01:00
Benjamin Otte
2a6c168235 win32: Add a CssImage implementation 2012-01-09 18:37:56 +01:00
Benjamin Otte
f7eea0b86e cssimage: Add GtkCssImageGradient 2012-01-09 18:37:56 +01:00
Benjamin Otte
8f42f8c554 win32: Export _gtk_win32_theme_part_create_surface() 2012-01-09 18:37:56 +01:00
Benjamin Otte
590b125ffc win32: Export _gtk_win32_lookup_htheme_by_classname() 2012-01-09 18:37:56 +01:00
Benjamin Otte
950b95af40 cssimage: Improve new_parse() to select right image type 2012-01-09 18:37:56 +01:00
Benjamin Otte
38be9fe879 css: Add _gtk_css_parser_has_prefix() 2012-01-09 18:37:56 +01:00
Benjamin Otte
11ec705133 css: Add image implementation for urls 2012-01-09 18:37:56 +01:00
Benjamin Otte
b3389a017a css: Add GtkCssImage class
Doesn't do anything yet, just exists.
2012-01-09 18:37:56 +01:00
Benjamin Otte
9181282d88 style: Remove GtkStylePropertyContext again
We need to solve this differently. I have no idea yet how, but I'll
invent something later.

This only affects win32 theming and that's broken anyway.
2012-01-09 18:37:56 +01:00
Benjamin Otte
32c8bbb575 styleproperty: Remove context arg from _gtk_style_context_query() 2012-01-09 18:37:56 +01:00
Benjamin Otte
a9d1be0bef stylecontext: Remove GtkStylePropertyContext from pack funcs 2012-01-09 18:37:56 +01:00
Benjamin Otte
e8cb6f3165 styleproperty: Add compute_value vfunc 2012-01-09 18:37:55 +01:00
Benjamin Otte
c3d337312a styleproperty: Move parse/print vfuncs to GtkCssStyleProperty 2012-01-09 18:37:55 +01:00
Benjamin Otte
22a65bcd82 styleproperty: Add a compute vfunc 2012-01-09 18:37:55 +01:00
Benjamin Otte
232d9226f9 tests: Add test for 'initial' and 'inherit' on shorthands 2012-01-09 18:37:55 +01:00
Benjamin Otte
e87cf5d789 css: Redo value resolving
Instead of on-demand resolvage, we now resolve during lookup. The step
is done via
  _gtk_css_style_property_compute_value()
which currently calls into
  _gtk_css_style_compute_value()
That function has all the old resolving machinery.

The only part missing for now is the handling of win32 code. It will be
added back later.
2012-01-09 18:37:55 +01:00
Benjamin Otte
29382c1305 gradient: Allow resolving with contexts 2012-01-09 18:37:55 +01:00
Benjamin Otte
4576653006 stylecontext: Export _gtk_style_context_resolve_color()
We'll need it soon.
2012-01-09 18:37:55 +01:00
Benjamin Otte
f2dc63cc6a css: Pass the real context to the CSS lookup
This will be necessary soon.
2012-01-09 18:37:55 +01:00
Benjamin Otte
91202ef497 styleproperty: Move pspec to GtkCssCustomProperty
It's only used there.
2012-01-09 18:37:55 +01:00
Benjamin Otte
3375dd2a5f styleproperty: Move property_parse_func member
It belongs in GtkCssCustomProperty
2012-01-09 18:37:55 +01:00
Benjamin Otte
61042d155c styleproperty: Add custom parser for custom properties
In particular, move the property_parse_func handling to
GtkCssCustomProperty exclusively.
2012-01-09 18:37:55 +01:00
Benjamin Otte
22e9588dad styleproperty: Stop using pspecs
The pspec type is wrong most of the time anyway.
2012-01-09 18:37:55 +01:00
Benjamin Otte
799110b011 styleproperties: Don't validate values anymore
Pspecs are on their way out, so validation is, too.
2012-01-09 18:37:55 +01:00
Benjamin Otte
65f6925dd1 styleproperty: Don't use gtk_style_properties_register_property()
This would make the internal properties custom properties. And they are
not.

Also get rid of default initial values, we now specify the correct one
at all times.
2012-01-09 18:37:55 +01:00
Benjamin Otte
4b4792f65d styleproperty: Make the register functin take varargs
.. for the initial value.
2012-01-09 18:37:55 +01:00
Benjamin Otte
09b25facb0 styleproperty: Don't register a property parse func
Nobody does that anymore.
2012-01-09 18:37:54 +01:00
Benjamin Otte
8bcfa6ef78 styleproperty: Move implementations to separate file 2012-01-09 18:37:54 +01:00
Benjamin Otte
2d46618e08 styleproperty: Let parse_value() initialize the value
... and document that behavior.
2012-01-09 18:37:54 +01:00
Benjamin Otte
70af2cb2e3 styleproperty: Move parse func
It's specific to GtKCssStyleProperty after all.
2012-01-09 18:37:54 +01:00
Benjamin Otte
47a27a00f5 shorthand: Remove old parse func support
It's not used anymore
2012-01-09 18:37:54 +01:00
Benjamin Otte
069cb74691 shorthand: Do font parsing the new way 2012-01-09 18:37:54 +01:00
Benjamin Otte
f6422513b1 shorthand: Update border-image parsing
Also update tests. None is not a valid value...
2012-01-09 18:37:54 +01:00
Benjamin Otte
a0606d513c shorthand: Initialize unparsed values
All values that the parse funcs didn't parse are initialized to
'initial'.
2012-01-09 18:37:54 +01:00
Benjamin Otte
442040876a shorthand: Move border-color to new parsing code 2012-01-09 18:37:54 +01:00
Benjamin Otte
cd4470cfd3 shorthand: Move border radius parsing to new parsing code
We also now properly allow assigning an integer value to the
border-radius property.
2012-01-09 18:37:54 +01:00
Benjamin Otte
8ab426e6d5 themingengine: Don't use GtkBorderRadius struct
use GtkBorderCornerRadius instead. Also, don't do NULL checks anymore,
the property is guaranteed to never return NULL.
2012-01-09 18:37:54 +01:00
Benjamin Otte
ea6a898344 styleproperty: Set a default value for border-*-radius
That way, we don't have to check if it is indeed set.
2012-01-09 18:37:54 +01:00
Benjamin Otte
fdb3abefc3 roundedbox: Use GtkCssBorderCornerRadius type
GtkCssBorderRadius is going away.
2012-01-09 18:37:54 +01:00
Benjamin Otte
13aac54d19 shorthand: Implement border parsing with new parse func 2012-01-09 18:37:54 +01:00
Benjamin Otte
148d8fbca8 shorthand: Allow registering a new parse func 2012-01-09 18:37:54 +01:00
Benjamin Otte
14994e3fc9 styleproperty: Remove _gtk_style_property_unpack()
The function is no longer needed in public API
2012-01-09 18:37:54 +01:00
Benjamin Otte
01548bfcbe shorthand: Redo shorthand value parsing
The new approach does not need unpack functions anymore.
2012-01-09 18:37:53 +01:00
Benjamin Otte
e876d9fed5 styleproperty: Make parse_value() a vfunc 2012-01-09 18:37:53 +01:00
Benjamin Otte
4821e52cf2 styleproperty: Move pspec to GtkCssStyleProperty
shorthands don't use pspecs anymore.
2012-01-09 18:37:53 +01:00
Benjamin Otte
5ae00c3755 css: Use _gtk_style_property_get_value_type() where appropriate 2012-01-09 18:37:53 +01:00
Benjamin Otte
389531d15d styleproperty: require property in _gtk_style_property_parse_value()
Other code uses _gtk_css_style_parse_value() instead now.
2012-01-09 18:37:53 +01:00
Benjamin Otte
30eb26087c css: Feed sections to CSS lookup code 2012-01-09 18:37:53 +01:00
Benjamin Otte
79a171de0a styleproperty: Make query() and assign() vfuncs
... and implement them in the 2 known subclasses.
2012-01-09 18:37:53 +01:00
Benjamin Otte
b904679a11 styleproperty: Move value printing to real properties
We can't print shorthands, so don't try.
In particular, I want to get away from shorthands being representable
using GValue, and this function kinda requires that.
2012-01-09 18:37:53 +01:00
Benjamin Otte
078fc725e0 css: Split generic parse/print functions out
It seems to be some sort of sport for me to split them out and merge
them back in...
2012-01-09 18:37:53 +01:00
Benjamin Otte
f5fafb18c9 css: 'transparent' is a valid color everywhere 2012-01-09 18:37:53 +01:00
Benjamin Otte
36e1bcac3c css: No longer expose internal properties
... in gtk_style_properties_lookup_property(). Those properties will
soon stop having pspecs or even being gettable and settable, so better
not tell anyone about it.
2012-01-09 18:37:53 +01:00
Benjamin Otte
73a632a4ae css: Handle custom properties in a custom object
This way we can also get rid of the hack where we required modifying the
pspec after creation, as the name is now a separate property.
2012-01-09 18:37:53 +01:00
Benjamin Otte
55a38f4746 shorthand: Remove a bunch of unused functionality
- The unset func is no longer used
- Shorthands can't be printed
- property_parse funcs and initial values aren't used
2012-01-09 18:37:53 +01:00
Benjamin Otte
674485a138 styleproperties: Implement unsetting directly
With subproperties, there's no need anymore for custom unset functions.
2012-01-09 18:37:53 +01:00
Benjamin Otte
341a738dc6 styleproperty: Move member variables
These variables are only relevant for style properties, but not for
shorthands, so put them there.
2012-01-09 18:37:53 +01:00
Benjamin Otte
d9c5d37e56 shorthand: shorthands can't be inherited
... so remove the flag handling.
2012-01-09 18:37:52 +01:00
Benjamin Otte
544d210a61 css: Move a bunch of functions
... from GtkStyleProperty to GtkCssStyleProperty.
2012-01-09 18:37:52 +01:00
Benjamin Otte
0a3ac5efbc styleproperty: Move id handling
only real style properties can have an id, so let
GtkCssStylePropertyClass handle it.
2012-01-09 18:37:52 +01:00
Benjamin Otte
edb8bf4b1d styleproperty: Add gtk_style_property_assign() 2012-01-09 18:37:52 +01:00
Benjamin Otte
c9dc9d5a88 styleproperties: Use _gtk_style_property_get_value_type()
... and check the case where the property is not get/settable.
2012-01-09 18:37:52 +01:00
Benjamin Otte
7a4bbc8f35 styleproperty: Add GtkStyleProperty::value-type 2012-01-09 18:37:52 +01:00
Benjamin Otte
7a76694780 styleproperty: Use _gtk_style_property_get_name() 2012-01-09 18:37:52 +01:00
Benjamin Otte
2128b356b2 shorthand: Add a property for all subproperties 2012-01-09 18:37:52 +01:00
Benjamin Otte
4383701e25 styleproperty: unconstify
GtkStyleProperty is a real GObject now, so treat it like one and don't
use const.
2012-01-09 18:37:52 +01:00
Benjamin Otte
a3a580d53e styleproperty: Remove unuse args from register()
Those arguments are only relevant for shorthands.
2012-01-09 18:37:52 +01:00
Benjamin Otte
927b922208 styleproperty: Add custom registration func for shorthands 2012-01-09 18:37:52 +01:00
Benjamin Otte
d4344164ac styleproperty: Move shorthand declarations to new file 2012-01-09 18:37:52 +01:00
Benjamin Otte
6b386dc574 styleproperty: border image is not a generic conversion thingy 2012-01-09 18:37:52 +01:00
Benjamin Otte
4e79ed7f4f styleproperty: Add a name property
And move the properties array to GtkStylePropertyClass.
Also add some docs.
2012-01-09 18:37:52 +01:00
Benjamin Otte
81b2bb0ade styleproperty: Get rid of _gtk_style_property_is_shorthand()
Use GTK_IS_CSS_SHORTHAND_PROPERTY() instead now that we have it.
2012-01-09 18:37:51 +01:00
Benjamin Otte
f9485241b1 styleproperty: Split into shorthand and real style properties 2012-01-09 18:37:51 +01:00
Benjamin Otte
f62c79b41c tests: Quit widget-factory when someone presses quit 2012-01-09 18:37:51 +01:00
Benjamin Otte
78dc75a350 styleproperty: Make this an object 2012-01-09 18:37:51 +01:00
Benjamin Otte
3e24b5dbbe styleproperty: Add _gtk_style_property_query()
This way, we only need to export one function, not 3.
2012-01-09 18:37:51 +01:00
Benjamin Otte
2573e72f49 styleproperties: Add _gtk_style_properties_peek_property() 2012-01-09 18:37:51 +01:00
Benjamin Otte
38e1c0a2d6 styleproperties: Remove unused function from private header
_gtk_style_properties_resolve_property() was added erroneously in
c09148ca09 but was never implemented.
2012-01-09 18:37:51 +01:00
Benjamin Otte
06960bb9d6 tests: Add a test for 'none' 2012-01-09 18:37:51 +01:00
Benjamin Otte
4da493402d css: 'none' is not a value background-repeat 2012-01-09 18:37:51 +01:00
Benjamin Otte
6fdf6ba68f css: Remove generic 'none' handling
Includes updated tests.
Who could have thought that our tests were broken. Ooops.
2012-01-09 18:37:51 +01:00
Benjamin Otte
7d353fbccf win32: Fix CSS for 'none' value going away
We want colors to be 'transparent' and not 'none'.
2012-01-09 18:37:51 +01:00
Benjamin Otte
c77dba2767 styleproperty: Add custom 'none' handling
The generic 'none' handling needs to go, because 'none' is not a valid
value most of the time.
2012-01-09 18:37:51 +01:00
Benjamin Otte
78024504aa reftests: Add a test comparing inherit and initial
One test has all properties set to 'inherit', the other to 'initial'.
This should result in the same result, as inherit will ensure every
widget inherits the same value, and for the toplevel 'inherit' is
defined as being identical to 'initial'.
2012-01-09 18:37:51 +01:00
Benjamin Otte
53bb230e12 reftests: Add a test for a parent in a different state
inherit in those cases should inherit from that different state, not
from this state.
2012-01-09 18:37:51 +01:00
Benjamin Otte
e9dfb8d5b8 tests: Add tests for 'inherit' and 'initial' 2012-01-09 18:37:51 +01:00
Benjamin Otte
57379adb3c css: Add generic support for 'inherit' and 'initial'
CSS3 says they work for every property, so here we go.
2012-01-09 18:37:51 +01:00
Benjamin Otte
a6ac53e2a9 css: Change prototype of _gtk_css_selector_matches()
Passing the length of the widget path that is relevant is not necessary
anymore, it was only useful for inheritance. Instead, we now pass the
state flags and let the selector do the state matching for us.
2012-01-09 18:37:50 +01:00
Benjamin Otte
a3225fdd42 cssprovider: Remove has_inherit flag from rulesets
It's not used anymore
2012-01-09 18:37:50 +01:00
Benjamin Otte
40a7618d2a cssprovider: Don't do inheritance anymore
Its' done in GtkCssLookup with the help of GtkStyleContext::parent now.
2012-01-09 18:37:50 +01:00
Benjamin Otte
fbedcdaf7d css: Make CSS resolving work according to spec
See inline code comments taken from
  http://dev.w3.org/csswg/css3-cascade/#cascade

This now respects the special values "inherit" and "initial" properly.
Note that those values cannot be parsed yet. This will be added in a
future commit.
2012-01-09 18:37:50 +01:00
Benjamin Otte
5a815e2159 styleproperty: Add _gtk_style_property_get_initial_value() 2012-01-09 18:37:50 +01:00
Benjamin Otte
242893a031 css: Pass the parent context to _gtk_css_lookup_resolve()
This way, we can resolve inherit properties.
2012-01-09 18:37:50 +01:00
Benjamin Otte
0ac519e8a1 widget: Set parent style context 2012-01-09 18:37:50 +01:00
Benjamin Otte
b50d2b74d7 API: Add GtkStyleContext::parent
We need this for proper support of CSS inherit.
2012-01-09 18:37:50 +01:00
Benjamin Otte
aa4925480d styleproperty: Pass initial value explicitly 2012-01-09 18:37:50 +01:00
Benjamin Otte
4d15186e67 css: Add GtkCssSpecialValue 2012-01-09 18:37:50 +01:00
Benjamin Otte
6dd50c6cca css: Add some docs to GtkCssLookup
In particular, document which parts of the CSS value querying we're
doing here.
2012-01-09 18:37:50 +01:00
Benjamin Otte
821f9b478f reftests: Add test for pseudo-class matching
Previous GTK matched pseudoclasses not based on CSS rules, but based on
their value in the enumeration. This is now fixed.
2012-01-09 18:37:50 +01:00
Benjamin Otte
ba5e7012b1 css: Redo StyleProvider interface
We now use the GtkStleProviderPrivate interface, which hopefully is
faster and more conformant to CSS. Long term, it definitely should be
both.

I would have liked to split this up into multiple commits, but couldn't
find a way.
2012-01-09 18:37:50 +01:00
Benjamin Otte
38a9b28a0e styleproperties: Add a hacky function to redirect color lookups
This will soon be necessary.
FIXME: Make sure this gets removed again.
2012-01-09 18:37:49 +01:00
Benjamin Otte
c048aac1d9 symboliccolor: Add _gtk_symbolic_color_resolve_full() 2012-01-09 18:37:49 +01:00
Benjamin Otte
899a381d31 stylecontext: Separate properties by states
We don't want to mix states the wrong way. And the current approach does
that.
2012-01-09 18:37:49 +01:00
Benjamin Otte
a488d2184a stylecontext: Pass state to style data lookup function 2012-01-09 18:37:49 +01:00
Benjamin Otte
cdb3f05bf1 css: Add _gtk_style_property_get_count() 2012-01-09 18:37:49 +01:00
Benjamin Otte
54d2b9dbc2 cssprovider: Keep a bitmask for the properties
That way we can easily tell wich properties are in use.
2012-01-09 18:37:49 +01:00
Benjamin Otte
eb38591c91 css: Add _gtk_style_property_get_id() 2012-01-09 18:37:49 +01:00
Benjamin Otte
f6cf447cad styleproperty: Assign a unique id to every styleproperty 2012-01-09 18:37:49 +01:00
Benjamin Otte
eddd36d1d9 tests: Add tests for GtkBitmask 2012-01-09 18:37:49 +01:00
Benjamin Otte
45b9193290 gtk: Add GtkBitmask
The CSS code likes to have that very much.
2012-01-09 18:37:49 +01:00
Stefan Sauer
f7d3ca46f7 gtkscale: fix bogus compare func
The GtkScaleMark values are gdouble, a simple a-b compare func would fail for
values with the same integer value. This breaks the sorting and causes random
marker label placement.
2012-01-09 18:33:11 +01:00
Rob Bradford
1f023cd2b1 wayland: Constrain the window configure requests to the window's geometry
When we receive a configure event from Wayland telling us to resize our
surface we check against the geometry constraints for the window to ensure we
do not resize below the minimum and maximum limits.
2012-01-09 17:19:34 +00:00
Rob Bradford
4107ef0b93 wayland: Implement set_geometry_hints vfunc
Our trivial implementation simply saves the passed in parameters into the
Wayland private data structure.
2012-01-09 17:19:34 +00:00
Rui Matos
052c6e0681 scrolledwindow: Render the background so that it can be styled 2012-01-09 16:45:44 +00:00
Rui Matos
09979513b2 window: Stop setting state flags on the style context for drawing
This also removes setting the FOCUSED state flag when
gtk_window_has_toplevel_focus() since this effect can now be done with the new
WINDOW_UNFOCUSED flag instead which actually works better regarding X grabs
and modal windows.
2012-01-09 16:45:44 +00:00
Rui Matos
440663f3fe treeview: Use the widget state flags as a base for drawing expanders 2012-01-09 16:45:44 +00:00
Rui Matos
2972236fdb treeview: Stop setting state flags on the style context for drawing 2012-01-09 16:45:44 +00:00
Rui Matos
76485b8670 trayicon-x11: Stop setting state flags on the style context for drawing 2012-01-09 16:45:44 +00:00
Rui Matos
8bb0773535 toolitemgroup: Use the widget state flags as a base for drawing 2012-01-09 16:45:44 +00:00
Rui Matos
4011326388 toolbar: Stop setting state flags on the style context for drawing 2012-01-09 16:45:44 +00:00
Rui Matos
a1f72eb06c Revert "button: Stop setting state flags on the style context for drawing"
Setting state flags is actually needed here since this function is called by
GtkButton subclasses which add their specific state flags as a parameter.

This reverts commit e868b8d6ea.
2012-01-09 16:45:44 +00:00
Rui Matos
2efa658a41 textdisplay: Use the widget state flags as a base for drawing 2012-01-09 16:45:44 +00:00
Rui Matos
b203ea2f93 spinner: Stop setting state flags on the style context for drawing 2012-01-09 16:45:44 +00:00
Rui Matos
e9549a7514 spinbutton: Use the widget state flags as a base for drawing 2012-01-09 16:45:43 +00:00
Rui Matos
9118ccb02d separator: Stop setting state flags on the style context for drawing 2012-01-09 16:31:11 +00:00
Rui Matos
95caabac03 scale: Stop setting state flags on the style context for drawing 2012-01-09 16:31:11 +00:00
Rui Matos
b2f5959147 range: Use the widget state flags as a base for drawing 2012-01-09 16:31:11 +00:00
Rui Matos
6dd0bd5536 radiobutton: Use the widget state flags as a base for drawing 2012-01-09 16:31:11 +00:00
Rui Matos
c98e9c94e7 widget-factory: Make the second spin button insensitive 2012-01-09 16:31:11 +00:00
Rob Bradford
eedd1ec92f wayland: Make the resize and move functions use gdk_device_ungrab
Now that grab and ungrab vfuncs are implemented on GdkDevice then we can use
gdk_device_ungrab to break the implicit grab created by the button press that
triggered the resize and move.
2012-01-09 16:00:14 +00:00
Kristian Høgsberg
e5283122fd wayland: Add implementations for the device_grab / device_ungrab vfuncs
This allows the correct implementation of breaking the grab in pointer driven
resize and move.

Signed-off-by: Rob Bradford <rob@linux.intel.com>
2012-01-09 15:59:02 +00:00
Rob Bradford
4007449a58 application: Correct the fallback definition for gtk_application_end_session
The function definition used a pointer to the enum value rather than the enum
itself.

This broke the build on platforms that don't have an implmentation of these
functions.
2012-01-09 15:09:27 +00:00
Ryan Lortie
cf2590d673 GtkButton: do not allow both types of actions
Only allow one of 'action-name' or 'related-action' to be set.

https://bugzilla.gnome.org/show_bug.cgi?id=667394
2012-01-09 15:02:10 +01:00
Ryan Lortie
4dbd12b1d8 bloatpad: add left/centre/right toolbar buttons
https://bugzilla.gnome.org/show_bug.cgi?id=667394
2012-01-09 15:02:08 +01:00
Ryan Lortie
88ec007b98 Add new GtkActionable interface
This is the interface for GtkWidgets that can be associated with an
action on a GtkAppicationWindow or associated GtkApplication.

It essentially features 'action-name' and 'action-target' properties
with some associated convenience API.

This interface is implemented by GtkButton and GtkToolButton.

https://bugzilla.gnome.org/show_bug.cgi?id=667394
2012-01-09 15:02:06 +01:00
Ryan Lortie
a3629592d3 drop debian/ directory 2012-01-09 14:29:11 +01:00
Murray Cumming
395bf54b8e gtkmain.h: Used GDK_DEPRECATED
If we use just G_GNUC_DEPRECATED then it cannot be disabled by
an ifdef.
2012-01-09 14:20:49 +01:00
Matthias Clasen
69a529572d Revert "GtkWindow: new API to store state in GSettings"
This reverts commit 730765de91.

This needs more thought, committing it on the same day as filing
the bug was premature.
2012-01-09 00:53:53 -05:00
Matthias Clasen
2ef4621e05 Fix up symbol lists 2012-01-09 00:31:20 -05:00
Matthias Clasen
ef1bc2923e Add more tests for GdkRGBA parsing
These examples are taken from bug 667485.
2012-01-09 00:31:20 -05:00
Matthias Clasen
e5e6d25a50 Tighten up GdkRGBA parsing
gdk_rgba_parse was accepting too much nonsense, as pointed out
in bug 667485.
2012-01-09 00:31:20 -05:00
Daniel Mustieles
7ac975bb48 Updated Spanish translation 2012-01-08 20:17:36 +01:00
Alexander Shopov
6d22bfe19c Updated Bulgarian translation 2012-01-08 17:21:05 +02:00
Matthias Clasen
f3533e4fc2 Fix the gtk_application_end_session implementation
We were passing the wrong flags, causing the meaning of
the request_confirmation parameter to be inverted.
2012-01-08 02:16:26 -05:00
Matthias Clasen
0191f11a7a Add a test for the new session api 2012-01-08 02:15:49 -05:00
Matthias Clasen
d2ed87fbdc Fix doc build 2012-01-07 21:47:42 -05:00
Matthias Clasen
27c21249b7 Add session management migration chapter
Add some preliminary information about migration from EggSMClient
to GtkApplication.
2012-01-07 21:44:52 -05:00
Matthias Clasen
983b7be5ab Rearrange migration chapter a bit
The 'checklist' is really just the 'extra credits', so put it
at the end, rather than the beginning.
2012-01-07 20:44:37 -05:00
Matthias Clasen
f78696f3d0 GtkApplication: only allow quit_response when it make sense
This check was present in the OS X implementation, but it
makes sense in the D-Bus implementation as well.
2012-01-07 20:01:23 -05:00
Matthias Clasen
00d5214695 Remove some debug spew 2012-01-07 19:55:20 -05:00
Matthias Clasen
bb957e5389 GtkApplication: Add OS X implementation from EggSMClient 2012-01-07 19:52:14 -05:00
Matthias Clasen
b3f2b41567 Rename rgba test file
Not testing GdkColor here, anymore.
2012-01-07 19:02:48 -05:00
Matthias Clasen
1e867a94a2 Use g_slice_dup
This saves some manual copying.
Pointed out in bug 667473.
2012-01-07 19:00:47 -05:00
Matthias Clasen
2b16ec9f14 Add a test for gdk_rgba_copy 2012-01-07 19:00:32 -05:00
Daniel Mustieles
166a3a1cf1 Missing file in POTFILEs.in 2012-01-07 18:53:26 +01:00
Paolo Borelli
7c8130dada Change param name to make gtk-doc happy. 2012-01-07 18:06:59 +01:00
Benjamin Otte
2359f03b6b tests: Fix deprecation warnings in prop-editor 2012-01-07 16:14:31 +01:00
Benjamin Otte
f6d2f4fa8d application: return a value 2012-01-07 15:56:26 +01:00
Martin Pitt
700a334d87 gtkapplication.c: Fix syntax error
Previous commit accidentally removed the closing } from
gtk_application_end_session(). Add it back to unbreak the build.
2012-01-07 10:04:18 +01:00
Matthias Clasen
916009b5d6 Add a trivial implementation of the new apis
For non-X11, this is just a placeholder until we get around
to moving the EggSMClient implementations over.
2012-01-07 03:20:56 -05:00
Matthias Clasen
48872705f0 Document the new apis 2012-01-07 03:20:56 -05:00
Matthias Clasen
3142d13972 Add gtk_application_end_session
This function allows applications to request that
the user session be ended by logout/shutdown/reboot.
2012-01-07 03:20:56 -05:00
Matthias Clasen
bdd7e15c84 GtkApplication: Add an inhibit api
This lets applications block logout and similar actions ahead
of time. Currently only implemented for D-Bus, but Windows has
very similar API since Vista.
2012-01-07 03:20:56 -05:00
Matthias Clasen
3133791302 GtkApplication: Add logout notification
This is fairly basic, allowing applications to learn when
the session manager is about to end the session, and possibly
block this. The only implementation at this point is using the
org.gnome.SessionManager D-Bus interface of gnome-session. It should
be straightforward to port the EggSMClient implementations for
Windows and OS X.
2012-01-07 03:20:56 -05:00
Chun-wei Fan
b40d16972f Update Visual C++ property sheets
"Install" (and hence compile with glib-compile-schemas.exe) the new
org.gtk.WindowState.gschema.xml gschema file.
2012-01-07 11:21:46 +08:00
Ryan Lortie
730765de91 GtkWindow: new API to store state in GSettings
https://bugzilla.gnome.org/show_bug.cgi?id=667438
2012-01-06 16:18:48 -05:00
Ryan Lortie
d47c3ac9e4 GtkBuilder: support parsing GVariant properties
https://bugzilla.gnome.org/show_bug.cgi?id=667394
2012-01-06 16:18:48 -05:00
Piotr Drąg
5ec521aad0 Updated POTFILES.skip 2012-01-06 21:18:28 +01:00
Rob Bradford
47146dacff wayland: Break an implicit grab when asking to be resized
An implicit grab is created inside GTK+ when the button is pressed down on a
window. The semantics of wl_shell_surface_resize means that you don't get a
corresponding release event that would ordinarily break the implicit grab. So
we must do it as part of the resize request.
2012-01-06 16:58:06 +00:00
Rob Bradford
675b2fddcb wayland: Make the event source use _gdk_display_get_next_serial 2012-01-06 16:58:05 +00:00
Rob Bradford
e13cca00cc wayland: Implement the get_next_serial vfunc on GdkDisplay 2012-01-06 16:58:05 +00:00
Zeeshan Ali (Khattak)
1996618569 gtkspinbutton: Don't hilight buttons when !editable
Don't hilight the buttons on mouse over when 'editable' property is set to
'FALSE.

https://bugzilla.gnome.org/show_bug.cgi?id=667229
2012-01-06 18:35:37 +02:00
Kristian Høgsberg
e2dd95aced wayland: The shared cursors are now installed in the weston directory
Signed-off-by: Rob Bradford <rob@linux.intel.com>
2012-01-06 15:12:14 +00:00
Matthias Clasen
7df5cf2a3a GtkApplication: Rename a member for clarity
'session' is a bit ambiguous (and GtkApplication may grow session
management support at some point), so rename the bus connection
to 'session_bus'.
2012-01-05 23:53:40 -05:00
Matthias Clasen
c74ac08143 Another attempt at fixing menu positioning corner cases
The code for moving the menu into monitor / workarea was duplicated,
once for the push-in scenario and once for without. The problem with
the second case is that we've stored the menu position before adjusting
it. That made us remember an out-of-monitor position that then later
triggered _another_ copy of this code in the size-request implementation.

Unify this to only have one copy of code, and only store the menu
position after adjusting it to be inside the monitor. This fixes both
statusicon menus that get popped up from the panel, outside the workarea,
to not have scroll arrows, and the gedit language menu which was not
placed in the monitor at all after the initial workarea commit.

As a side-effect of this change, we now make large scrolling menus
occupy the full height of the workarea. Before this change, we were
keeping either the top or bottom edge put while shrinking the menu
to fit in the monitor.

https://bugzilla.gnome.org/show_bug.cgi?id=667249
2012-01-05 23:30:41 -05:00
Benjamin Otte
00e84f1cdb label: Avoid deprecation warning 2012-01-06 05:23:43 +01:00
Benjamin Otte
42d0a6de23 label: Actually mark visited labels as visited
A recalculate will clear the labels and compute them again, which will
clear the information if something was visited...
2012-01-06 05:23:43 +01:00
Benjamin Otte
b73ede690d reftests: Add a test for latest commit
We want to make sure we notice when we mess up label attribute ordering
again...
2012-01-06 05:23:43 +01:00
Benjamin Otte
d6bb8a63aa label: Make attr_list_merge() use sane merging rules
Instead of "attribute with later start index wins, make sure the
attribute list that is merged from takes precedence. This now gives the
multiple attribute lists we use in the label an order:

1) gtk_label_set_attributes()
  These attributes override everything. It's what the function's there
  for after all.
2) markup of label
  Other user-specified attributes come next.
3) attributes for links
  When we apply custom attributes on parts of the text, we put them
  last. We don't want to mess with what the user does. Also, we change
  color and underline, so we usually have something to show.
2012-01-06 05:23:42 +01:00
Benjamin Otte
e78e4d8dd8 label: Rename variable
The effective attributes aren't that anymore. They're now just the
attributes from the parsed markup.
2012-01-06 05:23:42 +01:00
Benjamin Otte
f1c9a3e633 label: Don't excessively recalculate
We don't merge attributes anymore, so no need to call the function that
used to do this job.
2012-01-06 05:23:42 +01:00
Benjamin Otte
396b177e3b label: Redo attribute application
- Don't compute link color attributes until layout creation
This is useful as a performance enhancement, because we don't have to
lookup the property after setting the text, so multiple markup sets
don't cost style lookups.
- Don't merge attrs into effective_attrs
We do this when applying link colors now. Keeping them separate allows
invalidating them separately.
2012-01-06 05:23:42 +01:00
Benjamin Otte
15ac572822 ilabel: Redo gtk_label_get_link_colors()
Don't pass out an allocated color, assign it instead. Gets rid of having
to call gdk_color_free() all the time.
2012-01-06 05:23:42 +01:00
Benjamin Otte
dd4df24382 label: Split out function that merges attr lists 2012-01-06 05:23:42 +01:00
Benjamin Otte
5783d3b68c gtk-demo: Prove that links work fine now
Also, doodling is fun.
2012-01-06 05:23:42 +01:00
Benjamin Otte
712d577531 label: Redo links parsing
Instead of getting confused by applied underline or color tags in the
regular markup, we store the link start/end when we actually parse the
text. As a bonus, we can avoid rescanning links when creating the
markup.
2012-01-06 05:23:42 +01:00
Benjamin Otte
18ce0b21a0 label: Move function into only caller 2012-01-06 05:23:42 +01:00
Benjamin Otte
fc37e2749c API: Deprecate key snooping
You really shouldn't be doing this. If you have to, you can use
gdk_window_add_filter() or listen to raw events on XI2.
2012-01-06 05:23:42 +01:00
Benjamin Otte
0c8ecba7dc a11y: Remove keysnooping support
As previously announced, key snooping is something that we should not
support in GTK. In particular because AT-SPI made every key press a
synchronous DBUS call / spawned a nested main loop with the key
snoopers. This breaks responsiveness, order of key presses and internal
consistency when the AT decides to remove key events.
2012-01-06 05:23:42 +01:00
Zeeshan Ali (Khattak)
43e29f7cbf gtkspinbutton: Ignore keynav when !editable
Don't allow changing of value through keyboard when 'editable' property is
set to 'FALSE.

https://bugzilla.gnome.org/show_bug.cgi?id=667229
2012-01-06 05:45:46 +02:00
Benjamin Berg
b3e352f489 Improve PICKONE_* handling in GtkPrinterOptionWidget (bug #543520)
This patch modifies GtkPrinterOptionWidget to support loading them
again. It also allows the user to enter values from the dropdown list
to select the item.
2012-01-06 00:20:42 +01:00
Benjamin Berg
6fa6576dda Set cups Custom print options correctly (bug #543520, patch by Marek Kašík)
This patch fixes the cups print backend to pass Custom options with
the "Custom." prefix to cups if neccessary.
2012-01-06 00:20:42 +01:00
Matthias Clasen
f7fb2fbebd Use the right icon-name for missing images
Patch by Erik van Pienbroek, bug 629878.
2012-01-05 14:07:04 -05:00
Rob Bradford
ff016a7857 wayland: Set a default cursor when the window cursor is set to NULL
This change follows on from a change in semantics in Wayland where calling
wl_input_device_attach with nil would make the compositor set the pointer
sprite to it's default cursor sprite.
2012-01-05 17:39:14 +00:00
Marek Kasik
f1995f80e7 GtkPrintUnixDialog: Hide unused tabs
Don't show tabs which are empty. This is related to
the recent GtkTable -> GtkGrid conversion. (#663479)
2012-01-05 13:17:46 +01:00
Xan Lopez
5f53045707 Revert "gtksettings.c: Do not use GdkColor API"
This reverts commit baef3e5f24.

This broke the Adwaita theme pretty severely, so I don't think it can
be right. See: http://i.imgur.com/Rq7wc.png
2012-01-05 12:22:05 +01:00
Javier Jardón
baef3e5f24 gtksettings.c: Do not use GdkColor API 2012-01-05 04:38:22 +01:00
Javier Jardón
e77ffa6f87 gtkcolorsel.c: Do not use GdkColor API 2012-01-05 04:38:22 +01:00
Javier Jardón
d005b01319 gtk/*: Use g_list_free_full() convenience function 2012-01-05 04:22:43 +01:00
Javier Jardón
6ad6f719c6 modules/*: Use g_list_free_full() convenience function 2012-01-05 04:22:43 +01:00
Javier Jardón
24360a8076 gdk/*: Use g_list_free_full convenience function 2012-01-05 04:22:42 +01:00
Javier Jardón
08a2b910e5 tests: Use g_list_free_full() convenience function 2012-01-05 04:22:42 +01:00
Ryan Lortie
0ea48c4139 GtkComboBoxText: allow id='' tag in builder markup
Presently, GtkComboBoxText lets you list the items for it in the
GtkBuilder markup like so:

<items>
  <item translatable='yes'>Red</item>
  <item translatable='yes'>Blue</item>
</items>

but has no way to set the "id" column for added items.  Add an id='' tag
for that purpose so that you can do:

  <item id='red' translatable='yes'>Red</item>

https://bugzilla.gnome.org/show_bug.cgi?id=667319
2012-01-04 17:00:35 -05:00
Xan Lopez
eeb9de80e1 GtkNotebook: fix crash when DnD tabs between windows
When doing DnD between windows the tab label is set as the child of
the DnD info window. If this is happening the remove method of
GtkNotebook should not unparent the tab label, since it's been already
unparented, belongs to the DnD window and will be properly destroyed
when the DnD is over.

https://bugzilla.gnome.org/show_bug.cgi?id=639875
2012-01-04 08:48:46 +01:00
Javier Jardón
912375ff38 gtk/gtkcolorbutton.c: Do not use deprecated GdkColor api 2012-01-04 01:55:16 +01:00
Zeeshan Ali (Khattak)
3caa370bb5 gtkspinbutton: Respect value of inherited 'editable' property
When this property is set to 'FALSE', user's click on the buttons
should not actually update the value but rather result in error bell.

https://bugzilla.gnome.org/show_bug.cgi?id=667229
2012-01-04 00:49:35 +02:00
Federico Mena Quintero
022c576bd2 treeview: bgo#666685 - Crash when toggling the selected status of a row
The refactoring from e01af5c5c seems to have caused this inadvertently.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2012-01-03 15:08:34 -06:00
Javier Jardón
abb7f40fb8 gtkcolorsel: Do not use deprecated GdkColor api 2012-01-03 18:00:57 +01:00
Javier Jardón
49d232d3a0 gtkcellview: Do not use deprecated GdkColor api 2012-01-03 18:00:57 +01:00
Chun-wei Fan
9f6e7d214c gtk/gtkprivate.c: Include stdlib.h
Include stdlib.h for getenv to avoid C4013/implicit declaration of ...
warnings
2012-01-04 00:52:44 +08:00
Javier Jardón
1796e2f6ba test/testgtk.c: Fix compilation warning 2012-01-03 16:58:42 +01:00
Matthias Clasen
266866e82c Fix problems with DND on some X servers
When the X server does not support the shape extension (as some
vnc implementations seem to), our DND code was always seeing
an empty input shape, so drops always missed their target.

http://bugzilla.gnome.org/show_bug.cgi?id=620240
2012-01-03 10:57:53 -05:00
Emmanuele Bassi
c62a1fd522 Add symbolic constants for event emission control
Similar to https://bugzilla.gnome.org/show_bug.cgi?id=631413 in GLib,
GTK+ should have symbolic constants for controlling the event handling
instead of a mere boolean value.

The GDK_EVENT_PROPAGATE and GDK_EVENT_STOP constants map to FALSE and
TRUE respectively.

https://bugzilla.gnome.org/show_bug.cgi?id=631414
2012-01-03 12:58:43 +00:00
Ignacio Casal Quinteiro
f0b8fc69e8 textdisplay: use g_list_free_full 2012-01-01 22:38:30 +01:00
Kjell Ahlstedt
6aeab7b7cc comboboxtext: Set entry-text-column and id-column props in the constructor
This is cleaner than setting the value in the _new() functions and
makes binding and GtkBuilder instantiation easier. Bug #612396, comment 65.
2011-12-30 11:10:26 +01:00
Chun-wei Fan
d273b817e8 Bug 667018-gtk/gtkwindow.c: Include deprecated/gtkstyle.h
This is needed for the prototype of gtk_widget_reset_rc_styles, to avoid
C4013/implicit declaration of ... warnings of that function
2011-12-30 17:25:48 +08:00
Chun-wei Fan
1a122a4367 gtk/gtkspinbutton.c: Remove lingering ';'
...so that C89 compilers will not complain
2011-12-30 17:25:47 +08:00
Yaron Shahrabani
42bf233d59 Updated Hebrew translation. 2011-12-30 11:12:58 +02:00
Chun-wei Fan
24e476caab gtk/Makefile.am: Update VS projects completion
Take the sources in gtk/deprecated/ into account-VS does not like '/'
in file paths.
2011-12-30 16:44:55 +08:00
Chun-wei Fan
f166cddeb4 Update Visual C++ projects
-Update include paths for the GTK+ main projects to be consistent across
 the board
-Update demo projects to add a new demo source file, transparent.c
2011-12-30 16:40:06 +08:00
Chun-wei Fan
bdb98fdfcc Update gdk/gdkconfig.h.win32
Apparently the deprecation warning macros are placed into gdkconfig.h
during the configure stage, so put these in the pre-configured
gdkconfig.h.win32 as well, as their definitions are needed for all builds.
2011-12-30 16:21:38 +08:00
Matthias Clasen
2637240abe Remove an unnecessary warning
Don't warn if there's more than one mnemonic label for a widget,
and skip invisible labels.

Bug 665015
2011-12-30 02:01:15 -05:00
Matthias Clasen
d7e8388e9d Add a Since tag
gtk_css_provider_to_string is a post-3.0 addition.
Fixes bug 659516
2011-12-30 00:38:06 -05:00
Matthias Clasen
08c89c11d1 Drop -uninstalled.pc files
This has already been done in GLib, so follow suit here.
2011-12-30 00:28:15 -05:00
Matthias Clasen
ebd28de588 XIM: gracefully deal with non-X backends
Patch by Young-Ho Cha, bug 660309.
2011-12-29 23:43:51 -05:00
Matthias Clasen
3c70a12785 GtkImContextSimple: fix tentative match handling
When switching to the compact table format, we inadvertedly lost
the 'tentative match' handling which allows to complete longer
compose sequences even if a prefix is a complete sequence.
This was pointed out in bug 666710.
2011-12-29 23:42:03 -05:00
Matthias Clasen
694bbf4ac0 Cosmetic changes to comments 2011-12-29 23:42:03 -05:00
Piotr Drąg
849770ac54 Updated POTFILES.skip 2011-12-29 17:49:58 +01:00
Benjamin Otte
45161fbb55 settings: Cache style properties
This way we don't need to compute them every lookup. (That's not the
real reason though - the real reason is that I want to add new APIs that
require the caching because they return consts).
2011-12-29 10:10:32 +01:00
Benjamin Otte
524938aa53 modifierstyle: Move Private typedef to public header 2011-12-29 10:10:22 +01:00
Benjamin Otte
84c061b861 reftests: Add test for empty grid with spacing
This used to crash.

https://bugzilla.gnome.org/show_bug.cgi?id=660139
2011-12-29 10:03:59 +01:00
Matthias Clasen
01320e5773 Fix problems with sticky handling
Reading a card32 property into a long may lead to undefined high
bits, so mask them off. Also, make the conditions for setting and
unsetting the stick flag opposites, to avoid unintended changes.
Patch by John Lindgren, bug 666842
2011-12-28 11:20:47 -05:00
Matthias Clasen
19b47b931e Update various EWMH interactions
The current EWMH has added 'source indication' fields to a number
of client messages. Set these to 1 to indicate a regular client.
Also fill the button field of _NET_WM_MOVERESIZE.
2011-12-28 11:16:54 -05:00
Javier Jardón
465301c64f tests/testgtk: Do not use GdkColor-based api 2011-12-26 17:12:20 +01:00
Daniel Mustieles
deeac44abb Updated Spanish translation 2011-12-26 11:10:17 +01:00
Ignacio Casal Quinteiro
1abf7618c0 gtktextlayout: use g_slice for GtkTextLineDisplay 2011-12-25 18:13:51 +01:00
Ignacio Casal Quinteiro
359d8c9856 gtktextbtree: use g_slice 2011-12-25 17:49:03 +01:00
Benjamin Otte
ab1699510e themingbackground: Avoid erroring cairo context 2011-12-23 22:30:45 +01:00
Benjamin Otte
396ae8f1de tests: Make widget-factory close when window is closed 2011-12-23 22:30:45 +01:00
Benjamin Otte
58d553c604 cssprovider: Fix leak
Thanks to the heroic valgrinding efforts of Olivier Sessnik, another
leak could be plugged.
2011-12-23 22:30:45 +01:00
Matthias Clasen
fbc3db8ba9 Fix scroll_offset handling
scroll_offset can be negative here, so replace a > 0 test
by != 0.
2011-12-23 00:36:20 -05:00
Matthias Clasen
f1bfdda3fd Only push the menu in if the position function said so 2011-12-23 00:36:20 -05:00
Matthias Clasen
a553cb50ab Use gtk_widget_get_allocated_width/height where it makes sense 2011-12-23 00:36:20 -05:00
Matthias Clasen
53ce519b1f Remove an unneeded variable 2011-12-23 00:36:20 -05:00
Matthias Clasen
547baf0e5f Remove an unused struct 2011-12-23 00:36:19 -05:00
Benjamin Otte
9707d964f7 combobox: Don't allow an individual cell to cheat
Make sure we only set sensitive when the cell is sensitive and visible.
Also avoid invalid memory accesses if no cells existed.
2011-12-23 00:15:59 +01:00
Benjamin Otte
8a83f0c2d1 widget: Print a g_warning() when a cairo_t is invalid
Only print the warning on internal code, so we aren't too verbose.
2011-12-23 00:15:59 +01:00
Benjamin Otte
d1c92c38df styleproperties: Move private struct declaration into public header 2011-12-23 00:15:59 +01:00
Benjamin Otte
a61ba41167 x11: Don't handle focus events for NULL windows
The check was accidentally removed in the refactoring of
2ea328dfbc.
2011-12-23 00:15:59 +01:00
Matthias Clasen
18406b7b04 Revert "x11: Avoid spurious focus events on grabs"
This reverts commit db4a6040af.

This is causing bad focus confusion e.g. in gnome-terminal.
2011-12-22 16:03:56 +00:00
Javier Jardón
a3abc18858 Deprecate all the public API that is using GdkColor struct 2011-12-22 02:59:39 +00:00
Javier Jardón
115d92aa11 gtkappchooserwidget: Use g_object_clear() 2011-12-22 02:57:35 +00:00
Ryan Lortie
182fbba2bf GtkModelMenu: drop extra & added by mistake 2011-12-21 17:15:16 -05:00
Cosimo Cecchi
157d9271fa application: don't unconditionally unref the GMenuModel in getters
Both the app-menu and menubar models can be NULL, so we shouldn't
blindly unref them, since g_object_unref() doesn't cope with NULL
pointers.
2011-12-21 12:20:15 +01:00
Cosimo Cecchi
72c04c064a application: mark menu/menubar getters as (transfer none)
Since they do not return a reference to the underlying GMenuModel.
2011-12-21 12:19:31 +01:00
Cosimo Cecchi
9ae0ffb9cb application: use the same variable names in definitions and declarations
gobject-introspection will be confused and mark the methods as not
introspectable otherwise.
2011-12-21 11:29:39 +01:00
Colin Walters
06307dd774 GtkAction: Hold a reference to proxy widgets
Previously we expect that a proxy widget holds a reference to the
action via gtk_activatable_do_set_related_action().  However, it
is possible for the widget to still be in a floating state when
it adds itself to the the action.

This is a problem when gtk_action_get_proxies() gets called, because
we return floating objects back to the user.  And language bindings
aren't going to be expecting that.

Fix this by calling ref_sink() and unref().

https://bugzilla.gnome.org/show_bug.cgi?id=657367
2011-12-20 15:36:48 -05:00
Matthias Clasen
b5577781d1 GtkApplicationWindow: fix a typo
And add a link to the screenshots.
2011-12-20 14:10:39 -05:00
Javier Jardón
325142fba7 tests/testcombo.c: Use GdkRGBA instead GdkColor 2011-12-20 18:32:15 +00:00
Javier Jardón
f84c124e53 gtk/gtkcellview.c: Use new GdkRGBA api instead GdkColor one 2011-12-20 18:32:15 +00:00
Javier Jardón
e24634537e gtk/gtktrayicon-x11.c: Use new GdkRGBA api instead GDKColor one 2011-12-20 18:32:15 +00:00
Cosimo Cecchi
2827cd4518 button: deprecate the inner-border style property
Since we allocate the standard CSS border to the button now, and center
the child accordingly, there's no need for an additional inner-border
style property. Deprecate it and ignore its values.

https://bugzilla.gnome.org/show_bug.cgi?id=666600
2011-12-20 19:01:38 +01:00
Cosimo Cecchi
0021ef19fa button: add CSS borders to the size request
And allocate the button children according to it as well.

https://bugzilla.gnome.org/show_bug.cgi?id=666600
2011-12-20 19:01:38 +01:00
Cosimo Cecchi
fe59c5f954 button: add a border param to gtk_button_get_props()
We'll use it later to compute the child offsets.

https://bugzilla.gnome.org/show_bug.cgi?id=666600
2011-12-20 19:01:38 +01:00
Javier Jardón
9635759548 tests/testgtk.c: Remove death code 2011-12-20 17:51:59 +00:00
Ryan Lortie
bac58abec3 gtkmodelmenuitem: don't crash on missing action 2011-12-20 10:51:58 -05:00
Daniel Mustieles
8f5e8b2d0b Updated Spanish translation 2011-12-20 14:45:14 +01:00
Cosimo Cecchi
13f5706488 treeview: fix an uninitialised variable warning 2011-12-20 11:41:46 +01:00
Matthias Clasen
e65a8d0d40 Bump version 2011-12-19 18:41:10 -05:00
Matthias Clasen
be689e8307 3.3.6 2011-12-19 18:37:44 -05:00
Matthias Clasen
d7652d2c06 Fix dist 2011-12-19 18:37:28 -05:00
Matthias Clasen
23ca2a953c Fix symbol lists 2011-12-19 18:07:42 -05:00
Matthias Clasen
e09b2107b6 Updates 2011-12-19 17:47:13 -05:00
Rui Matos
f4c698ef93 Revert "progressbar: Set state flags on draw"
This reverts commit 6ed5918718 which is no
longer needed as the style context now has the state flags updated when going
into draw.
2011-12-19 20:59:06 +00:00
Matthias Clasen
5d8641dd92 Add another bloatpad screenshot 2011-12-19 15:16:11 -05:00
Xan Lopez
2d70d8fa36 gdkwindow: plug memory leak
==23282== 64 bytes in 2 blocks are definitely lost in loss record 8,069 of 13,389
==23282==    at 0x4A074CD: malloc (vg_replace_malloc.c:236)
==23282==    by 0x39A1C3E2EA: cairo_region_create (cairo-region.c:196)
==23282==    by 0x6D9AF3D: recompute_visible_regions_internal (gdkwindow.c:964)
==23282==    by 0x6D9B4B8: recompute_visible_regions (gdkwindow.c:1126)
==23282==    by 0x6DA3450: gdk_window_hide (gdkwindow.c:5689)
==23282==    by 0x6D9CED9: _gdk_window_destroy_hierarchy (gdkwindow.c:2042)
==23282==    by 0x6D9D040: gdk_window_destroy (gdkwindow.c:2109)
==23282==    by 0x655B5E4: gtk_entry_unrealize (gtkentry.c:3012)
==23282==    by 0x7068BF3: g_cclosure_marshal_VOID__VOID (gmarshal.c:85)
==23282==    by 0x706710B: g_type_class_meta_marshal (gclosure.c:885)
==23282==    by 0x7066DF9: g_closure_invoke (gclosure.c:774)
==23282==    by 0x7080585: signal_emit_unlocked_R (gsignal.c:3340)
==23282==    by 0x707F619: g_signal_emit_valist (gsignal.c:3033)
==23282==    by 0x707FB71: g_signal_emit (gsignal.c:3090)
==23282==    by 0x679E243: gtk_widget_unrealize (gtkwidget.c:4458)
==23282==    by 0x64E83C7: gtk_bin_forall (gtkbin.c:172)
==23282==    by 0x6548BBD: gtk_container_forall (gtkcontainer.c:2014)
==23282==    by 0x67A966D: gtk_widget_real_unrealize (gtkwidget.c:10253)
==23282==    by 0x672D002: gtk_tool_item_unrealize (gtktoolitem.c:474)
==23282==    by 0x7068BF3: g_cclosure_marshal_VOID__VOID (gmarshal.c:85)

https://bugzilla.gnome.org/show_bug.cgi?id=666552
2011-12-19 15:06:22 -05:00
Matthias Clasen
8eb58a6567 Updates
https://bugzilla.gnome.org/show_bug.cgi?id=666552
2011-12-19 15:06:22 -05:00
Rui Matos
8b444d1c03 notebook: Use the widget state flags as a base for drawing 2011-12-19 19:21:16 +00:00
Rui Matos
9a4edf7a5a menuitem: Stop setting state flags on the style context for drawing 2011-12-19 19:21:16 +00:00
Rui Matos
6b624a5a18 menubar: Stop setting state flags on the style context for drawing 2011-12-19 19:21:16 +00:00
Rui Matos
5b4cc2f0b6 label: Use the widget state flags as a base for drawing 2011-12-19 19:21:16 +00:00
Rui Matos
02dd7df653 label: Stop setting state flags on the style context for drawing 2011-12-19 19:21:16 +00:00
Rui Matos
e3d38708ab image: Stop setting state flags on the style context for drawing 2011-12-19 19:21:16 +00:00
Rui Matos
f4b9562f46 iconview: Use the widget state flags as a base for drawing items 2011-12-19 19:21:16 +00:00
Rui Matos
ffd5126a42 iconview: Stop setting state flags on the style context for drawing 2011-12-19 19:21:16 +00:00
Rui Matos
e9a8938b21 hsv: Stop setting state flags on the style context for drawing 2011-12-19 19:21:16 +00:00
Rui Matos
1facea2a8d expander: Use the widget state flags as a base for drawing 2011-12-19 19:21:16 +00:00
Rui Matos
3e0b2f7262 eventbox: Stop setting state flags on the style context for drawing 2011-12-19 19:21:16 +00:00
Rui Matos
754eabeb19 entry: Use the widget state flags as a base for drawing icons and text 2011-12-19 19:21:16 +00:00
Rui Matos
a0fd344217 entry: Stop setting state flags on the style context for drawing 2011-12-19 19:21:16 +00:00
Rui Matos
721920e9e9 combobox: Stop setting state flags on the style context for drawing 2011-12-19 19:21:15 +00:00
Rui Matos
ee669a1b51 cellview: Stop checking for sensitivity on draw
This is needless since GtkCellRenderer does it consistently before rendering.
2011-12-19 19:21:15 +00:00
Rui Matos
70970146ca cellrenderertoggle: Use the cell renderer's state flags as a base for rendering
This allows us to pick the underlying widget's state flags that we don't
explicitly set here.
2011-12-19 19:21:15 +00:00
Rui Matos
42d2a1984c cellrenderer: Use the widget state flags as a base for cell renderers' state 2011-12-19 19:21:15 +00:00
Rui Matos
8baf65b595 checkmenuitem: Clean up state flags handling on drawing 2011-12-19 19:21:15 +00:00
Rui Matos
c9bbfb5e9b checkbutton: Use the widget state flags as a base for drawing the indicator
Instead of building a set of state flags specifically for drawing the
indicator, base it on the underlying widget state flags.
2011-12-19 19:21:15 +00:00
Rui Matos
dae2675441 checkbutton: Stop setting state flags on the style context for drawing 2011-12-19 19:21:15 +00:00
Rui Matos
5f5d4db034 calendar: Use the widget state flags as a base for drawing arrows
This allows drawing calendar arrows in all possible states the main widget may
be in.

The arrow_state array is converted into a bit field since it only really needs
to store boolean information about prelight for each arrow.
2011-12-19 19:21:15 +00:00
Rui Matos
d84021a870 calendar: Use the widget state flags as a base for drawing days
Instead of building a set of state flags specifically for drawing days, base
it on the underlying widget state flags.
2011-12-19 19:21:15 +00:00
Rui Matos
e868b8d6ea button: Stop setting state flags on the style context for drawing 2011-12-19 19:21:15 +00:00
Rui Matos
cf469eeb61 arrow: Stop setting state flags on the style context for drawing 2011-12-19 19:21:15 +00:00
Rui Matos
221442aa2a accellabel: Stop setting state flags on the style context for drawing 2011-12-19 19:21:15 +00:00
Rui Matos
cc8012eb32 widget: Set style flags on the style context when the flags are set
This will allow us to simplify most draw methods by not having to explicitly
set the style flags on the context.
2011-12-19 19:21:15 +00:00
Rui Matos
eecbdb6f57 widget: Always propagate state flags to all children
https://bugzilla.gnome.org/show_bug.cgi?id=666126
2011-12-19 19:21:15 +00:00
Piotr Drąg
951af792e6 Updated POTFILES.in 2011-12-19 20:20:28 +01:00
Ryan Lortie
aeaed2ab15 bump glib depend to 2.31.6 2011-12-19 14:03:32 -05:00
Ryan Lortie
8578fefaa5 GtkApplication: add menu API
We add the app-menu and menubar public APIs to GtkApplication while
leaving the implementation in GApplication.

The actual implementation will be moved soon.
2011-12-19 12:51:12 -05:00
Ryan Lortie
4e5e47931d missing file 2011-12-19 12:51:12 -05:00
Ryan Lortie
06c8921975 GtkApplication: document relationship to gdkthreads 2011-12-19 12:51:12 -05:00
Ryan Lortie
6a246a85f2 GtkApplicationWindow: deal with remote actions
Deal with remote action invocations correctly by implementing
GRemoteActionGroup in the same way that GApplication does and pushing
remote activations through the before/after_emit functions of the
GApplication associated with the window.

This is the last part of getting the threading situation right.

https://bugzilla.gnome.org/show_bug.cgi?id=665737
2011-12-19 12:51:12 -05:00
Ryan Lortie
363c2d684c GtkApplication: lock gdk on incoming messages
When we have incoming activations or action invocations we should
acquire the GDK lock, just in case the program in question is using gdk
threads.

https://bugzilla.gnome.org/show_bug.cgi?id=665737
2011-12-19 12:51:12 -05:00
Ryan Lortie
76d671d6a2 Move X property handling to GtkApplicationWindow
Don't try to deal with this using a qdata and signal connections in
GtkApplication.
2011-12-19 12:51:12 -05:00
Matthias Clasen
cff5ba1bc2 Document that gtk_init is called without argv
This answers a question in bug 661823.
2011-12-19 12:51:12 -05:00
Matthias Clasen
316e0ea542 Fix a typo 2011-12-19 12:51:12 -05:00
Matthias Clasen
5562d0a57a Forgotten file 2011-12-19 12:51:12 -05:00
Matthias Clasen
080007d7cb Show off some menus 2011-12-19 12:51:12 -05:00
Matthias Clasen
06a75b7e1f Some more menu-related docs 2011-12-19 12:51:12 -05:00
Matthias Clasen
aeb550ffd7 Plugman: Find the plugins menu in a better way
Now that GtkBuilder finds named submenus, there's no need for
the clumsy menumodel navigation anymore.
2011-12-19 12:51:12 -05:00
Matthias Clasen
a991bb9927 GtkBuilder: pick up named submenus
When parsing GMenu xml, use the facility for pick up named submenus.
Note that <section id='foo'>...</section> is _not_ a named submenu.
It is a named item with an unnamed submenu :-(
2011-12-19 12:51:12 -05:00
William Hua
c1f9ccce5b Handle menu changes. 2011-12-19 12:51:12 -05:00
William Hua
4846f3619a Add accelerators to bloatpad. 2011-12-19 12:51:12 -05:00
William Hua
1a02fc036d Refactor GMenuModel rendering for Mac OS. 2011-12-19 12:51:12 -05:00
William Hua
ec72f8fd81 gtkquartz-menu: fix some leaks 2011-12-19 12:51:12 -05:00
William Hua
460ac291b2 begin adding menu accelerators
Show accelerators in menus.
2011-12-19 12:51:12 -05:00
Matthias Clasen
3103ae2685 Two small fixes
Don't leak a session bus reference, and don't assume a display
is X11 just because we've built the X11 backend.
2011-12-19 12:51:12 -05:00
Matthias Clasen
d91c9f9859 Fix up includes 2011-12-19 12:51:12 -05:00
Ryan Lortie
9e3c4c6b03 bloatpad: add 'New Window' menu item 2011-12-19 12:51:11 -05:00
William Hua
8bc7513a7b begin GtkApplication menu support for Mac OS 2011-12-19 12:51:11 -05:00
Matthias Clasen
8a21201e2c Another plugin, for good measure 2011-12-19 12:51:11 -05:00
Matthias Clasen
c30e2b88c3 Something for the eye 2011-12-19 12:51:11 -05:00
Matthias Clasen
744f87fc12 Add an action too 2011-12-19 12:51:11 -05:00
Matthias Clasen
cc14811ec0 wip example for plugin/gmenu interaction 2011-12-19 12:51:11 -05:00
Matthias Clasen
4877799145 Update testgmenu to latest api changes 2011-12-19 12:51:11 -05:00
Ryan Lortie
21f4562d10 GtkApplicationWindow: share one GActionMuxer
Use the same GActionMuxer for menubars and accels instead of recreating
a new one each time.
2011-12-19 12:51:11 -05:00
Matthias Clasen
f485dd3f08 Documentation additions 2011-12-19 12:51:11 -05:00
Matthias Clasen
0baa663182 GtkApplicationWindow: Always install accelerators
We want accelerators to work, even if the menus are not shown
locally, so we can't rely on the GtkMenu code to set them up
for us. Currently, this code only installs accelerators when the
window is realized.
2011-12-19 12:51:11 -05:00
Matthias Clasen
073a924481 Bloatpad: Add an accelerator in the menu 2011-12-19 12:51:11 -05:00
Matthias Clasen
f7244431a9 GtkApplication: Extract accelerators from menus
This allows to specify accelerators in a convenient way, by
adding accel="..." attributes to the menu items in the
XML for the menu.

Currently, the accelerators are extracted only once, when the
menu property is changed on the application.
2011-12-19 12:51:11 -05:00
Matthias Clasen
2398d7e900 Introduce gtkaccelmapprivate.h
Move internal accel map API there and update all users.
Also, add an internal function to create an accel path for
an action and parameter, and use it in gtkapplication.c and
gtkmodelmenuitem.c instead of duplicating that code.
2011-12-19 12:51:11 -05:00
Matthias Clasen
f05cfd55f0 Bloatpad: Add an accelerator 2011-12-19 12:51:11 -05:00
Matthias Clasen
153cc818db GtkApplication: Add API to install accelerators for actions 2011-12-19 12:51:11 -05:00
Matthias Clasen
1c6d0c3e27 GtkApplicationWindow: Set the accel group on constructed windows
This will make the menuitems pick up matching accel map entries
automatically. Currently, nothing creates such accel map entries,
though.
2011-12-19 12:51:11 -05:00
Matthias Clasen
9d62d24d65 GtkApplicationWindow: Add a GtkAccelGroup
This will be used in the following patches.
2011-12-19 12:51:11 -05:00
Matthias Clasen
d5d896f812 Fix a gtk-doc warning 2011-12-19 12:51:11 -05:00
Ryan Lortie
90fcf994d5 GtkApplication: export windows on the bus
And advertise their location on the bus using X11 properties.
2011-12-19 12:51:11 -05:00
Ryan Lortie
03db3e1ca1 (trivially) implement 'shutdown' in GtkApplication 2011-12-19 12:51:11 -05:00
Matthias Clasen
aa1faa7c70 Add an example 2011-12-19 12:51:10 -05:00
Matthias Clasen
898bc98d3b Update GtkApplicationWindow docs 2011-12-19 12:51:10 -05:00
Matthias Clasen
3205a40b84 Whitespace fix 2011-12-19 12:51:10 -05:00
Matthias Clasen
f119c834c1 Make accelmap initialization more forgiving 2011-12-19 12:51:10 -05:00
Matthias Clasen
7ef340fb87 Clean up includes 2011-12-19 12:51:10 -05:00
Ryan Lortie
43bf430f21 bloatpad: add proper sections to the menus 2011-12-19 12:51:10 -05:00
Ryan Lortie
cd7ce867a7 Split off GMenuModel -> GtkMenuBar code
Put this in a separate file and substantially refactor it.

Move handling of submenu creation into gtkmodelmenuitem where it
belongs.

Improve our handling of when to show separators or not.
2011-12-19 12:51:10 -05:00
Ryan Lortie
afb0c098cb Watch "shell shows menu" settings for changes
Correctly monitor the GtkSettings for changes to the
"gtk-shell-shows-app-menu" and "gtk-shell-shows-menubar" properties.
2011-12-19 12:51:10 -05:00
Ryan Lortie
88f16b13f3 GtkSettings: quartz: shell always shows menus 2011-12-19 12:51:10 -05:00
Matthias Clasen
f7ce4d7740 Whitespace fixes 2011-12-19 12:51:10 -05:00
Matthias Clasen
b7de477611 Never add separators to menubars 2011-12-19 12:51:10 -05:00
Ryan Lortie
2f78238872 gmenu testcase: update to glib API changes 2011-12-19 12:51:10 -05:00
Ryan Lortie
2ce6a27fa3 bloatpad: move action/menu setup to ::startup
No need to waste time doing this in init() if we are not going to become
the primary instance.
2011-12-19 12:51:10 -05:00
Ryan Lortie
59092e1c00 bloatpad: port to GActionMap for application
g_application_set_action_group() is now deprecated.
2011-12-19 12:51:10 -05:00
Ryan Lortie
2e64177e3f GtkModelMenuItem: don't leak a GVariant 2011-12-19 12:51:10 -05:00
Ryan Lortie
9cc98f9d9b bloatpad: use GtkBuilder for constructing menus
This is closer to what a real application would want to do.
2011-12-19 12:51:10 -05:00
Ryan Lortie
f83530ae3a GtkModelMenuItem: omit indicator if not required
GtkModelMenuItem, being based on GtkCheckMenuItem, was always reserving
space for a check/radio indicator.  This ends up looking pretty strange
in a GtkMenuBar.

Don't reserve space for the indicator unless it's appropriate.
2011-12-19 12:51:10 -05:00
Ryan Lortie
de53b5226d GtkApplicationWindow: nuke some g_print spew 2011-12-19 12:51:10 -05:00
Ryan Lortie
f0c2ff39fc GtkApplcationWindow: plug two obvious leaks 2011-12-19 12:51:10 -05:00
Colin Walters
c7e7237559 GtkApplicationWindow: Consistently unparent menubar
We create it floating, and don't hold an extra ref, so we should
just unparent it.
2011-12-19 12:51:10 -05:00
Ryan Lortie
c299963428 GtkApplicationWindow: clean up menubar logic 2011-12-19 12:51:10 -05:00
Matthias Clasen
e7b6fa4449 Only add a separator when a section ends 2011-12-19 12:51:10 -05:00
Ryan Lortie
612e24dfc6 introduce GtkModelMenuItem
This GtkMenuItem subclass (and GActionObserver implementation) contains
all the knowledge necessary for converting a GMenuModel item description
into a GtkMenuItem.

Remove much of the code that used to do this from
gtkapplicationwindow.c.
2011-12-19 12:51:09 -05:00
Ryan Lortie
ecfdb834c9 GtkSettings: add shell-shows-menubar property
Unity will set this to tell us that it is going to handle displaying the
menubar.
2011-12-19 12:51:09 -05:00
Matthias Clasen
45e9d09eab Only add separators when a section actually ends 2011-12-19 12:51:09 -05:00
Matthias Clasen
064999cb2a Bloatpad: Add a View menu for fullscreen 2011-12-19 12:51:09 -05:00
Matthias Clasen
396876969a Bloatpad: Don't leak a menu model 2011-12-19 12:51:09 -05:00
Colin Walters
7ad83b6827 bloatpad: Be 640x480 by default
Because otherwise we're just a few pixels, and this is the least lame
solution I know of in GTK+.
2011-12-19 12:51:09 -05:00
Colin Walters
2c6b7eff17 GtkApplicationWindow: Further sanitize handling of merging app menu and menubar
The _set_show_app_menu should really be _set_show_menubar().

Also, correctly display just the window menu in the window when run
under GNOME 3.
2011-12-19 12:51:09 -05:00
Colin Walters
b041d33465 bloatpad: Fix Edit to be a submenu 2011-12-19 12:51:09 -05:00
Colin Walters
65a2962733 GtkApplication: Merge app menu and menubar
Change bloatpad to have both an app menu and a menubar.
2011-12-19 12:51:09 -05:00
Matthias Clasen
aae52d4580 GtkApplicationWindow: Make mnemonics work for stateful actions 2011-12-19 12:51:09 -05:00
Matthias Clasen
dd360d725c Bloatpad: Add mnemonics to the menu 2011-12-19 12:51:09 -05:00
Colin Walters
3a088d9ac2 GtkApplicationWindow: Don't unref a NULL object 2011-12-19 12:51:09 -05:00
Ryan Lortie
b42308f8e3 Adapt to changes in GLib API
g_application_get_menu() -> get_app_menu().
2011-12-19 12:51:09 -05:00
Matthias Clasen
33aaf26dd5 Drop GtkApplicationMenuButton for now
This feels premature; we do have the fallback situation covered
adaequately with the menubar, and people can do their own creative
solutions with gtk_application_window_get_menu(), so we don't have
to offer a widget for this right now.
2011-12-19 12:51:09 -05:00
Matthias Clasen
acbda82199 Remove a redundant test 2011-12-19 12:51:09 -05:00
Matthias Clasen
b893247eeb GtkApplicationMenuButton: add docs 2011-12-19 12:51:09 -05:00
Matthias Clasen
bd30a1c556 Undoccommentify action muxer files 2011-12-19 12:51:09 -05:00
Matthias Clasen
0683f086bb Whitespace fixes 2011-12-19 12:51:09 -05:00
Matthias Clasen
cedc3cb6e1 Hook up docs 2011-12-19 12:51:09 -05:00
Matthias Clasen
6d0475df4f Remove no-longer existing function 2011-12-19 12:51:09 -05:00
Matthias Clasen
f10f3bc7e4 GtkApplicationWindow: more docs 2011-12-19 12:51:09 -05:00
Matthias Clasen
762616dd75 Include gtkapplicationmenubutton.h in gtk.h 2011-12-19 12:51:08 -05:00
Matthias Clasen
65f5a65336 GtkApplicationWindow: mark a string for translation 2011-12-19 12:51:08 -05:00
Matthias Clasen
792c719478 Some coding style fixes 2011-12-19 12:51:08 -05:00
Matthias Clasen
d9c3714fcb GtkApplication: doc improvement 2011-12-19 12:51:08 -05:00
Matthias Clasen
a6794133aa Some initial docs 2011-12-19 12:51:08 -05:00
Matthias Clasen
32508ee825 Drop an unused variable 2011-12-19 12:51:08 -05:00
Matthias Clasen
8ae7921708 Don't call g_object_unref on a variant
Tsk, tsk...
2011-12-19 12:51:08 -05:00
Colin Walters
1eee7fb103 GtkApplicationWindow: Use dispose for GObjects
This ensures we break cyclic references.
2011-12-19 12:51:08 -05:00
Colin Walters
9e9e1a9fbf gtkapplicationwindow: Pick up gtk-shell-shows-app-menu XSetting
Calling gtk_application_window_set_show_app_menu() is now an override
for that setting.  If you don't call it, we pick up the default.
2011-12-19 12:51:08 -05:00
Colin Walters
a003eef9d4 gdk: Fix prototype for gdk_x11_window_set_utf8_property 2011-12-19 12:51:08 -05:00
Ryan Lortie
618bca1333 bloatpad: use GtkApplicationMenuButton 2011-12-19 12:51:08 -05:00
Ryan Lortie
ddfbe19b23 add GtkApplicationMenuButton 2011-12-19 12:51:08 -05:00
Ryan Lortie
3076ba9c62 bloatpad: add 'win.fullscreen' action 2011-12-19 12:51:08 -05:00
Ryan Lortie
906475860f bloatpad: make "about" a window action
By making "about" a per-window action, we can pop the about dialog up on
top of the correct window instead of trying to guess from the
application list of windows.
2011-12-19 12:51:08 -05:00
Ryan Lortie
1a97f4b9ef GtkApplicationWindow: wire up action activations
Wire the 'activate_action' and 'change_action_state' vfuncs through to
the GSimpleActionGroup.
2011-12-19 12:51:08 -05:00
Ryan Lortie
af0c1e66ab gtk.symbols fixes 2011-12-19 12:51:08 -05:00
Ryan Lortie
7e34342899 GtkApplicationWindow: implement GActionMap 2011-12-19 12:51:08 -05:00
Ryan Lortie
ebd7450f02 port bloatpad to the new APIs 2011-12-19 12:51:08 -05:00
Ryan Lortie
a93b9dd1cb add GtkApplicationWindow
This is a GtkWindow subclass that "application windows" will use.  Each
is associated with a GtkApplication, has the ability to show menus and
will have its own associated set of actions.
2011-12-19 12:51:08 -05:00
Ryan Lortie
e7ad2f97c8 add GActionMuxer and observer interfaces
These were destined for GLib, but they don't really make sense as a
public API.  Instead, we'll copy/paste them around between the various
codebases that need to render menus.
2011-12-19 12:51:08 -05:00
Ryan Lortie
f826dd5481 GtkSettings: add shell-shows-app-menu property
This is a boolean property that will be set to TRUE if the current
desktop environment is capable of displaying the application menu as
part of the desktop shell.

If it is FALSE then the application will need to display the menu for
itself.
2011-12-19 12:51:08 -05:00
Matthias Clasen
7ee18bd74a Make it build against the current wip/menus-rebase3 branch 2011-12-19 12:51:07 -05:00
Colin Walters
0455a9596f testgmenu: #ifdef out non-compiling code for now 2011-12-19 12:51:07 -05:00
Matthias Clasen
6b7be4a3a2 Add a very bad fallback check
...maybe committing this inspires some better solution.
2011-12-19 12:51:07 -05:00
Colin Walters
9c52a73c21 window: Set a _DBUS_APPLICATION_ID X11 window property
This will allow gnome-shell to reference it.
2011-12-19 12:51:07 -05:00
Colin Walters
ff38dda9a8 x11: Add gdk_x11_window_set_utf8_property
A convenience function to manipulate UTF-8 X11 properties; no point
in wrapping each one in individual setters.
2011-12-19 12:51:07 -05:00
Matthias Clasen
5705a330c2 GtkApplication: Insert separators after sections
The previous code was only inserting a separator when a new
section was starting right away, which may not always be the
case.
2011-12-19 12:45:51 -05:00
Matthias Clasen
9131849eec testgmenu: Insert separators after sections
The previous code was only inserting a separator when a new
section was starting right away.
2011-12-19 12:45:51 -05:00
Matthias Clasen
5aee67793f GtkApplication: Initial attempt at section headings
This should be redone to show the label together with the
separator line, somehow. For now, just put the label below
the separator, as a separate item.
2011-12-19 12:45:51 -05:00
Matthias Clasen
7de8660187 testgmenu: Initial attempt at section headings
This should be redone to show the label together with the
separator line, somehow. For now, just put the label below
the separator, as a separate item.
2011-12-19 12:45:51 -05:00
Matthias Clasen
92af3d04b8 GtkApplication: use activate for actions here, too 2011-12-19 12:45:51 -05:00
Matthias Clasen
bf03adcdeb testgmenu: Use activate with parameter for radio actions
This is how stateful actions are supposed to be activated, using
change_state for this was not right at all.
2011-12-19 12:45:51 -05:00
Matthias Clasen
15afbf846d testgmenu: Use activate for toggle actions
This is how stateful actions are supposed to be activated, using
change_state for this was not right at all.
2011-12-19 12:45:51 -05:00
Colin Walters
e0c235255b testgmenu: Quit on delete-event 2011-12-19 12:45:51 -05:00
Matthias Clasen
95d9a5e368 Adapt to api changes in GMenuModel 2011-12-19 12:45:51 -05:00
Matthias Clasen
5d0020cbd3 Adapt to object path conventions
Seems common to expect 'path == bus name with slashes'.
2011-12-19 12:45:51 -05:00
Matthias Clasen
8ee68a7bf1 bloatpad: Add an example app menu
The bloatpad example shows simple GtkApplication usage,
so it makes sense to test app menu api here as well.
2011-12-19 12:45:51 -05:00
Matthias Clasen
cc24dbe9c7 GtkApplication: add a way to get the appmenu
This function either returns a GtkMenu or NULL.
Still to do: detect if the app menu is externally handled.
2011-12-19 12:45:51 -05:00
Matthias Clasen
601b3fca60 Drop an unused variable 2011-12-19 12:45:51 -05:00
Matthias Clasen
3b2f77e2c6 Remove an unneeded include 2011-12-19 12:45:51 -05:00
Matthias Clasen
1996a5edff testgmenu: Demonstrate how translatable labels work 2011-12-19 12:45:51 -05:00
Matthias Clasen
f13083bf0d Pass domain to the menu parser
This is necessary to make translations in markup work.
2011-12-19 12:45:51 -05:00
Matthias Clasen
b36198dbc2 More dynamic changes 2011-12-19 12:45:51 -05:00
Matthias Clasen
1aec8e22b6 Cleanups
Separate the menu generation code and all callbacks in a
MenuHolder struct.
2011-12-19 12:45:50 -05:00
Matthias Clasen
1ddaf01aed Quick-and-dirty GtkBuilder integration
This makes GtkBuilder accept a GMenuMarkup tree at the toplevel
(ie with <menu id='foo'> being a child of <interface>) and the resulting
GMenu object can be obtained via gtk_builder_get_object (builder, "foo").
2011-12-19 12:45:50 -05:00
Matthias Clasen
fd9df1864b Brute-force dynamic change propagation
We need to make sure that we connect to ::items-changed on every
single model, as they appear and disappear. Ugly business.
2011-12-19 12:45:50 -05:00
Matthias Clasen
519c75a606 First attempt at handling dynamic changes
We need to connect to items-changed on _every_ menu
model, which is somewhat icky. For some reason, this
works fine with a local model, but not with D-Bus in
between. Debugging needed.
2011-12-19 12:45:50 -05:00
Matthias Clasen
c62ed7e3a3 Add code for dynamic changes
Add and remove items and actions - we don't update
the menus properly yet.
2011-12-19 12:45:50 -05:00
Matthias Clasen
bfa53a9df5 Add some todos 2011-12-19 12:45:50 -05:00
Matthias Clasen
8841c04e22 Some GMenu test code
This is some test code for constructing GtkMenus from GMenus.
2011-12-19 12:45:50 -05:00
Daniel Mustieles
0192955bd8 Updated Spanish translation 2011-12-19 17:14:35 +01:00
Benjamin Otte
902c5c6979 a11y: emit entry signals immediately
We want to emit signals when stuff happens, not sometime later. That way
we can also catch the correct text that was deleted.

https://bugzilla.gnome.org/show_bug.cgi?id=659445
2011-12-19 16:17:14 +01:00
Benjamin Otte
db4a6040af x11: Avoid spurious focus events on grabs
We want to avoid handling focus events for the private focus window,
otherwise the keyboard grab taken by for example buttons will cause a
spurious FOCUS_OUT/FOCUS_IN on the toplevel.

The code that did this seems to have been lost in the XI2 transition for
GTK3.

https://bugzilla.gnome.org/show_bug.cgi?id=657578
2011-12-19 16:17:14 +01:00
Benjamin Otte
2ea328dfbc x11: Unify focus handling code
This code was essentially copy-pasted in two locations, so unify them in
the same place.

https://bugzilla.gnome.org/show_bug.cgi?id=657578
2011-12-19 16:17:13 +01:00
Benjamin Otte
3d4a8dabb2 a11y: implement widget_(un)set in ContainerCell 2011-12-19 16:17:13 +01:00
Benjamin Otte
d2a58446ea a11y: Make GtkCellAccessible a GtkAccessible 2011-12-19 16:17:13 +01:00
Benjamin Otte
e937d0613d tests: Avoid deprecation warning 2011-12-19 16:17:13 +01:00
Benjamin Otte
073b4d8bea accessible: Deprecate gtk_accessible_connect_widget_destroyed()
That was an abomination. Also, if people called it twice, you got even
mor signal handlers!
2011-12-19 16:17:13 +01:00
Benjamin Otte
0c1f2f2fc1 widget: Set widget in accessible's constructor
No need to add t manually later.
2011-12-19 16:17:13 +01:00
Benjamin Otte
d801b28365 a11y: Don't connect_destroyed anymore
It's not used now that set_widget() does the right thing.
2011-12-19 16:17:13 +01:00
Benjamin Otte
1961be9ee9 iconview: Simplify adjustment monitoring for accessible 2011-12-19 16:17:13 +01:00
Benjamin Otte
4652d4c399 a11y: Remove widget_destroyed call
GtkAccessible does all of that for us now.
2011-12-19 16:17:13 +01:00
Benjamin Otte
80a0413d40 a11y: Use widget_unset vfunc in treeview 2011-12-19 16:17:13 +01:00
Benjamin Otte
dbc1581376 accessible: Ensure we unset the widget when finalizing 2011-12-19 16:17:13 +01:00
Benjamin Otte
03a63def24 widget: Unref accessible 2011-12-19 16:17:13 +01:00
Benjamin Otte
7b5b678e2e a11y: Fix crash in notebook
When the accessible was disposed before the notebook it referenced, the
weak ref could still trigger. This works around it.
2011-12-19 16:17:13 +01:00
Benjamin Otte
e042462674 widget: Unset self from accessible 2011-12-19 16:17:13 +01:00
Benjamin Otte
23b5f9c066 widget: Unset widget on accessibles 2011-12-19 16:17:13 +01:00
Benjamin Otte
075cc5dd36 accesible: Manage the DEFUNCT state
A GtkAccessible with a NULL widget is defunct, there's no way around it.
2011-12-19 16:17:12 +01:00
Benjamin Otte
1305815bde iconview: Split out iconview accessible 2011-12-19 16:17:12 +01:00
Benjamin Otte
eb27c61878 accessible: Use set_widget() in destroy notify
We don't want to bypass the unset_widget call.
2011-12-19 16:17:12 +01:00
Benjamin Otte
bac73e48db API: accessible: Add widget_set and widget_unset vfuncs
I expect them to be used a lot, so this approach seems better than
requiring signals that connect to "notify::widget". Also, we can't use
regular functions (like dispose or constructed), becaiuse those assume
that (un)setting of the widget only happens once and with the current
design (a puble set_widget() function) we can't really guarantee that.

Also, I split them into two separate functions as one function is part
of construction and the other part of destruction of the object. And it
doesn't sound like a good idea to have that both be part of one
function.
2011-12-19 16:17:12 +01:00
Benjamin Otte
50431be274 accessible: At an important note to the docs
I wanted to use weak refs to ensure this instead, but it's a performance
problem when used in the treeview and each and every cell adds a weak
ref to the treeview.
2011-12-19 16:17:12 +01:00
Benjamin Otte
5789fd983b accessible: Check the widgeyt actually changed when setting 2011-12-19 16:17:12 +01:00
Benjamin Otte
1998a63917 accessible: Make widget a property 2011-12-19 16:17:12 +01:00
Benjamin Otte
eed9cc94e1 treeview: Only set focus column in setter function
Single point of entry. It's actually going to become more complicated
with a11y now.
2011-12-19 16:17:12 +01:00
Benjamin Otte
e4f6a7124b a11y: Simplify code
Use peek_cell() instead of a custom find_cell() function that duplicates
loads of functionality.
2011-12-19 16:17:12 +01:00
Matthias Clasen
19c5b5c9d6 Tell gtk-doc about G_GNUC_WARN_UNUSED_RESULT 2011-12-19 07:32:32 -05:00
Matthias Clasen
5913e88feb Reduce gtk-doc warnings 2011-12-19 07:32:15 -05:00
Matthias Clasen
910e50994c Fix parameter name mismatch 2011-12-18 16:04:51 -05:00
Matthias Clasen
020c1846b7 Use the workarea when placing popups
This uses the new workarea API to avoid placing popups underneath
panels, docks, etc.
2011-12-18 14:29:16 -05:00
Matthias Clasen
c6df2828b7 Add gdk_screen_get_monitor_workarea
The function returns the part of a monitors area that should be
used for positioning popups, menus, etc. The only non-trivial
implementation atm is in the X backend, all the other backends
just return the full monitor area. The X implementation is
currently suboptimal, since it requires roundtrips to collect
the necessary information. It should be changed to monitor
the properties for changes, when XFixes allows to monitor
individual properties.
https://bugzilla.gnome.org/show_bug.cgi?id=641999
2011-12-18 14:29:16 -05:00
Daniel Mustieles
74cff292d5 Updated Spanish translation 2011-12-18 20:11:34 +01:00
Carlos Garnacho
358ecad501 gdk,xi2: Make more resilient about not yet known devices
Dealing with disabled devices may turn into hierarchy/device
changed events on device IDs with no backing GdkDevice yet,
so protect against that. The device attachment will be handled
correctly when the device is enabled later.
2011-12-18 18:57:57 +01:00
Ignacio Casal Quinteiro
69fba5d3ed textlayout: cleanup
Use g_clear_object, move unrefs to dispose and reorganize code
2011-12-18 18:46:36 +01:00
Paolo Borelli
397cbbef32 Use gtk_text_layout_get_iter_at_line
We already have a gtk_text_layout_get_iter_at_line wrapper that takes
care of getting the btree from the layout, we may as well use it.
2011-12-18 17:44:23 +01:00
Paolo Borelli
7f301cf822 Remove useless get_iter_at_line calls.
No need to call _gtk_text_btree_get_iter_at_line right before calling
totally_invisible_line, since it is the first thing it does itself.
2011-12-18 17:35:08 +01:00
Baurzhan Muftakhidinov
bbf96b9ea7 [l10n] Updated Kazakh translation 2011-12-17 21:11:15 +01:00
Piotr Drąg
9b02b6c7c0 Updated POTFILES.in 2011-12-17 19:50:27 +01:00
Rui Matos
4a113394da tests: Add a test for latest commit
https://bugzilla.gnome.org/show_bug.cgi?id=666392
2011-12-17 11:59:08 +00:00
Rui Matos
9d6da33ff5 widget: Flip the sensitive flag even if the state doesn't change
Even if we can't change our sensitivity because the parent is insensitive we
should still flip the sensitive flag. Otherwise, with and insensitive parent,

child.set_sensitive(True)
...
parent.set_sensitive(True)

would result in child still being insensitive.

https://bugzilla.gnome.org/show_bug.cgi?id=666392
2011-12-17 11:48:01 +00:00
Benjamin Otte
b9fad15ee6 filechooserentry: Catch tab key earlier
Instead of in the key_press handler, use a signal handler. The signal
handler runs before the default handler, and before other signal
handlers. In particular it runs before the signal handler installed via
gtk_entry_set_completion() which pops down the entry completion, and we
don't want that to happen.

The code does not change the code of the handler in any significant way,
it just refacotrs it to not call the parent anymore.

https://bugzilla.gnome.org/show_bug.cgi?id=663573
2011-12-16 20:09:14 +01:00
Benjamin Otte
640754e98b filechooserentry: Do inline completion only when opening files
When saving files, using <tab> is required. We don't want the UI
randomly changing filenames from below us.

https://bugzilla.gnome.org/show_bug.cgi?id=663573
2011-12-16 20:09:14 +01:00
Benjamin Otte
351dd206bc filechooserentry: Remove unused enum 2011-12-16 20:09:14 +01:00
Benjamin Otte
4fb6961c6a filechooserentry: Allow NULL as base folder again
This was removed previously, but is necessary to support the case where
no base folder is in use, which should cause an error. This can be
experienced in save mode in the recent files list.

https://bugzilla.gnome.org/show_bug.cgi?id=663573
2011-12-16 20:09:14 +01:00
Benjamin Otte
523a45d927 filechooserentry: Don't show files when selecting directory
We don't want to complete on files when they're not supposed to be
selectable.
2011-12-16 20:09:14 +01:00
Benjamin Otte
57766f1948 filechooserentry: Remove beep function
There's only 2 places left where we potentially beep. We can call
gtk_widget_error_bell() directly there.
2011-12-16 20:09:14 +01:00
Benjamin Otte
0d10583695 filechooserentry: Simplify load completion
Most importantly, consistently trigger a beep when we abort a pending
completion.
2011-12-16 20:09:14 +01:00
Benjamin Otte
c4a331f934 filechooserentry: Use a GtkFileFilter for filtering
That way, we can use the regular filtering features of the
filesystemmodel instead of having our own filtering function that
duplicates much of the matching code.

This also removes the broken-on-windows feature where files strting with
a dot were not autocompleted.
2011-12-16 20:09:14 +01:00
Benjamin Otte
98fb16e307 filesystemmodel: Add a toggle for whether directories are filtered 2011-12-16 20:09:14 +01:00
Benjamin Otte
b47b6d307e filechooserentry: Remove the file column
It is not needed anymore.
2011-12-16 20:09:14 +01:00
Benjamin Otte
5607cd9170 filechooserentry: Simplify code
Use all the clever functions we invented in recent refactorings to
compute the file and dir part and the current folder.

This also fixes the bug where "./" was not taken as the current
directory but interpreted as a file named "./".
2011-12-16 20:09:13 +01:00
Benjamin Otte
d27d73f885 filechooserentry: Refactor function
Name the function set_completion_folder() and make it accept NULL, so it
behaves like a regular setter function.
2011-12-16 20:09:13 +01:00
Benjamin Otte
ea8f5f15c1 filechooserentry: Set minimum key length to 0
We want the empty chooser to show possible completions, too.
2011-12-16 20:09:13 +01:00
Benjamin Otte
af9e385616 filechooserentry: Simplify refresh_current_folder_and_file_part()
The function can get the text it's refreshing from itself, as there is
only one possible value. And it doesn't need to return a value anymore.
2011-12-16 20:09:13 +01:00
Benjamin Otte
357ae09b54 filechooserentry: Get rid of unused member variable
in_change isn't set anymore.
2011-12-16 20:09:13 +01:00
Benjamin Otte
6ab681c094 filechooserentry: Remove _gtk_file_chooser_entry_set_file_part()
gtk_entry_set_text() is fine.
2011-12-16 20:09:13 +01:00
Benjamin Otte
c9b220275a filechooserentry: Use completion for completion
Reduce the amount of code even more by using the entry completion to
query the prefix.
2011-12-16 20:09:13 +01:00
Benjamin Otte
d3fd759f77 filechooserentry: Add gtk_file_chooser_entry_get_completion_text()
This returns the text that should be completed on. As this is somewhat
tricky to compute (and in fact one place did it wrong), let's make it a
function.
2011-12-16 20:09:13 +01:00
Benjamin Otte
f6f2a78d3e filechooserentry: Don't update the folder when completing
The folder is always up to date, there's no need to update it. (If the
folder is not up to date, that is a bug and needs to be fixed
elsewhere.)
2011-12-16 20:09:13 +01:00
Benjamin Otte
ad1672c194 filechooserentry: Don't override activate
The code is no longer necessary, because the relevant parts for inline
completion are now handled by GtkEntry.
2011-12-16 20:09:13 +01:00
Benjamin Otte
6e7b2de21e filechooserentry: Simplify append_common_prefix()
Now that we don't need to know anymore why insertion failed, we can
simplify the append function quite a lot.

A simple rule now: If we did not insert anything, beep.
2011-12-16 20:09:13 +01:00
Benjamin Otte
f7e5a773ff filechooserentry: Remove completion feedback
Too much special code for no gain.

I did a totally unscientific questionnaire on GNOME IRC (assuming
autocompletion is for advanced users) and nobody even knew what this is.
So I suspect it's useless. Also, it's positioned completely wrong anyway
and nobody noticed so far. Last but not least, I'm trying to imitate
bash here and bash doesn't show feedback.
2011-12-16 20:09:13 +01:00
Benjamin Otte
93263dcd33 filechooserentry: Redo completion popup trigger
Use dispatch_properties_changed() instead of GtkEditable to watch for
changes to the to-be-completed text. This is necessary because various
functions in GtkEntry don't use the interface vfuncs and one only
becomes aware of them via notifications. I'm not sure this is intended
behavior, but it's how it works today.
Also, use the same code for triggering in all situations.

What the code does is this: It looks at the part of the text in front of
the cursor (or selection) and completes for it. Once the directory has
been enumerated, inline completion is activated. Note that popping up of
the completion popup is completely handled by GtkEntry.
2011-12-16 20:09:13 +01:00
Benjamin Otte
132c42ccbd filechooserentry: Get rid of RefreshMode
Instead, pass the text to use to refresh_current_folder_and_file_part().
This also gets rid of the problem introduced earlier that the position
is not properly updated in do_insert_text() and therefor the completion
is wrong.
2011-12-16 20:09:13 +01:00
Benjamin Otte
45d54fcba6 filechooserentry: Use inline completion
... from GtkEntryCompletion instead of implementing a poor copy
ourselves. This also makes the file chooser entry behave a lot closer to
normal entries.
2011-12-16 20:09:13 +01:00
Benjamin Otte
cdd236ddd4 filechooserentry: Merge function 2011-12-16 20:09:13 +01:00
Benjamin Otte
c585471baf filechooserentry: Set the text column of the entry completion
I want to use it in the next commits, but am doing this in a separate
commit so we can find side effects causing bugs easier when bisecting.
2011-12-16 20:09:12 +01:00
Benjamin Otte
e3ef8a568e filechooserentry: Simplify match_selected function 2011-12-16 20:09:12 +01:00
Benjamin Otte
cde8ae7b1e filechooserentry: Keep an extra column for the full path
This is identical to the display name when not having a path that
changes the folder. Otherwise it will have the full path that was
entered in the entry. Say when from your home dir, you type
"../../usr/li", the full path for "lib" and "lib64" will be
"../../usr/lib" and "../../usr/lib64" respectively. This value isn't
used yet, but will be soon.
2011-12-16 20:09:12 +01:00
Benjamin Otte
fc775dfa5b entrycompletion: Export gtk_entry_completion_compute_prefix()
I want to use it in the file chooser entry autocomplete code.
2011-12-16 20:09:12 +01:00
Benjamin Otte
1ac6ace87d filechooserentry: Redo _gtk_file_chooser_entry_get_file_part()
The new version does not need to update any text, it just strips the
last part of the existing entry.
2011-12-16 20:09:12 +01:00
Benjamin Otte
e2105c2bef filechooserentry: Modify _gtk_file_chooser_entry_get_current_folder()
The new version does not need to muck with the entry, it just extracts
the required information. It returns a reference to the folder though,
as we extract the information now instead of returning something stored.
2011-12-16 20:09:12 +01:00
Benjamin Otte
5c42972735 filechooserentry: Split out function
I want to use that function elsewhere, so split it out.
2011-12-16 20:09:12 +01:00
Benjamin Otte
2186c28263 filechooserentry: Simplify code
Now that the base folder is always != NULL, we can remove the parts of
the code that check for NULL.
2011-12-16 20:09:12 +01:00
Benjamin Otte
35198e142d filechooserentry: Ensure the base folder is always valid
If the base folder is set to NULL, then we just assume the home dir.
FIXME: Should we disallow a NULL folder?
2011-12-16 20:09:12 +01:00
Benjamin Otte
e0859004f6 filechooserentry: Don't complain about incomplete hostnames
First of all, those hostnames may very well be complete, second of all,
smb:// is a valid uri to enter.
2011-12-16 20:09:12 +01:00
Benjamin Otte
242afcfeff filechooserentry: Start autocomplete immediately
Don't do idle handlers for this.
2011-12-16 20:09:12 +01:00
Benjamin Otte
9ee577d5ee filechooserentry: Remove file_system argument
It's not needed anymore.
2011-12-16 20:09:12 +01:00
Benjamin Otte
c3da748cb2 filechooserentry: Simplify code
Now that we've imported the function in the last commit, rename it and
omit useless arguments by instead passing in the entry directly.
2011-12-16 20:09:12 +01:00
Benjamin Otte
9d09028970 filechooserentry: Move _gtk_file_system_parse()
It's very specific to the file chooser entry, so it's better kept there.
It's also not used anywhere else in the code.
2011-12-16 20:09:12 +01:00
Benjamin Otte
036195e7a8 gtkfolder: Remove
It's not used anymore. And new code should of course use gio.
2011-12-16 20:09:12 +01:00
Benjamin Otte
a1e0c1e042 filechooserentry: Use a GtkFileSystemModel
Replace the usage of a list store and a GtkFolder with a
GtkFileSystemModel. This improves performance and reduces code size.
2011-12-16 20:09:11 +01:00
Benjamin Otte
06a64daefc filechooserentry: Store the liststore as a treemodel
Just changes the type of the member variable. This way we can avoid a
lot of casts.
2011-12-16 20:09:11 +01:00
Benjamin Otte
5ebc69066a filechooserentry: Make appending / to directories simpler 2011-12-16 20:09:11 +01:00
Benjamin Otte
2b9ecd9706 filechooserentry: Only append / to directory names once
Since 069d78ed31 the / is appended to
directories upon constructing the display name, so there is no need to
do it later.
2011-12-16 20:09:11 +01:00
Benjamin Otte
8389922de9 filechooserentry: Don't trim away the slash after directories
It's not necessary as the code appending the slashes checks for a slash
these days.
2011-12-16 20:09:11 +01:00
Benjamin Otte
2ead847f7d filechooserentry: Fold in start_loading_current_folder()
The function just did one thing, we can just fold it into the only
caller.
2011-12-16 20:09:11 +01:00
Benjamin Otte
a04b70e51f filechooserentry: The file system cannot be NULL
Remove code that checked this.
2011-12-16 20:09:11 +01:00
Benjamin Otte
05398b8f1a filechooserentry: Make the filesystem a construct-only argument
This allows simplifications in the code.
2011-12-16 20:09:11 +01:00
Benjamin Otte
5aeac0bccb filechooserentry: Keep finished_loading variable ourselves
This will be useful in the next commits when the GtkFolder code
previously keeping that variable gets repalced.
2011-12-16 20:09:11 +01:00
Benjamin Otte
b6f6e33801 filechooserentry: force_reload is never TRUE
.. so remove it.
2011-12-16 20:09:11 +01:00
Benjamin Otte
f0cf1117e1 filechooserentry: Fold function into other
There's no need to discard the current folder's file without also
discarding the folder object.
2011-12-16 20:09:11 +01:00
Benjamin Otte
d5e5ca3e2a filechooserentry: Reorganize function
Setter functions the way I code it look like this (in order):
1) Figure out if the value changed. If not, exit early.
2) Clear the old value (ie unref stuff, disconnect signals
3) Copy the new value
4) Set up things about the new value

This reorganization does that.

And by doing that, it even reduces the amount of code and the amount of
branches (and with it, nesting) needed.
2011-12-16 20:09:11 +01:00
Benjamin Otte
7b51ca9a47 filechooserentry: Use the actual discarding function to discard a folder 2011-12-16 20:09:11 +01:00
Benjamin Otte
edddb666a7 filechooserentry: Don't use a magic number
... when we have a proper enum value for a column.
2011-12-16 20:09:11 +01:00
Benjamin Otte
92a72ce3e5 entry: Move freeze/thaw into begin/end_change 2011-12-16 20:09:11 +01:00
Benjamin Otte
cf8f3c07f2 entry: Don't try to handle Tab in entry completions
Instead, fall through to the default handler after closing the
completion. This has the advantage of letting the file chooser entry
capture the tab key properly, so one can't accidentally move out of the
entry by pressing tab while the completion is popped up.

I also suspect it fixes bugs with weird tab keys and shift/ctrl
oddities. But who knows...
2011-12-16 20:09:11 +01:00
Daniel Mustieles
88da2e81ab Updated Spanish translation 2011-12-16 14:22:49 +01:00
Benjamin Otte
e104219ab1 tests: Relax a refcount comparison check
We now test for real_refcount >= expected_refcount, because various
parts of the code (a11y, selection, cursor, ...) can and do add
references.
2011-12-16 13:39:43 +01:00
Benjamin Otte
113aff673f a11y: Don't emit children-changed when nothing changed
When we have 0 columns, no children ever get added or removed.
2011-12-16 13:39:43 +01:00
Benjamin Otte
d78971b31d treeview: Run unref helper for all rows
Don't do shortcuts. Because all rows need to be unreffed.
Introduced in 92929b968b.
2011-12-16 13:39:43 +01:00
Matthias Clasen
afa945f480 Updates 2011-12-15 23:59:36 -05:00
Matthias Clasen
7f5a665b95 Fix more linking fallout
We are using xinput and gmodule API in a few places in libgtk.
https://bugzilla.gnome.org/show_bug.cgi?id=665326
2011-12-15 23:35:06 -05:00
Matthias Clasen
cea35016db Add missing symbols to the docs 2011-12-15 23:09:23 -05:00
Matthias Clasen
89c8c1f8a8 Doc format fixes 2011-12-15 23:09:10 -05:00
Matthias Clasen
9cdeaaab30 Remove some accidental additions
These functions were never actually implemented
2011-12-15 23:03:12 -05:00
Matthias Clasen
8b60bc9d24 Cosmetic change 2011-12-15 23:03:12 -05:00
Matthias Clasen
2f25ab2b22 Doc typo fix 2011-12-15 23:03:12 -05:00
Matthias Clasen
a26afb6aab Add new symbols 2011-12-15 23:03:12 -05:00
Matthias Clasen
55f1799b96 Doc typo fix 2011-12-15 23:03:12 -05:00
Matthias Clasen
ba59b9c4f9 Cosmetic changes 2011-12-15 23:03:12 -05:00
Benjamin Otte
f8426cd706 gtk-demo: Fix warnings in changedisplay
Use the brute force fix. I'm not really interested in fixing this
properly.
2011-12-16 04:53:17 +01:00
Benjamin Otte
c0fdcbf513 a11y: Remove unused gtk_cell_accessible_set_cell_data() 2011-12-16 04:53:17 +01:00
Benjamin Otte
b8b8ba8ed9 a11y: Make boolean cell render report its states the new way 2011-12-16 04:53:17 +01:00
Benjamin Otte
64aa203773 a11y: Refactor treeview code even more
- Split out set_cell_data()
- Use it
- Get rid of update_cell_value() function, it's now just 2 calls
2011-12-16 04:53:16 +01:00
Benjamin Otte
eb6465167e a11y: Redo function signature
With the recent changes to gtk_cell_accessible_update_cache(), the
update_cell_value() function now needs less code, too.
2011-12-16 04:53:16 +01:00
Benjamin Otte
4ac501736e a11y: Implement GtkContainerCellAccessible.update_cache 2011-12-16 04:53:16 +01:00
Benjamin Otte
118bc610f6 a11y: Move update_cache to GtkCellAccesible
This way, we can call it for container renderers, too.
2011-12-16 04:53:16 +01:00
Benjamin Otte
2e7fcc24ac a11y: Redo cell update function
1) always emit signals
   Previously, newly constructed cells would be told to not emit events.
   However, we can ensure that nothing is connected to the signals, so
   they will not actually emit anything.
2) don't return anything
   The return value is unused anyway.
2011-12-16 04:53:16 +01:00
Benjamin Otte
5cca6b2dc2 a11y: Remove unused function 2011-12-16 04:53:16 +01:00
Benjamin Otte
d2a9220006 a11y: remove now unused property lists 2011-12-16 04:53:16 +01:00
Benjamin Otte
a3f60349ed a11y: Don't copy data between renderers
Now that we don't use custom renderers anymore, we don't need to copy
data between them anymore.
2011-12-16 04:53:16 +01:00
Benjamin Otte
8ac579602c a11y: Use cell renderer creation funcs unconditionally
Also delete the previous "new" functions and actually set the real cell
renderer here.
2011-12-16 04:53:16 +01:00
Benjamin Otte
c5433e852b gtk: Add accessible types for cell renderers 2011-12-16 04:53:16 +01:00
Benjamin Otte
e5d5863a3f a11y: Use the accessible type 2011-12-16 04:53:16 +01:00
Benjamin Otte
0470b91add cellrenderer: Add API to keep the accessible type
It's private for now, because we require a GType that isn't exported in
the API yet.
2011-12-16 04:53:16 +01:00
Benjamin Otte
acb73f99bb API: cellrenderer: Add a private struct 2011-12-16 04:53:15 +01:00
Benjamin Otte
c28f641921 a11y: Add GtkRendererCellAcessible::renderer 2011-12-16 04:53:15 +01:00
Benjamin Otte
dfb82333a3 a11y: Remove unused variable 2011-12-16 04:53:15 +01:00
Benjamin Otte
ccabccc42f treeview: Send changed signal directly to a11y code
No more signal handler is needed, therefore the code can also get rid of
tracking the treemodel. And we use a faster approach for iterating the
changed cellrenderers: We just iterate all columns instead of over all
cell accessibles, as that number is likely quite a bit smaller.
2011-12-16 04:53:15 +01:00
Benjamin Otte
070124b0a5 tests: Add test resetting the model
We first set a NULL model and then reset the old model, just to get the
effect of clearing and then resetting.

We reset the cursor and selection afterwards, so the reset doesn't
destroy all the work we did.
2011-12-16 04:53:15 +01:00
Benjamin Otte
f5621a3a8e treeview: Emit cursor-changed signal when new model is set 2011-12-16 04:53:15 +01:00
Benjamin Otte
c9c7e91db9 a11y: Improve treeview's add/remove_selection() 2011-12-16 04:53:15 +01:00
Benjamin Otte
dc8f5effd4 a11y: Improve get_selected_rows() 2011-12-16 04:53:15 +01:00
Benjamin Otte
20b56689c5 a11y: Improve table_is_row_selected() 2011-12-16 04:53:15 +01:00
Benjamin Otte
3112679a5e treeview: Signal selection changes to the accessible
And another signal gone.
2011-12-16 04:53:15 +01:00
Benjamin Otte
1a3226e2f7 a11y: Emit children-changed properly for treeviews
Fixes the patch reverted in b7e74ef95f1d9cd851fb81a124beca0ca11dad00
properly.

https://bugzilla.gnome.org/show_bug.cgi?id=548782
2011-12-16 04:53:15 +01:00
Benjamin Otte
0005d820c7 treeview: Remove unnecessary accessible_expanded()
Instead, just call remove_state().
2011-12-16 04:53:15 +01:00
Benjamin Otte
c7b82c2cea treeview: Add add() function to accessible
... and use that to emit the insertion signals.
2011-12-16 04:53:14 +01:00
Benjamin Otte
82a9f6faa0 treeview: Set expandable flag from treeview
... instead of trying to update it manually.
2011-12-16 04:53:14 +01:00
Benjamin Otte
9e9533fc88 a11y: Redo cell accessible action handling
Multiple changes:
- actions are now available unconditionally, but only work in the right
  state. This mirrors other actions.
- instead of adding actions manually, they invoke the action on the
  GtkCellAccessibleParent interface.

Tests have been updated to reflect the changes
2011-12-16 04:53:14 +01:00
Benjamin Otte
f840efae96 a11y: Remove "toggle" action from cell renderers
This is identical to "edit" (even though that name is kinda confusing).
2011-12-16 04:53:14 +01:00
Benjamin Otte
adf183b71f treeview: Set EXPANDED state directly on a11y elements 2011-12-16 04:53:14 +01:00
Benjamin Otte
6fa72300be treeview: Deprecate gtk_tree_view_set_destroy_count_func()
The accessibility code doesn't need it anymore.
2011-12-16 04:53:14 +01:00
Benjamin Otte
ab9c2c2de2 a11y: Remove destroy_count_func usage
It's not needed anymore.
2011-12-16 04:53:14 +01:00
Benjamin Otte
8ca5192d6d a11y: Emit row-deleted signal when rows get deleted
Instead of in the old callbacks.
2011-12-16 04:53:14 +01:00
Benjamin Otte
25445837ca a11y: Revert 22a47c3dbd
The fix is wrong on multiple levels. I'll add a proper fix soon.

https://bugzilla.gnome.org/show_bug.cgi?id=548782
2011-12-16 04:53:14 +01:00
Benjamin Otte
95dc248790 treeview: Don't use signals in a11y row expansion
Instead, add a function and call it directly.
2011-12-16 04:53:14 +01:00
Benjamin Otte
d9b71702dc a11y: Add _gtk_tree_view_accessible_add_state()
... and _gtk_tree_view_accessible_remove_state(). They should be called
by gtktreeview.c to notify about changes of state for a row.
2011-12-16 04:53:13 +01:00
Benjamin Otte
3badf48d2e a11y: Split out function
I want to use that function when sending notifications. See next
commits.
2011-12-16 04:53:13 +01:00
Benjamin Otte
ff80ae16d9 a11y: Readd FOCUSABLE state
The state was lost in commit 08d86fabc4.

Also order the states that are always set alphabetically.
2011-12-16 04:53:13 +01:00
Benjamin Otte
0ef6771bcc a11y: Remove old notify about showing/visible
As cells are always visible and showing, there is no need to do complex
notification mechanisms anymore.
2011-12-16 04:53:13 +01:00
Benjamin Otte
7f42a9465a a11y: Add _gtk_cell_accessible_state_changed()
It's supposed to replace the old state_set calls.
2011-12-16 04:53:13 +01:00
Benjamin Otte
90f04b56a7 a11y: Split out renderer<->atk state matching
We now keep a state map. This makes adding new states easier, and
doesn't introduce bugs with state change emissions.
2011-12-16 04:53:13 +01:00
Benjamin Otte
acfb3b3d88 a11y: Don't duplicate information anymore
We do provide the expandable and expanded information via
GtkCellRendererState now so there is no need to use extra flags.
2011-12-16 04:53:13 +01:00
Benjamin Otte
bb029420fd a11y: Set new treeview flags 2011-12-16 04:53:13 +01:00
Benjamin Otte
175043bd8d treeview: Set the new flags when rendering the cell 2011-12-16 04:53:13 +01:00
Benjamin Otte
b6aa011c43 cellrenderer: Add EXPANDED and EXPANDABLE states
These make more sense as flags than they do as properties of the cell
renderer.
2011-12-16 04:53:13 +01:00
Benjamin Otte
953b4aedf1 tests: Add a test for latest commit 2011-12-16 04:53:05 +01:00
Benjamin Otte
94f00eb04d widget: Don't change sensitive state with insensitve parent
This way child.set_sensitive(True) with an insensitive parent doesn't
cause child to become sensitive.
2011-12-16 04:50:11 +01:00
Benjamin Otte
1377ff08c0 fontchooserwidget: Handle dpi < 0
Just use 96.0
2011-12-16 04:50:11 +01:00
Matthias Clasen
14f1811158 Add new symbols 2011-12-15 22:40:01 -05:00
Cosimo Cecchi
f0714338b3 iconhelper: treat the empty string as a NULL icon name
Treat the empty string as if it was a NULL icon name instead of
rendering GTK_STOCK_MISSING_IMAGE.
This used to be the previous behavior of GtkCellRendererPixbuf and
applications might still rely on it.
2011-12-15 20:01:35 +01:00
Cosimo Cecchi
798413151f cellrendererpix: save the icon size locally instead of in the helper
We need to save the icon size locally for GtkCellRendererPixbuf, since
its properties are set again every time it's drawn (resetting the icon
size on the helper by means of _gtk_icon_helper_clear() each time).
2011-12-15 19:59:24 +01:00
Cosimo Cecchi
69a5b3af94 menuitem: cleanup arrow-spacing fetch code
Refactor get_arrow_size() to return the spacing as well, since basically
we always need both.
2011-12-15 18:52:30 +01:00
Cosimo Cecchi
05e62e0251 menuitem: share code between HFW and non-HFW height requests
The code is very similar; having two slightly different code paths is
bad and can lead to bugs. Refactor the code to use the same height
request function.
2011-12-15 18:52:30 +01:00
Cosimo Cecchi
4d76b10ce5 menuitem: properly respect padding when drawing the separators
Use the padding when calculating the draw coordinates of the separator.

https://bugzilla.gnome.org/show_bug.cgi?id=666242
2011-12-15 18:52:30 +01:00
Cosimo Cecchi
713df0c72b menuitem: force odd height if we're not using wide separators
So that the 1px line can receive the same amount of space above and
below.

https://bugzilla.gnome.org/show_bug.cgi?id=666242
2011-12-15 18:52:30 +01:00
Cosimo Cecchi
20e94c1275 menuitem: don't request twice the padding for separator menu items
Padding was requested twice for separator menu items.

https://bugzilla.gnome.org/show_bug.cgi?id=666242
2011-12-15 18:52:30 +01:00
Florian Müllner
3b0a9c59cc demo: Add test for hide-titlebar-when-maximized
Add an additional option to the appwindow demo to test the new
gtk-hide-titlebar-when-maximized setting.

https://bugzilla.gnome.org/show_bug.cgi?id=665616
2011-12-15 16:31:57 +01:00
Florian Müllner
4f8f8fe828 window: Add hide-titlebar-when-maximized property
For maximized windows, titlebars cannot be used to reposition or
scale the window, so if an application does not use it to convey
useful information (other than the application name), the screen
space occupied by titlebars could be put to better use.
Add a new window property which requests from the window manager
to hide titlebars when windows are maximized to account for this.

https://bugzilla.gnome.org/show_bug.cgi?id=665616
2011-12-15 16:31:56 +01:00
Cosimo Cecchi
cfa0339559 scale: remove unused variable 2011-12-15 12:16:09 +01:00
Rui Matos
1235dc320b widget: Synthesize crossing only if sensitivity changed while propagating state 2011-12-14 17:03:44 +00:00
Andrea Cimitan
40423df234 Add has-origin property for GtkScale
If the scale has an origin (it will have one by default), GtkRange will
render the two sides before/after the current value with different style
classes, making it possible for themes to use different colors and
properties for the two areas.
This was possible in GTK 2 with style details, but got lost during the
road to 3.0.

https://bugzilla.gnome.org/show_bug.cgi?id=665140
2011-12-14 17:16:09 +01:00
Rob Bradford
8c1f8c0668 wayland: Add dummy implementation of the wl_data_device functionality
Setup listener functions for the drag and drop events as well as the selection
events. Then create and save a data structure representing the data offer from
the other client.
2011-12-14 14:47:27 +00:00
Rob Bradford
55b2286c3e wayland: Add an implementation for GdkAtom
This implementation is based on a hash table. The hard coded GtkSelection
atoms are preloaded into the hash table at the correct values. User generated
atoms start after the last preloaded atom.
2011-12-14 14:45:44 +00:00
Rob Bradford
b165c1bac8 wayland: Get the data device during input device setup
The data device is a associated with the input device - fetch the data device
from the data manager for the current input device.
2011-12-14 14:44:44 +00:00
Rob Bradford
aea95c8efc wayland: Retrieve the data device manager object
The data device manager is a global object that provides the support
infrastructure around data devices. These data device objects are the basis
for handling drag and drop as well as selections in Wayland.
2011-12-14 14:43:35 +00:00
Rob Bradford
32c9251b1e wayland: Don't use deprecated function: gdk_window_get_pointer
Replace it with gdk_window_get_device_position.
2011-12-14 14:43:29 +00:00
Pavol Šimo
c66fd84523 Updated Slovak translation 2011-12-14 14:19:06 +01:00
Jan Rękorajski
f807f7834f print dialog: Fix authentication logic
Reset state of CUPS requests correctly during authentization and
check CUPS requests for errors.
Don't initialize variables holding password and username with empty
string (#664640).
2011-12-14 14:09:48 +01:00
Matthias Clasen
ffb56ecc15 Fix nicks for the window class enum
As pointed out in bug 665999, these were just not right.
Before this commit, the nicks were 'output' and 'only'.
After this commit, they are 'input-output' and 'input-only'.
2011-12-13 21:15:14 -05:00
Alexander Larsson
10b5ec20f2 Fix set_focus_child handling during focus changes
In many cases we used to set focus_child to NULL all the way up
to the top and then to the right value, even if there was
a common ancestor, meaning these see a temporary NULL value for
focus_child. Only when the new focus widgets direct parent was
in the previous ancestor list did we stop early.

This fixes that by always stopping propagation when reaching
the common ancestor.
2011-12-14 00:26:40 +01:00
Claudio Saavedra
064204da9b GtkFrame: Fix a casting in the compute_child_allocation() method
The casting used to calculate the child allocation is confusing MAX().
As a result, width and height end up with negative values, which makes no sense.

https://bugzilla.gnome.org/show_bug.cgi?id=666109
2011-12-13 20:26:30 +02:00
Cosimo Cecchi
a7f3a9ff74 themingengine: split a GtkThemingBackground object
Allows easier modification and general sanity of the CSS background
rendering code.
2011-12-12 12:46:52 +01:00
Cosimo Cecchi
1e23a74a95 image: take misc padding into account when calculating x/y draw coords
This fixes the misc-alignment.ui reftest.
2011-12-12 12:30:27 +01:00
Cosimo Cecchi
b215aeacc8 image: add gtk_image_get_preferred_size()
Add a function to query the preferred size of the GtkImage, and use it
in the get_preferred_width/height implementations.
2011-12-12 12:29:21 +01:00
Benjamin Otte
92929b968b treeview: Ensure selection's changed signal
There was a corner case where the changed signal was not emitted.
If rows were built like this:
  1    (not selected)
  + 2  (selected)
  + 3  (not selected)
And row 1 was removed, no signal would be emitted.

I like it when writing tests actually finds bugs that have been around
since 2003 - introduced by 4a03ea2334
actually. :)
2011-12-10 08:00:26 +01:00
Benjamin Otte
d4d2cc14d2 treeview: Don't try to optimize away selection_changed signal
We get certain cases, in particular with SELECTION_MULTIPLE, where we
cannot figure out in advance of real_set_cursor() if the selection will
actually change.
2011-12-10 08:00:26 +01:00
Benjamin Otte
ef4c4b7836 tests: Add select/unselect calls 2011-12-10 08:00:26 +01:00
Benjamin Otte
559c3c7da1 treeview: Add a CURSOR_INVALID flag to set_cursor_row()
This is necessary so the code doesn't attempt to do things with the
previous cursor, which currently cause crashes.
2011-12-10 08:00:26 +01:00
Benjamin Otte
d3bccfbb6d treeview: Replace lots of boolean args with flags
I want to add more and 3 boolean args is essentially unreadable code.
2011-12-10 08:00:26 +01:00
Benjamin Otte
bf47d8d499 tests: Add sanity checks for selection
We want to know that the selection emits "changed" when it changes.
2011-12-10 08:00:26 +01:00
Benjamin Otte
4dbedb7481 docs: Update code demo for newer glib 2011-12-10 08:00:26 +01:00
Benjamin Otte
4d3986e709 tests: Dump the operation that is performed to stderr 2011-12-10 08:00:26 +01:00
Benjamin Otte
6e099a11ae tests: Make treechanging test run as fast as possible 2011-12-10 08:00:26 +01:00
Benjamin Otte
1a2932ba29 treeview: Handle the case where the cursor row gets deleted
Previously, the cursor would just become invalid, which used to
reselect the first row in the treeview later on (without a
cursor-changed signal). This leads to a crash now with the recent
refactorings.

The patch is longer than I'd like it to be, but the situation is kinda
complicated, because we want to make sure to move the cursor to a good
row. It works like this:
1) From the deleted row, search forward for the first row that is not
   going to be deleted and is not a separator.
2) If no such row exists, search backwards for a row that is not a
   separator.
3) If no such node exists, clear the cursor.
2011-12-10 08:00:26 +01:00
Benjamin Otte
e01af5c5c9 treeview: Replace cursor handling by keeping the node
Previously the code used a GtkTreeRowReference, which was (a) less
performant and more importantly (b) hiding errors.
The errors being hidden were the referenced row becoming invalid or
collapsed, because such rows would not be valid cursor rows and it would
be necesary to select a new row and emit a "cursor-changed" signal.

So if a crash bisects down to this commit, it is very likely that the
cursor has not correctly been updated and the cursor row is invalid.
2011-12-10 08:00:26 +01:00
Benjamin Otte
2a59265df1 tests: Put random number into local variable
This way, we can see what function had previously been called when the
checks fail.
2011-12-10 08:00:25 +01:00
Benjamin Otte
78aad2d35c treeview: Use _gtk_rbtree_contains() in a11y code 2011-12-10 08:00:25 +01:00
Benjamin Otte
710a8435cc rbtree: Add _gtk_rbtree_contains()
It's useful in a bunch of places, so split it out
2011-12-10 08:00:25 +01:00
Matthias Clasen
89c90ed193 Fix move-resize emulation with XI2
https://bugzilla.gnome.org/show_bug.cgi?id=650943
2011-12-09 21:28:12 -05:00
Rob Bradford
83054baa16 wayland: Load cursors from wayland directory under XDG_DATA_DIRS
This means we don't have to have hardcoded "/usr/share/wayland" to find the
cursors.

This change also fixes up the warning messages for when loading fails.
2011-12-09 18:22:01 +00:00
Denis Arnaud
fba5ca3330 Updated Breton translation 2011-12-09 04:31:33 +01:00
Denis Arnaud
517be09cda Updated Breton translation 2011-12-09 04:20:51 +01:00
Matthias Clasen
9bf17a95e5 Revert 3fd7dbc940
Calling gdk_keymap_add_virtual_modifiers causes _all_ virtual
modifiers to be added, which causes problem when they are co-located
on the same real modifier (as Super and Hyper often are). Effectively,
this made it impossible to enter key combinations involving Super,
since they all turn into Super+Hyper.
2011-12-08 12:44:19 -05:00
Matthias Clasen
e43080a0c2 Test some virtual modifiers
This adds some accelerators involving Super and Hyper to testmerge.
This helps in testing our accel matching for those.
2011-12-08 08:02:18 -05:00
Timothy Arceri
36effbb307 print to file: fixed lost filename in gui
Stop widget creating an event before updating both directory and
filename values.

https://bugzilla.gnome.org/show_bug.cgi?id=603823
2011-12-07 20:04:38 -05:00
Benjamin Otte
6454c718dd overlay: Properly allocate the child upon addition
This ensures that after addition the child gets assigned the proper
allocation and the child window is properly shown/hidden.
2011-12-08 00:24:28 +01:00
Benjamin Otte
003d80dbea overlay: Move code
Move code for child allocation into the child allocation function. Don't
keep it in the overlay allocation code.

See the next commit for why this is useful.
2011-12-08 00:24:28 +01:00
Benjamin Otte
f34d0d6f7b overlay: Create child window before setting parent
Otherwise, the window will not be used when set_parent() maps the child.
2011-12-08 00:24:28 +01:00
Rui Matos
6ed5918718 progressbar: Set state flags on draw
We were missing setting state flags on the style context before drawing.
2011-12-07 22:42:56 +00:00
Rui Matos
7a6babfd02 widget: Unset window-unfocused in gtk_widget_unparent()
Widgets without a parent aren't inside a toplevel window so we must remove
window-unfocused as it doesn't make sense outside a toplevel.

https://bugzilla.gnome.org/show_bug.cgi?id=661428
2011-12-07 22:41:58 +00:00
Benjamin Otte
807a449f29 treeview: Fix crash when scrolling to end
This broke in a4630d0e7b

https://bugzilla.gnome.org/show_bug.cgi?id=665741
2011-12-07 20:12:12 +01:00
Cosimo Cecchi
8f4f7faa11 window: copy back window surface data when the implicit paint is flushed
When an implicit paint is flushed during expose, e.g. because a
non-double buffered widget is painting, make sure to copy the existing
data from the window surface we rendered before flushing back to the
paint surface, instead of using an empty base.
Code was already handling that (and said so in the comment), but only
when no implicit paint was used at all, and not in the case when it's
flushed mid-expose.
2011-12-07 08:54:09 +01:00
Cosimo Cecchi
2fad8eb0c3 window: trivial cleanup 2011-12-06 18:27:59 -05:00
Cosimo Cecchi
e3744bbd70 window: remove unused arguments and variables
Trivial cleanup, no functional change.
2011-12-06 17:49:35 -05:00
Benjamin Otte
c24742e789 modifierstyle: Fix compile errors
Introduced in 7bd2446801
2011-12-06 18:01:57 +01:00
Alexander Larsson
288b1539d1 Fix demo to use a "normal" transparent value now that it works.
The last commit fixed this, so lets have a sane value in the demo code.
2011-12-06 14:12:24 +01:00
Alexander Larsson
7bd2446801 Remove broken optimization in style modifier overrides
We used to only set the override color or font if it was different
than the existing value. However, that means you can't change it to
an override that is the same as the default value for the property.

With this fixed you can e.g. override with a color of 0,0,0,0 which
you couldn't before.
2011-12-06 14:12:23 +01:00
Matthias Clasen
b558885221 Try to fix linking
We need to link against gdk against pangoft2 on X11.
Also add Requires.private to gdk-3.0.pc, and try to clean
things up some.

https://bugzilla.gnome.org/show_bug.cgi?id=665326
2011-12-05 20:58:21 -05:00
Alexander Larsson
4962167864 gtk-demo: Add test of transparent GdkWindows
This shows a semi-transparent shadow from a GtkOverlay window
2011-12-06 00:23:58 +01:00
Matthias Clasen
d978ed85ae Remove an unused variable 2011-12-05 18:07:41 -05:00
Carlos Garnacho
029a884d9e gtk,notebook: Invalidate the gap side when reordering tabs
This narrow area is invalidated so the gap follows the tab
being reordered.
2011-12-05 21:23:23 +01:00
Alexander Larsson
fd06890354 notebook: Make the tab reordering dnd window transparent 2011-12-05 21:15:06 +01:00
Cosimo Cecchi
392cdff697 statusicon: fix the build on !X11
Uninevitable fallout from my last patch to GtkStatusIcon. Thanks to Rob
Bradford for testing this.
2011-12-05 13:22:20 -05:00
Benjamin Otte
4259a27cf5 widget: Update Pango context on state change
The layout depends on the state flags, so it must be updated when they
change.
2011-12-05 18:27:05 +01:00
Benjamin Otte
c3cccf586c label: Clear layout on state change
Selected or active text might be rendered differently.
2011-12-05 18:27:05 +01:00
Benjamin Otte
5ac6950dd6 label: Move callback to new stuff
We want to react to state flags changing, not to the (deprecated) state
type changing.
2011-12-05 18:27:05 +01:00
Rob Bradford
b917c2f027 wayland: Port from wl_shell to wl_surface_shell
Previously all the commands that acted on the shell took the surface that was
to be acted on as parameter. Now we retrieve an object from the shell that
represents its state for the surface. With that wl_shell_surface object we can
then call methods on that.

Signed-off-by: Kristian Høgsberg <krh@bitplanet.net>
2011-12-05 16:20:39 +00:00
Cosimo Cecchi
d80ff7b5f1 stylecontext: always add the ARROW style class when rendering an arrow
When gtk_render_arrow() is called, always add an ARROW style class to
the GtkStyleContext before rendering, so themes can specify a different
color for it.

https://bugzilla.gnome.org/show_bug.cgi?id=665420
2011-12-05 09:37:21 -05:00
Cosimo Cecchi
c538fb8f64 stylecontext: add GTK_STYLE_CLASS_ARROW
For e.g. submenu items arrow in GtkMenuItems.

https://bugzilla.gnome.org/show_bug.cgi?id=665420
2011-12-05 09:30:57 -05:00
Cosimo Cecchi
2e01dc1b7a statusicon: port to GtkIconHelper
Just always render the pixbuf ourselves and set it on the GtkImage in
the X11 case.
Code for other backends was already rendering the pixbuf manually before
translating it into a native type, so this greatly simplifies the code.

https://bugzilla.gnome.org/show_bug.cgi?id=665409
2011-12-05 09:09:43 -05:00
Alexander Larsson
c47ef89aca Merge branch 'transparent-windows' 2011-12-05 14:24:28 +01:00
Alexander Larsson
93c086ec80 Make window handle transparent
Instead of painting the window background on the grip_window we now
only paint it on the GtkWindow->window, and we make the grip_window
have a transparent background.

We can't really make transparent window handle background optional
via css atm, because the handle color is actually based on the
background color, so if that is set to transparent we won't draw
anything.
2011-12-05 12:51:55 +01:00
Alexander Larsson
4597f1ea6a gdk: gdk_window_get_update_area don't remove alpha covered areas
gdk_window_get_update_area is supposed to get the area where things
need painting, and remove them from the update areas. However, if
some area is covered by other windows with an alpha background we
can't just expect whatever the app choses to render in the update
area as correct, so we don't actually remove these areas, meaning
they will get correctly rendered when we get to the expose handlers.
2011-12-05 12:18:22 +01:00
Alexander Larsson
65ef15812b gdk: gdk_window_move_region
gdk_window_move_region doesn't move children, so we can't copy
transparent child window regions with copyarea, so we remove these
from the copy region.
2011-12-05 12:16:55 +01:00
Alexander Larsson
76ea768316 gdk: Fix alpha window background paintings on non-implicit paints 2011-12-05 11:40:30 +01:00
Alexander Larsson
68843a3e93 gdk: Remove unused _gdk_window_calculate_full_clip_region 2011-12-05 10:59:07 +01:00
Alexander Larsson
f00cfe1fac Handle has_alpha_background for parent-relative backgrounds 2011-12-05 10:55:55 +01:00
Cosimo Cecchi
2bf765ab49 entry: avoid a mismatched cairo_save/restore
Leftover from GtkIconHelper migration.
2011-12-04 19:58:28 -05:00
Paolo Borelli
5a471fefdb Remove unused alignment from GtkTooltip. 2011-12-04 19:20:23 +01:00
Paolo Borelli
7c779a0bee Plug tiny leak in the css parser 2011-12-03 17:52:24 +01:00
Kristian Høgsberg
0dd1f7edbc wayland: Update to recent API changes 2011-12-02 05:41:43 -05:00
Claudio Saavedra
f9c24e8f03 GtkIconView: fix a memory corruption in the drag-n-drop code
You shall free with g_slice_free() what you allocate with
g_slice_new().

https://bugzilla.gnome.org/show_bug.cgi?id=665338
2011-12-01 22:56:43 +01:00
Alexander Larsson
7a263c68a0 gdk: Fix repaint of layered region during move_region 2011-12-01 22:08:00 +01:00
Alexander Larsson
8e28f53a1d gdk: Fix repaint of layered region during scroll 2011-12-01 22:08:00 +01:00
Alexander Larsson
f0c8c4a94b gdk: Fix repaint of layered region during raise 2011-12-01 22:07:59 +01:00
Alexander Larsson
0f6784a919 gdk: Make sure we don't copy to/from layered regions when moving a window 2011-12-01 22:07:59 +01:00
Alexander Larsson
46d5b89830 gdk: Track the layered area
We track the areas that have alpha coverage so that we can
avoid using these as sources when copying window contents.
We also don't remove such areas from the clipping regions so
that they are painted both by parent and child.
2011-12-01 22:06:44 +01:00
Alexander Larsson
f51482e283 gdk: Track wether windows have alpha in the background
This will let us handle such windows differently in the
drawing machinery
2011-12-01 22:03:51 +01:00
Alexander Larsson
30ad4e676f testwindows: Add a button to cause a repaint
This makes it easy to find various kinds of repaint bugs
2011-12-01 22:03:51 +01:00
Alexander Larsson
9613e6ae19 testwindows: Test transparent backgrounds 2011-12-01 22:03:51 +01:00
Alexander Larsson
7fd225c766 gdk: Expose bottommost windows first
This cleans up the expose handling a bit by using the existing
clip regions, and it allows us later to use painters algorithm
to do transparent windows.
2011-12-01 13:42:09 +01:00
Alexander Larsson
45df163e9d gdk: Remove now unused region tags completely 2011-12-01 13:38:04 +01:00
Cosimo Cecchi
58b1f24d6d image: use the default icon size if no icon size is provided
If no icon size is provided (e.g. when setting icon-name or stock-id
using the GObject property directly), use the default icon size. This
matches the previous GtkImage behavior.
2011-11-30 19:47:52 -05:00
Cosimo Cecchi
0c68227270 image: minor cleanup 2011-11-30 19:47:52 -05:00
Paolo Borelli
2ef5844bac Introduce gtk_render_insertion_cursor
The new function provides an API that takes the PangoLayout and index
as input params, this way it handles strong and weak cursors internally
factoring out all code duplicated in the widgets that need to render
cursors.

https://bugzilla.gnome.org/show_bug.cgi?id=640317
2011-12-01 01:22:39 +01:00
Paolo Borelli
3c6842222a Use the split-cursor setting for textview cursors
Explicitely check the split-cursor setting when drawing the textview
insertion cursor instead of relying on the cursor_direction set in the
textlayout. This makes the cursor drawin code more uniform with other
widgets in preparation to refactoring the cursor drawing code in a
shared function.

https://bugzilla.gnome.org/show_bug.cgi?id=640317
2011-12-01 01:22:39 +01:00
Paolo Borelli
0bff1af7a2 Rework GtkTextView cursor code.
Move the handling of primary/secondary cursors to gtktextdisplay, which
makes code simpler and more consistent to how GtkLabel and GtkEntry
draw cursors, which is useful in preparation to further refactoring.

https://bugzilla.gnome.org/show_bug.cgi?id=640317
2011-12-01 01:22:39 +01:00
Paolo Borelli
b3f850e6b9 Tiny cleanup.
https://bugzilla.gnome.org/show_bug.cgi?id=640317
2011-12-01 01:22:38 +01:00
Paolo Borelli
f18bbdff53 Remove draw_insertion_cursor in label and entry
Remove the the draw_insertion_cursor wrapper which just converts from
GtkTextDir to PangoDirection

https://bugzilla.gnome.org/show_bug.cgi?id=640317
2011-12-01 01:22:38 +01:00
Cosimo Cecchi
772459979f image: simplify code
We can unconditionally call into the icon helper methods now that we
removed the g_return_val_if_fail() checks.
2011-11-30 19:06:38 -05:00
Cosimo Cecchi
d47e82ffdd entry: simplify code
We can unconditionally call into the icon helper methods now that we
removed the g_return_val_if_fail() checks.
2011-11-30 19:05:34 -05:00
Cosimo Cecchi
864c5610f8 icon-helper: remove useless checks
When we change storage type, we always clear the rest of the object, so
these checks do not add any safety.
2011-11-30 19:04:17 -05:00
Cosimo Cecchi
d300ddc5e4 icon-helper: don't warn out when the icon size is GTK_ICON_SIZE_INVALID
We can call ensure_icon_size() for an empty image; don't warn out in
that case, but just return a zero width.
2011-11-30 18:32:01 -05:00
Cosimo Cecchi
e37c55aa3e icon-helper: don't reset pixel_size when clearing the helper
Don't reset the pixel size when clearing the helper; pixel-size is e.g a
property of GtkImage, which is stable unless explicitly set.
2011-11-30 18:15:05 -05:00
Cosimo Cecchi
5224302a30 entry: always prepare the style context when using it for entry icons
Make sure to always prepare the entry's style context for the entry icon
style when passing it to GtkIconHelper.
2011-11-30 16:39:59 -05:00
Cosimo Cecchi
126651f889 cellrendererpix: make sure to select the default helper as a fallback
If we don't have expander pixbufs, select the default helper to render
the icon, even if the cell is an expander. This mimics what the old code
did.
2011-11-30 16:39:59 -05:00
Cosimo Cecchi
0304cc04d3 cellrendererpix: port to GtkIconHelper 2011-11-30 16:39:59 -05:00
Cosimo Cecchi
a4d6505cb3 entry: port to GtkIconHelper 2011-11-30 16:39:59 -05:00
Cosimo Cecchi
adbfbb7278 dnd: port to GtkIconHelper 2011-11-30 16:39:59 -05:00
Cosimo Cecchi
f085dde830 image: port to GtkIconHelper
Use newly introduced GtkIconHelper to render pixbufs in GtkImage.
2011-11-30 16:39:59 -05:00
Cosimo Cecchi
b5d8d2c4a8 icon-helper: add GtkIconHelper private object
GtkIconHelper is a helper object to easily obtain a pixbuf from
different icon sources (e.g. a GIcon, an icon name, a stock id, ...).

Code is ported from GtkImage, which will be adapted in the next commit.
2011-11-30 16:39:59 -05:00
Stef Walter
d462f86aad GtkCssProvider: don't segfault when CSS file is not found
* Fix null dereference in gtk_css_provider_take_error()
 * And another in gtk_css_provider_emit_error()

https://bugzilla.gnome.org/show_bug.cgi?id=664537
2011-11-30 00:23:07 -05:00
Matthias Clasen
9b967ab8af XI2: Push error traps around XIQueryDevice calls
This may help against the crashes at resume time that some
people have been hitting when input devices mysteriously
disappear.
2011-11-30 00:16:43 -05:00
Federico Mena Quintero
830bc4304c [GtkFileChooserDefault] Don't destroy and re-create the filename entry
This is a leftover from the big rework to remove the expanded/collapsed mode
in Save mode.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-11-29 15:11:56 -06:00
Federico Mena Quintero
463c98a9d7 [GtkPathBar] Remove unused error argument
It used to be that _gtk_path_bar_set_file() would return an error if
it wasn't able to switch to the specified file, but that hasn't been
the case for a long while now, since the file chooser became async.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-11-29 15:11:54 -06:00
Paolo Borelli
58d247d7ae Avoid shadowing a variable
Move bg_color variable to an inner scope.
2011-11-29 21:28:30 +01:00
Federico Mena Quintero
7fb00c919e [path-bar] Add some comments to explain the async recursion on an I/O callback
Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-11-29 14:17:04 -06:00
Federico Mena Quintero
6ce48345ce [path-bar] Only reset the children's styles if the children actually changed
Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-11-29 14:17:02 -06:00
Federico Mena Quintero
07eb8d6952 Remove unused argument
Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-11-29 14:17:00 -06:00
Benjamin Otte
5317cb1263 filechooserdefault: Don't unref value twice
Double unref was introduced in eb02dacb37

https://bugzilla.gnome.org/show_bug.cgi?id=646461
https://bugzilla.gnome.org/show_bug.cgi?id=664137
2011-11-29 20:44:57 +01:00
Benjamin Otte
7d3109a855 treeview: Properly change cursor when row is collapsed
Previously, when the cursor was a descendant of the collapsed row,
the cursor path was set to the collapsed row, but this was not
communicated via cursor-changed events.
2011-11-29 20:44:57 +01:00
Benjamin Otte
bbf00265fc treeview: Reorder code a bit
This is mainly in preparation for the next commit, but also to reorder
the code to
1) prepare modification of tree
2) modify tree
3) emit signals
2011-11-29 20:44:57 +01:00
Mike Gorse
160e1c085c tests: Add new test that is currently failing 2011-11-29 20:44:57 +01:00
Benjamin Otte
c070e7acf5 treeview: Simplify code
Since the changes in commit 2b3de3dd this simplification is possible.
2011-11-29 20:44:57 +01:00
Benjamin Otte
806dca0677 treeview: Rename function
_gtk_tree_view_find_path() was not a name that not really described what
the function does. And I kept forgetting it. Also, it took the tree view
as an argument and that was completely unnecessary.
2011-11-29 20:44:57 +01:00
Benjamin Otte
b843aa14c4 tests: Add automatic expanding/collapsing
Makes the test test even more stuff.
2011-11-29 20:44:57 +01:00
Benjamin Otte
caa9ca94cc tests: Fix the iter stepping code
The old code actually was wrong and could cause assertions and crashes,
in particular when stepping out of a deep tree back onto the highest
layer.
2011-11-29 20:44:57 +01:00
Benjamin Otte
64ff56e718 tests: Check that the cursor keeps up to date
This actually demonstrates a bug where the treeview doesn't emit a
cursor-changed signal when the cursor row is deleted.
2011-11-29 20:44:57 +01:00
Benjamin Otte
763e4b9f45 reftests: Fix test for border-image addition 2011-11-29 20:44:57 +01:00
Cosimo Cecchi
924efd40e8 widget-factory: make one of the two spinbuttons active 2011-11-29 10:52:03 -05:00
Cosimo Cecchi
ae60f00ba4 themingengine: fix a typo 2011-11-29 10:52:03 -05:00
Cosimo Cecchi
41b56d87e7 themingengine: move code to make switch-case more clear
Code is more readable with the default case as the last one in the
switch block.
2011-11-29 10:52:02 -05:00
Yuri Myasoedov
03217c2019 Updated Russian translation 2011-11-29 00:08:56 +04:00
Cosimo Cecchi
f7d95b5fe3 pathbar: add the linked style class to GtkPathBar 2011-11-28 14:41:48 -05:00
Cosimo Cecchi
6740121fab stylecontext: add GTK_STYLE_CLASS_LINKED
"linked" is a style class for linked areas, such as a box containing
buttons belonging to the same control.
2011-11-28 14:41:48 -05:00
Javier Jardón
f920d968f6 gtk/gtkeditable: Some docs fixes 2011-11-28 15:23:00 +00:00
Cosimo Cecchi
10cfa90817 spinbutton: redesign to use an horizontal layout
Rewrite GtkSpinButton to use a touchscreen friendly horizontal layout.
Other features include:
- support for theming buttons with nth-child
- full support for RTL
- use + and - symbolic icons instead of arrows
- general streamlining and cleanup of a lot of related code

https://bugzilla.gnome.org/show_bug.cgi?id=663359
2011-11-28 09:40:23 -05:00
Alexander Larsson
03b7bb6e29 win32-theme: Make tabs look better 2011-11-28 10:06:38 +01:00
Alexander Larsson
eb44036346 Support border-image in theme_engine_render_frame_gap
This is similar to the normal frame rendering, but has a clip
region applied for the gap.
2011-11-28 10:05:29 +01:00
Alexander Larsson
267b51ec98 win32-theme: Add some margins on GtkScale trought to look like win32 2011-11-28 09:14:13 +01:00
Alexander Larsson
21c7e8cf47 win32-theme: Support custom margins in win32 theme parts 2011-11-28 09:13:54 +01:00
Alexander Larsson
7756f49995 Fix up makefile rules for parallel builds
The gtkwin32css.h generation code used a temporary filename that was also
used by some other files, which is racy. Use a unique one.
2011-11-28 09:12:28 +01:00
Alexander Larsson
7c092be0ce win32-theme: Make syntax for mixing theme parts more regular
This lets us extend the argument list better
2011-11-28 08:58:41 +01:00
Alexander Larsson
6898ba4f76 win32-theme: Make notebook tabs slightly better 2011-11-25 16:43:51 +01:00
Alexander Larsson
3f206dcd83 win32-theme: Fix background colors for new bg drawing 2011-11-25 16:40:25 +01:00
Alexander Larsson
db5e3872f5 Fix up background-origin now that we correctly handle the background color 2011-11-25 16:14:20 +01:00
Alexander Larsson
75642d3af2 css: Always draw the bg color under the bg image 2011-11-25 16:14:20 +01:00
Alexander Larsson
9fd4e954b5 Reftest background-origin with various background-clip values 2011-11-25 16:14:20 +01:00
Alexander Larsson
d8d7c7c171 Update background-area reftest for background-clip 2011-11-25 16:14:20 +01:00
Alexander Larsson
8411f1a279 Implement background-clip and background-origin 2011-11-25 16:14:19 +01:00
Alexander Larsson
330fd3b614 Add GtkCssArea enum
This will be used for background-clip and background-origin css properties.
2011-11-25 16:14:19 +01:00
Alexander Larsson
34e15566e3 Add reftest to test border-style: none
From the css docs at http://www.w3.org/TR/CSS2/box.html:

8.5.1 Border width: 'border-top-width', 'border-right-width', 'border-bottom-width',
'border-left-width', and 'border-width'

Computed value:  	absolute length; '0' if the border style is 'none' or 'hidden'

So, if i specify border-style none and a border-width > 0 that should give the
same result as border-width 0.
2011-11-25 16:14:10 +01:00
Alexander Larsson
c276f53796 Make computed value of border-width 0 if border-style none
From the css docs at http://www.w3.org/TR/CSS2/box.html:

    8.5.1 Border width: 'border-top-width', 'border-right-width', 'border-bottom-width',
    'border-left-width', and 'border-width'

    Computed value:  	absolute length; '0' if the border style is 'none' or 'hidden'
2011-11-25 15:36:08 +01:00
Alexander Larsson
91dcf4000b css: Convert border style parsing to use enums 2011-11-25 15:36:08 +01:00
Alexander Larsson
d85aabe1e3 Rename GTK_CSS_REPEAT_STYLE_NONE to GTK_CSS_REPEAT_STYLE_STRETCH
This is a private type, and the CSS default value is "stretch", which
is how we were parsing and printing NONE anyway.

With this fix we can use the enum stuff for printing/parsing
2011-11-25 15:36:08 +01:00
Alexander Larsson
2a42fad145 css: Use enum parsing for background repeat style 2011-11-25 15:36:08 +01:00
Alexander Larsson
8fb4b13730 css: Break out enum parse/print helper
We need this to parse non-GValue enums
2011-11-25 15:36:08 +01:00
Alexander Larsson
3e24029415 css: Parse enums with new case-insensitive helper 2011-11-25 15:36:08 +01:00
Alexander Larsson
1a68afffaf css: Add _gtk_css_parser_try_enum
This helps parsing GType enums in CSS, properly handling
CSS being case insensitive.
2011-11-25 15:36:08 +01:00
Alexander Larsson
c9a3332ede Add generation of private g-types for private headers
This starts with just the gtkcsstypesprivate.h header
2011-11-25 15:36:08 +01:00
Benjamin Otte
f412293a2d reftests: Make sure border-image-gradient keeps working
.. even with more advanced themes.
2011-11-25 15:12:45 +01:00
Benjamin Otte
9da7cc776c tests: Add testtreechanging
It's just a treestore going crazy while the treeview has to keep up.
2011-11-25 15:12:45 +01:00
Alexander Larsson
62b505174f win32: Make all GDK_WINDOW_TEMP always on top
This makes menus, popups and tooltips show above the windows
task bar.
2011-11-25 11:22:59 +01:00
Benjamin Otte
a63b6cc7f1 tests: Add prop editors to testtreeview
It tests treeviews, so we'd better be able to edit them :)
2011-11-24 18:29:45 +01:00
Benjamin Otte
9011bf9e3b reftests: Mark windows as popups
Improves performance, gets rid of resize grip.
2011-11-24 18:29:45 +01:00
Benjamin Otte
08d86fabc4 a11y: Implement ref_state_set using the new APIs
Various tiny semantic changes in here.

The big fix is that we consider every cell as visible and as showing if
the treeview is mapped.
This was also fixed in the tree dump test.
2011-11-24 18:29:45 +01:00
Benjamin Otte
178686ba11 a11y: Add get_renderer_state() to cell accessibles
Accessibles can use this function to query the state that their row
would be rendered with.
2011-11-24 18:29:45 +01:00
Benjamin Otte
bcafd9ba3c a11y: Add _gtk_cell_accessible_set_cell_data()
See the function documentation for details.

Also included is the implementation for the treeview, but no users yet.
2011-11-24 18:29:45 +01:00
Benjamin Otte
416b3ed204 treeview: Notify a11y about reordered rows
That way, no more signal handler is needed in the a11y code. Plus, we
avoid needless signal emissions for rows we don't care about.
2011-11-24 18:29:44 +01:00
Benjamin Otte
fbfbaa3d50 a11y: Don't create fake cell renderers 2011-11-24 18:29:44 +01:00
Florian Müllner
b72b4e79cf build: Add gmodule-2.0 dependency for gtk-query-immodules-3.0 2011-11-24 16:33:02 +01:00
Alexander Larsson
35ffd4cfea win32-theme: Fix up radio and menus in various states
This makes all states in widget-factory look ok
2011-11-24 11:50:02 +01:00
Alexander Larsson
c066136c3a win32-theme: Theme column headers 2011-11-24 11:50:01 +01:00
Christian Persch
af0537bce1 prop-editor: Implement property editing for GdkRGBA properties
Bug #664467.
2011-11-23 18:25:29 -05:00
Christian Persch
2831151405 Revert "tests: use GdkRGBA instead GdkColor"
This reverts commit 85747da972.

Conflicts:

	tests/prop-editor.c

Bug #664467.
2011-11-23 18:25:27 -05:00
Christian Persch
3abc31a2d1 color-button: Notify "color" and "alpha" properties when changing the rgba
Bug #664469.
2011-11-23 18:19:48 -05:00
Matthias Clasen
b84d37af4d GtkIconView: Fix a segfault
Keynav on an empty iconview was causing segfaults. This
was reported in https://bugzilla.gnome.org/show_bug.cgi?id=664456
2011-11-23 17:51:58 -05:00
Federico Mena Quintero
e8be9ec01f bgo#662814 - Don't print a g_warning() when GtkRecentManager can't find a file
Also, *do* add the file to the recently-used list, even if the file does not
exist yet.  This is used from the Save dialog, so even shitty apps which don't
add the file to GtkRecentManager, will get the file added from the Save dialog.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-11-23 09:44:26 -06:00
Cosimo Cecchi
92e6444163 widgetpath: correctly print the siblings index
In gtk_widget_path_to_string() we were counting siblings from zero
instead of one, resulting in confusing output.
2011-11-23 11:22:30 -05:00
Cosimo Cecchi
0d71f62388 frame: don't access padding before it's initialized
Move padding initialization before its first access.
2011-11-23 11:21:29 -05:00
Benjamin Otte
6a6af8464b gtk-demo: Fix segfault in editable cells demo
The strings can be freed when edting the description column. This does
not work with constant strings.
2011-11-22 23:29:04 +01:00
Benjamin Otte
6d0499a500 rbtree: Rewrite to not lose node order
_gtk_rbtree_reorder() was moving the node's data while reordering. As we
use the node pointer in the a11y code as a hash key, this didn't work.

So this rewrite changes that. As a bonus, it is less code and faster.
Woohoo!
2011-11-22 23:29:04 +01:00
Benjamin Otte
3166457802 tests: Add test for _gtk_rbtree_reorder() 2011-11-22 23:29:04 +01:00
Benjamin Otte
c1124df1f2 tests: Speed up rbtree test
We don't need so many tree consistency checks while creating when the
test is about something else.
2011-11-22 23:29:04 +01:00
Matthias Clasen
2b6f639bfa Fix a typo 2011-11-22 14:55:46 -05:00
Matthias Clasen
251ee41d8d Revert "Clean up includes"
This reverts commit c5e4af761c.
2011-11-22 13:41:59 -05:00
Matthias Clasen
abc787a5ac Move pangoft2 to Requires.private
We have pango in Requires anyway, and this is just so we
can call pangofc api ourselves.
2011-11-22 09:42:31 -05:00
Matthias Clasen
c5e4af761c Clean up includes
There's no sign of Pango in this header, so no need to include
pangocairo.h
2011-11-22 08:25:24 -05:00
Benjamin Otte
d8b6414567 rbtree: Remove needless tests
if the checks are run on the nil node, they will get the second test the
  way we expect it anyway, so it's unnecessary.
2011-11-22 03:42:31 +01:00
Benjamin Otte
ae99a9e04a rbtree: Simplify rotation functions
- Make sure the rotated nodes aren't nil
- Use existing functions for complex computations
- Don't use NULL checks for variables guaranteed to not be NULL/nil
2011-11-22 03:32:56 +01:00
Benjamin Otte
37786804e1 rbtree: Remove the nil member 2011-11-22 03:32:56 +01:00
Benjamin Otte
a4630d0e7b rbtree: Introduce _gtk_rbtree_is_nil()
Makes for more readable code than "== tree->nil" and allows removing the
nil member later.
2011-11-22 03:32:56 +01:00
Benjamin Otte
c3056951db rbtree: Introduce _gtk_rbtree_first()
... and use it.
2011-11-22 03:32:56 +01:00
Benjamin Otte
73a834336f rbtree: Replace nil node allocation with a preallocated nil
This has one major caveat: The new value is const, so read-only memory.
Any attempt to write to it will cause a crash. Note that we are not ever
supposed to write to it, but bugs happen...
2011-11-22 03:32:56 +01:00
Matthias Clasen
fa89423346 Bump version 2011-11-21 18:34:11 -05:00
Matthias Clasen
84c0ccad47 3.3.4 2011-11-21 18:14:13 -05:00
Matthias Clasen
7c6bbf59d7 More updates 2011-11-21 17:12:27 -05:00
Benjamin Otte
e2f2289d72 tests: Add a test for the rbtree code. 2011-11-21 22:33:46 +01:00
Benjamin Otte
647c441e26 rbtree: Don't write to nil node
The code used to set nil->parent, which could cause segfaults. Don't do
that. We also need to pass the parent explicitly to the fixup code,
because the node during fixup may be the nil node.
2011-11-21 22:33:46 +01:00
Benjamin Otte
f4fe921a17 rbtree: Add a local variable
This will be needed in the next patch, and I wanted to split that patch
up.
2011-11-21 22:33:46 +01:00
Benjamin Otte
02671f9ec9 rbtree: Move to an approach where we don't move contents
So instead of copying the children and height to the new node, we keep
the old node and copy all the old stuff to it.

This is necessary so the accessibility code can use the node as a key in
the hash table or store the node as a reference to the row instead of
GtkTreeRowReference. And because it already does that (oops), this fixes
a bunch of segfaults with a11y enabled.
2011-11-21 22:33:45 +01:00
Benjamin Otte
1dd9dd45c1 rbtree: Use gtk_rbnode_adjust() even more
Use it for the modified node in gtk_rbnode_remove(). Cleans up the code
quite a lot.
2011-11-21 22:33:45 +01:00
Benjamin Otte
769186dbff rbtree: Use gtk_rbnode_adjust()
Make gtk_rbnode_remove() use it when unlinking the node.
2011-11-21 22:33:45 +01:00
Benjamin Otte
ba7a0a0188 rbtree: Use gtk_rbnode_adjust() more.
Make _gtk_rbtree_node_set_height() use it.
2011-11-21 22:33:45 +01:00
Benjamin Otte
7b2d414222 rbtree: Use gtk_rbnode_adjust() more
Make _gtk_rbtree_insert_before() use it.
2011-11-21 22:33:45 +01:00
Benjamin Otte
01a44e2a16 rbtree: Use gtk_rbnode_adjust()
Make _gtk_rbtree_insert_after() use it.
2011-11-21 22:33:45 +01:00
Benjamin Otte
22a4c15b4f rbtree: Split out a common function
gtk_rbtree_adjust() will adjust the summed values of a node and all its
parents in the tree. Currently only implemented by splitting out the
function from gtk_rbtree_free().
2011-11-21 22:33:45 +01:00
Benjamin Otte
54f3fbfe26 rbtree: Don't set variable twice 2011-11-21 22:33:45 +01:00
Benjamin Otte
6168a64713 rbtree: Add assertions to clarify usage 2011-11-21 22:33:45 +01:00
Benjamin Otte
69a516018f rbtree: Mark all debug sections as debug 2011-11-21 22:33:45 +01:00
Benjamin Otte
af2ebe638c rbtree: Make debug functions private
They're not used elsewhere
2011-11-21 22:33:45 +01:00
Cosimo Cecchi
79bbce5577 notebook: use the current page allocation when computing the redraw area
Instead of taking the first page and trying to adjust the rect with
random padding values, take the current page, as it's always guaranteed
to be at least as tall as inactive tabs.
This fixes some annoying 1px drawing artifacts while switching tabs when
the theme disables notebook padding.

https://bugzilla.gnome.org/show_bug.cgi?id=664494
2011-11-21 14:19:36 -05:00
Cosimo Cecchi
f01162c727 notebook: properly subtract the initial_gap width from the tab space
Instead of modifying the allocation.

https://bugzilla.gnome.org/show_bug.cgi?id=664494
2011-11-21 14:19:36 -05:00
Matthias Clasen
7814718152 Drop uses of @returns syntax 2011-11-21 13:12:58 -05:00
Matthias Clasen
7e8b7a72ac Prevent local filesystem influence in the a11y tests
By using the 'unix' gio volume monitor, we avoid variation
in the file chooser that otherwise breaks the 'pickers' test.
2011-11-21 13:05:47 -05:00
Alexander Larsson
9275b87b6a win32: Don't double free stuff when finalizing drag context
We were freeing stuff that was already freed in the parent class
finalizer.
2011-11-21 15:03:53 +01:00
Alexander Larsson
0d94b974b3 win32: Don't dereference keyboard_grab if it is NULL
This fixes a crash in e.g. testdnd
2011-11-21 14:37:57 +01:00
Alexander Larsson
4760b3e2bd win32: Make gdk_drag_context_new static 2011-11-21 14:34:06 +01:00
Dieter Verfaillie
2fb8b97b65 win32: get rid of GdkDragContextPrivateWin32 and related machinery.
This turns GdkWin32DragContext into a proper GdkDragContext subclass.
Because we now correctly initialize GdkWin32DragContext in
gdk_drag_context_new, we no longer crash immediatly when a DnD
operation is initialized (the find_window, drag_status, ... vfuncs
where all pointing to 0x0 instead of their proper win32 implementations).

We now try to consistently refer to GdkDragContext as "context",
GdkWin32DragContext as "win32_context" and the ole2 related
target_drag_context and source_drag_context as "ctx".

Members of GdkWin32DragContext only used by the ole2 DnD codepaths
are now explicitly marked with a ole2_dnd_ prefix.
2011-11-21 14:34:06 +01:00
Alexander Larsson
c533482f80 Convert gtk-win32.css to unix line endings 2011-11-21 14:31:17 +01:00
Alexander Larsson
c6dab00595 Add gtk_symbolic_color_new_win32 to gtk.symbols 2011-11-21 13:53:31 +01:00
Alexander Larsson
07e284a1f0 win32-theme: Fix up docs for gtk_symbolic_color_new_win32 2011-11-21 13:52:39 +01:00
Alexander Larsson
4bfa35417b Merge branch 'win32-theme2' 2011-11-21 13:49:44 +01:00
John Ralls
1e737bb61b [icons] text-x-generic isn't a generated icon
Calling it one causes maintainer-clean to delete it.
2011-11-20 16:38:34 -08:00
Javier Jardón
5c6656e485 gtk/gtkapplication.c: Fix typo 2011-11-20 23:05:47 +00:00
Cosimo Cecchi
4626edb889 frame: make sure to allocate the CSS border width
Similar to GtkNotebook, GtkFrame was only allocating space for the
padding width, and not the border.

This could be seen by just running tests/testframe. With a theme that
renders frame borders, setting xthickness = 0 in the test draws the
button border over the frame border, which is wrong.

https://bugzilla.gnome.org/show_bug.cgi?id=664342
2011-11-20 16:03:31 -05:00
Cosimo Cecchi
b9b01f99b6 frame: add GTK_STYLE_CLASS_FRAME in _init()
Instead of adding it every time we use the GtkStyleContext, just add it
in _init().

https://bugzilla.gnome.org/show_bug.cgi?id=664342
2011-11-20 16:03:31 -05:00
Cosimo Cecchi
009224a80e notebook: make sure to allocate the CSS border width
Instead of taking only the CSS padding into account when allocating the
notebook children, also allocate the border width.

https://bugzilla.gnome.org/show_bug.cgi?id=664342
2011-11-20 16:03:31 -05:00
Rui Matos
e60fa49fa7 Bug 653676 - Expand/Collapse doesn't respond after one click
Ignore leave-notify-event when mode is GDK_CROSSING_GTK_[UN]GRAB.
Just [un]grabbing shouldn't cause us to [un]prelight the current arrow
and node.
2011-11-20 21:00:08 +01:00
Kristian Rietveld
44a064fe30 Don't call scroll to cell if the tree view is empty
Account for the case when gtk_drag_finish() didn't actually add a row
(can happen when dragging from an empty tree view to itself ...).
2011-11-20 20:15:48 +01:00
Kristian Rietveld
a069ec662f Bug 660554 - gtk_tree_view_drag_begin: assertion `path != NULL' failed
Turned assertion into silent return.

This assertion is only hit when dragging from an empty tree view.  In
this case, gtk_tree_view_begin_drag() is triggered from gtkdnd.c and not
from gtk_tree_view_maybe_begin_dragging_row().  We actually want to
cancel the drag at this point, but that is not possible with the GTK+
API as far as I can see.

The alternative is to not allowing the drag to start.  This could be
done by simply unsetting the tree view as drag source when it is empty
and setting it as drag source again when rows are added.  I didn't
choose to go with this for now, since this will likely break third party
code.
2011-11-20 20:15:39 +01:00
Kristian Rietveld
64a38bdb82 quartz: fix coding style in quartz-version of gtk_drag_begin_internal 2011-11-20 20:15:32 +01:00
Kristian Rietveld
477b7f27e0 quartz: do not call gdk_drag_begin() twice
This makes drag and drop work again on Quartz.
2011-11-20 20:15:27 +01:00
John Ralls
eafff409c9 [Bug 664238] GTK apps crash when dragging something
Corrects a bad condition in a test in 085b98f4
2011-11-20 10:35:40 -08:00
Jorge González
aa17b2c578 Updated Spanish translation 2011-11-20 10:40:15 +01:00
Matthias Clasen
cd2af02c48 Adapt iconview a11y test output 2011-11-19 19:53:43 -05:00
Matthias Clasen
c3d96ff2c0 Improve AtkText implementations
There was some regressions from the recent display line fix;
while fixing it improve the test coverage and make GtkEntry
and GtkTextView return identical results.
2011-11-19 19:28:48 -05:00
Matthias Clasen
bcc98cf14c Remove leftover debug spew 2011-11-19 18:13:42 -05:00
Matthias Clasen
f2569ba92b Add a missing static 2011-11-19 18:08:18 -05:00
Matthias Clasen
5e11bf18d5 Fix the build 2011-11-19 17:57:26 -05:00
Matthias Clasen
e49fb9f2ac Updates 2011-11-19 16:15:46 -05:00
Matthias Clasen
b63724b08e Drop the Beagle search engine
It is not actively maintained.
2011-11-19 15:32:12 -05:00
Michel Dänzer
ab34c79896 Fix gdk_cairo_region_create_from_surface on big endian
gdk_cairo_region_create_from_surface doesn't work correctly on PPC.
This is most prominently seen with the GTK window resize grip, the
shape of which is mirrored every eight pixels horizontally.

At the same time, use an A1 surface for the resize grip shape to
eliminates an A8->A1 surface conversion.
2011-11-19 12:23:27 -05:00
Alexander Larsson
88d059ff09 win32: Default to gtk-win32 theme 2011-11-18 16:54:05 +01:00
Alexander Larsson
f59836a4d0 Build in default win32 css as gtk-win32 2011-11-18 16:54:04 +01:00
Alexander Larsson
a38c48be92 Build gtkwin32css.h from gtk-win32.css 2011-11-18 16:54:04 +01:00
Alexander Larsson
e9ac60830d win32-theme: Add gtk-win32.css 2011-11-18 16:53:55 +01:00
Michael Natterer
6bb495f6bd gdk: remove the GET_EFFECTIVE_KEYMAP() stuff from gdkkeys-x11.c
We don't support passing a NULL keymap any longer. Also pull some
precondition checks into the parent class.
2011-11-18 16:43:41 +01:00
Michael Natterer
90e73dd1c4 gdk_x11_keymap_get_modifier_mask(): always return a value 2011-11-18 15:26:09 +01:00
Michael Natterer
9c79f9f868 Turn the private #define for the group-shifting modifier into API
Add GDK_MODIFIER_INTENT_SHIFT_GROUP to enum GdkModifierIntent
and handle it in gdk_keymap_get_modifier_mask(). Add an X11
impl of the method and return keymap_x11->group_switch_mask.
Return 0 from the default impl because we don't know.
2011-11-18 15:14:31 +01:00
Michael Natterer
1c8481a6ea Bug 663856 - Make option-foo accelerators use the right symbol
If the keyboard group shifting modifier is *also* a normal
accelerator modifier, we need to special case it when calling
gdk_keymap_translate_keyboard_state(), so we get the right
key symbol for accelerators (for example we want Option-O,
not Option-Ø displayed in menu items). This patch should only
affect quartz where the Alt key both shifts the group and can
be used as accel modifier, and not X11 or Win32 where AltGr
is not used for accelerators.

- fix quartz' gdk_keymap_translate_keyboard_state() to return
  the right consumed_modifiers
- add _gtk_translate_keyboard_accel_state() which does the
  special casing
- use it everywhere instead of gdk_keymap_translate_keyboard_state()
2011-11-18 13:06:27 +01:00
Murray Cumming
43dd705308 Fix tiny docs typo. 2011-11-18 11:30:07 +01:00
Alexander Larsson
5f782d2449 win32-theme: Support mixing parts
We need this to do something about the non-existing inconsistent
radio button state in win32.
2011-11-18 11:06:32 +01:00
Alexander Larsson
3309639c1c Add support for win32 theme colors as symbolic colors 2011-11-18 10:16:38 +01:00
Alexander Larsson
ca829b484c Add pulse style class and use in progress bar and entry
This is used for indeterminate progress reporting.
2011-11-18 10:15:04 +01:00
Alexander Larsson
68c74e1427 Set top/bottom style classes on spinbutton buttons 2011-11-17 19:43:13 +01:00
Alexander Larsson
a038c589db Add top/left/bottom/right style classes to steppers
This is needed for e.g. win32 theming, but is also generally
useful.
2011-11-17 17:34:05 +01:00
Alexander Larsson
fdbf029df3 win32-theme: Support multiple parts being combined
This is needed for e.g. scrollbar sliders
2011-11-17 14:34:39 +01:00
Alexander Larsson
5e04549548 Render background image if set for checks and options
The default theme engine draws a fallback check/radio image, but
doesn't let you replace this. We now check if a background image
is set and if so render that instead of the default fallbacks.
2011-11-17 12:30:09 +01:00
Alexander Larsson
bc38cf1ff8 win32-theme: Support -gtk-win32-size CSS value 2011-11-17 12:30:08 +01:00
Alexander Larsson
abe6598a13 Add initial cut at win32 theme support for CSS
We now support -gtk-win32-theme-part(class,part,state) in background
and border-image CSS properties. This renders the corresponding
theme part using DrawThemeBackground() and acts as a base for a
CSS based windows theme.

Note that we build the parsing code even on non-win32 so that
all themese will parse the same on all arches. We draw pink instead
of the actual theme parts on non-win32 though.
2011-11-17 12:29:03 +01:00
Alexander Larsson
8b644b40b1 make _gtk_style_property_resolve copy the result to an output value
This is preparation for allowing it to return a newly created
value, rather than just copying one.
2011-11-17 12:27:23 +01:00
Alexander Larsson
2cf3ff956a Actually pass in a StylePropertyContext when getting images
This is in preparation for getting size-dependent results back
with the win32 themes.
2011-11-17 12:27:23 +01:00
Alexander Larsson
7104b4b575 Remove _gtk_style_properties_peek_property
We want to move to a world where getting style properties can
allocate a new value, depending on the style property context.
In this world we can't expose "peeking" a property, as we neet
to return a ref to the property that is newly created.

So, we move the peek code into get_property and use get_property
from get_valist.
2011-11-17 12:27:22 +01:00
Alexander Larsson
c09148ca09 Add GtkStylePropertyContext and use it in when getting style properties
At the toplevel we have _gtk_theming_engine_get, which lets us pass
in a property context with (atm) the size to get the property for.
Then there is a lot of plumbing to push this down into the lower
layers of the style property code until finally hitting
the property resolvers.

I need this because I will be adding a property resolver for win32
theme parts, and they render differently depending on the size
(i.e. they don't scale linearly). The idea is that the code
to get the background properties will pass in the final size
and we will resolve the theme part specification to that particular
size.

If the old non-context calls are used we just hardcode a size
of 100x100.
2011-11-17 12:27:22 +01:00
Alexander Larsson
e953465e33 Save a generic boxes source in GtkImageBorder
We used to special handle gradient, but we want to be able to store
other sources (that will eventually resolve to cairo patterns).
For instance, this is needed to handle win32 theme part sources.
2011-11-17 12:27:21 +01:00
Alexander Larsson
361fcabbde win32: make fixup_event correctly ref all GdkWindow members
This fixes some crashes related to owner changes and selections.
2011-11-17 12:25:56 +01:00
Alexander Larsson
6690e6dc58 ref, don't unref, requestor member when copying GdkEvents
This seems like a typo, we should obviously ref the member when
copying. Apparently nobody copied GDK_SELECTION_* events...
2011-11-17 11:59:27 +01:00
Michael Natterer
0308352417 notebook: don't leak the action widgets
The notebook owns them, so it must destroy them in destroy().
(cherry picked from commit 87ebfb19fd)
2011-11-17 01:07:37 +01:00
Benjamin Otte
73e54ab727 viewport: Get rid of deprecation warnings 2011-11-17 00:46:15 +01:00
Benjamin Otte
65ceff35f9 viewport: Don't use deprecated functions 2011-11-17 00:46:15 +01:00
Benjamin Otte
5bacd8e019 viewport: adjustments are never NULL
So there's no need to check for that in the getters.
2011-11-17 00:46:15 +01:00
Benjamin Otte
2939eae20f viewport: Initialize the adjustment in the init function 2011-11-17 00:46:15 +01:00
Benjamin Otte
0ef224766a viewport: Don't unset the adjustment on finalize
We unset it on destroy already. This makes it consistent with all other
scrollables.
2011-11-17 00:46:15 +01:00
Xan Lopez
2c065d716b treeview: fix the build 2011-11-16 22:41:57 +01:00
Cosimo Cecchi
9986b26c0b treeview: use gtk_tree_view_ensure_background() consistently
In gtk_tree_view_state_flags_changed() we were setting the background on
the bin_window without the necessary "view" style class, making the
treeview render with the wrong color in some circumstances (such as when
adding an empty treeview in a window, as spotted by Brian Smith).
2011-11-16 16:09:00 -05:00
Cosimo Cecchi
8d97d8ca3c treeview: factor out gtk_tree_view_ensure_background()
We'll use it shortly.
2011-11-16 15:59:47 -05:00
Kjell Ahlstedt
e8bb2e4545 Maintain map/unmap invariants in GtkRecentChooserDialog
We used to explicitly map and unmap the child GtkRecentChooserWidget when
mapping and unmapping the dialog, respectively. Now that GtkContainer actually
unmaps child widgets (instead of avoiding that), we can assume that the
child GtkRecentChooserWidget will be unmapped when we want it to be.

This fixes a warning from gtk_widget_verify_invariants(), as we were mapping
our child widget before calling our parent class' ::map() handler. Bug #659257.
2011-11-16 19:56:11 +01:00
Bastien Nocera
ab27fa9bba tests: Add tests for keypad keys parsing
See https://bugzilla.gnome.org/show_bug.cgi?id=606727
2011-11-16 18:49:54 +00:00
Bastien Nocera
de47b90fd1 gtk: Parse keypad numbers correctly
Try to find keycodes for keysyms at level-0 in the keymap, but don't
fail to parse if we can find those in level-1. This fixes the
parsing of numerical keys on the keypad, which require a shift level
through Num-Lock.

https://bugzilla.gnome.org/show_bug.cgi?id=606727
2011-11-16 18:47:39 +00:00
Bastien Nocera
ef5476f16a tests: Check "without keycode" code path too
And see whether the output of gtk_accelerator_parse()
matches that of gtk_accelerator_parse_with_keycode()
2011-11-16 18:05:41 +00:00
Bastien Nocera
c1bdbe610a Revert "tests: Disable accel test until fixed"
The test now works correctly.

This reverts commit ba397a3431.
2011-11-16 15:02:06 +00:00
Matthias Clasen
43705c7360 Update comment to new realities 2011-11-16 00:27:14 -05:00
Benjamin Otte
acbf37bae7 a11y: Merge function into only caller
Also cleann up comments that are misleading now.
2011-11-16 04:39:26 +01:00
Benjamin Otte
a4b88c47cd treeview: Call a11y functions for culmn changes directly
This way, the a11y code knows if a column was reordered, added or
removed and can do the right things instead of trying to guess and
getting it wrong.

Also, this patch finalizes the changes so that only visible columns
exist to the accessibility interface.
2011-11-16 04:39:25 +01:00
Benjamin Otte
5041286166 a11y: Unify column-by-index getting
We are only ever interested in visible columns. Invisible columns do not
exist for all a11y cares.
2011-11-16 04:39:25 +01:00
Benjamin Otte
857fa84796 tests: Add an invisible column to the tree test
This one should be invisible if everything works as it should.
2011-11-16 04:39:25 +01:00
Benjamin Otte
2e48bb2ccd tests: Add checks for row/column index to accessibility-dump 2011-11-16 04:39:25 +01:00
Benjamin Otte
74e8ac1208 tests: Don't dump stuff twice for tables
Captions and headers are printed as part of the children, so we can
avoid the duplication by just printing the name.
2011-11-16 04:39:25 +01:00
Benjamin Otte
bbf59c75d7 a11y: Use gtk_tree_view_get_n_columns()
In fact, invent our own function get_n_columns() which actually only
counts the visible functions, because that's the only ones we care
about.

The places where it's not used yet will be changed in the coming
patches.
2011-11-16 04:39:25 +01:00
Benjamin Otte
18181f5417 API: treeview: Add gtk_tree_view_get_n_columns() 2011-11-16 04:39:25 +01:00
Benjamin Otte
f7df354c5a a11y: Fix get_column_index() 2011-11-16 04:39:25 +01:00
Benjamin Otte
f7fed686fd a11y: remove argument from get_column_number()
The argument was always FALSE.
2011-11-16 04:39:25 +01:00
Benjamin Otte
aa1cab1ec2 treeview: Simplify a check
Use the same method as elsewhere.
2011-11-16 04:39:25 +01:00
Benjamin Otte
81f9082d2a treeview: Minor beautification 2011-11-16 04:39:24 +01:00
Benjamin Otte
0c99022956 tests: Up the ante
Put 10000 rows into the tree-performance test, so the tests don't finish
in <1s. That's too little for profiling.
2011-11-16 04:39:24 +01:00
Benjamin Otte
b1fe9b6b8b a11y: remove useless argument
The argument is unused these days, so don't confuse people with it.
2011-11-16 04:39:24 +01:00
Benjamin Otte
5af4ce6a66 a11y: Remove clean_rows function
It doesn't do anything anymore.
2011-11-16 04:39:24 +01:00
Benjamin Otte
c2410d0d04 a11y: Don't crete cell infos for non-children
When we use a container inbetween, this ensures that the cell infos
don't replace each other in the hash table.
2011-11-16 04:39:24 +01:00
Benjamin Otte
0b26a15b62 a11y: Make find by index lookup use the hash table again
This should give back the performance that was lost with the commit
"a11y: Make the cache lookup function inefficient".
2011-11-16 04:39:24 +01:00
Benjamin Otte
85fee33092 a11y: Add a hash function for cell infos
Note that comparing the tree is not necessary as the nodes are already
unique per row.
2011-11-16 04:39:24 +01:00
Benjamin Otte
104ddf8a6d a11y: Compute the cell index quicker
We have the node available, so we can compute it from there.
2011-11-16 04:39:24 +01:00
Benjamin Otte
a890a61253 treeview: Add _gtk_rbtree_node_get_index()
.. as a replacement for _gtk_rbtree_node_find_parity(). Instead of 1 or
0, the function now returns the index of node in the complete tree
(counting from the root). And this is of course identical to the row
number.
2011-11-16 04:39:24 +01:00
Benjamin Otte
b8dec90f3a a11y: Compute index the easy way
index is row_index * n_columns + column_index

We use it everywhere, why not here?
2011-11-16 04:39:24 +01:00
Benjamin Otte
acc5627e39 a11y: Redo indexing
We now index rows by actual expanded row number and don't count them
ourselves no more.
2011-11-16 04:39:24 +01:00
Benjamin Otte
92a2284bb2 tests: Ensure the treeview is expanded
Otherwise the test code might ignore collapsed rows, which makes it go
rather fast.
2011-11-16 04:39:23 +01:00
Benjamin Otte
e927a5b2c7 treeview: Redo row tracking
Track the RBNode/RBTree instead of keeping a TreeRowReference. This is a
whole lot faster and less error-prone.

Also, notify the accessible of removal of rows before actually removing
them, so we have a chance to clean up.
2011-11-16 04:39:23 +01:00
Benjamin Otte
0b716e77ea widget: Add _gtk_widget_peek_accessible()
This function returns the accessible if it already exists. This way we
can call functions on the accessible from the widget itself instead of
having to rely on signals.
2011-11-16 04:39:23 +01:00
Benjamin Otte
24e4a03af2 a11y: Remove needless checks
The cell_row_ref and cell_col_ref variables are always non-NULL, so
there's no need to check it.
2011-11-16 04:39:23 +01:00
Benjamin Otte
918a9d0e3a a11y: Add a cell_info_get_path() function
Reads better and we only need to change it in one place.
2011-11-16 04:39:23 +01:00
Benjamin Otte
5096df14c3 treeview: Remove unnecessary variable
tmptree has the same value as tree everywhere, so just use tree instead.
2011-11-16 04:39:23 +01:00
Benjamin Otte
9f91405d6c a11y: Mark object as defunct in destroy notify
Instead of requiring a special functio to be called before just removing
from the hash table. This simplifies code a lot that used to remove from
the hash table.
2011-11-16 04:39:23 +01:00
Benjamin Otte
bd1bc88ed2 a11y: Remove in_use member
After the latest changes, it is now always TRUE, so adjust the code
accordingly.
2011-11-16 04:39:23 +01:00
Benjamin Otte
40b7e3044e a11y: Don't garbage collect anymore
Instead, remove cell infos immediately from the hash table.
2011-11-16 04:39:23 +01:00
Benjamin Otte
64b825b87b a11y: Improve cell_infos table
- Name it properly
- Make it just a set of cell_infos

Currently it's using direct hash, but as long as we don't actually
lookup stuff from it, who cares...
2011-11-16 04:39:23 +01:00
Benjamin Otte
71011f3e1e a11y: Implement find_cell_info() using qdata lookup
That should be orders of magnitude faster then iterating over a hash
table.
2011-11-16 04:39:23 +01:00
Benjamin Otte
331a4c92b0 a11y: Store the cellinfo in the cell's qdata 2011-11-16 04:39:22 +01:00
Benjamin Otte
d265636526 a11y: Remove index from cellaccessible
That way we also get rid of the refresh_index function.
2011-11-16 04:39:22 +01:00
Benjamin Otte
f05d3f66b1 a11y: Don't use the cell's index anymore
We implement get_cell_index() now, so it's no longer necessary.
As a side effect, we need a different index for our hash table (which
now has a wrong name, but that will soon change).
2011-11-16 04:39:22 +01:00
Benjamin Otte
35b667a409 a11y: Implement get_child_index in treeview 2011-11-16 04:39:22 +01:00
Benjamin Otte
d5b52ae3b1 a11y: Implement get_child_index in treeviewaccessible 2011-11-16 04:39:22 +01:00
Benjamin Otte
b526375e8f gtk: Fix compiler warnings from include fixes 2011-11-16 04:31:06 +01:00
Benjamin Otte
a9dd3e559a a11y: Make the cache lookup function inefficient
Ahem.

This is in preparation for future changes and is not meant to stay this
way. But I want to change the hash table's keys and this is way easier
when nobody is using them.
2011-11-16 04:31:06 +01:00
Benjamin Otte
ac29108586 a11y: Change function declaration
Returning an int seems way easier than having an int out argument to a
void function. Also, it doesn't lead to uninitialized memory, what a
concept!
2011-11-16 04:31:06 +01:00
Benjamin Otte
533ee181de a11y: Add a special-case for cell index querying
I could have tried to make GtkContainerCellAccessible implement
GtkCellAccessibleParent, but the current implementation of that
interface doesn't make sense for it.
2011-11-16 04:31:06 +01:00
Benjamin Otte
02fd1e5a62 a11y: Add _gtk_cell_accessible_parent_get_child_index()
This will soon replace the shenanigans we do to keep the index of cells
current.
2011-11-16 04:31:06 +01:00
Benjamin Otte
2bd69cbf8c a11y: Remove idle handler for focus notifications 2011-11-16 04:31:06 +01:00
Benjamin Otte
0c2f454b41 a11y: Re-implement gtk_tree_view_accessible_get_n_rows()
... using the new _gtk_rbtree_find_index().
2011-11-16 04:31:06 +01:00
Benjamin Otte
635e53433d treeview: Add _gtk_rbtree_find_index()
Uses the parity to do an O(log N) search for the nth element in the
tree in display order of the treeview.
2011-11-16 04:31:06 +01:00
Benjamin Otte
59097ecef4 treeview: Rename "parity" to "total_count"
Now that we use it to actually count the rows instead of just even/odd,
it's better to reflect that in the variable name.
2011-11-16 04:31:06 +01:00
Benjamin Otte
320df163a2 treeview: Make the parity actually store the row number
Instead of just storing the least significant bit of the row number,
store the full row number. This will soon be useful for accessibility.
But CSS could like it, too.
2011-11-16 04:31:06 +01:00
Benjamin Otte
c8e2cd27e9 treeview: Remove special cases when computing parity
The parity of the nil npode is always 0, so no need to check for the nil
node first.
2011-11-16 04:31:06 +01:00
Benjamin Otte
1a241f2348 treeview: Only compute parity once when rendering
This shouldn't affect performance too much, but it I just found it so I
fixed it.
2011-11-16 04:31:05 +01:00
Stef Walter
5b6f0b9893 GtkSpinButton: Clarify clamping behavior in gtk_spin_button_set_range doc
* If the current value is outside the range, it will be adjusted
   to fit within the range, otherwise it will remain unchanged.

https://bugzilla.gnome.org/show_bug.cgi?id=664021
2011-11-15 07:47:35 +01:00
Matthias Clasen
9ad67a3186 Avoid double inclusion of a migration chapter 2011-11-15 00:47:16 -05:00
Matthias Clasen
4904a2f45b GtkTextViewAccessible: Respect display lines
This special tweak was lost when porting from GailTextUtil.

https://bugzilla.gnome.org/show_bug.cgi?id=663994
2011-11-15 00:25:18 -05:00
Martin Pitt
76cd14410c Fix GDK linking for Gtk typelib and example builds
Add missing GDK linking to GIR build and examples:

  GISCAN Gtk-3.0.gir
  CCLD   gtk-query-immodules-3.0
./.libs/libgtk-3.so: undefined reference to `gdk_keymap_get_modifier_mask'
./.libs/libgtk-3.so: undefined reference to `gdk_modifier_intent_get_type'
./.libs/libgtk-3.so: undefined reference to `gdk_window_begin_resize_drag_for_device'
./.libs/libgtk-3.so: undefined reference to `gdk_event_triggers_context_menu'
collect2: ld returned 1 exit status

  CCLD   grid-packing
../gtk/.libs/libgtk-3.so: undefined reference to `gdk_keymap_get_modifier_mask'
[...]

https://bugzilla.gnome.org/show_bug.cgi?id=664027
2011-11-15 06:18:18 +01:00
Yuri Kozlov
90e171e6f9 Fixed Russian translation 2011-11-14 23:50:52 +04:00
Matthias Clasen
005451e3f3 GtkComboBoxAccessible: Make keybindings work
https://bugzilla.gnome.org/show_bug.cgi?id=659151
2011-11-14 09:26:15 -05:00
Matthias Clasen
2777078e21 Add combobox a11y tests 2011-11-14 09:26:15 -05:00
Matthias Clasen
a6cb6c6d39 Add some keybindings to the a11y entries test 2011-11-14 09:26:15 -05:00
Martin Pitt
1c222372d9 Fix gtk_tree_view_get_tooltip_context() transfer annotation
The default (out) transfer mode is "full", but the passed "model" pointer gets
set to gtk_tree_view_get_model() which is "transfer none". This caused Python
programs to free the model after calling this, causing crashes.
2011-11-14 14:33:51 +01:00
Matthias Clasen
6ae78c3cf1 Add a link to the Windows port wiki page 2011-11-14 08:01:23 -05:00
C. Scott Ananian
981efc90b4 Fix uninitialized digest_len field, causing WebSocket handshake to g_assert.
g_checksum_get_digest checks to ensure that the passed digest_len is long
enough to hold the digest, before setting it to the actual length of the
digest returned.  Digest_len is uninitialized in the code, so if you're
lucky it will be larger than 20 and everything will work fine.  If you're
unlucky, g_checksum_get_digest will return either -1 or some number less
than 20, and the g_assert(digest_len==20) will fail.
2011-11-14 09:55:19 +01:00
Michael Natterer
e19cbd7a04 quartz: fix a race condition when waking up the CGRunLoop
Wake up the run loop unconditionally (don't check if it is waiting) because
it might go into waiting state right after we checked for it. Fixes GIMP
startup (which has a lot of GIOChannel I/O but zero NSEvents) from several
minutes to a few seconds.
(cherry picked from commit 0729cdc9a1)
2011-11-11 23:58:43 +01:00
Matthias Clasen
242b1f12f8 GtkProgressbar: respect the range of 'fraction'
The setter should not set the property to values outside the allowed
range.

https://bugzilla.gnome.org/show_bug.cgi?id=663825
2011-11-11 10:36:09 -05:00
Rico Tzschichholz
4a43c062ac Fix some implicit declaration warnings
There were some includes of gtkmain.h missing
2011-11-11 13:06:56 +01:00
Alexander Larsson
a2b879fe53 win32: Make grab cursors work again 2011-11-10 21:32:50 +01:00
Alexander Larsson
2f14732b1d win32: Fix gdk_win32_window_translate
We now do proper handling of existing invalid regions, and
we use ScrollDC which allows us to specify the right clip
region rather than just the bounding rect.
2011-11-10 17:41:13 +01:00
Dieter Verfaillie
68d28aad97 win32: fix pasting screenshots taken with PrintScreen or Alt+PrintScreen
These are found on the clipboard in the biCompression == BI_BITFIELDS &&
biBitCount >= 16 format. In this case the BITMAPINFOHEADER is followed
by three DWORD specifying the masks of the red green and blue components,
but bfOffBits was not being adjusted accordingly.

Based on Massimo's comment on bug 631384 and verified on
http://msdn.microsoft.com/en-us/library/dd183386%28v=VS.85%29.aspx

https://bugzilla.gnome.org/show_bug.cgi?id=631384
2011-11-10 17:41:12 +01:00
Dieter Verfaillie
4e10d9604b win32: fix some typos 2011-11-10 17:41:12 +01:00
Alexander Larsson
52be8cb9e9 win32: Fix some warnings 2011-11-10 17:41:11 +01:00
Alexander Larsson
11e9c6f95f win32: Hack to make statusbar menus show up visible: 2011-11-10 17:41:11 +01:00
Alexander Larsson
65002208b9 win32: Ensure newly mapped toplevels are inside the workarea
This is what e.g. metacity does, and its needed to e.g. get the inital
position of the gimp dock window right.
2011-11-10 17:41:10 +01:00
Alexander Larsson
c563765574 win32: Fix placement at initial position
Positioning windows at 0,0 post creation failed, because it
was mapped with CW_USEDFAULT, but private->x/y still said 0,
so moving it to 0,0 did nothing. We now always position the
window at the right place, even when not mapped, but we
create it at CW_USEDEFAULT initially and store that position
before moving it to the right place.

This fixes the window sizing test in testgtk and the inital
position for the gimp toolbar.
2011-11-10 17:41:10 +01:00
Alexander Larsson
d441044569 win32: Fix synaptics trackpad issues
The synaptics trackpad driver has some weird behaviour on scroll.
It pops up a window over the mouse pointer (looking like a scrollbar).
This has two problems:
* We get extra enter/leave events for the trackpad window
* We get back the trackpad window when we look for the window
  under the mouse to deliver the mousewheel message.

So, we add some trackpad specific hacks to avoid this (sigh) based
on the trackpad window window class.

This fixes bug #542777 and was partially based on a patch there
from Peter Clifton.
2011-11-10 17:41:09 +01:00
Alexander Larsson
487ace0aca win32: Add gdk_win32_window_get_impl_hwnd
This is needed to fix the ms-windows theme not to create
native windows for all child windows.
2011-11-10 17:41:08 +01:00
Morten Welinder
fefe8e7c8c win32: Actually check for IPrintDialogCallback in configure 2011-11-10 17:41:08 +01:00
Alexander Larsson
1737ffeeb9 win32: Fix modal_hint handling
Modal hints are not really a stack. All windows that are modal
are allowed to get input, not just the top one.

This fixes bug #604156
2011-11-10 17:41:07 +01:00
Alexander Larsson
2788efeb5e win32: Don't use API_CALL for SetWindowLong
This can return 0 without it being an error.
Should fix the last issue with bug #142874
2011-11-10 17:41:07 +01:00
Alexander Larsson
a1828e8b60 win32: Make flush/sync work like in X
gdk_flush() should gdk_display_sync() on all open displays.

Both for display_flush and display_sync it seems useful to call
GdiFlush, but we don't have anything extra to do for display_sync,
as there is no inherent roundtrip on win32.

This should close bug #84314
2011-11-10 17:41:06 +01:00
Alexander Larsson
d27b402a85 win32: Add custom placements for some window types
Windows with transients: center on parent
Splash screens: center on monitor
Also properly ignores initial moves of unmapped
windows that are not override redirect or HINT_POS

Fixes bugs #324254 and #612359
2011-11-10 17:41:06 +01:00
Alexander Larsson
2662fe37df win32: More robust way to ensure we get a configure event after move/resize
There were still cases where we didn't get a WINDOWPOSCHANGED after
a SetWindowPos() call, like e.g. with a larger minimum size than
the set size (bug #574935)

So, we revert the previous fix and now just always manually emit
a configure notify after the move_resize call. Also, we inhibit
the WINDOWPOSCHANGED configure event during the move_resize operation
to avoid multiple Configures.
2011-11-10 17:41:05 +01:00
Alexander Larsson
2dbc05f756 win32: Ensure we always send a configure event when changing size/pos
There are some cases where we don't get a WINDOWPOSCHANGE such that
we generate a configure event, even if we called gdk_window_move_resize()
or similar. For instance:
* The window is fullscreen
* The window is maximized
* The specified pos/size is the same as the current one

However, as per X11 ConfigureNotify semantics we *always* want one, or
we could run into issue like e.g. bug #537296 where we're waiting for
the CONFIGURE to call gdk_window_thaw_toplevel_updates_libgtk_only().
2011-11-10 17:41:04 +01:00
Alexander Larsson
4c061a5270 win32: By default, allow windows larger than the screen 2011-11-10 17:41:04 +01:00
Alexander Larsson
6be876cdea win32: Fix size or style changes during fullscreen
When we're fullscreen we should update the cached hints, and we
should not apply the normal hints to the style.

This fixes bug #516822
2011-11-10 17:41:03 +01:00
Alexander Larsson
820721500b win32: Use WM_NCDESTROY instead of WM_DESTROY
WM_NCDESTROY gets called after children are destroyed, which is
the semantics DestroyNotify has in X11.
2011-11-10 17:41:03 +01:00
Alexander Larsson
4690aa28d0 win32: Don't remove the window from the handle table on destroy
We always get the WM_DESTROY message anyway, and we remove it there.
Bug #336416 even claims this could be a leak if the WM_DESTROY
message was not seen before the DestroyWindow call returned, as
the WM_DESTROY message could not be handled later without the
window in the handle table. I'm not sure this can happen, but we
might as well remove it.
2011-11-10 17:41:02 +01:00
Alexander Larsson
725379192d win32: Make set_keep_above work also for non-mapped windows
This fixes bug #171456
2011-11-10 17:41:01 +01:00
Alexander Larsson
ab615105b6 win32: Send window-state-changes before configure events
This is requires to that the state of the window is right when
you get the configure event (and to match what X does).

Fixes bug #169811
2011-11-10 17:41:01 +01:00
Alexander Larsson
8f50944904 win32: Send initial configure
We need to send a configure event when a window is shown.
2011-11-10 17:41:00 +01:00
Alexander Larsson
36a28d616f win32: Ignore client requested window move/size during SIZEMOVE
This will just be fighting the user like in e.g.
https://bugzilla.gnome.org/show_bug.cgi?id=64428
2011-11-10 17:41:00 +01:00
Alexander Larsson
538ab4fca7 win32: Remove most special casing of WINPOSCHANGED during modal ops
There is no particular reason to special case this, we want to handle all
sort of normal events. The only special thing we keep is that
as an optimization we pump the message loop extra during a WINPOSCHANGED
in a modal operation as that will cause us to repaint faster.

Also, bump the arbitrary number of mainloop iterations for the timer.
I don't see why we need it at all, but at least doing more than one
iteration if needed should be nice.
2011-11-10 17:40:59 +01:00
Alexander Larsson
429bd4e5d5 win32: Fix missed resize exit message
When you start a window resize or move via the window menu and
don't actually change anything we're not getting an exitsizemove.
In order to work around this we also look for WM_CAPTURECHANGED.
2011-11-10 17:40:59 +01:00
Alexander Larsson
ad374a595c win32: Handle all window changes in WINDOWPOSCHANGED
This moves all the code from WM_SIZE, WM_MOVE, and WM_SHOWWINDOW into
one place, cleans up the code and makes sure we only send a single
configure event even if both size and position changes.
2011-11-10 17:40:58 +01:00
Alexander Larsson
66f7e5d163 win32: Fix up window_show
We don't pass in raise anymore, but already_mapped.
Also, already_mapped must be used rather than MAPPED, as we already
synthesize the MAPPED in the generic code (and thus we don't have
to synthesize it again).
2011-11-10 17:40:57 +01:00
Dieter Verfaillie
af00c68dd0 win32: correctly handle difference between tab_pos and gap_side when drawing an extension (notebook tab) 2011-11-10 17:40:57 +01:00
Dieter Verfaillie
2d83850864 win32: add TODO mentioning GtkButton::child-displacement-x & y should be 0 when XP theme is active 2011-11-10 17:40:56 +01:00
Arnaud Charlet
6ed89c514b win32: fix typo in msw_style.c
https://bugzilla.gnome.org/show_bug.cgi?id=647460
2011-11-10 17:40:56 +01:00
Dieter Verfaillie
1df95b4c0a win32: Call GetQueueStatus instead of PeekMessage PM_NOREMOVE
Calling PeekMessage can cause reentrant calls into the window procedure
for sent (as opposed to posted) messages, so its not safe to call
when we're not expecting reentrancy. Instead we call GetQueueStatus
when we're just looking for availible messages.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=552041
2011-11-10 17:40:55 +01:00
Alexander Larsson
d66ad8c39d win32: Better crossing events and grab destination reporting
We new report to the right window during !owner_event grabs, and
we send proper enter and leave events.
2011-11-10 17:40:55 +01:00
Alexander Larsson
73c527aef0 win32: Record the native event mask in use 2011-11-10 17:40:54 +01:00
Alexander Larsson
915e9d57f9 win32: Use right native_window for implicit grabs
The native grab really is on the window that got the button press event.
2011-11-10 17:40:54 +01:00
Alexander Larsson
321acc3286 win32: in window_at_pointer, ensure that we handle non-client areas correctly
We should not return a window if the pointer is in the non-client area,
like the titlebar.
2011-11-10 17:40:53 +01:00
Alexander Larsson
f0f7c07f4d win32: Handle implicit grabs 2011-11-10 17:40:53 +01:00
Alexander Larsson
6668ba6914 win32: Update input device code to use the new property names in constructor 2011-11-10 17:40:52 +01:00
Alexander Larsson
ade6d093e2 win32: Fix up initialization order of input subsystem
We were getting warnings due to windows being created before input
subsystems were fully initialized.
2011-11-10 17:40:51 +01:00
Dieter Verfaillie
5406955f7c win32: Fix DnD when drag icon is below the pointer
By reverting gdk_drag_find_window_for_screen logic to what it was
before eb21a7df29.
The old logic knew how to ignore drag_window when searching
for dest_window, but that code was removed (I guess by accident).

https://bugzilla.gnome.org/show_bug.cgi?id=616544
2011-11-10 17:40:51 +01:00
Dieter Verfaillie
86b8a1ddc8 win32: dnd should not be registerd for offscreen windows
https://bugzilla.gnome.org/show_bug.cgi?id=616544
2011-11-10 17:40:50 +01:00
Peter Clifton
05e982a11a Win32: Fix _gdk_windowing_window_at_pointer to correctly return a toplevel
Commit 5ebb32d1ff didn't add the correct
code to find the toplevel window. The WindowFromPoint() function does
not return the toplevel window in the hierarchy, it returns the deepest
non-disabled, non-invisible child. As we don't use invisible or disabled
windows, we don't actually need to use the ChildWindowFromPoint walk for
the non get_toplevel case, so we can remove that code path.

To find a toplevel, we need to start from the desktop and work up, using
ChildWindowFromPointEx (to ignore invisible and disabled windows). If we
don't ignore invisible and disabled windows (as is the case with the
ChildWindowFromPoint call, we are liable to get returns of hidden or
disabled children of the desktop which don't belong to us, but notionally
occupy the same area under the pointer.

An alternative might be to start our walk with one of the children of the
desktop owned by our process and thread - which we can enumerate using,
the EnumThreadWindows call, or (presumably) determine internally. This
would not work when we are inside a GtkSocket though, as the children of
the desktop would belong to the process owning the GtkPlug - we would
have to rely on our own list of windows.

For correctness, this commit adds tests to ensure that we don't try to
return either x or y window coordinates if that corresponding pointer is
NULL.

https://bugzilla.gnome.org/show_bug.cgi?id=658842
2011-11-10 17:40:50 +01:00
Peter Clifton
f9d8f9758b Win32: Ensure native back-end for windows where the user requests their handle
https://bugzilla.gnome.org/show_bug.cgi?id=658841
2011-11-10 17:40:49 +01:00
Chun-wei Fan
b18718ac7e Add G_ENABLE_DEBUG #ifdef check in gdkdisplay-win32.c
Commit 88707e6912 used
_gdk_win32_cf_to_string, which is only defined when G_ENABLE_DEBUG
is defined, so add G_ENABLE_DEBUG #ifdef around that part.
2011-11-10 17:40:49 +01:00
Marc-André Lureau
1afc29d869 win32: resurect Windows clipboard selection notification
This is a rewrite of e6fa7394ba, with
misc fixes that should help with some bugs Tim was talking about.

https://bugzilla.gnome.org/show_bug.cgi?id=652239
2011-11-10 17:40:48 +01:00
Hans Breuer
db19fbd45c win32: Resurrect some enter/leave notify events for native windows
The button highlighting in testgtk works again, even with
GDK_NATIVE_WINDOWS. Unfortunately testgtk:menus still does
not work for the forced-native-window-case.
2011-11-10 17:40:47 +01:00
Neil Roberts
7445a59a9a win32: Never pass SWP_NOSIZE or SWP_NOMOVE to SetWindowPos
In _gdk_window_move_resize_child it tries to decide whether to pass
SWP_NOSIZE and SWP_NOMOVE based on whether the new size and position
is different from the window's existing position. However it seems
that GDK now ends up updating the window's position before calling
_gdk_window_move_resize_child so this would mean it would think the
window never changes size or position so SWP_NOSIZE|SWP_NOMOVE would
always be set. This causes child windows to never be resized.

This patch changes it so that it never passes either flag to
SetWindowPos. I don't know whether this will cause any side effects
but you'd think it shouldn't do any harm to reassert the current size.

https://bugzilla.gnome.org/show_bug.cgi?id=628049

Signed-off-by: Hans Breuer <hans@breuer.org>
2011-11-10 17:40:47 +01:00
Alexander Larsson
06a20d207a Fix build by adding include
build failed with a GTK_IS_VIEWPORT link error
2011-11-10 17:40:46 +01:00
Alexander Larsson
96bae6ad08 Add include to fix the build 2011-11-10 17:25:02 +01:00
Benjamin Otte
24b9599af7 a11y: Get rid of gtk.h includes in headers
This way, we can include them without accidentally including deprecated
code. Which means we can still use the recently added turning-off tricks
for deprecation warnings.
2011-11-10 17:10:04 +01:00
Benjamin Otte
2d3c36a021 a11y: Fix gcc warning 2011-11-10 17:10:04 +01:00
Benjamin Otte
1c96b0b838 a11y: It's not a bug if there's no row at some point
In that case, there's just nothing there.
2011-11-10 17:10:04 +01:00
Bastien Nocera
c30d313afc gtk: Fix parsing of accelerators with keycodes
GDK_KEY_VoidSymbol is not the same as keycode 0. This fixes
keycodes such as "0xb3" being parsed as "VoidSymbol" keysyms.

https://bugzilla.gnome.org/show_bug.cgi?id=663761
2011-11-10 14:33:28 +00:00
Bastien Nocera
d69c7f4776 gtk: Fix GtkCellRenderer ignoring keycodes
We should use the new helper code rather than invent our own
functions again.

https://bugzilla.gnome.org/show_bug.cgi?id=663761
2011-11-10 14:33:28 +00:00
Guillaume Desmottes
fb97c28bca gtktreeviewaccessible: use a value_destroy_func with the cell_info_by_index hash
This ensures that we don't leak any GtkTreeViewAccessibleCellInfo when
re-inserting a new one with the same key.

https://bugzilla.gnome.org/show_bug.cgi?id=663694
2011-11-10 14:49:30 +01:00
Guillaume Desmottes
22807d8469 gtktreeviewaccessible: factor out cell_info_free()
https://bugzilla.gnome.org/show_bug.cgi?id=663694
2011-11-10 14:49:30 +01:00
Michael Meeks
14a17873de broadway: Initial support fro V7+ websockets
Allows more modern browsers eg. firefox 5+ to use gtk/broadway
Auto-detects protocol version, and can switch between them at
as you connect a different browser.

This works to some extent, but seems to hang sometimes, for
instance the "button box" test in testgtk never shows up.
2011-11-10 10:12:28 +01:00
Matthias Clasen
f711da3d1b uimanager: Work around deprecations 2011-11-09 23:45:58 -05:00
Matthias Clasen
a7958f06e3 treeview: Work around deprecations 2011-11-09 23:42:11 -05:00
Matthias Clasen
6ae6284d1a Remove some redundant verbosity 2011-11-09 22:18:39 -05:00
Matthias Clasen
82d6a4e918 Don't use G_ERRORCHECK_MUTEXES anymore
It's gone from GLib.
2011-11-09 22:11:04 -05:00
Matthias Clasen
2298c51d93 Update documentation around deprecations. 2011-11-09 22:08:43 -05:00
Matthias Clasen
5594ec8dd0 Don't add -DGSEAL_ENABLE to CFLAGS anymore
That define is no longer used anywhere in gtk.
2011-11-09 22:05:11 -05:00
Matthias Clasen
190c271986 Add a missing include 2011-11-09 22:03:10 -05:00
Matthias Clasen
a78ab0cfa1 Drop use of GDK_DISABLE_DEPRECATED guards in gtk
We now use function attributes for deprecation so the build-breaking
guards are no longer needed.
2011-11-09 22:02:42 -05:00
Matthias Clasen
b3e13bd0a8 Drop use of GDK_DISABLE_DEPRECATED guards in gdk
We now use function attributes for deprecation so the build-breaking
guards are no longer needed.
2011-11-09 22:01:00 -05:00
Matthias Clasen
b6ae763e25 Drop references to g_thread_init()
We are already requiring GLib 2.31, so g_thread_init() is never
needed anymore.
2011-11-09 18:36:35 -05:00
Kristian Rietveld
91ae19768e Bug 661997 - Gtk crashes when changing the TreeView model while ...
Simply stopping rubber banding in gtk_tree_view_set_model() eliminates
the crash.  Reported by Thomas Perl.
2011-11-09 08:45:34 +01:00
Ryan Lortie
7e22a5350c Don't implement GApplication mainloop
Let the default GApplication implementation take care of it.

https://bugzilla.gnome.org/show_bug.cgi?id=658805
2011-11-09 00:22:52 -05:00
Benjamin Otte
d1d2d71159 demos: Remove non-working code
It causes warnings, so it has to go.
The cursor doesn't change anyway, no matter if it's there or not.
2011-11-09 03:46:23 +01:00
Benjamin Otte
0333ed97fe tools: Work with deprecated APIs
We want to screenshot deprecated widgets, so we'd better not fail when
using them.
2011-11-09 03:23:43 +01:00
Benjamin Otte
8e4a45eb12 exanmples: Don't use deprecated API 2011-11-09 03:23:43 +01:00
Benjamin Otte
198a35fde5 testgtk: Remove deprecations from shapes test 2011-11-09 03:23:43 +01:00
Benjamin Otte
f41262320c testgtk: Don't use deprecated functions in properties example 2011-11-09 03:23:43 +01:00
Benjamin Otte
2783158f8d treeview: Do a simple replace for gdk_window_get_pointer()
Replace it with the equivalent gdk_window_get_device_position() with the
core pointer.
2011-11-09 03:23:43 +01:00
Benjamin Otte
c9c9099f83 gtk-demo: Remove excessive pointer querying 2011-11-09 03:23:43 +01:00
Benjamin Otte
439b9a3b1d queryimmodules: Actually fix deprecation warnings
The previous patch still caused warnings. Ooops. That's what you get for
not compiling with -Werror.
2011-11-09 03:23:43 +01:00
Michael Natterer
5ca2f06893 quartz: include all buttons' state in GdkEventMotion.state
(cherry picked from commit 3b5c5710da)
2011-11-09 00:36:21 +01:00
Michael Natterer
5f6c70f211 quartz: include all buttons' states in GdkEventButton.state
(cherry picked from commit a381e8ea62)
2011-11-09 00:26:30 +01:00
Michael Natterer
264241eb11 Bug 663605 - Fix event->state of many event types on quartz
Don't try to remember the current keyboard modifier and mouse button
states from the last event, because that isn't always right, and don't
set event.state = 0 for generated events. Instead, add private functions
to get the current states, and implement them with API that retrieves
these states independently from an event.
2011-11-08 21:52:49 +01:00
Benjamin Otte
28d3d6e039 treeview: Remove unused crack code
No, querying the pointer position in a draw callback is not a good idea.
No, setting FOCUSSED based on that position is not a good idea either.
2011-11-08 21:14:06 +01:00
Benjamin Otte
fd93e08a7c widget: Don't use deprecated symbols
Not even in deprecated functions!
2011-11-08 21:14:06 +01:00
Benjamin Otte
d41732b729 widget: Deprecate gtk_widget_get_pointer () 2011-11-08 21:14:06 +01:00
Benjamin Otte
a1fb2c863b treeview: Remove call to gtk_widget_get_pointer() 2011-11-08 21:14:06 +01:00
Benjamin Otte
28d0403f17 paned: Pass x/y position to update_drag()
This way we get the coordinates from the right device instead of using
any random device.
2011-11-08 21:14:06 +01:00
Benjamin Otte
80a23a2f2b paned: Remove MOTION_HINT_MASK
It's not needed anymore. GDK does culling of events for us.
2011-11-08 21:14:06 +01:00
Benjamin Otte
68bc011507 menuitem: WOrk around deprecation warnings 2011-11-08 21:14:06 +01:00
Benjamin Otte
a12e12a56d queryimmodules: Disable deprecaion warnings for deprecated header 2011-11-08 21:14:06 +01:00
Benjamin Otte
40db65a85b settings: Disable deprecaion warnings for deprecated header 2011-11-08 21:14:06 +01:00
Benjamin Otte
c9b1e00c30 layout: Work around deprecation warnings 2011-11-08 21:14:05 +01:00
Benjamin Otte
f9c664c69b immodule: Disable deprecations before including deprecated header 2011-11-08 21:14:05 +01:00
Benjamin Otte
e1f4bd6495 gtk: Empty gtkimmodule.h
Move the remaining struct definition into gtkimcontextinfo.h and include
that header in gtk.h. gtkimmodule.h is now an empty header. We should
probably deprecate it somehow.

This is also necessary so headers used in gtk .c files don't include
gtk.h which in turn includes all the deprecated headers which we want to
avoid so we can include them with deprecation warnings turned off.
2011-11-08 21:14:05 +01:00
Benjamin Otte
ba05093fe7 build: Don't append to an accidentally existing file 2011-11-08 21:14:05 +01:00
Benjamin Otte
c2da143aa6 immodule: Move private functions to a private header 2011-11-08 21:14:05 +01:00
Benjamin Otte
bd97127e6c immodule: Fix includes
Make includes not rely on gtkimmodule.h including gtk.h. This will be
important once we remove gtkimmodule from the include files.

That way, we can achieve not pulling deprecated headers automatically.
2011-11-08 21:14:05 +01:00
Benjamin Otte
1c22053baf window: Fix cast warnings 2011-11-08 21:14:05 +01:00
Benjamin Otte
1425ecbc52 treeview: Fix warnings from fixing warnings
Warnings introdcued by fixing deprecation warnings in
2ead4c6038
2011-11-08 21:14:05 +01:00
Benjamin Otte
adcd136f1e icontheme: Get rid of deprecation warnings
Before including deprecated headers, disable deprecation warnings.
2011-11-08 21:14:05 +01:00
Benjamin Otte
7cfe9051cc cellrendererspinner: Ignore deprecation warnings
The cell renderer relies on deprecated functionality, so we need to
disable deprecations for included deprecated headers.
2011-11-08 21:14:05 +01:00
Benjamin Otte
8f8269ad30 cellrendererspinner: Include correct header 2011-11-08 21:14:05 +01:00
Benjamin Otte
9aa7e9f050 button: Don't call deprecated functions 2011-11-08 21:14:05 +01:00
Benjamin Otte
a9134de5d3 assistant: Work around deprecation warnings 2011-11-08 21:14:05 +01:00
Rui Matos
70f87b8bd5 gtk: Add a GTK_STATE_FLAG_WINDOW_UNFOCUSED widget state flag
This allows themes to style widgets differently according to whether the
toplevel window they are in is presented as focused.

https://bugzilla.gnome.org/show_bug.cgi?id=661428
2011-11-08 19:33:22 +00:00
Rui Matos
95648fd194 x11: Implement GDK_WINDOW_STATE_FOCUSED on top of _NET_WM_STATE_FOCUSED
_NET_WM_STATE_FOCUSED is a new _NET_WM_STATE hint which allows us to
implement a meaningful GDK_WINDOW_STATE_FOCUSED under X11. If the window
manager doesn't support this hint we keep GDK_WINDOW_STATE_FOCUSED set since
that is what gtk+ implicitly assumed historically.

https://bugzilla.gnome.org/show_bug.cgi?id=661428
2011-11-08 19:33:22 +00:00
Rui Matos
43f1b5abbc gdk: Add GDK_WINDOW_STATE_FOCUSED to GdkWindowState
This state means that the toplevel window is presented as focused to the user,
i.e with active decorations under an X11 window manager.

If the GDK backend doesn't implement this flag, it will just remain set after
mapping the window.

https://bugzilla.gnome.org/show_bug.cgi?id=661428
2011-11-08 19:25:51 +00:00
Marc-André Lureau
c1e8e7ba22 reftests: Add a reftest for background-repeat css property
https://bugzilla.gnome.org/show_bug.cgi?id=663522
2011-11-08 12:41:35 -05:00
Cosimo Cecchi
f9d16f3923 themingengine: set the cairo extend to PAD when we're stretching bg
This avoids artifacts around the borders due to bilinear filtering cairo
applies to the surface pattern when stretching it.

https://bugzilla.gnome.org/show_bug.cgi?id=663522
2011-11-08 12:41:28 -05:00
Marc-André Lureau
3b436eec6d css: start background-repeat
By default, a background image is stretched. Instead, it is worth to
have a tiled background.

This patch allows background surfaces to be repeated or not, and should
be compatible with future extensions and CSS.

https://bugzilla.gnome.org/show_bug.cgi?id=663522
2011-11-08 11:10:44 -05:00
Marc-André Lureau
ee7ac4fa44 Rename s/GtkCssRepeatStyle/GtkCssBorderRepeatStyle/g
https://bugzilla.gnome.org/show_bug.cgi?id=663522
2011-11-08 11:10:41 -05:00
John Ralls
085b98f470 [Quartz Bug 663182] NSImage throws an exception from _gtk_quartz_create_image_from_pixbuf()"
If a zero-sized NSImage calls lockfocus it throws an exception. Make sure that the image isn't zero-sized before calling lockfocus, and log a warning and return NULL if it is zero-sized.

Have the quartz version of gtk_drag_begin_idle return FALSE if the returned image is NULL.
2011-11-07 14:25:08 -08:00
John Ralls
42656dde57 Revert "[Quartz Bug 663182] NSImage throws an exception from _gtk_quartz_create_image_from_pixbuf()". Utterly screwed up. Sorry.
This reverts commit 8216324e4b.
and          commit 3243e6955c.
2011-11-07 13:57:10 -08:00
John Ralls
3243e6955c Fix accidental paste error in 8216324 2011-11-07 13:18:14 -08:00
John Ralls
8216324e4b [Quartz Bug 663182] NSImage throws an exception from _gtk_quartz_create_image_from_pixbuf()
If _gtk_quartz_create_image_from_pixbuf is given a pixbuf with size 0, 0
or which produces an NSImage with size 0.0, 0.0, it throws an exception
which Gtk doesn't handle.

your changes. Lines starting
2011-11-07 13:11:18 -08:00
Michael Natterer
ac943bf69a gdk: exclude MOD1 from the virtual modifier mapping
which effectively nails down the MOD1 == ALT assumption that is valid
in all other parts of GTK+. After the modifier abstraction fixes for
OSX, the virtual mapping is now (correctly) used in more places, and
caused problems with the common default PC keyboard layout on X11 that
colocates ALT and META on the same key.
2011-11-07 20:09:00 +01:00
Morten Welinder
d80953666e Print preview: make cancel work
This makes cancels of a print preview work in the same way it
works for non-previews, i.e., the operation stops at the next
page boundary.

https://bugzilla.gnome.org/show_bug.cgi?id=662160
2011-11-07 13:10:24 -05:00
Michael Natterer
d1c6bcb85c quartz: handle recursive CFRunLoops
Fixes e.g. crashs when dropping from finder.

Turn the "getting_events" boolean into a counter to handle poll_func()
being called recursively, and track the loop depth correctly by
changing its counter before bailing out in run_loop_observer_callback().
This way we reallocate our autorelease pool at the right time, and
don't kill memory that is still in use by outer run loops.

Also drain, not release the pool, just for some defensive forward
compatibility.
(cherry picked from commit ef9a92d225)
2011-11-06 23:38:50 +01:00
Torsten Schönfeld
4ef61e2311 gtk: add annotations for some GtkRadio* constructors
Since constructors like gtk_radio_button_new_from_widget take an
instance of their type as the first argument, the gi scanner interprets
them as methods.

https://bugzilla.gnome.org/show_bug.cgi?id=661858
2011-11-06 16:50:57 +01:00
Kristian Rietveld
88329aeff4 quartz: use get_toplevel_from_ns_event in one more place
Fixup needed due to refactoring in GTK+-3.0.
2011-11-06 10:36:00 +01:00
Kristian Rietveld
b78658c310 quartz: make gdk_quartz_osx_version conform to coding style 2011-11-06 10:17:46 +01:00
Kristian Rietveld
e5ccae5782 quartz: make test_resize () conform to coding style 2011-11-06 10:16:27 +01:00
Kristian Rietveld
9f45c37be7 quartz: Process motion events within windows bounds without window set
When an NSEvent does not have the window field set, we already assumed
the event was not for us and discarded it.  But for NSMouseMoved events
we now make an exception, because such events generated after
using/clicking the main menu bar have the window field set to NULL while
the application window still has focus.

We used to experience a loss of motion events after using the menu bar,
this could be seen in buttons that stopped prelighting and first
clicks often being ignored unless you clicked somewhere else first.
These issues are fixed by this patch.
2011-11-06 10:15:16 +01:00
Kristian Rietveld
7269cdf315 quartz: Factor out toplevel from NSEvent code into function 2011-11-06 10:12:24 +01:00
Kristian Rietveld
6a7280ce1a quartz: Separate out screen_point conversion in function
Reduces code duplication and confusion.
2011-11-06 10:10:12 +01:00
Kristian Rietveld
4d9d8ba96d quartz: remove unused variable 2011-11-06 10:04:39 +01:00
Florian Müllner
79803d0edc menuitem: Always treat submenus as popup
Submenus are not actually attached to a menubar, but styling them
as if they were imposes some problems (at least with Adwaita).
Just using GDK_WINDOW_TYPE_HINT_POPUP_MENU for submenus instead
fixes the issue.

https://bugzilla.gnome.org/show_bug.cgi?id=662691
2011-11-05 01:49:50 -04:00
Akira TAGOH
4d7e47ddd0 Allow fallback for input method modules
Accept a :-separated list of module names in GTK_IM_MODULE and
the corresponding setting, to deal a bit better with broken
situations.

https://bugzilla.gnome.org/show_bug.cgi?id=603559
2011-11-05 01:48:59 -04:00
Torsten Schönfeld
a72a3160a8 gtk: add annotations for some GtkSymbolicColor constructors
https://bugzilla.gnome.org/show_bug.cgi?id=661859
2011-11-05 01:38:40 -04:00
Rui Matos
8067f6b886 x11: Fix window manager change detection
Since the wmspec_check_window doesn't have a corresponding GdkWindow we can't
rely on the get_event_window() return value to get the XID from. Just use the
XID from the XEvent directly.

https://bugzilla.gnome.org/show_bug.cgi?id=662953
2011-11-05 01:37:37 -04:00
Benjamin Moody
8318515cd8 Mark gtk_dialog_new_with_buttons as NULL-terminated
https://bugzilla.gnome.org/show_bug.cgi?id=663073
2011-11-05 01:27:25 -04:00
Matthias Clasen
41d4229155 Pop up context menus at the right device
When multiple pointers are in play, we need to be careful
not to loose track of the device between receiving a button
press and popping up a menu.

https://bugzilla.gnome.org/show_bug.cgi?id=663396
2011-11-05 01:24:17 -04:00
Matthias Clasen
7644ef1e3a GtkWindow: Use new begin_resize_drag api
We have an event, so the correct thing to do is to pass
the device into the function that we are calling. GDK
just grew a variant that takes a device, for this purpose.

https://bugzilla.gnome.org/show_bug.cgi?id=663444
2011-11-05 01:14:30 -04:00
Matthias Clasen
3b152df48a Wayland: Adapt to GdkWindowImpl api change 2011-11-05 01:12:26 -04:00
Matthias Clasen
810ef68679 Broadway: Adapt to GdkWindowImpl API change 2011-11-05 01:12:07 -04:00
Matthias Clasen
6f48f20c67 Quartz: Adapt to GdkWindowImpl api change 2011-11-05 01:11:50 -04:00
Matthias Clasen
32884e9c16 win32: Adapt to GdkWindowImpl api change 2011-11-05 01:11:18 -04:00
Matthias Clasen
250d4331b2 Add device-taking variants of begin_resize/move_drag
This was one of the last places where display->core_pointer was
used in non-deprecated code paths.
2011-11-05 01:10:16 -04:00
Matthias Clasen
3bd0059850 GdkDeviceManager: some reshuffling of docs 2011-11-04 23:38:11 -04:00
Bastien Nocera
ba397a3431 tests: Disable accel test until fixed 2011-11-04 16:40:23 +00:00
Bastien Nocera
780a92b559 gtk: Add test program for keycode parsing
https://bugzilla.gnome.org/show_bug.cgi?id=662755
2011-11-04 16:40:22 +00:00
Bastien Nocera
06b55b2149 gtk: Add accel with keycode parsing functions
Which handle accelerators with keycodes as well as keyvals,
so we can use it in applications that use GtkCellRendererAccel's
"Other" mode of operations (namely gnome-control-center and
gnome-settings-daemon).

https://bugzilla.gnome.org/show_bug.cgi?id=662755
2011-11-04 16:40:22 +00:00
Matthias Clasen
0f167e8b43 Fix make check 2011-11-03 23:58:46 -04:00
Colin Walters
6cf1385e8f introspection: Include deprecated headers for scanner too
https://bugzilla.gnome.org/show_bug.cgi?id=663345
2011-11-03 15:27:56 -04:00
Piotr Drąg
8853a3e5ff Updated POTFILES.in 2011-11-02 22:12:53 +01:00
Alexander Larsson
c002c83ec5 Make sure we only show icons in the file selector bookmarks toolbar
This looked really bad in non-gnome settings where default is to
show text too.
2011-11-02 14:46:53 +01:00
Matthias Clasen
20008c33cb Revert a change to the plug/socket headers
I was trying to avoid including gtk.h here, but this breaks
some of our tests, and there's a good chance that 3rd party
code also relies on this include.
2011-11-02 08:28:34 -04:00
Matthias Clasen
2ead4c6038 Remove some more uses of gdk_window_get_pointer 2011-11-02 08:10:42 -04:00
Matthias Clasen
cafef131d6 Remove one instance of gdk_window_get_pointer 2011-11-02 08:10:42 -04:00
Matthias Clasen
adc731fad9 Remove various internal uses of deprecated api 2011-11-02 08:10:42 -04:00
Matthias Clasen
8ad3fd28b8 Don't warn about deprecations in deprecated/ 2011-11-02 08:10:42 -04:00
Matthias Clasen
2de4405c32 Move deprecated gtkwidget style api to gtkstyle 2011-11-02 08:10:42 -04:00
Matthias Clasen
1f827d6214 Don't warn about deprecations in deprecated/
We know we are deprecated here, no need to warn.
2011-11-02 01:21:49 -04:00
Matthias Clasen
feece3c0bb Move gtkstyle and gtkrc to deprecated/
This required a somewhat more substantial include reshuffling.
Some typedefs have been moved to gtkiconfactory.h and to
gtksettings.h.
2011-11-02 01:15:21 -04:00
Matthias Clasen
068e1f0390 Move wholly deprecated files to a subdirectory
Also install their headers to a subdirectory.
2011-11-01 23:51:18 -04:00
Matthias Clasen
98db3dd5dd Move gtk_draw_insertion_cursor out of gtkstyle.[hc]
This function does not use GtkStyle at all and is not deprecated.
2011-11-01 23:51:18 -04:00
Matthias Clasen
484a45c4b6 Drop DISABLE_DEPRECATED guards here, too 2011-11-01 23:22:06 -04:00
Matthias Clasen
8370052180 Don't use *DISABLE_DEPRECATED guards
Instead define GDK_DISABLE_DEPRECATION_WARNINGS where appropriate.
2011-11-01 22:35:57 -04:00
Matthias Clasen
416e1a1468 Don't use *_SINGLE_INCLUDES defines
GLib now outlaws single includes always, anyway.
2011-11-01 22:35:05 -04:00
Matthias Clasen
9b0011be92 Don't use *_DISABLE_DEPRECATED
Instead of undefining the DISABLE_DEPRECATED guards,
define the GDK_DISABLE_DEPRECATION_WARNING macro where needed.
Also replace INCLUDES by AM_CPPFLAGS to shut up automake.
2011-11-01 22:14:45 -04:00
Matthias Clasen
2a9932cf02 Don't use deprecated GValue api 2011-11-01 22:05:29 -04:00
Benjamin Otte
9788bfac89 gtk-demo: Don't use deprecated code 2011-11-02 02:32:54 +01:00
Benjamin Otte
86af3ea4e9 tests: Disable fontselection deprecation warnings
This test tests deprecated code...
2011-11-02 02:32:54 +01:00
Benjamin Otte
98d215635e tooltip: Don't use deprecated API 2011-11-02 02:32:54 +01:00
Benjamin Otte
5ada0fc382 tooltip: Remove unused variables 2011-11-02 02:32:54 +01:00
Benjamin Otte
54d6ef115b iconview: Keep the device for dnd autoscroll
This is necessary to query the device's coordinates when doing the
scrolling.
2011-11-02 02:32:54 +01:00
Benjamin Otte
e739757bab table: Define GDK_DISABLE_DEPRECATION_WARNINGS 2011-11-02 02:32:54 +01:00
Benjamin Otte
6132f52fa3 handlebox: Define GDK_DISABLE_DEPRECATION_WARNINGS 2011-11-02 02:32:53 +01:00
Benjamin Otte
c10cbf1715 fontsel: Define GDK_DISABLE_DEPRECATION_WARNINGS 2011-11-02 02:32:53 +01:00
Benjamin Otte
b120cb04a5 gdk: Move a bunch of deprecated code to a new file
The new file defines GDK_DISABLE_DEPRECATION_WARNINGS so it can happily
use deprecated APIs.

This commit moves those functions there that use deprecated functions
and currently cause warnings.

With this commit, GDK compiles without deprecation warnings.
2011-11-02 02:32:53 +01:00
Benjamin Otte
c9a648395e display: Don't use deprecated functions
When synthesizing crossing events, actually query the position of the
device we care about instead of using the core pointer every time.
2011-11-02 02:32:53 +01:00
Benjamin Otte
eddacfcc71 x11: Do fallback resize without deprecated functions
After consulting with Carlos, we agreed that it should be enough to grab
the core pointer instead of doing a full grab. If it turns out that's
wrong, we need to adapt the internal API for resizes to take the device
doing the resize.
2011-11-02 02:32:45 +01:00
Benjamin Otte
14d35d5c09 x11: Don't use deprecated function
Use the replacement instead.
2011-11-02 02:32:25 +01:00
Benjamin Otte
e7e3413e2e tests: Remove unused variables 2011-11-02 02:31:54 +01:00
Benjamin Otte
4f9fc252da box: Fix includes so hbox/vbox compile warning-free
And make sure most of the code is included before undeffing deprecated
code.
2011-11-02 02:31:54 +01:00
Matthias Clasen
8669eb49f5 Don't use deprecated Pango api 2011-11-01 21:22:14 -04:00
Matthias Clasen
4460cac3ed Don't use g_value_set_char 2011-11-01 21:18:27 -04:00
Matthias Clasen
d7c264653a Don't use deprecated Pango api 2011-11-01 21:13:35 -04:00
Matthias Clasen
c3d2df4eab GDK: Adapt to GLib thread api changes 2011-11-01 21:11:04 -04:00
Matthias Clasen
4ac4a1bee3 GtkSearchEngineSimple: adapt the GLib thread api changes 2011-11-01 21:06:09 -04:00
Cosimo Cecchi
d808daccc1 iconview: layout items immediately when setting a GtkTreeModel
As the draw handler expects the items to be laid out already, we cannot
queue a layout here to avoid a race condition with the resize that is
queued immediately after, which in turn would lead to a segfault later
in the paint_item() implementation.

https://bugzilla.gnome.org/show_bug.cgi?id=663138
2011-11-01 11:15:50 -04:00
Emmanuele Bassi
a77162ebaf radiotoolbutton: Fix the introspection annotations
Everything that deals with a group has to be fixed.

Plus, we have NULL checks without allowing NULL arguments; since NULL
arguments are perfectly fine, we can relax the argument checks.

https://bugzilla.gnome.org/show_bug.cgi?id=662870
2011-10-28 17:10:46 +01:00
Emmanuele Bassi
931a40844b radiotoolbutton: Fix the annotation for get_group()
Use the same annotation used by gtk_radio_button_get_group().

https://bugzilla.gnome.org/show_bug.cgi?id=662870
2011-10-28 17:10:46 +01:00
Bastien Nocera
0888e6f485 gtk: Fix XIGrabKeycode usage
A modifier of "0" is still a modifier and must be submitted normally.
A num_modifiers of 0 is essentially a noop in the server.

As mentioned by Peter Hutterer <peter.hutterer@who-t.net>

https://bugzilla.gnome.org/show_bug.cgi?id=662839
2011-10-28 12:03:22 +01:00
Matthias Clasen
701c00e8cf Print dialog: small keynav improvement
Mark the page range entry and the copies spin button as
activates-default.

https://bugzilla.gnome.org/show_bug.cgi?id=662670
2011-10-26 22:11:17 -04:00
Bastien Nocera
aa3ddb2a34 tests: Store keycode in tree for testaccel
Useful for testing keys without a keysym.
2011-10-26 12:47:07 +01:00
Bastien Nocera
1cffe6c2e4 gdk: Translate keyboard brightness keys
https://bugzilla.gnome.org/show_bug.cgi?id=662628
2011-10-26 10:36:43 +01:00
Bastien Nocera
aceccd5819 gdk: Make gen-keyname-table.pl work again
keyname-table.h was modified by hand, and gen-keyname-table.pl
couldn't be used to generate that file again.

https://bugzilla.gnome.org/show_bug.cgi?id=662628
2011-10-26 10:36:43 +01:00
Matthias Clasen
0f17a846a0 Update grid tests to match
The previous fix changed some test results here.
2011-10-25 23:21:13 -04:00
Matthias Clasen
362ff7bedf Fix gtk_grid_attach_next_to
The function did not behave as intended when @sibling is NULL.
Also add an example to the docs to clarify the intended behaviour.
2011-10-25 23:21:13 -04:00
Michael Natterer
7f80ee3a38 gtkrc.key.mac: add Command-cursor text navigation
and some emacs-ish Control bindings that work in native widgets.
Patch from Michael Hutchinson.
(cherry picked from commit ccf12f7b40)
2011-10-25 22:26:26 +02:00
Michael Natterer
f6d78bf879 gtkrc.key.mac: remove half the file, it was an accidential double paste
(cherry picked from commit 79a92f99a9)
2011-10-25 17:04:37 +02:00
Matthias Clasen
4f1c7e255d Post-release version bump
Halfway to 666 !
2011-10-25 10:22:15 -04:00
Matthias Clasen
6ea285cbbc Bump version to 3.3.2 2011-10-25 09:15:50 -04:00
Matthias Clasen
a0ea626904 Updates 2011-10-25 07:38:36 -04:00
Matthias Clasen
df1e2cd128 Fix more test breakage 2011-10-25 07:38:36 -04:00
Benjamin Otte
b195c7dbb2 a11y: Hack around infinite loops in parent setting
This is kind of a hack to get rid of infinite loops that occur when
child accessibles try to set their parent upon creation but the parent
accessible creates its children in the initialize vfunc. Because in that
case, the parent will not have an accessible set when the child tries to
access it, because it is still initializing itself. Which will cause a
new accessible to be created.

https://bugzilla.gnome.org/show_bug.cgi?id=660687
2011-10-25 07:38:36 -04:00
Matthias Clasen
7d165b67f9 Fix make check
Somebody committed a behaviour change that broke his own
tests...tsk, tsk.
2011-10-25 07:38:36 -04:00
Matthias Clasen
9a13943d8c Add a css parser test for transparent 2011-10-25 07:38:36 -04:00
Cosimo Cecchi
99266c4ceb printunixdialog: fix a GtkTable->GtkGrid typo
Code was treating the GtkScrolledWindow as a grid, not the grid itself.
2011-10-24 16:33:00 -04:00
Matthias Clasen
cd91ab9761 Fix handling of GtkCellRendererProgress::inverted
We were setting the wrong field.
https://bugzilla.redhat.com/show_bug.cgi?id=747761
2011-10-24 13:50:00 -04:00
Cosimo Cecchi
ccdc3c1802 notebook: update tab area allocation when switching page
When the active page is switched, it's important
gtk_notebook_pages_allocate() is called after the bulk of
gtk_notebook_real_switch_page() is run, as the former allocates a
different space according to the currently active tab, which is set by
the latter.
gtk_notebook_pages_allocate() already calls gtk_notebook_redraw_tabs()
when the allocation changes, so just move its call down to
gtk_notebook_real_switch_page() to fix the bug.

https://bugzilla.gnome.org/show_bug.cgi?id=662629
2011-10-24 13:19:39 -04:00
Dieter Verfaillie
16343bc9a9 win32: fix unterminated #ifdef error
By removing all ifdefs as gtk/gtkwin32.c is only built
on win32 anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=662481
2011-10-23 21:46:19 +02:00
Rui Matos
d56484f6ed tooltip: only update shape if the window is realized
If we get a composited-changed signal before the tooltip is ever realized we
have nothing to do.

This actually prevents a segfault in maybe_update_shape() because calling
gtk_widget_get_window() on a non-realized widget returns NULL.

https://bugzilla.gnome.org/show_bug.cgi?id=662467
2011-10-23 16:26:18 +01:00
Michael Natterer
5c4f2ef0c1 gtk: move _gtk_modules_has_mixed_deps() to gtkmodlesprivate.h
and remove gtkmainprivate.h completely.
2011-10-23 13:57:07 +02:00
Michael Natterer
2688ccdbc4 gtk: clean up the private horror
- add gtkmodulesprivate.h and move stuff there from gtkprivate.h
- add gtkprivate.c and move stuff there from gtkmain.c
- add gtkwin32.c and move stuff there from gtkmain.c
- don't redefine GTK_DATADIR and friends in gtkprivate.h
- have _gtk_get_datadir() and friends on all platforms
- remove the horrid hacks where gtkprivate.h can't be included,
  or must be included later due to redefinition of the compile-time
  directories
2011-10-22 23:53:55 +02:00
Michael Natterer
88ad614c73 gtkquartz: don't free the string returned by get_bundle_path()
It's statically allocated.
(cherry picked from commit c040b03c2e)
2011-10-22 23:24:41 +02:00
Michael Natterer
077b366879 quartz: don't return FALSE from GdkDevice::query_state()
Not finding a child window to return is not a failure.
2011-10-22 23:21:02 +02:00
Hendrik Knackstedt
65d01e3763 Updated German translation 2011-10-22 00:38:28 +02:00
Cosimo Cecchi
18a638a7d3 GtkRange: use the right widget for coordinate translation
GtkRange needs to check if its allocation intersects with the resize
grip allocation (trimming its own allocation if it does).
In order to do that, it needs to translate its allocation into window
coordinates, and before that, find the window to whose the allocation
is relative; code goes all the way finding the right parent widget, but
then doesn't actually use it when translating the coordinates, leading
to using the wrong rectangles for the intersection check.

https://bugzilla.gnome.org/show_bug.cgi?id=662308
2011-10-21 16:30:34 -04:00
Sjoerd Simons
958fc69494 Fix document generation in out of tree builds
https://bugzilla.gnome.org/show_bug.cgi?id=661032
2011-10-21 16:27:13 -04:00
Matthias Clasen
bb1d9aba86 Fix natural/min widht calculations for empty grids
https://bugzilla.gnome.org/show_bug.cgi?id=660139
2011-10-21 16:24:55 -04:00
Matthias Clasen
6b510f4855 Add GtkSwitch to widget-factory 2011-10-20 22:15:41 -04:00
Matthias Clasen
85a6bc8be1 Distribute tests/css/parser/selector.errors
https://bugzilla.gnome.org/show_bug.cgi?id=662024
2011-10-20 21:52:25 -04:00
Matthias Clasen
34d6caab5e Don't refer to --sync anymore
That commandline option got replaced with an environment variable,
so mention that in the warning text.

https://bugzilla.gnome.org/show_bug.cgi?id=662132
2011-10-20 21:50:01 -04:00
Matthias Clasen
633918158b DND: Work better with XI2
It turns out that simply using XIGrabKeycode instead of XGrabKey
makes the DND keyboard support mostly work (there seem to be some
minor issues with modifiers). This means we no longer grab the
keyboard actively during DND, which in turn makes Alt-Tab and
other window manager shortcuts work again during DND.

At the same time, bring the DND key handling code into the
multi-backend work, by checking for X11 and XI2 at runtime,
in addition to compile time.
2011-10-20 20:59:50 -04:00
Cosimo Cecchi
0c135cbf2c treemodel: document gtk_tree_path_free() as allow-none
https://bugzilla.gnome.org/show_bug.cgi?id=662230
2011-10-20 09:27:17 -04:00
Stef Walter
385b7a3031 gtk: GtkToolbar returns invalid paths when adding tool items
* Calculate siblings_path on demand, so that it's always correct
   and doesn't get out of sync with the toolbar state.

https://bugzilla.gnome.org/show_bug.cgi?id=662177
2011-10-20 14:11:28 +02:00
Cosimo Cecchi
febc29852b tooltip: add support for opacity and rounded corners for tooltips
Rounded corners now will always work, using XShape in case we're not
running a composite manager.
Also, setting an RGBA visual (if available) on the tooltip toplevel
enables them to be transparent if the theme specifies so.

https://bugzilla.gnome.org/show_bug.cgi?id=599617
2011-10-19 15:15:00 -04:00
Antoine Jacoutot
d987a01d80 GMountOperation on OpenBSD: remove the need for kvm(3)
kvm(3) is considered a deprecated interface, so make
GMountOperation::show-processes use the recommended sysctl(3) interface
instead. This also removes the need to link with libkvm.

https://bugzilla.gnome.org/show_bug.cgi?id=661835
2011-10-17 19:06:41 +02:00
André Gondim
b7562090b3 Fixed some strings in Brazilian Portuguese translation 2011-10-17 10:03:01 -02:00
Chun-wei Fan
c301101e65 Update VS property sheets
Bid farewell to G_DISABLE_DEPRECATED and the build errors it causes as
warnings are now used to deter people from using deprecated GLib items
in a more subtle manner
2011-10-17 15:34:59 +08:00
Jiro Matsuzawa
c4cf754509 Updated Japanese translation 2011-10-17 01:27:46 +09:00
Bruce Cowan
568198b9b0 Updated British English translation 2011-10-16 14:45:15 +01:00
John Ralls
1db5b34b97 Bug 658772: Directory paths for resource directories are hard coded.
Corrected formatting to match coding standards; introduced local statics
to prevent leaking returned strings.
2011-10-15 12:41:53 -07:00
Torsten Schönfeld
a95c4c1bb4 gtk: fix syntax of an annotation 2011-10-15 19:37:43 +02:00
Javier Jardón
0853ce3077 Use G_VALUE_INIT
Instead of an explicit { 0, } when declaring the variable.
2011-10-15 16:45:16 +01:00
Michael Natterer
616afadd78 gdk: s/gdk_cursor_unref/g_object_unref/ 2011-10-15 14:35:28 +02:00
Sebastian Pölsterl
133a7a4f58 Fixed referenced images for GTK_STOCK_INDENT
https://bugzilla.gnome.org/show_bug.cgi?id=661780
2011-10-15 00:30:46 +02:00
Matthias Clasen
7cfb3eda1b Add deprecation annotations for GtkHandleBox and GtkTable 2011-10-14 00:54:01 -04:00
Colin Walters
520881ac11 build: Strip out -DG_DISABLE_DEPRECATED
It's unnecessary pain now that they're warnings.
2011-10-12 11:54:56 -04:00
Chun-wei Fan
5a13e08fa7 Bug 660730: Win32: Only use _fstat32 if available
_fstat32 is only introduced with msvcrt80.dll (i.e. Visual C++ 2005), in
which using this function will break compilation with MinGW, which links
against msvcrt.dll.  The msvcrt.lib in the Windows DDK which links to
a later incarnation of the msvcrt.dll in later Windows systems may have
this symbol defined, but that needs to be checked upon to be sure.

Thanks to Dieter Verfaillie for pointing out this problem.
2011-10-12 11:39:06 +08:00
Matthias Clasen
9e0efc5022 Add deprecation annotations for deprecated functions
We define our own GDK_DEPRECATED[_FOR] macros for this
and allow it to be turned off by defining the
GDK_DISABLE_DEPRECATION_WARNINGS macro.
2011-10-11 15:03:46 -04:00
Matthias Clasen
8f078992fd Include gdk.h in gail.c
This is needed so that we pick up deprecation macros here in the
future.
2011-10-11 15:01:41 -04:00
Matthias Clasen
1ecd9fb3bd Add a new symbol
gtk_widget_get_modifier_mask was added recently.
2011-10-11 13:49:22 -04:00
Brian Cameron
0940974f5a Fix void function n gtkfontbutton.c so it does not try to return a value.
Fixes bug #661089.
2011-10-10 14:13:35 -05:00
John Ralls
6906ab88bc Bug 658767 - Drag and Drop NSEvent capture is racy
Create a synthetic NSMouseLeftDown to store in the GtkQuartzDragSourceInfo
rather than relying on the NSWindow's latest event being the right one (or the
right kind).
2011-10-09 11:24:41 -07:00
Kristian Rietveld
8ad3d2b296 Bug 657770 - Write to released memory in gtkdnd-quartz.c
Clear the Drag paste board just before the info->context is released.
This way the GtkDragSourceOwner is released just before the drag context
is and thus can pasteboard:provideDataForType: not accidentally access
an already released drag context
2011-10-09 10:37:21 -07:00
Alex Corrado
defdfde999 Quartz, Bug 655057: Eliminate Compiler Warning
When compiled with older SDKs, the original change for this bug caused a
compiler warning about NSWindow not being able to handle a setStyleMask
message. This tricks the compiler into thinking that it can.
2011-10-09 10:18:40 -07:00
Matthias Clasen
a35d8764da Add G_GNUC_DEPRECATED annotations in GDK 2011-10-09 09:55:08 -04:00
John Ralls
6dc34c1f5e Bug 658772: Directory paths for resource directories are hard coded.
Provide dynamic path discovery functions as are provided for win32.
2011-10-08 15:02:38 -07:00
Kristian Rietveld
d172f1ce22 quartz: also update window position on windowDidResize
When a window goes fullscreen, the resize also changes its size.
2011-10-08 11:47:11 +02:00
Wouter Bolsterlee
1feb672f8c Updated Dutch translation by Wouter Bolsterlee 2011-10-08 00:40:12 +02:00
Rachid
0926f11f30 Updated Dutch translation by Rachid 2011-10-08 00:39:18 +02:00
Michael Natterer
5327034c31 gtk: remove the private GTK_DEFAULT_ACCEL_MOD_MASK define
and finish the port to using the new modifier abstraction API.
This commit has some evilness, it uses the default display for
the lack of a widget context, and the change to gtkstock.c
is very ugly, but I can't think of anything better given
GtkStockItem needs an accel mask instead of a proper accel
string.
2011-10-07 20:58:58 +02:00
Michael Natterer
5b74ee38e8 gdk: fix gdk_keyval_to_lower/upper() for Quartz, Win32 and Broadway
In 2.x, the !HAVE_XCONVERTCASE fallback of keyval_convert_case() was
implicitly used as implementation for all !X11 backends.

In 3.x, when this function was virtualized in GdkDisplayManager,
this fallback was moved to the X11 backend and the other backends
"equipped" with /* FIXME implement */ implementations of
keyval_convert_case() which don't convert anything.

Move the fallback code back to gdk/ as default implementation
of GdkDisplayManager::keyval_convert_case() and remove its
implementations is all backends but X11. Also remove the
implementation in Wayland which was a plain copy of what
is now the default implementation.
(cherry picked from commit f46c1b76d8)
2011-10-07 16:19:41 +02:00
Michael Natterer
87cc0dc79f gtk: use the new modifier API instead of GTK_DEFAULT_ACCEL_MOD_MASK
in gtkimcontextsimple and gtktreeview, which are the easy places,
but also true bugfixes, because on OSX we can't use the virtual META
here, we needs MOD2 as delivered in key events.
2011-10-07 09:33:07 +02:00
Fran Dieguez
78d8d6b900 Updated Galician translations 2011-10-07 01:31:49 +02:00
Tristan Van Berkom
2677a7d5b9 GtkComboBox: Add the format-entry-text signal.
This provides more control over how the selected item is shown in
the entry.
Bug #631167
2011-10-06 11:14:38 +02:00
Kjell Ahlstedt
f920ded541 GtkTreeViewColumn: dispose: Remove from the treeview
This handles the case (with gtkmm) that the GtkTreeViewColumn is
destroyed before the GtkTreeView is destroyed.
Bug #659672
2011-10-06 11:02:02 +02:00
John Ralls
37f71d71cd Bug 628936: Minimal change to pass introspection.
gobject_introspection's G-ir-scanner doesn't like the -xobjective-c
option needed to compile ObjectiveC features in quartz implementations
of certain gtk functions. This rearranges the compiler flag environment
variables in Makefile so that G-ir-scanner doesn't see them.
2011-10-04 16:45:54 -07:00
Tristan Van Berkom
00d79fdb61 Fixed gtk_cell_area_stop_editing() to properly notify when editing is not canceled
This fixes bug 653289, in gtk+-2 gtk_tree_view_stop_editing() was previously
responsible for notifying with gtk_cell_editable_editing_done(), this detail
was missed when porting the cell renderer management to GtkCellArea.
2011-10-04 14:15:21 -04:00
Cosimo Cecchi
b928664471 reftests: add a reftest for the CSS :only-child selector
https://bugzilla.gnome.org/show_bug.cgi?id=660833
2011-10-04 11:48:20 -04:00
Cosimo Cecchi
1f2cfb5619 all: add an 'only-child' pseudo-class selector
Add an :only-child pseudo-class selector, which selects single children
of a parent container.

https://bugzilla.gnome.org/show_bug.cgi?id=660833
2011-10-04 11:47:47 -04:00
Cosimo Cecchi
3a6996ea83 appchooser: make the "Find applications online" follow search state
Set the button as insensitive while searching, so that it can't be
accidentally clicked twice.

https://bugzilla.gnome.org/show_bug.cgi?id=651818
2011-10-04 11:34:10 -04:00
Cosimo Cecchi
569b5ffd5b appchooser: add a GCancellable to the search operation
So that we can cancel it when the dialog is destroyed.

https://bugzilla.gnome.org/show_bug.cgi?id=651818
2011-10-04 11:34:10 -04:00
Jorge González
06dbbad5a7 Updated Spanish translation 2011-10-03 23:21:40 +02:00
Kristian Rietveld
0e3a4b73ca Fix commit 61d6c73f18
Where the commit suggested "somebody should review it [the test]",
it would have been useful to test this particular commit instead...
2011-10-03 22:59:40 +02:00
Kristian Rietveld
bbc1e883a8 Bug 659022 - gtk_tree_model_filter_clear_cache_helper: assertion failed
This bug is resolved by fixing two things in
gtk_tree_model_filter_row_deleted():

  (1) It is possible for an elt to have elt->visible_siter == NULL, when
  it is deleted.  Only call g_sequence_remove() if this pointer is
  non-NULL.

  (2) For the case len (level->seq) > 1, free the elt->children level
  if non-NULL.  Failing to do this means the level will stick around.
  If this child level was not referenced, it will still have a zero
  ref count on its parent which cannot be removed!

For both bugs unit tests have been added in the preceding commit.
2011-10-03 22:59:40 +02:00
Kristian Rietveld
e8323e2abc Add two more unit tests for bug 659022
Both pointing out problems in gtk_tree_model_filter_row_deleted().
2011-10-03 22:59:40 +02:00
Kristian Rietveld
f646ed6f76 Fix first part of bug 659022
Push creation of path into if clause, the path cannot be created anyway
(and would be meaningless otherwise) if the parent is not visible.
2011-10-03 22:59:40 +02:00
Kristian Rietveld
6fdf882eb4 Add unit test for part 1 of bug 659022
This tests a case where gtk_tree_model_filter_row_changed() is run
for a node with visible_siter != NULL, however its parent has
visible_iter == NULL. For this case, no valid paths can be generated
as the node cannot be accessed (because the parent is invisible).
2011-10-03 22:59:40 +02:00
Cosimo Cecchi
e1f79e8275 box: add some missing includes 2011-10-03 16:54:09 -04:00
Benjamin Otte
78ddecab0c iconcache: Fix gcc warning 2011-10-03 18:29:53 +02:00
Benjamin Otte
e97b05acbd filesystemmodel: Add a missing check
Paths with depth > 1 should return FALSE instead of pretending the depth
is 1.
2011-10-03 18:29:21 +02:00
Chun-wei Fan
eb8c2dfae2 Bug 660730: Use GStatBuf for portability
Thanks to Kean Johnston for pointing this out.

There are a few places in GTK that use "struct stat",
and then g_stat(), rather than using GStatBuf.This breaks things on
Windows. Since the size of struct stat can vary depending on other
flags specified, this has the potential to cause overwrites and is
trivial to fix.

Based on patch submitted by Kean Johnston
2011-10-03 23:25:33 +08:00
Adel Gadllah
25e65dc1b5 gdk: Plug leak in gdk_display_pointer_is_grabbed
gdk_x11_device_manager_core_list_devices returns a new allocated
list, which has to be freed.

valgrind output:

==18686== 160,176 (80,088 direct, 80,088 indirect) bytes in 3,337 blocks are definitely lost in loss record 25,347 of 25,378
==18686==    at 0x4C256DD: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==18686==    by 0x6CD7752: g_malloc (in /lib64/libglib-2.0.so.0.3000.0)
==18686==    by 0x6CEE2B6: g_slice_alloc (in /lib64/libglib-2.0.so.0.3000.0)
==18686==    by 0x6CCB37D: g_list_prepend (in /lib64/libglib-2.0.so.0.3000.0)
==18686==    by 0x654CADA: gdk_x11_device_manager_core_list_devices (gdkdevicemanager-core-x11.c:836)
==18686==    by 0x6531489: gdk_display_pointer_is_grabbed (gdkdisplay.c:1270)
==18686==    by 0x5162E1E: filter_func (ui.c:140)
==18686==    by 0x6558B50: gdk_event_apply_filters (gdkeventsource.c:83)
==18686==    by 0x6558CB3: _gdk_x11_display_queue_events (gdkeventsource.c:197)
==18686==    by 0x6530680: gdk_display_get_event (gdkdisplay.c:311)
==18686==    by 0x65589F1: gdk_event_source_dispatch (gdkeventsource.c:356)
==18686==    by 0x6CD0A0E: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.3000.0)

https://bugzilla.gnome.org/show_bug.cgi?id=660676
2011-10-03 14:11:43 +02:00
Tiffany Antopolski
2790a3d81a Updated Esperanto translation 2011-10-03 12:48:57 +02:00
Antoine Jacoutot
f44b8465f1 __SIZEOF_INT__ and __SIZEOF_POINTER__ may not be defined.
Protect __SIZEOF_INT__ and __SIZEOF_POINTER__ with an ifdef to prevent
warnings about them not being defined when including gtktextattributes.h.

https://bugzilla.gnome.org/show_bug.cgi?id=660619
2011-10-03 09:11:50 +02:00
Javier Jardón
8985ce3b72 gtkbox: Move private functions to private header 2011-10-02 21:30:42 +01:00
Matthias Clasen
c5c392ddf9 Add 'Since 3.4' indices to the docs 2011-10-02 10:22:13 -04:00
Matthias Clasen
c8eb4e5abe Add new api to gdk.symbols
This keeps 'make check' happy.
And if 'make check' is happy, so am I.
2011-10-02 10:22:13 -04:00
Javier Jardón
522c305c12 gdkcreen-x11: Use GdkRGBA instead GdkColor 2011-10-01 20:45:27 +01:00
Nguyễn Thái Ngọc Duy
36b2362ac9 Updated Vietnamese translation 2011-10-01 20:10:12 +10:00
Nguyễn Thái Ngọc Duy
dc67221027 po/vi: import from Damned Lies 2011-10-01 19:55:34 +10:00
Benjamin Otte
fcd4d8a208 uimanager: Deprecate add-tearoffs property
Don't use it. Please.
2011-10-01 05:59:04 +02:00
Benjamin Otte
b13544171a menu: Deprecate GtkTearoffMenuItem 2011-10-01 05:59:04 +02:00
Benjamin Otte
165fc24104 testgtk: Remove tearoff menus from tests 2011-10-01 05:59:04 +02:00
Benjamin Otte
f74421f524 gtk-demo: Don't use tearoff menus
Demoing bad things, sheesh.
2011-10-01 05:59:04 +02:00
Rui Matos
2720574ab9 gtkwindow: Clean up gtk_window_map()
Remove unneeded variable and delete trailing whitespace.
2011-10-01 01:28:30 +01:00
Rui Matos
34357481b3 docs: Delete duplicate line in gdkwindow.c 2011-10-01 01:24:36 +01:00
Benjamin Otte
85b79fbd26 handlebox: Deprecate 2011-09-30 23:23:36 +02:00
Benjamin Otte
e967c7406a testgtk: Remove handlebox example
Rather than keeping it and enabling deprecated code in testgtk I decided
to delete the example. The warnings from testgtk about deprecated code
are too useful IMO.
Should we need it again, we can make it into its own test, or add a
testgtkdeprecated.
2011-09-30 23:23:36 +02:00
Benjamin Otte
5ae01f82c0 tests: Remove handleboxes from testmerge example 2011-09-30 23:23:36 +02:00
Benjamin Otte
a36b05fed7 a11y: Don't include gtkx when not needed 2011-09-30 23:23:36 +02:00
Benjamin Otte
4a43034761 a11y: Remove useless check 2011-09-30 23:23:36 +02:00
Yaron Shahrabani
e0625f1370 Updated Hebrew translation. 2011-09-30 13:27:54 +03:00
Benjamin Otte
61d6c73f18 tests: Fix a bunch of set-but-unused warnings in the filtermodel test
The whole test doesn't seem to unref any memoery, somebody should review
it.
2011-09-30 00:26:22 +02:00
Benjamin Otte
58d9c7e53e docs: Fix typo in treeview docs 2011-09-30 00:26:22 +02:00
Javier Jardón
28bffa4f27 gtktable: Fix gtk-doc notation 2011-09-29 12:42:38 +01:00
Javier Jardón
b0a7db76fb Replace some references to the GtkTable, use GtkGrid instead 2011-09-29 12:38:49 +01:00
Cosimo Cecchi
bdfa05bc81 notebook: don't forget to prepare the tab style context before drawing
The previous commit a9affcdd3f
accidentally removed the call to notebook_tab_prepare_style_context()
2011-09-29 01:49:55 -04:00
Benjamin Otte
a9affcdd3f notebook: Remove unused variables 2011-09-29 04:24:02 +02:00
Benjamin Otte
11e17601b3 combobox: Remove unused define 2011-09-29 04:24:02 +02:00
Cosimo Cecchi
fb488d49b2 GtkTreeViewColumn: initialize a variable
Shut up valgrind complaining about uninitialized values

==5330== Conditional jump or move depends on uninitialised value(s)
==5330==    at 0x624FF4C: gdk_window_move_resize_internal
(gdkwindow.c:6037)
==5330==    by 0x62502C3: gdk_window_move_resize (gdkwindow.c:6274)
==5330==    by 0x5E4FBB5: _gtk_tree_view_column_allocate
(gtktreeviewcolumn.c:2169)
==5330==    by 0x5E3846B: gtk_tree_view_size_allocate_columns
(gtktreeview.c:2631)
==5330==    by 0x5E43D76: gtk_tree_view_size_allocate
(gtktreeview.c:2686)
==5330==    by 0x7F03959: g_closure_invoke (gclosure.c:774)
==5330==    by 0x7F16446: signal_emit_unlocked_R (gsignal.c:3202)
==5330==    by 0x7F20256: g_signal_emit_valist (gsignal.c:3003)
==5330==    by 0x7F20421: g_signal_emit (gsignal.c:3060)
==5330==    by 0x5E6DFBE: gtk_widget_size_allocate (gtkwidget.c:4886)
==5330==    by 0x5D94ADD: gtk_scrolled_window_allocate_child
(gtkscrolledwindow.c:1506)
==5330==    by 0x5D95299: gtk_scrolled_window_size_allocate
(gtkscrolledwindow.c:1704)
==5330==    by 0x7F03959: g_closure_invoke (gclosure.c:774)
==5330==    by 0x7F16446: signal_emit_unlocked_R (gsignal.c:3202)
==5330==    by 0x7F20256: g_signal_emit_valist (gsignal.c:3003)
==5330==    by 0x7F20421: g_signal_emit (gsignal.c:3060)
==5330==    by 0x5E6DFBE: gtk_widget_size_allocate (gtkwidget.c:4886)
==5330==    by 0x5C62708: gtk_box_size_allocate (gtkbox.c:658)
==5330==    by 0x7F03959: g_closure_invoke (gclosure.c:774)
==5330==    by 0x7F16446: signal_emit_unlocked_R (gsignal.c:3202)
==5330==  Uninitialised value was created by a stack allocation
==5330==    at 0x5E4FA8D: _gtk_tree_view_column_allocate
(gtktreeviewcolumn.c:2139)
2011-09-28 20:20:20 -04:00
Cosimo Cecchi
036c193fb2 GdkWindow: fix conditional jump depends on uninitialized value error
Those if() blocks don't have any reason being there, as x and y are not
pointers. If the window is destroyed, just set the out values to zero
and return.

As seen in valgrind:

==3306== Conditional jump or move depends on uninitialised value(s)
==3306==    at 0x624C74F: gdk_window_get_root_coords (gdkwindow.c:6933)
==3306==    by 0x5E193C3: gtk_tooltip_show_tooltip (gtktooltip.c:1160)
==3306==    by 0x5E19C05: tooltip_popup_timeout (gtktooltip.c:1282)
==3306==    by 0x623B102: gdk_threads_dispatch (gdk.c:754)
==3306==    by 0x8592F3A: g_timeout_dispatch (gmain.c:3907)
==3306==    by 0x859174C: g_main_context_dispatch (gmain.c:2441)
==3306==    by 0x8591F47: g_main_context_iterate (gmain.c:3089)
==3306==    by 0x8592494: g_main_loop_run (gmain.c:3297)
==3306==    by 0x5D2E501: gtk_main (gtkmain.c:1362)
==3306==    by 0x5C5652F: gtk_application_run_mainloop
(gtkapplication.c:115)
==3306==    by 0x7C47C9D: g_application_run (gapplication.c:1323)
==3306==    by 0x447B5F: main (nautilus-main.c:102)
==3306==  Uninitialised value was created by a stack allocation
==3306==    at 0x624D48A: gdk_window_get_device_position
(gdkwindow.c:4952)
2011-09-28 20:20:19 -04:00
Benjamin Otte
08d578dfcb table: Deprecate GtkTable for GtkGrid 2011-09-29 01:51:46 +02:00
Benjamin Otte
80462c7cfd docs: Make infobar code example use GtkGrid instead of GtkTable 2011-09-29 01:51:46 +02:00
Benjamin Otte
638cb9e11a testtoolbar: Fix test to use GtkGrid
The conversion in commit 7724f14dfa was
incomplete. Redo it.
2011-09-29 01:51:46 +02:00
Benjamin Otte
9aed1514b7 testgtk: Convert panes example from GtkTable to GtkGrid 2011-09-29 01:51:46 +02:00
Benjamin Otte
4fbda7abfb testgtk: Convert size groups example from GtkTable to GtkGrid 2011-09-29 01:51:46 +02:00
Benjamin Otte
db746f39d8 testgtk: Switch progress bar example from GtkTable to GtkGrid 2011-09-29 01:51:46 +02:00
Benjamin Otte
d4c520e0c7 testgtk: Clean up code
Remove unused hboxes.
2011-09-29 01:51:46 +02:00
Michael Natterer
0a13deae88 quartz: don't filter away directly encoded 24-bit UCS characters
gdk_unicode_to_keyval(uc) returning (uc | 0x01000000) is not an
error return value but simply the way to encode 24-bit unicode
characters directly as keyvals.
2011-09-28 13:48:52 +02:00
Benjamin Otte
32bb9eebaa testgtk: Move paned example from GtkTable to GtkGrid 2011-09-28 05:29:50 +02:00
Benjamin Otte
6e8b4c851a testgtk: Move display example from GtkTable to GtkGrid 2011-09-28 05:29:50 +02:00
Benjamin Otte
35f5dd53a2 testgtk: Remove invalid property 2011-09-28 05:29:50 +02:00
Benjamin Otte
94f77029f7 testgtk: Convert focus example from GtkTable to GtkGrid 2011-09-28 05:29:50 +02:00
Benjamin Otte
9972a1813e testgtk: Simplify code
Use a for loop for iterating.
2011-09-28 05:29:50 +02:00
Benjamin Otte
114541359f testgtk: Switch scrolled windows example from GtkTable to GtkGrid 2011-09-28 05:29:50 +02:00
Benjamin Otte
26974640f8 testgtk: Convert radio/check button examples from GtkTable to GtkGrid 2011-09-28 05:29:50 +02:00
Benjamin Otte
88a7942198 print: Convert custom paper dialog from GtkTable to GtkGrid 2011-09-28 05:29:50 +02:00
Benjamin Otte
2d885120bc testgtk: Convert buttons example from GtkTable to GtkGrid 2011-09-28 05:29:50 +02:00
Benjamin Otte
e214aec3cf testgtk: Beautify buttons example 2011-09-28 05:29:50 +02:00
Benjamin Otte
c25f2c4728 testgtk: Convert big windows example from GtkTable to GtkGrid 2011-09-28 05:29:50 +02:00
Benjamin Otte
06440b40e2 testgtk: Upgrade alpha windows test from GtkTable to GtkGrid
Also fix some extra code.
2011-09-28 05:29:50 +02:00
Benjamin Otte
41e17d92c6 tests: Convert testframe from GtkTable to GtkGrid 2011-09-28 05:29:50 +02:00
Benjamin Otte
c4bc16e023 tests: Convert testgeometry from GtkTable to GtkGrid 2011-09-28 05:29:50 +02:00
Benjamin Otte
d4d4f7f7e7 tests: Convert testexpand from GtkTable to GtkGrid 2011-09-28 05:29:50 +02:00
Benjamin Otte
4866b04dce tests: Convert testentryicons example from GtkTable to GtkGrid 2011-09-28 05:29:50 +02:00
Benjamin Otte
32c21ea1b1 tests: Convert testdnd from GtkTable to GtkGrid 2011-09-28 05:29:50 +02:00
Benjamin Otte
1678fff136 tests: Convert testadjustsize example from GtkTable to box and grid 2011-09-28 05:29:50 +02:00
Benjamin Otte
3111ac0b1a tests: Make prop-editor use a grid instead of a table 2011-09-28 05:29:50 +02:00
Benjamin Otte
60eede3db3 tests: Convert print-editor from GtkTable to GtkBox 2011-09-28 05:29:49 +02:00
Benjamin Otte
afc56461de tests: Convert testimage example from GtkTable to GtkGrid 2011-09-28 05:29:49 +02:00
Benjamin Otte
2071cbf291 tests: Convert testmerge from GtkTable to GtkGrid 2011-09-28 05:29:49 +02:00
Cosimo Cecchi
5cf0450c69 toolbutton: don't force the icon widget to be a GtkMisc
There's really no reason the icon widget must be a GtkMisc. You might
want to use e.g. a GtkSpinner.
2011-09-27 17:31:11 -04:00
Cosimo Cecchi
63124e81b6 notebook: vborder/hborder deprecations are Since: 3.4, not 3.2 2011-09-27 13:46:01 -04:00
Cosimo Cecchi
c2f5d3d8b0 notebook: add top/bottom/left/right style classes to the tab region
When we use the style context to get information for the tab region,
also add a style class to indicate its position, so that the relevant
information is pulled off from the theme.

https://bugzilla.gnome.org/show_bug.cgi?id=659777
2011-09-27 13:43:21 -04:00
Cosimo Cecchi
8d3f7e3a4a stylecontext: add style classes for top/bottom/right/left areas
This is useful to e.g. theme notebook tabs differently according to
their position directly from the CSS sheet.

GtkNotebook support in a separate commit.

https://bugzilla.gnome.org/show_bug.cgi?id=659777
2011-09-27 13:43:21 -04:00
Cosimo Cecchi
d6a58e5bd3 notebook: unconditionally apply padding to the tab content
Not only when on left or top, otherwise the other position look
off-centered.

https://bugzilla.gnome.org/show_bug.cgi?id=659777
2011-09-27 13:43:21 -04:00
Cosimo Cecchi
34ee6d08bb notebook: really deprecate tab_vborder and tab_hborder
The setter for this was deprecated in 2.x and removed in 3.0.
I don't see any reason why we should hardcode 2px for this value;
instead, deprecated the getter and make it always return zero, and stop
using the variables internally.

https://bugzilla.gnome.org/show_bug.cgi?id=659777
2011-09-27 13:43:21 -04:00
Cosimo Cecchi
2500a95fad notebook: allow using different padding values for the active tab state
The code before was basically adding and removing the same padding value
in two different places during the allocation cycle.
Instead, what we want to do is to offset the inactive tab allocation by
the difference with the active tab padding, to ensure the tab content is
always drawn centered and in the right position.

https://bugzilla.gnome.org/show_bug.cgi?id=659777
2011-09-27 13:43:21 -04:00
Cosimo Cecchi
d4f83cdfb6 notebook: use the current state to get the padding values
We want to enable the use of different padding values between active and
inactive tabs, so that the two are completely separated (but limited by
the active tab size).
This way themes can decide how bigger the active tab is drawn compared
to the normal one just specifying a different padding value from the
CSS, like this:

.notebook tab {
  padding: 2;
}

.notebook tab:active {
  padding: 4;
}

As a first step, fetch the padding values with the right state flags
from GtkStyleContext.

https://bugzilla.gnome.org/show_bug.cgi?id=659777
2011-09-27 13:43:21 -04:00
YunQiang Su
4991da8dd5 update zh_CN translation 2011-09-28 01:34:46 +08:00
Cosimo Cecchi
82710adc24 mountoperation: fix the build
2d3db3421f has a typo which broke the
build on master.
2011-09-27 12:51:54 -04:00
Piotr Drąg
b58a82dbb3 Updated POTFILES.skip 2011-09-27 16:04:53 +02:00
Michael Natterer
2d3db3421f Bug 659406 - Abstract what triggers a context menu
Add gdk_event_triggers_context_menu(), using the new modifier
abstraction API. Remove _gtk_button_event_triggers_context_menu()
and port all callers.
2011-09-27 15:45:18 +02:00
Michael Natterer
27cbbc4a7d GtkSettings: fix compile warnings on != X11 2011-09-27 14:21:09 +02:00
Michael Natterer
11f8c1ba6f gtk: remove the private GTK_EXTEND/MODIFY_SELECTION_MOD_MASK
and use the new public modifier abstraction API instead.
2011-09-27 12:06:10 +02:00
Michael Natterer
0abe8ce27b gtk: remove the private GTK_NO_TEXT_INPUT_MOD_MASK
and use the new public modifier abstraction API.
2011-09-27 11:34:19 +02:00
Michael Natterer
4a7a67339a Bug 659602 - Provide an abstraction for the platform's use of modifier keys
Add enum GdkModifierIntent which identifies use cases for modifier masks
and GdkKeyMap::get_modifier_mask(). Add a default implementation which returns
what is currently hardcoded all over GTK+, and an implementation in the
quartz backend. Also add gtk_widget_get_modifier_mask() which simplifies
things by doing widget->display->keymap->get_modifier_mask().
2011-09-27 09:56:25 +02:00
Benjamin Otte
04009aa332 tests: Use a grid in testnotebookdnd instead of a table 2011-09-27 05:37:14 +02:00
Benjamin Otte
fa656acb63 tests: Use a grid in testorientable instead of a table 2011-09-27 05:37:14 +02:00
Benjamin Otte
814b6c27aa tests: Use a box instead of a table in testselection 2011-09-27 05:37:14 +02:00
Benjamin Otte
aebd859ef9 toolbar: Fix widget path creation code
- Ensure arrow button is always included
- Invalidate list when direction changes
2011-09-27 05:37:14 +02:00
Benjamin Otte
276a9d7567 container: Warn if an invalid widget path is created
This makes it quite a bit easier to debug things.
2011-09-27 05:37:14 +02:00
Benjamin Otte
7724f14dfa tests: Convert testtoolbar to use a box instead of a table 2011-09-27 05:37:14 +02:00
Benjamin Otte
b48c2d3aea tests: Convert testtreeview from GtkTable to GtkBox 2011-09-27 05:37:14 +02:00
Benjamin Otte
dbd49744e3 tests: Make testwindows use GtkGrid 2011-09-27 05:37:14 +02:00
Benjamin Otte
3658e7a459 tests: Make testwindows dialog even more beautiful 2011-09-27 05:37:14 +02:00
Benjamin Otte
5e08c315b2 tests: Make editing window look more beautiful 2011-09-27 05:37:14 +02:00
Мирослав Николић
7b732ffb73 Updated Serbian translation 2011-09-27 02:24:51 +02:00
Matthias Clasen
a095a24ab4 Put master on the 3.3 track 2011-09-26 18:03:37 -04:00
Benjamin Otte
89d16a5123 reftests: Add a reftest checking background-color: transparent 2011-09-26 22:34:20 +02:00
Rodolfo Ribeiro Gomes
c7f2c88b18 Fixed some strings in Brazilian Portuguese translation 2011-09-26 15:46:00 -03:00
Michael Natterer
b663f3a00b Bug 659406 - Abstract what triggers a context menu
Add _gtk_button_event_triggers_context_menu() and use it instead
of checking for event->button == 3, so context menus are invoked
correctly on the Mac.
2011-09-26 16:01:50 +02:00
Michael Natterer
0955a59563 app: abstract which modifiers are used for extending and modifying selections
which are SHIFT and MOD2 on the Mac, and SHIFT and CONTROL otherwise.
Use the new define all over the place and rename variables and
members to not say "shift" or "control".
2011-09-26 16:01:50 +02:00
Michael Natterer
286fff4e5f gtk: use GTK_NO_TEXT_INPUT_MOD_MASK also in gtkfilechooserdefault.c
(cherry picked from commit b057a311e7)
2011-09-26 16:01:50 +02:00
Michael Natterer
24a42839ba gtk: allow to specify accelerators in a platform-independent way
Introduce <Primary> in accelerator strings, which resolves to
GDK_CONTROL_MASK on X11/Win23, and to GDK_META_MASK on quartz.
Also serialize CONTROL/META as <Primary> depending on the platform.
2011-09-26 16:01:50 +02:00
Michael Natterer
2a8be23d17 gtk: fix entering of Option-foo symbols on the Mac
define GTK_NO_TEXT_INPUT_MOD_MASK in gtkprivate.h
and use it in the IM contexts, so Option-foo is no longer
filtered away.
2011-09-26 16:01:50 +02:00
Michael Natterer
d3df4678ca gtk: use GTK_DEFAULT_ACCEL_MOD_MASK instead of GDK_CONTROL_MASK in gtkstock.c 2011-09-26 16:01:50 +02:00
Michael Natterer
a99d14f61c quartz: resolve the modifier confusion on the Mac
- map Alt/Option to MOD1
- map Command to MOD2
- map MOD2 to the virtual Meta
- improve/fix (?) group handling in gdkkeys-quartz.c
2011-09-26 16:01:50 +02:00
Michael Natterer
c50063397f gtk: disable mnemonics in gtkrc.key.mac, they don't exist on the Mac
(cherry picked from commit d83c86d42e)
2011-09-26 16:01:50 +02:00
Michael Natterer
3fd7dbc940 gtk: enable setting virtual modifiers in GtkCellRendererAccel
Call gdk_keymap_add_virtual_modifiers() on event->state,
so virtual modifiers get added at all.
(cherry picked from commit be1eea612c)
2011-09-26 16:01:50 +02:00
Benjamin Otte
b01e20f1d1 cssprovider: Remove unused enums 2011-09-26 16:00:26 +02:00
Benjamin Otte
1e36e40e29 styleproperty: Allow 'transparent' keyword for background-color 2011-09-26 16:00:26 +02:00
Benjamin Otte
205d0eb4da styleproperty: Default to transparent background-color 2011-09-26 16:00:26 +02:00
Benjamin Otte
61525f0662 styleproperty: Use the long form to register background-color
We want to set a default value.
2011-09-26 16:00:25 +02:00
Carles Ferrando
6476f6a265 [l10n]Updated Catalan (Valencian) translation 2011-09-26 14:22:19 +02:00
Carles Ferrando
d026fd4a04 [l10n]Updated Catalan (Valencian) translation 2011-09-26 14:22:01 +02:00
Petr Kovar
33c43c9264 Update Czech translation 2011-09-26 12:20:49 +02:00
Matthias Clasen
70b13d734d Bump version 2011-09-25 22:01:13 -04:00
Matthias Clasen
c9beb22f7b 3.2.0 2011-09-25 22:00:20 -04:00
Matthias Clasen
420a09363c Updates 2011-09-25 21:13:33 -04:00
Matthias Clasen
5ff8fe6971 Documentation fixes
Mostly making sure that return values and varargs don't loose
their docs.
2011-09-25 21:04:49 -04:00
Michael Natterer
a6151ebb95 GtkBox: make get_path_for_child() work if there are internal children
Use foreach() instead of forall() to find the child's siblings
because internal children of subclasses have no sibling relation
to the box' children. Also deal with the subclass failing to
implement get_path_for_child(). This caused an infinite widget
path invalidation loop of sorts with GimpMessageBox, which is a
vertical box with a decorative icon to the left.
2011-09-26 00:52:28 +02:00
Petr Kovar
66becfdab1 Update Czech translation 2011-09-25 23:57:51 +02:00
Pau Iranzo
874b7207b0 [l10n]Updated Catalan translation 2011-09-25 23:39:17 +02:00
Gil Forcada
aa62d0f334 [l10n]Updated Catalan translation 2011-09-25 23:11:05 +02:00
OKANO Takayoshi
8b9601df17 Updated Japanese translation 2011-09-26 01:23:22 +09:00
Michael Natterer
c7cf1f531d GtkTreeViewColumn: fix x_offset returned by cell_get_position()
Fixes #640741 - gtk_tree_view_column_get_cell_position() seems to be broken

It is supposed to return the offset within the column, but returned
the offset within the tree, changed by allocation.x of the column's
button (which I don't really unserstand and was clearly not working).
2011-09-25 17:45:57 +02:00
Michael Natterer
33f7754a71 GtkTreeViewColumn: fix return value of gtk_tree_view_column_cell_get_position()
Return FALSE again if the passed in cell is not part of the column.
It was always returning TRUE since GtkCellArea was introduced.
2011-09-25 14:55:23 +02:00
Alexander Shopov
1c993d52b8 Updated Bulgarian translation 2011-09-25 14:53:52 +03:00
ipraveen
8725dca380 Updated Telugu Translation 2011-09-25 14:07:55 +05:30
ipraveen
8c7dca8c79 Updated Telugu Translation 2011-09-25 12:29:17 +05:30
ipraveen
021c4d7e2e Updated Telugu Translation 2011-09-25 12:04:12 +05:30
Kenneth Nielsen
29fe165511 Updated Danish translation 2011-09-24 22:19:37 +02:00
Kenneth Nielsen
e19d620267 Updated Danish translation 2011-09-24 14:51:00 +02:00
Matthias Clasen
65ee452a99 Add some missing entries to the docs 2011-09-23 22:18:44 -04:00
Matthias Clasen
39acc6488a Updates 2011-09-23 21:06:23 -04:00
Aurimas Černius
c91be5893b Updated properties Lithuanian translation 2011-09-24 00:32:27 +03:00
Aurimas Černius
e994543ee7 Updated Lithuanian translation 2011-09-24 00:29:50 +03:00
Matthias Clasen
dd82b30433 Fix module blacklisting
The handling of the module lists is a bit confusing here. There is
a global list that is populated with initial modules from GTK_MODULES,
and then there is a second list that is suppposed to hold the modules
loaded from the gtk-modules xsetting, which we attach to the GtkSettings
object. The blacklisting caused us to put the wrong modules into the
second list, and mess up the module refcounts, eventually double-freeing
memory when the setting changes repeatedly.

https://bugzilla.gnome.org/show_bug.cgi?id=659966
2011-09-23 16:42:45 -04:00
Benjamin Otte
bd8e9085ab textview: Fix comparison being the wrong way
Keynav failed when the position did _not_ change.
2011-09-23 22:24:00 +02:00
Alban Crequy
6ab7b87a02 gtktreeviewaccessible: do not trigger an assertion
The following assertion was triggered in model_row_inserted() because
iterate_thru_children() modifies the parameter tree_model before passing it to
traverse_cells().

Gtk-CRITICAL **: gtk_tree_path_compare: assertion `b->depth > 0' failed

The stack with the bug was:

  #0  gtk_tree_path_compare at gtktreemodel.c
  #1  traverse_cells at gtktreeviewaccessible.c
  #2  model_row_inserted at gtktreeviewaccessible.c

This patch calls iterate_thru_children() with a copy of the path so that the
original is not modified.
2011-09-23 12:04:39 -04:00
Bastien Nocera
a0fc947f89 GtkAssistant: Fix problems with gtk_widget_show_all()
gtk_widget_show_all() would have shown every single item inside
the GtkAssistant sidebar, as well as all the navigation buttons.

https://bugzilla.gnome.org/show_bug.cgi?id=659826
2011-09-23 12:45:09 +01:00
Christian Persch
370f0d1d86 Disable font fallback in the fontchooser preview
The preview is should show the selected font, not whatever
font contains glyphs for the preview text.
2011-09-23 00:32:44 +02:00
Benjamin Otte
7c675b34c5 fontbutton: Properly display absolute sizes
Display them the same way as Pango does.
2011-09-22 21:44:06 +02:00
Benjamin Otte
d5bc1b66d2 fontbutton: Properly update label after property changes
Previously, the font wasn't properly updated after some changes.
2011-09-22 21:44:05 +02:00
Benjamin Otte
19623af04e fontbutton: Display the same text as elsewhere
In particular, display names of families that don't have an installed
font.
2011-09-22 21:44:05 +02:00
Benjamin Otte
18a6d9803e fontchooser: Use fixed height mode for the font face list
Now that we enforce same height anyway, this just further speeds things
up.
2011-09-22 21:44:05 +02:00
Benjamin Otte
1892c64acc fontchooser: Set a fixed size on the preview cell
This way, all rows have the same height. It has 3 advantages:
1) No actual computation is necessary to compute the size of the cell.
   This speeds up the list tremendously (filling out the list goes from
   25s to 3s).
2) Buggy fonts don't mess up the list anymore with their weird sizes.
   Instead, they are clipped / empty space is added.
3) Buggy fonts look more buggy. So their use is hopefully discouraged.
2011-09-22 21:44:05 +02:00
Benjamin Otte
59fbfd6205 fontchooser: Split out computing of the preview text attributes 2011-09-22 21:44:05 +02:00
Benjamin Otte
c1958ae9f2 fontchooser: Use absolute size for the preview text in the list
With absolute sizes, Pango is way better at getting the actual sizes of
the fonts to match up. It's a bit harder to compute a proper value for
this, whcih makes the code ugly, but as long as it works better...
2011-09-22 21:44:05 +02:00
Benjamin Otte
14154dac31 fontchooser: Set cell data as text + attributes instead of markup
This is quite a bit uglier, but allows more freedom.
2011-09-22 21:44:05 +02:00
Benjamin Otte
38af387ee3 fontchooser: Reselect font when it's unfiltered 2011-09-22 21:44:05 +02:00
Benjamin Otte
c9ef2d019e fontchooser: Only compare font descriptions when families match
This way, we can find fonts way quicker as we only need to create font
descriptions for fonts with matching families. Most importantly, we're
rather quick in the "the font doesn't exist" case.
2011-09-22 21:44:05 +02:00
Benjamin Otte
7d5d0a19e7 fontchooser: Only create font descriptions on demand
pango_font_describe() is expensive, so try not to use it.
2011-09-22 21:44:05 +02:00
Benjamin Otte
a40d0b44e1 fontchooser: Make all setters go through merge_font_desc()
Don't special case cursor_changed anymore.
2011-09-22 21:44:05 +02:00
Benjamin Otte
af8c3fe98e fontchooser: Update range marks properly
Range marks weren't updated previously when the font was set
programmatically. Also, setting the range marks could cause the font
size to change.
2011-09-22 21:44:05 +02:00
Benjamin Otte
59298d9e82 fontchooser: Reorganize code a bit
The main reason is so that we have a new function that we can use from
the cursor_changed_cb.
2011-09-22 21:44:05 +02:00
Benjamin Otte
132ccf021f fontchooser: Don't store the current face and family anymore
They can be queried on-demand from the font list.
2011-09-22 21:44:05 +02:00
Benjamin Otte
7cf53a9f60 fontchooser: Take font description from model
... instead of taking face and constructing it from there.
2011-09-22 21:44:05 +02:00
Benjamin Otte
2b83d03604 fontchooser: Sanitize variable declarations
- no empty lines between variables
- no unnecessary casts
- use glib-style casts
- no spaces
2011-09-22 21:44:05 +02:00
Benjamin Otte
5a5737e3b6 fontchooser: Fix leak
the path variable is set, not filled in.
2011-09-22 21:44:05 +02:00
Benjamin Otte
a124d17825 fontchooser: Store an iter to the current font
Note that we cannot use GtkTreeSelection for this, because when the font
list is filtered the current font may not be visible.
2011-09-22 21:44:05 +02:00
Morten Welinder
9d96830571 cssprovider: Remove outdated docs 2011-09-22 21:44:05 +02:00
Benjamin Otte
6499088f7f fontchooser: Store tree model member variables as GtkTreeModel
... and remove the now unnecessary treemodel casts everywhere.

Just code cleanup.
2011-09-22 21:44:05 +02:00
Benjamin Otte
3d87ee7716 fontchooser: Rename populate_list() function
Name it gtk_font_chooser_widget_load_fonts(). Also, don't take any
arguments, they were the same everywhere and they're member variables of
the font chooser anyway.
2011-09-22 21:44:04 +02:00
Benjamin Otte
6cbbc789d5 fontchooser: Make changing the preview text fast
Instead of reloading the font list, we now just queue a redraw. This
works, because the preview text is added using a cell data func instead
of a custom column.
2011-09-22 21:44:04 +02:00
Benjamin Otte
5834691e69 fontchooser: Use a cell_data_func for the font list
This way, we don't have to store the preview text in the list.
2011-09-22 21:44:04 +02:00
Benjamin Otte
3a77b7e005 fontchooser: Don't scroll in the populate_list() function 2011-09-22 21:44:04 +02:00
Benjamin Otte
ded10365a1 fontchooser: Remove needless scroll calls
Previous functions take care of scrolling already.
2011-09-22 21:44:04 +02:00
Benjamin Otte
3af04c1dce fontchooser: Introduce gtk_font_chooser_find_font()
... which looks up the font in the list of fonts. This then can be used
to select an actual font upon changes.

Also fixes cases where the get_family() and get_face() functions would
return outdated data when set_font() had been called.
2011-09-22 21:44:04 +02:00
Benjamin Otte
fe8ed0a3f6 fontchooser: Rewrite size changes
They now go through gtk_font_chooser_widget_take_font_desc(). The end
goal is to make all changes go through this function, so that all
updates that are happening are easy to track.

Another change is that the code now merges the font description instead
of just using the new one. This avoids weird situations when people set
the font "Bold" for example, which has neither a size nor a font family.
2011-09-22 21:44:04 +02:00
Benjamin Otte
af5f593b6d fontchooser: Fix size computation 2011-09-22 21:44:04 +02:00
Benjamin Otte
8f33324750 fontchooser: Fix gcc warnings 2011-09-22 21:44:04 +02:00
Changwoo Ryu
aeace5d005 Updated Korean translation 2011-09-23 03:01:11 +09:00
Daniel Nylander
a861fa0f92 Updated Swedish translation 2011-09-22 16:37:26 +02:00
Daniel Nylander
0c33f0e958 Updated Swedish translation 2011-09-22 16:37:16 +02:00
Daniel Nylander
e4bf7a2a3c Updated Swedish translation 2011-09-22 16:37:16 +02:00
Antonio Fernandes C. Neto
4403cf0567 Updated Brazilian Portuguese translation. 2011-09-22 10:30:55 -04:00
Manoj Kumar Giri
2ea4cef672 Updated Oriya Translation 2011-09-22 19:36:41 +05:30
Nilamdyuti Goswami
ee1bd4cc6d Update Assamese translation 2011-09-22 12:44:58 +02:00
Mario Blättermann
349e9cce9a [l10n] Updated German translation 2011-09-22 08:34:07 +02:00
Bruno Brouard
2c704dd1a1 Updated French translation 2011-09-21 20:14:03 +02:00
Inaki Larranaga Murgoitio
9dfb837019 Updated Basque language 2011-09-21 18:04:18 +02:00
Inaki Larranaga Murgoitio
013456187e Updated Basque language 2011-09-21 17:58:45 +02:00
Antoine Jacoutot
3d165c1a90 gtkmountoperation-x11: unbreak compilation on OpenBSD.
Add missing header to prevent undeclared definitions.
Bug #659565
2011-09-21 16:02:33 +02:00
Duarte Loreto
c64797fe26 Updated Portuguese translation 2011-09-21 00:59:41 +01:00
Gabor Kelemen
0682c4015f Updated Hungarian translation 2011-09-21 00:54:18 +02:00
Rudolfs Mazurs
2b02a4c342 Updated Latvian translation. 2011-09-20 22:30:01 +03:00
Mario Blättermann
4e4a362234 [l10n] Updated German translation 2011-09-20 20:47:32 +02:00
Gabor Kelemen
e26101adaa Updated Hungarian translation 2011-09-20 19:43:05 +02:00
Piotr Drąg
0f9f9ec788 Updated Polish translation 2011-09-20 17:32:11 +02:00
Piotr Drąg
8def2dc162 Updated Polish translation 2011-09-20 17:30:06 +02:00
Antonio Fernandes C. Neto
34490abc84 Updated Brazilian Portuguese translation 2011-09-20 12:04:44 -03:00
Matej Urbančič
8977275f28 Updated Slovenian translation 2011-09-20 13:23:30 +02:00
Daniel Mustieles
49c1580b70 Updated Spanish translation 2011-09-20 10:59:57 +02:00
Yuri Myasoedov
f43a8675b8 Updated Russian translation 2011-09-20 12:05:06 +04:00
Xavier Claessens
0561c7a68d GtkTreeModelFilter: Fix build warnings
https://bugzilla.gnome.org/show_bug.cgi?id=659441
2011-09-20 09:06:54 +02:00
Fran Dieguez
7bd7c02a11 Updated Galician translations 2011-09-20 01:27:13 +02:00
Matthias Clasen
d48542e1cd Bump version 2011-09-19 18:03:11 -04:00
Matthias Clasen
9bf03f57da 3.1.92 2011-09-19 17:39:00 -04:00
Matthias Clasen
aba75fdc95 Updates 2011-09-19 16:39:58 -04:00
Piotr Drąg
8537b1cefa Updated Polish translation 2011-09-19 22:21:53 +02:00
Benjamin Otte
34f9e6a0f3 fontchooser: Remove special case for a single signal handler 2011-09-19 22:11:06 +02:00
Benjamin Otte
a4c3271854 fontchooser: Remove useless code
gtk_adjustment_set_value() clamps itself, no need to do the clamping.

But I was impressed at the amount of comments.
2011-09-19 22:11:06 +02:00
Benjamin Otte
e465023051 fontchooser: Don't store the size separately
Instead, use the font description's size.
2011-09-19 22:11:06 +02:00
Benjamin Otte
6552a8245b fontchooser: Don't reload the fonts on style changes
It's not necessary, because nothing changes.
2011-09-19 22:11:06 +02:00
Benjamin Otte
64d3350264 fontchooser: Assume NULL screen means the default screen
... and update the font list only when the screen actually changes.
2011-09-19 22:11:06 +02:00
Benjamin Otte
ae5f82e455 fontchooser: Store the font description in the model
It's actually expensive to create (>5ms per font with >1000 fonts
installed), so better cache it.
2011-09-19 22:11:06 +02:00
Benjamin Otte
6d8010d3d4 fontchooser: Move the filter func to the visibility func
... instead of rereading all the fonts every time.

With this change, the liststore now contains every font face known to
GTK, so we can actually walk it for matching fonts.
2011-09-19 22:11:06 +02:00
Benjamin Otte
d88b7a6d6b fontchooser: Fix code to make it not look like GTK 0.9 2011-09-19 22:11:06 +02:00
Benjamin Otte
b95bbb5e39 fontchooser: List font description as font description
Otherwise there will be two properties listed as "Font" in property
selectors (in Glade or testfontchooser).
2011-09-19 22:11:05 +02:00
Benjamin Otte
a5f516c818 fontchooser: Family or face can never be NULL
... so there's no need to special-case those situations.
2011-09-19 22:11:05 +02:00
Benjamin Otte
fb2bc139bb fontchooser: Use gtk_list_store_insert_with_values()
... instead of append() + set_values()
2011-09-19 22:11:05 +02:00
Benjamin Otte
824aeb77c6 fontchooserwidget: Simplify function
- Don't do unnecessary casts
- Fix weird variable declaration indenting
- Fix loop indentation
- Use a for loop for iterating over a list, instead of a while loop
- Casefold font name only once, instead of every iteration
- Remove needless true_var = true_var && TRUE assignment
2011-09-19 22:11:05 +02:00
Bruce Cowan
7a34a5971e Updated British English translation 2011-09-19 13:11:23 +01:00
Chris Coulson
22cd009ef7 GtkPaned: Create the child window at the correct position
When there is only a single child, create its window at the correct position
https://bugzilla.gnome.org/show_bug.cgi?id=659241
2011-09-19 12:28:59 +01:00
Мирослав Николић
68e943506e Updated Serbian translation 2011-09-19 03:08:22 +02:00
Rudolfs Mazurs
e79647c45d Updated Latvian translation. 2011-09-18 20:55:24 +03:00
Daniel Nylander
b178259235 Updated Swedish translation 2011-09-18 19:35:34 +02:00
Wolfgang Stöggl
8f8b394c96 [l10n] Updated German translation 2011-09-18 17:37:42 +02:00
Wolfgang Stöggl
23db27831c [l10n] Updated German translation 2011-09-18 17:34:19 +02:00
Ihar Hrachyshka
a7b21b1644 Updated Belarusian translation (some fixes after manual testing). 2011-09-17 23:28:39 +03:00
Ihar Hrachyshka
a846518f81 Updated Belarusian translation (some fixes after manual testing). 2011-09-17 22:51:32 +03:00
Alexander Shopov
c0f9d302ec Updated Bulgarian translation 2011-09-17 22:14:15 +03:00
Xandru Armesto
cf210a87d7 Updated asturian translation 2011-09-17 19:03:55 +02:00
Djavan Fagundes
51da151a6f Fixed a string translated to Brazilian Portuguese 2011-09-17 12:04:13 -03:00
Matej Urbančič
d8702b395d Updated Slovenian translation 2011-09-17 11:01:15 +02:00
Matej Urbančič
5a59a1f542 Updated Slovenian translation 2011-09-17 10:55:24 +02:00
Martin Srebotnjak
a376dcc190 Updated Slovenian translation 2011-09-17 09:48:31 +02:00
Kristian Rietveld
e1ede022f8 treemodelfilter: add additional asserts to MODEL_FILTER_DEBUG mode 2011-09-17 06:09:35 +02:00
Kristian Rietveld
25a514da8a Remove left-over calls to dump function 2011-09-17 06:09:35 +02:00
Matthias Clasen
be58a6ce2c widget-factory: add more checks and radios
Add examples of check and radio menuitems, as well as inconsistent
checks and toggles.
2011-09-16 21:08:14 -04:00
Bastien Nocera
3c2eb053d6 link-button: Reset the mouse cursor when destroyed
If clicking on a link destroys the link button, and keeps the
same GdkWindow then the cursor stays as a hand in the rest of
the interface.

https://bugzilla.gnome.org/show_bug.cgi?id=659247
2011-09-16 15:06:28 +01:00
Javier Jardón
493d79886e gdk/gdkkeys.h: Remove api documentation as Its already in the .c file 2011-09-16 13:12:02 +02:00
Duarte Loreto
c2be5f3155 Updated Portuguese translation 2011-09-16 00:47:03 +01:00
Duarte Loreto
c254ebb56c Updated Portuguese translation 2011-09-16 00:45:41 +01:00
Martin Srebotnjak
4c06f52d77 Updated Slovenian translation 2011-09-15 22:37:48 +02:00
A S Alam
5f360423c5 Updated Punjabi Translation 2011-09-15 22:23:43 +05:30
Xandru Armesto
c3b074f6e2 Updated asturian translation 2011-09-15 18:37:23 +02:00
Cosimo Cecchi
e9de907f9e iconview: add support for prelight cells
Render GtkIconView cell items with the prelight state flag when they're
being mouse hovered.
This works basically in the same way it's done for GtkTreeView cells,
and e.g. GtkCellRendererPixbuf will need to have its follow-state
property to opt in to prelight rendering.

https://bugzilla.gnome.org/show_bug.cgi?id=615501
2011-09-15 09:34:04 -04:00
Fran Dieguez
393a1261b3 Updated Galician translations 2011-09-14 23:14:00 +02:00
Ihar Hrachyshka
e0ea002e0d Updated Belarusian translation. 2011-09-14 21:52:12 +03:00
Ryan Lortie
f86351c05f GtkApplication: chain up ::startup 2011-09-14 14:04:10 -04:00
Yuri Myasoedov
98b8f4a9fd Updated Russian translation 2011-09-14 21:52:57 +04:00
Alexandre Franke
a5f632d815 Update French translation 2011-09-14 18:25:36 +02:00
Benjamin Otte
9ddc11fbb5 iconview: Don't rturn TRUE from draw handler 2011-09-14 16:10:14 +02:00
Benjamin Otte
9e8b2f2521 treeview: Return FALSE from draw handler
... like every widget should.

https://bugzilla.gnome.org/show_bug.cgi?id=658981
2011-09-14 16:10:14 +02:00
Antonio Fernandes C. Neto
a172dff58b Updated Brazilian Portuguese translation. 2011-09-14 08:57:40 -04:00
Matthias Clasen
f1574cbe4d Post-release bump 2011-09-13 18:17:47 -04:00
Matthias Clasen
c37e425341 3.1.90 2011-09-13 17:40:52 -04:00
Matthias Clasen
07cecfc601 Fix a parameter name mismatch 2011-09-13 17:36:24 -04:00
Matthias Clasen
2f19600708 Updates 2011-09-13 17:36:15 -04:00
Luca Ferretti
26799f67a9 l10n: Updated Italian translation 2011-09-13 23:29:15 +02:00
Luca Ferretti
14147de0c2 l10n: Updated Italian translation 2011-09-13 23:26:00 +02:00
Luca Ferretti
f38901509e l10n: Updated Italian translation 2011-09-13 23:25:55 +02:00
Federico Mena Quintero
432b7ee2bc Merge branch 'bgo593793-filechooser-recent-folders-master' 2011-09-13 15:24:37 -05:00
Federico Mena Quintero
c132b6cfc7 bgo#658600 - Don't try to focus the location entry in Recent-files mode
We don't ever start up in Search mode, so we don't need an extra check for that mode, yet.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-09-13 15:24:29 -05:00
Kjartan Maraas
f191798faf Updated Norwegian bokmål translation 2011-09-13 18:47:54 +02:00
dmustieles
24981f75a0 Updated Spanish translation 2011-09-13 18:07:43 +02:00
Richard Hughes
14df59d47c Fix a segfault if the GAppInfo does not have an icon
This fixes the following backtrace:

 0  g_logv (log_domain=0x7ffff60461a4 "GLib-GObject", log_level=<optimized out>,
    format=0x7ffff599c322 "%s: assertion `%s' failed", args1=0x7fffffffc418) at gmessages.c:577
 1  0x00007ffff59312d2 in g_log (log_domain=<optimized out>, log_level=<optimized out>,
    format=<optimized out>) at gmessages.c:591
 2  0x00007ffff601c3c7 in g_object_ref (_object=0x0) at gobject.c:2648
 3  0x00007ffff7721e22 in gdk_x11_app_launch_context_get_startup_notify_id (context=<optimized out>,
    info=0x7fffe8004b40, files=<optimized out>) at gdkapplaunchcontext-x11.c:331
 4  0x00007ffff62e60d0 in _g_desktop_app_info_launch_uris_internal (appinfo=0x7fffe8004b40, uris=0x0,
    launch_context=0x7fffe401c800, spawn_flags=G_SPAWN_SEARCH_PATH, user_setup=0, user_setup_data=0x0,
    pid_callback=0, pid_callback_data=0x0, error=0x7fffffffc848) at gdesktopappinfo.c:1269
 5  0x00007ffff62e630a in g_desktop_app_info_launch_uris (appinfo=<optimized out>, uris=<optimized out>,
    launch_context=<optimized out>, error=<optimized out>) at gdesktopappinfo.c:1341
 6  0x00007ffff62e636b in g_desktop_app_info_launch (appinfo=0x7fffe8004b40, files=<optimized out>,
    launch_context=0x7fffe401c800, error=0x7fffffffc848) at gdesktopappinfo.c:1388
2011-09-13 16:41:38 +01:00
Piotr Drąg
415d916129 Updated Polish translation 2011-09-13 17:26:57 +02:00
Piotr Drąg
aaa2e0b1cd Updated POTFILES.in 2011-09-13 17:20:05 +02:00
Christian Persch
7ce29eecc1 prop-editor: Allow editing PANGO_TYPE_FONT_DESCRIPTION properties
...using a GtkFontButton.
2011-09-13 12:55:34 +02:00
Christian Persch
71c16bad33 Take font size also from the font description 2011-09-13 12:55:34 +02:00
Christian Persch
d82895127e Remove some unnecessary casts 2011-09-13 12:55:34 +02:00
Christian Persch
8219a413ff Clarify conditions when get_font_{family,face} return NULL 2011-09-13 12:55:34 +02:00
Christian Persch
b1ff243c57 Fix implementation of GtkFontButton:get_font_{family,face}
Returns a PangoFont{Family,Face} even when the font dialogue
has never been popped up.
2011-09-13 12:55:34 +02:00
Christian Persch
cc79b08441 Add filter test to testfontchooserdialog 2011-09-13 12:55:33 +02:00
Christian Persch
6902813a11 Rename gtk_font_chooser_get_{family,face,size}
... to gtk_font_chooser_get_font_{family,face,size}, in order to
avoid naming conflicts in bindings.
2011-09-13 12:55:33 +02:00
Christian Persch
abd9242f33 Add GtkFontChooser:font-desc property
Add a way to set/get the font as a PangoFontDescription.
2011-09-13 12:55:33 +02:00
Christian Persch
1b818f2e46 Remove GtkFontChooser:[sg]et_font
Now that the setter doesn't return a value anymore, we can just use
g_object_[sg]et instead of having these vfuncs.
2011-09-13 12:55:22 +02:00
Christian Persch
0b7db6888a Setters should not return a boolean
The setter for the "font" property returned a boolean that indicated
whether the given font has been found. Instead, fall back to the default
font name when the given font doesn't exist.
2011-09-13 12:55:22 +02:00
Matthias Clasen
cf14868619 Cosmetic doc fixes 2011-09-13 12:55:22 +02:00
Matthias Clasen
bdcb8558e3 Trivial: Fix up function name in the docs 2011-09-13 12:55:22 +02:00
Matthias Clasen
9e46e5789c Trivial: Add a few missing functions to the docs 2011-09-13 12:55:22 +02:00
Christian Persch
85e95a765d Mark string for translation 2011-09-13 12:55:22 +02:00
Christian Persch
ca4152995a GtkFontChooser implementation for GtkFontButton 2011-09-13 12:55:21 +02:00
Christian Persch
eb2a54decf Add prop editors to testfontchooser{,dialog} 2011-09-13 12:55:21 +02:00
Christian Persch
eb9efc9fd2 Rename GtkFontChooser:font-name to :font
GtkFontButton already has a property named "font-name" which may
conflict / be an ABI break when moving GtkFontButton to implement
GtkFontChooser. Also, this is more in line with how other parts in
gtk (e.g. GtkCellRendererText) call a font string property.
2011-09-13 12:55:21 +02:00
Christian Persch
5452525143 Make GtkFontChooser an interface
Make the GtkFontChooser API similar to the Gtk{File,Recent,App}Chooser
APIs by introducing GtkFontChooser as an interface, that has a default
implementation in GtkFontChooserWidget.

https://bugzilla.gnome.org/show_bug.cgi?id=657627
2011-09-13 12:55:21 +02:00
I Felix
291b044028 Updated Tamil Translations 2011-09-13 16:11:47 +05:30
I Felix
e4cc5c09a4 Updated Tamil Translations 2011-09-13 16:09:13 +05:30
I Felix
b21eb01cff Updated Tamil Translations 2011-09-13 16:08:29 +05:30
Murray Cumming
7eeebd4311 gtk_assistant_remove_page() docs: Fix typo. 2011-09-13 10:08:48 +02:00
YunQiang Su
609e40718d fix an issus 2011-09-13 13:20:19 +08:00
Yinghua Wang
d2d52567ad update Simplified Chinese (zh_CN) translation 2011-09-13 13:19:11 +08:00
Yinghua Wang
f6b264a34b update Simplified Chinese (zh_CN) translation 2011-09-13 11:54:56 +08:00
Matthias Clasen
7466f846b7 GtkSearchEngineTracker: port to tracker 0.12
We simply use the Tracker DBus api here, caching and direct
access that come with libtracker-sparql are probably not needed
here. Based on a patch by Martyn Russell.

https://bugzilla.gnome.org/show_bug.cgi?id=658272
2011-09-12 21:35:31 -04:00
Matthias Clasen
353c7c622e GtkFileChooserButton: Expand like other 'pickers'
Reported in bug 658774.
2011-09-12 21:33:11 -04:00
Fran Dieguez
2c49983041 Updated galician translations 2011-09-12 21:37:50 +02:00
Fran Dieguez
7fd19d7a36 Updated galician translations 2011-09-12 21:36:19 +02:00
Fran Dieguez
7c77278010 Updated galician translations for documentation 2011-09-12 21:31:54 +02:00
John Ralls
7550157d66 bgo#514843 - [filechooser] Deal with corrupted .gtk-bookmarks gracefully
We weren't checking for the lines in that file being valid UTF-8 strings.
2011-09-12 14:30:44 -05:00
Daniel Nylander
70d70a0607 Updated Swedish translation 2011-09-12 21:07:42 +02:00
Daniel Nylander
2c0a4ff143 Updated Swedish translation 2011-09-12 17:50:11 +02:00
Alexandre Franke
6573e24d59 Update French translation 2011-09-12 01:15:19 +02:00
Ihar Hrachyshka
e12140f8da Updated Belarusian translation. 2011-09-11 21:48:36 +03:00
Kristian Rietveld
3fc80381fd Add unit test for Bug 657353
This is to verify that Bug 657353 has been fixed.
2011-09-11 20:19:56 +02:00
Kristian Rietveld
7c0526e9b2 treemodelfilter: bring if-condition in sync
Bring the if-condition in sync with the other if-conditions in the
function where the "path" variable is used.
2011-09-11 20:19:56 +02:00
John Ralls
7cff8c4403 Quartz: gtk_drag_highlight_draw(): Set the GtkStyleContext to the widget.
Otherwise there's no actual context to save and restore.
2011-09-11 10:49:54 -07:00
Rudolfs Mazurs
442b3d265a Updated Latvian translation. 2011-09-11 20:28:23 +03:00
Kristian Rietveld
3db7344f33 treemodelfilter: correct forgotten unref of parent on level destroy
gtk_tree_model_filter_free_level() should always release ref on parent
unless the parent has been removed in the child model.  The unit tests
added in the previous commit test this.
2011-09-11 16:53:27 +02:00
Kristian Rietveld
9c85042de6 Increase code coverage of first reference transfer code paths 2011-09-11 16:51:23 +02:00
Sébastien Granjoux
35eb92138a treemodelfilter: bgo#658696- Crash when inserting new node 2011-09-11 12:13:54 +02:00
Kristian Rietveld
0ab9766253 Add unit test for bug 658696 2011-09-11 12:13:54 +02:00
Kristian Rietveld
a43f2ba010 gtktreemodelfilter: fix small bug in prune level
gtk_tree_model_filter_prune_level() should drop all internal reference
counts as well for nodes which are going to be removed from the
sequence.
2011-09-11 12:13:54 +02:00
Kristian Rietveld
9ed76387fa gtktreemodelfilter: fix corner case in rows-reordered handling
If the level to be reordered did not contain an elt with offset == 0
(for example if that node was hidden), the first reference was not
correctly transferred.

A unit test for this has been added in a previous commit.
2011-09-11 12:13:54 +02:00
Kristian Rietveld
449c4bc362 Unit test a corner case of gtk_tree_model_filter_rows_reordered() 2011-09-11 12:13:54 +02:00
Jorge González
94a9170808 Updated Spanish translation 2011-09-11 10:29:52 +02:00
Benjamin Otte
3d0a2d50f0 filechooser: Fix compile warning 2011-09-10 16:11:27 +02:00
Piotr Drąg
0ce142e58d Updated Polish translation 2011-09-10 11:56:07 +02:00
Daniel Mustieles
d09a12e0d6 Updated Spanish translation 2011-09-10 10:45:21 +02:00
Matthias Clasen
f9379adca2 GtkAppChooserButton: Add a way to include the default app
This is necessary to use an app chooser button for selecting
default apps in the control center. Also, beef up the docs
for this widget family.

https://bugzilla.gnome.org/show_bug.cgi?id=642706
2011-09-10 01:42:07 -04:00
Cosimo Cecchi
e97ed4374f combobox: implement get_path_for_child() for GtkComboBox
This way we can adjust borders and rounded corners from the theme when
displaying the widget children flipped for RTL locales.

https://bugzilla.gnome.org/show_bug.cgi?id=658507
2011-09-09 11:46:00 -04:00
Dan Winship
e028a5c090 gtkcssprovider: fix a crash in gtk_css_provider_parsing_error
"info" was being declared in two different scopes, and the one that
was freed wasn't the one that was set.
2011-09-09 09:37:44 -04:00
John Ralls
b71f28037f Bug 617583 - Dead accents keys don't work in GTK+ applications on OSX
Handle dead keys in special_ucs_table and have them converted by
UCKeyTranslate(), so all dead key combinations can be entered.
Later, this should be handled in the input method, just as it's
done for X11/Win32.
2011-09-09 10:56:49 +02:00
Dan Winship
228f30e055 gtkmodules: don't append NULL to module list for blacklisted module
fixes a crash when removing "gail" from gtksettings-specified modules
2011-09-08 16:52:00 -04:00
Rudolfs Mazurs
3a1b2871b8 Updated Latvian translation. 2011-09-08 16:30:07 -04:00
Bruno Brouard
e07d7f01a8 Updated French translation 2011-09-08 21:47:09 +02:00
Luca Ferretti
4e86b3f617 l10n: Updated Italian translation 2011-09-08 21:40:50 +02:00
Piotr Drąg
81c3558ea1 Updated Polish translation 2011-09-08 20:47:52 +02:00
A S Alam
8fd73a935d update PunjabiTranslation 2011-09-08 20:37:46 +05:30
Kristian Rietveld
b53a66b7e2 Add unit tests to check hierarchies of deleted nodes are unreffed properly 2011-09-07 22:25:29 +02:00
Kristian Rietveld
d116261e1f Update filter model ref count tests to reflect changes in rules 2011-09-07 22:25:29 +02:00
Kristian Rietveld
022327c408 gtktreemodelfilter: child levels of the root level must remain cached
This is due to the special handling for filter functions that depend
on child level state.  If the parent level of a level is the root level,
the level cannot be removed from the cache.  Any change in this level
can cause its parent in the root level to become visible again.
2011-09-07 22:25:29 +02:00
Kristian Rietveld
ae2b2e7cfc gtktreemodelfilter: rework gtk_tree_model_filter_remove_elt_from_level
The most important change is that the function now properly releases
any external ref count and propagates these changes to the child model.
If a node is removed due to a filtering action, we now properly release
all external reference counts for its hierarchy of child nodes.

Apart from that, the function has been restructured to remove code
duplication.

Finally, there is still some doubt whether there are more calls to
gtk_tree_model_filter_free_level() which need unref_external set to TRUE.
2011-09-07 22:25:29 +02:00
Kristian Rietveld
767b2e2604 gtktreemodelfilter: add a debug define and more assertions
Should be helpful when debugging this thing.  Perhaps this needs to
be properly integrated in G_DEBUG/GTK_DEBUG, but currently I do not see
the need to.
2011-09-07 22:25:29 +02:00
Kristian Rietveld
f317dd3831 gtktreemodelfilter: make rule used for level caching consistent
There was still a discrepancy between the comments and the code about when
exactly a level was to be removed.  The rule is now set on that for a level
to be removed its zero_ref_count as well as the zero_ref_count of its
parent has to be zero.
2011-09-07 22:25:29 +02:00
Kristian Rietveld
0bedb51b33 Add unit test for ref tranfer in rows-reordered with filtered rows 2011-09-07 22:25:29 +02:00
Behdad Esfahbod
057a50d58e Bug 658398 - Use of uninitialized variable reported by Valgrind
Fix it.
2011-09-07 16:19:44 -04:00
Bruce Cowan
f5aba05c93 Updated British English translation 2011-09-07 17:22:13 +01:00
Cosimo Cecchi
8b9f0402b0 iconview: fix a typo while removing the a11y adjustment weak ref
The code sets old_adj_ptr to the location containing the old weak ref,
but then wants to remove a weak ref from &view->old_hadj, causing warnings
when disposing the widget.
2011-09-06 19:09:19 -04:00
Ihar Hrachyshka
aeba575e1c Updated Belarusian translation. 2011-09-07 01:33:36 +03:00
Kjartan Maraas
e635f9d98e Added Norwegian bokmål translation 2011-09-06 21:51:52 +02:00
Matej Urbančič
2cc409cb65 Updated Slovenian translation 2011-09-06 21:49:11 +02:00
Cosimo Cecchi
39f0a60792 themingengine: remove unused variable 2011-09-06 15:01:09 -04:00
Carlos Garnacho
79ff1b669c x11: Don't create GdkDevices for disabled devices
Fixes bug #658379 - Disabled devices still added to list on startup,
spotted by Bastien Nocera. Do not create GdkDevices for disabled
devices on device manager construction, leading to a confusing initial
state.
2011-09-06 20:04:08 +02:00
Andika Triwidada
f714f01b45 Updated Indonesian translation of po-properties 2011-09-06 17:15:38 +07:00
Andika Triwidada
4fafdd98b3 Updated Indonesian translation 2011-09-06 17:10:51 +07:00
Bruno Brouard
0832bad2b6 Updated French translation 2011-09-06 10:57:40 +02:00
Arash Mousavi
bf4558b21f Updated Persian translation 2011-09-06 11:37:50 +04:30
Jorge González
299a97c8ce Updated Spanish translation 2011-09-06 06:07:31 +02:00
Duarte Loreto
684ffdd234 Updated Portuguese translation 2011-09-05 22:52:52 +01:00
Duarte Loreto
7624a08fef Updated Portuguese translation 2011-09-05 22:43:22 +01:00
Matthias Clasen
c1af0ceafc Post-release version bump 2011-09-05 17:07:35 -04:00
Matthias Clasen
6dd3432ecb 3.1.18 2011-09-05 16:43:06 -04:00
Matthias Clasen
c22feaab35 Some more colord configury cleanups
Don't error out when --enable-color=auto, but no colord is found.
Plus various cleanups to the output.
2011-09-05 16:42:59 -04:00
Matthias Clasen
8183d328e8 More NEWS 2011-09-05 16:38:08 -04:00
Matthias Clasen
bd92a61a5f Fix output of pickers.ui a11y test 2011-09-05 16:36:56 -04:00
Matthias Clasen
50c50448bf Updates 2011-09-05 16:36:55 -04:00
Fran Dieguez
27e2ae0388 Updated galician translations 2011-09-05 22:00:07 +02:00
Federico Mena Quintero
c6aca6bb60 Merge branch 'bgo593793-filechooser-recent-folders-master' 2011-09-05 14:36:23 -05:00
Jorge González
63013ee2aa Updated Spanish translation 2011-09-05 20:40:37 +02:00
Federico Mena Quintero
2476d35142 Menu item to visit the selected files in recent-files mode
This will take you to the file's folder and select the file in question.
The menu item is only available in Recently-used and Search modes, so that
you can go from files in them to the 'normal' browsing mode.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-09-05 13:31:57 -05:00
Federico Mena Quintero
668287b940 Factor out functions to create contextual menu items for the file list
Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-09-05 13:22:01 -05:00
Benjamin Otte
c21b6f4705 reftests: Disable border-radius tests for shadow
We get rendering artifacts that make tests fail. Not good.
The code is only commented out so far, so it should be trivial to
reenable if someone wants to. (Or this commit could just be reverted.)
2011-09-05 18:56:23 +02:00
Benjamin Otte
d717a2dcfc grid: Swap wrong spacing properties
row-spacing behaved like column-spacing should have and vice versa.

Also update tests that erroneously checked this behavior.

Thanks to Joanmarie Diggs for finding this.
2011-09-05 18:56:23 +02:00
Benjamin Otte
b314f03bf4 radiobutton: Remove redundant call
The call is done by GtkButton already, no need to override it.
2011-09-05 18:56:23 +02:00
Benjamin Otte
7edf79de26 checkbutton: Remove redundant call
The call is done by GtkButton already, no need to override it.
2011-09-05 18:56:23 +02:00
Cosimo Cecchi
4ea01b2cf3 GtkPathBar: Implement get_path_for_child
This will allow nice theming of the path bar.

https://bugzilla.gnome.org/show_bug.cgi?id=658077
2011-09-05 12:14:09 -04:00
Matthias Clasen
f1476f31fe a11y: Fix up listener registration minimally
For god-knows-what reason, at-spi is trying various formats
of strings when registering listeners, triggering g_warnings()
from gailutil code. Stop doing that.

Also, don't leak temporary string arrays that are a side-effect
of passing parameters around as formatted strings.

https://bugzilla.gnome.org/show_bug.cgi?id=658168
2011-09-05 11:56:54 -04:00
Matthias Clasen
a51a31466d Make the gail blacklisting more quiet
Don't mention blacklisted modules at all if they are not found.
2011-09-05 11:44:47 -04:00
Matthias Clasen
1bede5c3fb GtkFontChooser: mark 'no matches' string for translation 2011-09-05 11:19:30 -04:00
Matthias Clasen
5445b3d7ec GtkToolbar: Move child removal to dispose
Doing it in finalize is too late and can cause various problems
in ::parent-set signal handlers.

https://bugzilla.gnome.org/show_bug.cgi?id=658200
2011-09-05 11:09:16 -04:00
Matthias Clasen
6faba61db1 Some GtkAboutDialog doc additions 2011-09-05 00:00:24 -04:00
Matthias Clasen
3a1ce87c7e Fix typos in gtk_tree_view_set_reorderable docs
As pointed out in bug 530253.
2011-09-04 23:52:36 -04:00
Matthias Clasen
2e39400e18 Clean up the docs of GTK_SELECTION_MULTIPLE
As requested in bug 566202.
2011-09-04 23:46:51 -04:00
Matthias Clasen
eaed6d1912 Improve gtk_tree_view_set_drag_dest_row docs
As requested in bug 581435.
2011-09-04 23:42:42 -04:00
Matthias Clasen
21275a1636 Correct the documentation of gtk_render_arrow() x,y arguments
As pointed out in bug 655631, these are the origin, not
the center of the area.
2011-09-04 23:09:57 -04:00
Matthias Clasen
f601994eff GtkFontChooser: escape markup where required
Since we use markup in the list, we need to escape the font name
and preview text pieces that we embed there.
2011-09-04 17:17:07 -04:00
Matthias Clasen
53edb2a4fb Test non-xml-clean preview text
This shows that we fail to escape markup somewhere.
2011-09-04 17:16:29 -04:00
Ihar Hrachyshka
8b3ff3919d Updated Belarusian translation. 2011-09-04 19:06:49 +03:00
Aurimas Černius
a8f62fe9af Updated Lithuanian translation 2011-09-04 18:41:49 +03:00
Aurimas Černius
ed3c5075dd Updated Lithuanian translation 2011-09-04 18:35:45 +03:00
Kristjan SCHMIDT
f2f781799a Updated Esperanto translation 2011-09-04 13:18:11 +02:00
Matthias Clasen
41dbd20d56 GtkAssistant: Fix label alignment
Make page titles left-aligned again. Changing from misc alignment
to GtkWidget::halign here was a mistake. We can't do that for labels
in a size group, as long as labels still pay attention to misc
alignment.

https://bugzilla.gnome.org/show_bug.cgi?id=658008
2011-09-04 00:42:31 -04:00
Matthias Clasen
dc898e3f84 GtkLabel: make patterns work a little better
When a pattern has been set, we must not throw away
the attributes that contain it.

https://bugzilla.gnome.org/show_bug.cgi?id=658111
2011-09-04 00:01:37 -04:00
Changwoo Ryu
80fbbc38e3 Update Korean translation 2011-09-03 21:58:35 +09:00
Matthias Clasen
be152f9b61 GtkPlug: preserve map/unmap invariants 2011-09-02 21:40:42 -04:00
Matthias Clasen
ef4690d511 GtkGrid: make attaching more flexible
Allow to attach children at either end of row/column 0.
Proposed by Alex Larsson.

https://bugzilla.gnome.org/show_bug.cgi?id=657793
2011-09-02 20:07:19 -04:00
Cosimo Cecchi
f5e758bd60 themingengine: remove xthickness FIXME from gtk_render_line() code
The gtk_render_line() code has a FIXME (coming from the 2.x migration I
suppose) about using xthickness, and it actually hardcodes two lines of
different color instead of drawing a single one.
Since we don't support xthickness anymore, make gtk_render_line() do
what it says, i.e. just draw an 1px line colored with the current
color.

https://bugzilla.gnome.org/show_bug.cgi?id=657963
2011-09-02 15:11:53 -04:00
Cosimo Cecchi
640f06928f treeview: add GTK_STYLE_CLASS_SEPARATOR for tree view separators
https://bugzilla.gnome.org/show_bug.cgi?id=657985
2011-09-02 15:11:15 -04:00
Eitan Isaacson
6eb777a8af Change gtk_css_provider_propagate_error's signature.
Update to new parsing-error signal.

https://bugzilla.gnome.org/show_bug.cgi?id=657882
2011-09-02 09:19:18 -07:00
Og B. Maciel
0ee9a4790a Updated Brazilian Portuguese translation. 2011-09-02 11:29:59 -04:00
Matthias Clasen
22d046d7fe Add a note about placeholder text use
Explain how this is really not such a great feature...
2011-09-02 00:35:38 -04:00
Matthias Clasen
1204a850f3 Formatting cleanups
While we normally try to avoid whitespace fixes, the gtk-demo
code is shown as exemplary, so it should be in good shape,
formatting-wise.
2011-09-01 23:56:58 -04:00
Matthias Clasen
c5cd4174c3 gtk-demo: Drop uses of GtkAlignment 2011-09-01 23:56:57 -04:00
Richard Hughes
ee6b79becf Fix the configure script to actually define HAVE_COLORD when colord is used 2011-09-01 15:34:57 +01:00
Matthias Clasen
a6899f2a9d gtk-demo: replace uses of GtkTable by GtkGrid 2011-08-31 13:31:34 -04:00
Matthias Clasen
ce58d8887f gtk-demo: trivial improvement
Set activates-default in the assistant demo where it makes sense.
2011-08-31 13:31:34 -04:00
Chun-wei Fan
8cd9e34ee3 Update README.win32 and Visual C++ Readme.txt's
-Tell people about the GNOME Live! page which gives a more detailed
 outline on building the GTK+ stack with Visual C++
-Update README.win32 as GAIL is now a standard part built into GTK+
 for its a11y functions, and GAIL-Util is now built with the project
 files too.
-Tell people about the VS2010 support that has been available for a
 while
2011-08-31 14:28:47 +08:00
Javier Jardón
43e241b235 gtk+.doap: Add gtk+ to "platform" category 2011-08-30 22:47:33 +01:00
Javier Jardón
69de896589 Add more compilation warnings 2011-08-30 22:47:33 +01:00
Javier Jardón
d780dde9e1 gtk/Makefile.am: Remove duplicate AM_CPPFLAGS 2011-08-30 22:47:33 +01:00
Matthias Clasen
553628efa1 post-release version bump 2011-08-30 11:48:50 -04:00
Matthias Clasen
b57180a684 3.1.16 2011-08-30 11:28:53 -04:00
Matthias Clasen
3ff5a82e46 Clean up stock-icons
We copy them all in srcdir != builddir builds, so just
nuke the entire directory in that case.
2011-08-30 11:28:53 -04:00
Matthias Clasen
a233022934 Disable underallocation warnings in non-debug builds
It doesn't look like we have much traction of actually fixing
these, and there is very real cost to not being able to distcheck.
2011-08-30 11:28:52 -04:00
Matthias Clasen
53602c400d Disable an incomplete test that does not work
Testing focus changes in this way has no chance of working
until we remove all the idle handlers from gail.
2011-08-30 11:28:52 -04:00
Murray Cumming
342c64c2f2 GtkToolShell: Move vfunc default results to default implementations.
Otherwise the default values are only used if no vfunc is set,
making that default unavailable to vfunc implementations as a fallback,
and unavailable to language bindings (such as gtkmm) that always
have a vfunc implementation, even if that often only tries to call
the base vfunc implemntation.

This was making gtkmm's ToolPalette's (and probably ToolBar's)
items look like buttons instead of being flat.

https://bugzilla.gnome.org/show_bug.cgi?id=656223
2011-08-30 15:28:06 +02:00
Matthias Clasen
9379a48e22 Add headers to treemodel test sources
...otherwise they don't make it into the release tarballs.

https://bugzilla.gnome.org/show_bug.cgi?id=657653
2011-08-29 20:34:46 -04:00
Matthias Clasen
8009a7f0b1 Add a 3.2 index to gdk docs 2011-08-29 13:16:14 -04:00
Matthias Clasen
e0ab377f9b Post-release version bump 2011-08-29 13:09:21 -04:00
Matthias Clasen
50101fba11 3.1.14 2011-08-29 13:08:47 -04:00
Matthias Clasen
925ed7c70f Don't unref floating menuitems
With recent fixes, GTK+ no longer sinks menu items automatically,
so we have to do it explicitly here.
2011-08-29 11:57:39 -04:00
Alejandro Piñeiro
4244349600 a11y: Don't manage window events as a exception
https://bugzilla.gnome.org/show_bug.cgi?id=657260
2011-08-29 10:57:21 -04:00
Alejandro Piñeiro
08bf2e0463 a11y: Use AtkWindow on GtkWindowAccessible
GtkWindowAccessible doesn't require to define window related
signals. They are included on AtkWindow
2011-08-29 10:57:14 -04:00
Matthias Clasen
1090eba9a8 a11y: don't return random numbers
Return 0 for the image size if we don't have a pixbuf to measure.
2011-08-29 10:50:01 -04:00
Matthias Clasen
006d46362c Adapt a11y dump output
Some of the recent changes need to be reflected in the a11y
dumps.
2011-08-29 10:36:44 -04:00
Matthias Clasen
84504014aa Fix exported symbols 2011-08-29 10:24:17 -04:00
Matthias Clasen
3fa5813ea3 testappchooser: handle 'no app selected' gracefully
The test was assuming that it always gets an app info back,
when in reality it might get NULL back.
2011-08-28 23:50:50 -04:00
Matthias Clasen
18dba17f0b GtkAppChooserDialog: handle sensitivity of 'Select' better
When the dialog comes up without a selected item, make 'Select'
insensitive. Also, don't allow to unselect an item without
selecting a different one.
2011-08-28 23:49:41 -04:00
Matthias Clasen
6d797d5356 GtkAppChooser: Deal with 'no app found' gracefully
Several functions inside GtkAppChooserDialog were not handling
the situation that app_info might be NULL after the user clicked
'Select'.

https://bugzilla.gnome.org/show_bug.cgi?id=651827
2011-08-28 22:46:46 -04:00
Matthias Clasen
676316bbd3 Avoid warnings when widgets are not created yet
This widget is created on-demand, so we can not unconditionally
set its sensitivity in some other place.
2011-08-28 22:30:24 -04:00
Matthias Clasen
f64647077f Add an accessor for grid children
This addresses concerns in bug 634136.
2011-08-28 21:20:53 -04:00
Matthias Clasen
b2188f5dc1 Trivial: include cleanups 2011-08-28 20:46:11 -04:00
Matthias Clasen
76c6f49805 Silence the build a bit more 2011-08-28 20:38:28 -04:00
Diego Celix
ca317c6798 tests-prop-editor:gtk_misc_set_alignment replacing
Replacing the function gtk_misc_set_alignment () with
gtk_widget_set_halign () and gtk_widget_set_valign () in
tests/prop-editor.c

https://bugzilla.gnome.org/show_bug.cgi?id=650762
2011-08-28 20:34:35 -04:00
Diego Celix
173cc862a1 testgtk: gtk_misc_set_alignment replacing
Replacing the function gtk_misc_set_alignment () with
gtk_widget_set_halign () and gtk_widget_set_valign () in
tests/testgtk.c

https://bugzilla.gnome.org/show_bug.cgi?id=650762
2011-08-28 20:17:04 -04:00
Diego Celix
fd1fabf5c3 testcalendar: gtk_misc_set_alignment replacing
Replacing the function gtk_misc_set_alignment () with
gtk_widget_set_halign () and gtk_widget_set_valign () in
tests/testcalendar.c

https://bugzilla.gnome.org/show_bug.cgi?id=650762
2011-08-28 20:17:03 -04:00
Diego Celix
bd69e6a6cd demo-ui_manager: gtk_misc_set_alignment replacing
Replacing the function gtk_misc_set_alignment () with
gtk_widget_set_halign () and gtk_widget_set_valign () in
demos/gtk-demo/ui_manager.c

https://bugzilla.gnome.org/show_bug.cgi?id=650762
2011-08-28 20:17:02 -04:00
Diego Celix
464fa4715f demo-sizegroup: gtk_misc_set_alignment replacing
Replacing the function gtk_misc_set_alignment () with
gtk_widget_set_halign () and gtk_widget_set_valign () in
demos/gtk-demo/sizegroup.c

https://bugzilla.gnome.org/show_bug.cgi?id=650762
2011-08-28 20:17:00 -04:00
Diego Celix
9b31aff56c demo-pickers: gtk_misc_set_alignment replacing
Replacing the function gtk_misc_set_alignment () with
gtk_widget_set_halign () and gtk_widget_set_valign () in
demos/gtk-demo/pickers.c

https://bugzilla.gnome.org/show_bug.cgi?id=650762
2011-08-28 20:16:59 -04:00
Diego Celix
a3719d3033 demo-changedisplay:gtk_misc_set_alignment replace
Replacing the function gtk_misc_set_alignment () with
gtk_widget_set_halign () and gtk_widget_set_valign () in
demos/gtk-demo/changedisplay.c

https://bugzilla.gnome.org/show_bug.cgi?id=650762
2011-08-28 20:16:57 -04:00
Diego Celix
372a907e97 gtkappchooserdialog: gtk_misc_set_alignment
Replacing the function gtk_misc_set_alignment () with
gtk_widget_set_halign () and gtk_widget_set_valign () in
gtk/gtkappchooserdialog.c

https://bugzilla.gnome.org/show_bug.cgi?id=650762
2011-08-28 20:16:56 -04:00
Diego Celix
9dfff27c42 gtkaboutdialog: gtk_misc_set_alignment replacing
Replacing the function gtk_misc_set_alignment () with
gtk_widget_set_halign () and gtk_widget_set_valign () in
gtk/gtkaboutdialog.c

https://bugzilla.gnome.org/show_bug.cgi?id=650762
2011-08-28 20:16:54 -04:00
Matthias Clasen
f060343a82 Explicitly link gdk and gtk against libm
We used to get an implicit -lm from gdk-pixbuf, but that has
recently been changed to not inject extraneous libraries into
link lines, so we have to do it ourselves now. This is more
correct, anyway.
2011-08-28 20:03:56 -04:00
Cosimo Cecchi
f7c188c019 API: add accessors for GdkEvent fields
Add accessors for the following fields: button, keyval, keycode, scroll
direction, click count.

https://bugzilla.gnome.org/show_bug.cgi?id=657384
2011-08-28 19:50:34 -04:00
Matthias Clasen
5cc1318279 GtkTrayIconX11: Some more refactoring
I like my refactoring better...
2011-08-28 14:54:14 -04:00
Benjamin Otte
dca3ea896e trayicon-x11: Refactor code a bit
Should make it more obvious what the code actually does.
2011-08-28 20:20:35 +02:00
Vincent Bernat
6754614ac1 trayicon-x11: Fix warnings when visual is not available.
This fixes a regression introduced in commit
b1a1685a33eca16979e63d79915395af0b36. gdk_visual_get_*_pixel_details()
should not be called with a NULL visual.

https://bugzilla.gnome.org/show_bug.cgi?id=649588
2011-08-28 20:20:35 +02:00
Mario Blättermann
64b85e7bd8 [l10n] Updated German translation 2011-08-28 13:40:28 +02:00
Matthias Clasen
6f39855c08 More include cleanups 2011-08-28 01:54:55 -04:00
Matthias Clasen
fd92e7150d More include cleanups 2011-08-28 01:42:10 -04:00
Matthias Clasen
383127cd0b Clean up unneeded includes 2011-08-28 01:40:10 -04:00
Matthias Clasen
227fafb93f GtkPrintUnixDialog: Replace GtkTable by GtkGrid 2011-08-28 01:34:17 -04:00
Matthias Clasen
5b97a58230 GtkFileChooserDefault: Replace GtkTable by GtkGrid 2011-08-28 00:47:24 -04:00
Matthias Clasen
b043a0a610 GtkMountOperation: Replace GtkTable by GtkGrid 2011-08-28 00:39:44 -04:00
Matthias Clasen
280f34ec61 GtkPageSetupUnixDialog: replace GtkTable by GtkGrid 2011-08-28 00:35:51 -04:00
Matthias Clasen
1ca773c2d7 GtkColorSel: replace GtkTable by GtkGrid 2011-08-28 00:20:21 -04:00
Matthias Clasen
4b394fc847 Fix the build 2011-08-27 17:22:37 -04:00
Matthias Clasen
0039418001 GtkToolbar: partial fix for toolbar editing
When using an editable toolbar in evince, we can end up
in gtk_toolbar_get_visible() position with item being the
highlight_tool_item, but not one of the regular children.
So, handle that.
2011-08-27 11:45:01 -04:00
Matthias Clasen
c8e8cdaaf4 Make gtk_status_icon_set_name() work reliably 2011-08-27 01:26:48 -04:00
Matthias Clasen
8f3e43326b Silence a compiler warning 2011-08-27 01:25:39 -04:00
Matthias Clasen
f7dbdba267 Revert "GtkColorButton: Don't forget to close a cairo context"
This reverts commit 144e4af8bc.
2011-08-27 01:01:21 -04:00
Chao-Hsiung Liao
2823c0f485 Updated Traditional Chinese translation(Hong Kong and Taiwan) 2011-08-27 10:35:54 +08:00
Piotr Drąg
b042cabc5e Updated POTFILES.skip 2011-08-27 04:21:11 +02:00
Benjamin Otte
651723b4d4 reftests: Add a test for the recent notebook fix 2011-08-27 02:47:52 +02:00
Benjamin Otte
e11e51c252 notebook: Fix child property setters causing underallocations
Don't randomly allocate around, queue resizes instead.
2011-08-27 02:47:51 +02:00
Federico Mena Quintero
52711beba5 Merge branch 'bgo593793-filechooser-recent-folders-master' 2011-08-26 12:44:40 -05:00
Federico Mena Quintero
a265fb763b bgo#657186 - Sort the recent-files list in newest-to-oldest order
Otherwise it's not very useful... :)

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-08-26 12:44:24 -05:00
Federico Mena Quintero
3bd037b7d9 Load and populate the recent-items in a single pass
There's no real asynchronicity going on, anyway, so let's do both within
a single iteration of the idle handler.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-08-26 12:44:22 -05:00
Federico Mena Quintero
e9c0faba42 Don't sort the recent-items by hand
The mtime from GtkRecentManager may not the same as the file's actual
mtime, so the final result could appear unsorted to the user.  Instead,
we will let the view do the sorting.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-08-26 12:44:21 -05:00
Tristan Van Berkom
d7696bd25f Avoid dereferencing NULL pointer in gtk_label_drag_data_get()
It's possible the GtkLabel receives drag'n'drop related signals
if it was setup to receive them by a container or other external
code, just avoid dereferencing priv->select_info in this case.
2011-08-26 19:02:36 +02:00
Michael Terry
431227e1af tests: Add test for non-nullterminated gtk_css_provider_load_data()
https://bugzilla.gnome.org/show_bug.cgi?id=657359
2011-08-26 16:26:28 +02:00
Benjamin Otte
71c3f7e93d styleproperty: Improve error message
We do dsupport that feature still and don't want to scare people into
thinking everything broke.
2011-08-26 16:26:28 +02:00
Benjamin Otte
26e9d07718 API: cssprovider: Change parsing-error signal
Instead of path, line and position, emit the section the error happened
in. This has a lot more information to consume.
2011-08-26 16:26:28 +02:00
Benjamin Otte
8d6b560ff3 cssparser: Fix cases where we could overrun the terminating 0 2011-08-26 16:26:28 +02:00
Benjamin Otte
62d231aeff cssparser: Make lines and positions 0-indexed 2011-08-26 16:26:28 +02:00
Benjamin Otte
0d1b73f857 cssprovider: Store sections with parsed values
Also create a separate section for values to associate the values with.
Finally, use this section information when delayed-parsing a widget
style property.
2011-08-26 16:26:27 +02:00
Benjamin Otte
ebf0b6ee4d cssprovider: Handle non-NULL-terminated data
Do a dumb copy if that happens.
2011-08-26 16:26:27 +02:00
Benjamin Otte
d985b95ef9 cssprovider: Keep only the curent section while parsing
We don't need a list of sections, the section can give us the parent
when we need it (d'oh).
2011-08-26 16:26:27 +02:00
Benjamin Otte
19c44967cb cssprovider: Remove dead code
The code isn't used anymore since the introduction of rulesets.
2011-08-26 16:26:27 +02:00
Benjamin Otte
00d14e3515 API: css: Add GtkCssSection
This struct keeps track of an area of text in a CSS file and uses it
when specifying information. Also, the cssprovider keeps track of
sections when parsing a file.
2011-08-26 16:26:27 +02:00
Colin Walters
c8fdd5e847 Squash two compilation warnings about possibly-uninitialzed 2011-08-25 14:47:21 -04:00
Yuri Myasoedov
97aec9ae8e Updated Russian translation 2011-08-25 22:05:07 +04:00
Ryan Lortie
05aeaeef9e Signalify (already existing) GtkMenuShell.insert()
gtk_menu_shell_insert() is a virtual function that was being directly
invoked from the class vtable.

Turn it into a proper signal and emit it in the usual way.

https://bugzilla.gnome.org/show_bug.cgi?id=656565
2011-08-25 09:48:12 -04:00
Javier Jardón
8dae05deaf gtk+.doap: Add some more info 2011-08-25 12:31:38 +01:00
Fran Dieguez
23f2aab4d6 Updated Galician translations 2011-08-24 21:03:09 +02:00
Daniel Mustieles
3415b6c553 Updated Spanish translation 2011-08-24 19:58:42 +02:00
Daniel Mustieles
83af296cb2 Updated Spanish translation 2011-08-24 19:58:14 +02:00
Kjartan Maraas
aa493ff8db Updated Norwegian bokmål translation 2011-08-24 18:54:00 +02:00
Chun-wei Fan
7cf479135d Update gtk/Makefile.am
Distribute fallback implementation source file for rint()/round()
2011-08-24 23:55:44 +08:00
Matthias Clasen
4a857ac023 Use a weak ref in GtkAccelLabel
GtkAccelLabel was holding a strong reference on its parent,
which could, depending on the circumstances, lead to leaks.

https://bugzilla.gnome.org/show_bug.cgi?id=344858
2011-08-24 08:16:03 -04:00
Matthias Clasen
32eb38073e Trivial: whitespace fixes 2011-08-24 07:58:21 -04:00
Matthias Clasen
c672066fbc Trivial: Silence a compiler warning 2011-08-24 07:56:13 -04:00
Matthias Clasen
f136ee9b57 Trivial: Silence a compiler warning 2011-08-24 07:54:58 -04:00
Matthias Clasen
144e4af8bc GtkColorButton: Don't forget to close a cairo context
Patch by Jerome Lambourg, bug 655392.
2011-08-24 07:46:35 -04:00
Daniel Nylander
311d782963 Updated Swedish translation 2011-08-24 09:22:23 +02:00
Matthias Clasen
5c09061e0f GtkFontChooserDialog: Select when a list item is activated
This is the expected behavior.
2011-08-24 00:49:59 -04:00
Matthias Clasen
f7bf35052e GtkFontChooser: Add a ::font-activated signal
This signal gets emitted when a font in the list is activated.
2011-08-24 00:49:16 -04:00
Matthias Clasen
ca0c7c1649 GtkAppChooserDialog: remove an unused variable 2011-08-24 00:32:20 -04:00
Matthias Clasen
80b94156ed GtkAppChooserDialog: Simplify the construction
We do the same in other places.
2011-08-24 00:11:32 -04:00
Matthias Clasen
14dc863da5 GtkAppChooserButton: Make activating rows work as expected
When a row is activated in the 'Other...' dialog, we have
to make sure the dialog goes away.
2011-08-24 00:10:34 -04:00
Matthias Clasen
c83db6cdf0 GtkSwitch: Return FALSE from the button press handler
This makes the behavior identical to other widgets which
handle button presses, and it avoids problems when placing
switches into a windows main toolbar.

https://bugzilla.gnome.org/show_bug.cgi?id=656986
2011-08-23 23:29:19 -04:00
Arx Cruz
c9023cadbf [filechooser] bgo#349502: Context menu option to copy selected files to the clipboard 2011-08-23 17:10:03 -05:00
Piotr Drąg
c4ad589fd5 Updated POTFILES.in 2011-08-23 22:28:43 +02:00
Gabor Kelemen
71be77c399 Add tests/*ui to POTFILES.skip 2011-08-23 22:18:37 +02:00
Gabor Kelemen
2807d69db3 There is no need for [type: ...] tags in POTFILES.skip 2011-08-23 22:16:09 +02:00
Daniel Mustieles
76beaf12ef Fixed POTFILES.in (error in D-L) 2011-08-23 22:04:04 +02:00
Daniel Mustieles
512ef3e2ba Fixed POTFILES.in (error in D-L) 2011-08-23 21:56:15 +02:00
Daniel Mustieles
b9b324077f Fixed POTFILES.in (error in D-L) 2011-08-23 21:55:04 +02:00
Daniel Mustieles
8a7d5ce5e1 Fixed bug #657146 2011-08-23 21:52:16 +02:00
Piotr Drąg
cfc765dc2a Updated POTFILES.in 2011-08-23 19:54:06 +02:00
Мирослав Николић
be512c9422 Updated Serbian translation 2011-08-23 19:15:48 +02:00
Matthias Clasen
3825a098c8 Change 'Ok' to 'Select' in the color chooser dialog
We have meaningful labels for the Ok buttons in all other choosers,
so just use the same string we use in the app chooser and the
font chooser.

Also move the mnemonic from s to a in 'Saturation', to avoid a
mnemonic conflict. String change !

https://bugzilla.gnome.org/show_bug.cgi?id=657006
2011-08-23 10:16:34 -04:00
Matthias Clasen
5c5cdf23a8 Add a mnemonic to the 'Select' button
This makes the string the same as in the app chooser dialog.
2011-08-23 10:08:33 -04:00
Sweta Kothari
ef159bc35c Updated Gujarati Translations 2011-08-23 14:46:57 +05:30
Andika Triwidada
9186f061a2 Updated Indonesian translation 2011-08-23 05:32:59 +07:00
Daniel Nicoara
99f489b5ef wayland: Acquire cairo device during operations that need the GL context 2011-08-22 16:32:06 -04:00
Kristian Høgsberg
005894eccb wayland: We need to require egl as well 2011-08-22 16:32:06 -04:00
Kristian Rietveld
a91868496a Fix typo in doc comment 2011-08-22 21:30:35 +02:00
Kristian Rietveld
b50375abf4 Add forgotten calls to signal_monitor_assert_is_empty() 2011-08-22 21:30:35 +02:00
Kristian Rietveld
d63015e627 Fix some memory leaks in treemodel unit tests 2011-08-22 21:30:35 +02:00
Kristian Rietveld
b31c3f1c1f treemodelsort: eliminate unread variable assigments
Courtesy of scan-build/clang.
2011-08-22 21:30:35 +02:00
Kristian Rietveld
584ff7c29a treemodelfilter: eliminate unread variable assigments
Courtesy of scan-build/clang.
2011-08-22 21:30:35 +02:00
Kristian Rietveld
36f712f272 Add some notes on how filter model testing can be made (even) more thorough 2011-08-22 21:30:34 +02:00
Kristian Rietveld
04885f1c29 Update filtermodel ref count unit tests to new cache depth 2011-08-22 21:30:34 +02:00
Kristian Rietveld
089edcf765 Fix bad typo in gtk_tree_model_filter_build_level() ... 2011-08-22 21:30:34 +02:00
Kristian Rietveld
6cd134d39e gtktreemodelfilter: only maintain cache at 1 level depth instead of 2 2011-08-22 21:30:34 +02:00
Kristian Rietveld
aa9151a6ee Extend public and internal documentation about GtkTreeModelFilter 2011-08-22 21:30:34 +02:00
Kristian Rietveld
52faf1f984 Extend documentation about GtkTreeModelSort internals 2011-08-22 21:30:34 +02:00
Kristian Rietveld
85d4a5abc7 GtkTreeModel: add more detailed documentation on reference counting 2011-08-22 21:30:34 +02:00
Kristian Rietveld
60d031e311 Replace GArray with GSequence in GtkTreeModelSort
This is done in the same way as GArray was replaced with GSequence in
GtkTreeModelFilter, in a patch done by Xavier Claessens.

All sorting code has been reworked to use the GSequence sorting
and insert sort functions, instead of doing a lot on our own.
2011-08-22 21:30:34 +02:00
Kristian Rietveld
ad0f54b87b Add more unit tests for GtkTreeModelSort
To test ref counting during rows-reordered and the new_order arrays supplied
with rows-reordered signals.
2011-08-22 21:30:34 +02:00
Kristian Rietveld
9ef07cb0f3 Move SignalMonitor to treemodel.[ch] so it can be used by other tests 2011-08-22 21:30:34 +02:00
Kristian Rietveld
97b1f34868 Revert usage of parent_elt_index back to parent_elt pointers
Based on earlier patch for GtkTreeModelFilter by Xavier Claessens.
2011-08-22 21:30:33 +02:00
Xavier Claessens
bee3d5f143 Replace GArray with GSequence in GtkTreeModelFilter
Significantly improves performance when e.g. removing (filtering) a lot
of rows from the filter model.  Fixes bug 616871.

This commit includes changes by Kristian Rietveld to make the patch apply
on top of the treemodel-fix branch and pass all newly written unit tests.
2011-08-22 21:30:33 +02:00
Xavier Claessens
eb594da2f2 Revert usage of parent_elt_index back to parent_elt pointers
This was introduced in commit a59c39f370.
The revert is part of bug 616871.  Adaption to recent GtkTreeModelFilter
changes by Kristian Rietveld.
2011-08-22 21:30:33 +02:00
Kristian Rietveld
510d84f682 Do not emit rows-reordered for levels with no visible rows 2011-08-22 21:30:33 +02:00
Kristian Rietveld
21d7eca12a Remove left-over dump call 2011-08-22 21:30:33 +02:00
Kristian Rietveld
3b7aed050d Correct ref transfer in GtkTreeModelFilter rows-reordered handling 2011-08-22 21:30:33 +02:00
Kristian Rietveld
30340e521e Test GtkTreeModelFilter's reference transfers 2011-08-22 21:30:33 +02:00
Kristian Rietveld
e321034074 Unit test GtkTreeModelFilter's rows-reordered emissions 2011-08-22 21:30:33 +02:00
Kristian Rietveld
bcc1fd7efd Unit test rows reordered ref count handling in GtkTreeView 2011-08-22 21:30:32 +02:00
Kristian Rietveld
0ee6141cf6 Should validate TreeModelRefCount before the sort and filter model 2011-08-22 21:30:32 +02:00
Kristian Rietveld
9e2fbca594 Add reference counting unit tests for GtkTreeModelFilter 2011-08-22 21:30:32 +02:00
Kristian Rietveld
f42de9e52a Add more "has child" unit tests
This allows for more thorough testing of "has child" filter functions.
We also test a has child filter function with a sort model as
child model, to verify that we receive enough signals to function
properly.
2011-08-22 21:30:32 +02:00
Kristian Rietveld
504d6715c1 Add cleaned up and easier version of unit test for bug 311955 2011-08-22 21:30:32 +02:00
Kristian Rietveld
35e09df282 Check level length in unit test for bug 311955 2011-08-22 21:30:32 +02:00
Kristian Rietveld
59efa6acdd Remove checks for superfluous signals which are not longer emitted 2011-08-22 21:30:32 +02:00
Kristian Rietveld
b161328682 Correct/expand base tests to check emitted signals
The filter model is now more strict about the signals which are emitted,
so the base tests have been expanded to test with both the root level
nodes collapsed and expanded.
2011-08-22 21:30:32 +02:00
Kristian Rietveld
1158ed5795 treemodelrefcount: check_iter(): check if iter is valid 2011-08-22 21:30:32 +02:00
Kristian Rietveld
07d99d26b2 treemodelrefcount: make it possible to assert within check functions 2011-08-22 21:30:32 +02:00
Kristian Rietveld
88dd6372b0 treemodelfilter: rework reference counting
- Before we kept a reference on all nodes in non-root levels.  This has
   been changed, now we keep a reference on the first node of each level.
   If, due to changes in the model, another node becomes the first node in
   the level, the reference is transferred to this new first node.
 - All non-root levels keep a reference on their parent.
 - By making use of the external ref count, the filter model now emits less
   unnecessary signals.
 - GtkTreeModelFilter does support filter functions which decide visibility
   of a given node based on the number of or visibility of children.
   To accomplish this, a child level of a node is cached when its
   parent has an external ref count > 0, because changes to the node might
   affect this parent.
 - An optimization for not building the root level in case the inserted
   node is not visible in gtk_tree_model_filter_row_inserted() has been
   removed.  In this case, we still need to build the root level and
   possibly a child level to monitor for signals which might make
   this row visible.
2011-08-22 21:30:32 +02:00
Kristian Rietveld
2984e22ef0 treemodelfilter: handle another case in check_ancestors
In gtk_tree_model_filter_check_ancestors(), also handle the case when
a node is already in the cache, but invisible, in the root level.
With the upcoming changes to GtkTreeModelFilter's ref counting this
case can occur.
2011-08-22 21:30:32 +02:00
Kristian Rietveld
52de413d43 treemodelfilter: guard for building already existing levels 2011-08-22 21:30:32 +02:00
Kristian Rietveld
dc15124c6f treemodelfilter: Introduce notion of external ref count
We need to distinguish between the ref count objects have on us versus
the ref count we have on our child model.  To keep track of the former,
we introduce the "external ref count" in this commit.  The zero_ref_count
needs to be determined from the external ref count, because objects that
have a ref count on us have say in which levels must be cached and which
can be released.

Before the caching in GtkTreeModelFilter was essentially broken and
levels were never released.  This was caused because the zero_ref_count
was connected to the ref count the filter model had on its child model.
Now that this depends on the external ref count, this is working fine and
as to be expected.
2011-08-22 21:30:32 +02:00
Kristian Rietveld
058a9090c2 treemodelfilter: Move more missions of row-deleted down
The row-deleted signal should be emitted after the internal data
structures have been updated.  In gtk_tree_model_filter_remove_elt_from_level
and gtk_tree_model_filter_virtual_root_deleted the signal was still being
emitted before the updates were carried out.
2011-08-22 21:30:32 +02:00
Kristian Rietveld
cac5d60633 Unit test reference counting in GtkTreeModelSort 2011-08-22 21:30:31 +02:00
Kristian Rietveld
dec7a34047 Avoid unreferencing deleted nodes
Now that we call unref_node in free_level, we have to take care that
free_level may only unref (parent) nodes when these still exist in the
child model.  After row-deleted has been received for a node, its
children may no longer unref this node.
2011-08-22 21:30:31 +02:00
Kristian Rietveld
7677e2d4e3 Bug 611922 - gtk_tree_model_sort_ref_node() is too slow
Referencing a parent node for each referenced node is overdone.  Instead,
we now reference the parent from build_level and unreference in free_level.
Each level keeps a single reference on its immediate parent.  This both
alleviates the performence problems and should perfectly serve the purpose.
2011-08-22 21:30:31 +02:00
Kristian Rietveld
d241323b08 Move asserts to gtktreemodelrefcount.h for other unit tests to use 2011-08-22 21:30:31 +02:00
Kristian Rietveld
bda09159c3 Add generic GtkTreeModel reference counting unit tests 2011-08-22 21:30:31 +02:00
Kristian Rietveld
1cb14a16b7 Add GtkTreeModelRefCount, only to be used in unit tests 2011-08-22 21:30:31 +02:00
Kristian Rietveld
b8752210ba treemodelsort: Remove unnecessary comment
(I am no longer 17 years old and have grown up by now).
2011-08-22 21:30:31 +02:00
Kristian Rietveld
a485334c37 Add some comments to gtk_tree_model_filter_remove_elt_from_level 2011-08-22 21:30:31 +02:00
Kristian Rietveld
e89782742d Fix a couple of memleaks in the filter model tests
(Not all of them yet, need to do the remainder on Linux since valgrind
on Mac OS X is a bit too noisy).
2011-08-22 21:30:31 +02:00
Kristian Rietveld
76cfd8bfac Bug 621076 - GtkTreeModelFilter does not emit all signals in some ...
The bulk of the fix is to walk the chain of ancestors, starting at the
root level, and check if the visibility of any of the ancestors has
changed.  If yes, the necessary signals are emitted so that this change
is propagated properly.  This walk is done after a node has been
inserted, changed or deleted, see function
gtk_tree_model_filter_check_ancestors().

Bug reported, and initial debugging and analysis, by Xavier Claessens.
2011-08-22 21:30:31 +02:00
Kristian Rietveld
c8783d3339 Decrease code duplication in _remove_elt_from_level take two 2011-08-22 21:30:31 +02:00
Kristian Rietveld
df754517dd Decrease amount of code duplication in _remove_elt_from_level 2011-08-22 21:30:31 +02:00
Kristian Rietveld
a9fd6b7f85 Rename gtk_tree_model_filter_remove_node for internal consistency 2011-08-22 21:30:31 +02:00
Kristian Rietveld
7a82045ca8 Change signature of gtk_tree_model_filter_remove_node 2011-08-22 21:30:31 +02:00
Xavier Claessens
22adfc67e5 Add thorough unit test for bug #621076
Minor edits and additions by Kristian Rietveld.
2011-08-22 21:30:30 +02:00
Kristian Rietveld
a172697d47 Corrections to has-child filter tests 2011-08-22 21:30:30 +02:00
Kristian Rietveld
74764f28bc Improve specific_has_child_filter() test to also verify signals 2011-08-22 21:30:30 +02:00
Kristian Rietveld
ebb12d5f06 Improve specific_root_has_child_filter test to also verify signals 2011-08-22 21:30:30 +02:00
Kristian Rietveld
5bd3c52c0f Have a separate category for tests of gtk_tree_model_filter_row_deleted 2011-08-22 21:30:30 +02:00
Kristian Rietveld
3452b0493d Add two unit tests for gtk_tree_model_filter_row_inserted 2011-08-22 21:30:30 +02:00
Kristian Rietveld
4f33f10511 Use g_assert_cmpint instead of g_assert in check_level_length() 2011-08-22 21:30:30 +02:00
Kristian Rietveld
7b3c2751ee Refactor emitting row-inserted for new nodes to a common code path
Suggested by Xavier Claessens / bug 621076.
2011-08-22 21:30:30 +02:00
Kristian Rietveld
bcb00d9a43 Fix comment 2011-08-22 21:30:30 +02:00
Kristian Rietveld
f064d07bda Factor out find_elt_with_offset
Suggested by Xavier Claessens / bug 621076.
2011-08-22 21:30:30 +02:00
Kristian Rietveld
60f3f92e95 Refactor to a common code path for inserts of nodes in levels
Suggested by Xavier Claessens / bug 621076.

(Additional obseration: this should speed up the filter model's
handling of row-inserted as a binary search is now used instead
of a linear scan).
2011-08-22 21:30:30 +02:00
Xavier Claessens
dc12c373dc Improve error messages of signal monitor 2011-08-22 21:30:30 +02:00
Kristian Rietveld
e0f12ce020 Factor out another part of gtk_tree_model_filter_row_deleted 2011-08-22 21:30:30 +02:00
Kristian Rietveld
1686e515d6 Three more TreeModelFilter remove ancestor tests 2011-08-22 21:30:30 +02:00
Kristian Rietveld
df0fcfb940 In sort model also emit row-deleted after updating the data structures 2011-08-22 21:30:30 +02:00
Kristian Rietveld
e9c960929b Correct GtkTreeModelFilter to never unref an already deleted child node 2011-08-22 21:30:30 +02:00
Kristian Rietveld
b27a6568b7 Improve filter model remove node unit tests 2011-08-22 21:30:29 +02:00
Kristian Rietveld
f0da89fa20 Print failed assertions for failed child iterator conversions 2011-08-22 21:30:29 +02:00
Kristian Rietveld
2f5fbcd10a Make _get_iter invalidate iterators when FALSE is returned 2011-08-22 21:30:29 +02:00
Kristian Rietveld
431987a2fa Add more unit tests for gtk_tree_model_filter_row_deleted() 2011-08-22 21:30:29 +02:00
Kristian Rietveld
56f83ad197 Further reduce variable shadowing by factoring code out into functions 2011-08-22 21:30:29 +02:00
Kristian Rietveld
cb8c608e49 Add unit test for bug 77977 for reference 2011-08-22 21:30:29 +02:00
Kristian Rietveld
ed603fa790 Add bug base and bug numbers to tree model unit tests 2011-08-22 21:30:29 +02:00
Kristian Rietveld
f1d791355a Move TreeModelSort specific tests to a new sortmodel.c file 2011-08-22 21:30:29 +02:00
Kristian Rietveld
b227aa06eb Make naming of tree model unit tests consistent
All test paths now start with the name of the class which is being
tested.
2011-08-22 21:30:29 +02:00
Kristian Rietveld
2cb9f03a66 Put all GtkTreeModel unit tests in a single binary
This to reduce linking time and have all tests in a single binary.
2011-08-22 21:30:29 +02:00
Cosimo Cecchi
a14cecb0ad widget-factory: add the primary-toolbar hint to the toolbar 2011-08-22 11:40:41 -04:00
Chun-wei Fan
0f458f1e35 Update config.h.win32.in
-Only define HAVE_STRINGS_H when MSVC is not used
-Define HVE_STDINT_H for Visual C++ 2010 and later, as Visual C++ 2010
 does ship with a "proper" stdint.h by default
-Add check macros HAVE_RINT and HAVE_ROUND--they are only defined when
 MSVC is not used
-Remove obsolete check macros
2011-08-20 11:18:23 +08:00
Chun-wei Fan
323d24db8c Update configure.ac to check for rint()/round()
Added check in configure.ac to check for the rint() and
round() functions as they are normally only available in C99
compilers.
2011-08-20 11:17:45 +08:00
Chun-wei Fan
ad73ed298d Include C89 fallback code
gtk/gtkborderimage.c, gtk/gtklabel.c and gtk/gtkstyleproperty.c call
round() and/or rint(), which was only available in C99 compilers.

This adds the inclusion of the fallback implementation (gtk/fallback-c89.c)
to define these functions if they are not initially made available by the
compiler.

Also remove the rint() implementation in gtk/gtklabel.c as it is now in
the fallback implmentation.
2011-08-20 11:17:44 +08:00
Chun-wei Fan
db3fecc5b9 Add fallback implemetation for rint()/round()
Add an implementation for rint() and round() for compilers that do not
define one or both of them.  Note that this file should be included
after config.h was included.
2011-08-20 11:17:43 +08:00
Arash Mousavi
054a625497 Updated Persian translation 2011-08-20 00:59:30 +04:30
David Zeuthen
c68eeaa966 Bug 656851 – Allow use of GVariant in GtkListStore
Signed-off-by: David Zeuthen <davidz@redhat.com>
2011-08-18 17:49:40 -04:00
Abduxukur Abdurixit
d539ebbf5b Added UG translation 2011-08-19 19:57:26 +02:00
Andika Triwidada
23ebefe8e7 Updated Indonesian translation 2011-08-18 16:29:40 +07:00
Daniel Mustieles
5580fe0e1e Updated Spanish translation 2011-08-17 01:39:00 +02:00
Matthias Clasen
e391bc442a Use GtkFontChooser in testtoplevelembed
This was pointed out in bug 656639.
2011-08-16 10:42:54 -04:00
Fran Dieguez
48d60bd771 Updated Galician translations 2011-08-16 13:31:28 +02:00
Chun-wei Fan
e2397bf0da Update VS property sheets
Copy the Win32-specific GDK backend headers during the "install" stage
as well, as they were missed in the install, causing trouble when
building other projects like WebKitGTK+.

Thanks to greg.hellings for pointing this out in Bug 653964.
2011-08-16 14:38:03 +08:00
Matthias Clasen
1bca4f3eb5 Post-release bump 2011-08-15 22:01:55 -04:00
Matthias Clasen
22a2867d79 3.1.12 2011-08-15 21:58:05 -04:00
A S Alam
ade913a60e update translation for Punjabi 2011-08-16 06:59:47 +05:30
Matthias Clasen
915d32f59c Fix up symbol lists for recent api additions 2011-08-15 21:25:58 -04:00
Matthias Clasen
8e324b38a6 Update NEWS for 3.1.12 2011-08-15 20:49:53 -04:00
Matthias Clasen
2462019449 testgtk: remove dead code 2011-08-15 19:40:24 -04:00
Matthias Clasen
8cf52c8e6c Fix a typo 2011-08-15 19:24:59 -04:00
Matthias Clasen
6877893ed5 Make setting fontname work, independent of a screen 2011-08-15 18:57:58 -04:00
Matthias Clasen
1207757924 Keep the currently selected font over theme changes
When repopulating the list of fonts, don't loose the current
selection, unless the font is no longer in the list.
2011-08-15 18:57:57 -04:00
Matthias Clasen
9c85d4f6df Deprecate GtkFontSelection and GtkFontSelectionDialog 2011-08-15 18:57:57 -04:00
Matthias Clasen
930715665e Trivial formatting fix 2011-08-15 18:57:57 -04:00
Matthias Clasen
d78acb55a0 Add docs 2011-08-15 18:57:57 -04:00
Matthias Clasen
0ee89f1360 Add new symbols 2011-08-15 18:57:57 -04:00
Matthias Clasen
a09ee203ec Add filtering to the font chooser 2011-08-15 18:57:57 -04:00
Matthias Clasen
ba564088c3 Add 'no matches' functionality
Initial cut at showing a 'no matches' message if the font list
is empty.
2011-08-15 18:57:57 -04:00
Matthias Clasen
6fb69845b0 Make the fontchooser dialog come up in a reasonable size
This is not a perfect solution; we really just want to set
a nice default size, but GTK+ does not make that easy.
2011-08-15 18:57:57 -04:00
Matthias Clasen
7c4ad1f400 Just use a single grid
The subgrid didn't really add anything.
2011-08-15 18:57:57 -04:00
Matthias Clasen
43d62c08e3 Clean up error handling 2011-08-15 18:57:57 -04:00
Matthias Clasen
5b9857d9b9 Rename some statics
gtk_font_chooser_ref_{family,face} -> gtk_font_chooser_set_{family,face}
2011-08-15 18:57:57 -04:00
Matthias Clasen
8dbdfa7e73 Avoid extraneous signals at destroy time
We need to disconnect the cursor-changed handler before the
treeview gets destroyed, to avoid unwanted emissions.
2011-08-15 18:57:57 -04:00
Matthias Clasen
96f9b67b51 Fix minor issues in the tests 2011-08-15 18:57:57 -04:00
Matthias Clasen
97d26ac9c0 Simplify a few things
Adwaita seems to misrender focus on entries with margins, so
use spacing instead. Also, don't use entry buffer unnecessarily.
2011-08-15 18:57:57 -04:00
Matthias Clasen
a18fab88a1 Trivial formatting fixes
Just committing these is easier than writing them up.
2011-08-15 18:57:57 -04:00
Alberto Ruiz
a58a2dc0d3 GtkFontChooserDialog: GtkFontButton now uses GtkFontChooserDialog instead of GtkFontSelectionDialog 2011-08-15 18:57:57 -04:00
Alberto Ruiz
e79842ce94 GtkFontChooser: get_font_name did not return the font size 2011-08-15 18:57:56 -04:00
Alberto Ruiz
d33088a805 GtkFontChooser: Stub code to handle empty list by search. 2011-08-15 18:57:56 -04:00
Alberto Ruiz
66a7add23f GtkFontChooser: font-name property notification wasn't properly propagated during size change from the spinbutton 2011-08-15 18:57:56 -04:00
Alberto Ruiz
52177f5e0d GtkFontChooser: Missing G_END_DECLS in fontchooser header 2011-08-15 18:57:56 -04:00
Alberto Ruiz
5795d3d616 GtkFontChooser: Using G_N_ELEMENTS instead of a define 2011-08-15 18:57:56 -04:00
Alberto Ruiz
9245a66e6f GtkFontChooser: Using the widget instead of the private struct as signal data in all conects 2011-08-15 18:57:56 -04:00
Alberto Ruiz
bf8ad994d4 GtkFontChooser: Fixed coding style wrt spacing around operators 2011-08-15 18:57:56 -04:00
Alberto Ruiz
26fb5c90b1 GtkFontChooser: Using explicit comparisons for g_strcmp0 2011-08-15 18:57:56 -04:00
Alberto Ruiz
ab1ebb072e GtkFontChooser: Added missing breaks in switch statements 2011-08-15 18:57:56 -04:00
Alberto Ruiz
c36d291acc GtkFontChooser: Setting all ought to be static functions as static 2011-08-15 18:57:56 -04:00
Alberto Ruiz
bf457d129e GtkFontChooserDialog: Add parent window as a parameter in the constructor 2011-08-15 18:57:56 -04:00
Alberto Ruiz
523190f69a GtkFontChooserDialog: Fix get_font_chooser public function name 2011-08-15 18:57:56 -04:00
Alberto Ruiz
23b15254bb GtkFontChooser: Set correct margin values between UI elements 2011-08-15 18:57:56 -04:00
Alberto Ruiz
a55d2f67b0 GtkFontChooserDialog: Use g_object_new to set initial values in the dialog constructor 2011-08-15 18:57:56 -04:00
Alberto Ruiz
01f279338f GtkFontChooser: Remove outdated Copyright information 2011-08-15 18:57:56 -04:00
Alberto Ruiz
1dda502bcb GtkFontChooser: Fix size synchronization between slider and spin button 2011-08-15 18:57:56 -04:00
Alberto Ruiz
cabfcbd18d GtkFontChooser: Cleanup comments and fix indentation alignments 2011-08-15 18:57:56 -04:00
Alberto Ruiz
e3f70857af GtkFontChooser: Remove default geometry defines 2011-08-15 18:57:55 -04:00
Alberto Ruiz
55d50b3cca GtkFontChooser: Fix scroll callback connected to treeview instead of preview 2011-08-15 18:57:55 -04:00
Alberto Ruiz
9dee34ad27 GtkFontChooser: Remove the themed color for the font title 2011-08-15 18:57:55 -04:00
Alberto Ruiz
f5a00f0c77 GtkFontChooser: Use a nested grid to achieve the right layout in the size controls 2011-08-15 18:57:55 -04:00
Alberto Ruiz
1075b7ac38 GtkFontChooser: Fix expand and fill properties for the grid layout 2011-08-15 18:57:55 -04:00
Alberto Ruiz
d9187472f5 GtkFontChooser: Use GtkBox instead of GtkVBox as base class. 2011-08-15 18:57:55 -04:00
Alberto Ruiz
b37863a5ba GtkFontChooser: Use const instead of G_CONST_RETURN 2011-08-15 18:57:55 -04:00
Alberto Ruiz
03ab18fa7a GtkFontChooser: Add preview entry to the grid 2011-08-15 18:57:55 -04:00
Alberto Ruiz
f60d0dc35a GtkFontChooser: Initial work to use GtkGrid 2011-08-15 18:57:55 -04:00
Alberto Ruiz
4163fa5d29 GtkFontChooser: GtkFontChooserDialog: Update documenation to reflect Since: 3.2 2011-08-15 18:57:55 -04:00
Alberto Ruiz
4add47946b GtkFontChooserDialog: Split the dialog out of gtkfontchooser.[ch] to gtkfontchooserdialog.[ch] 2011-08-15 18:57:55 -04:00
Alberto Ruiz
8e621f593e GtkFontChooser: Use symbolic icons in the filter entry 2011-08-15 18:57:55 -04:00
Alberto Ruiz
5ccc66d855 GtkFontChooser: Now shearch filters each individual term rather than the whole string at once 2011-08-15 18:57:55 -04:00
Alberto Ruiz
db2ef8ce51 GtkFontChooser: Restore automatic alignment on scroll to selection 2011-08-15 18:57:55 -04:00
Alberto Ruiz
7067d36adb GtkFontChooser: Removed support for deprecated functionality from GtkFontSelector 2011-08-15 18:57:55 -04:00
Alberto Ruiz
4bf22639d1 GtkFontChooser: Expose the new widget in gtk.h and add test cases 2011-08-15 18:57:55 -04:00
Alberto Ruiz
334ee81901 GtkFontChooser: Renaming the class names and fixing the tests 2011-08-15 18:57:55 -04:00
Alberto Ruiz
f2376ad401 GtkFontChooser: Remove wrong usage of GTK_DISABLE_DEPRECATED 2011-08-15 18:57:55 -04:00
Alberto Ruiz
bbe8d13c6e GtkFontChooser: Check if the deprecated widgets are present before updating the size list 2011-08-15 18:57:54 -04:00
Alberto Ruiz
1b00a3eb76 GtkFontChooser: Update fontlist on style change 2011-08-15 18:57:54 -04:00
Alberto Ruiz
6dec212d1d GtkFontChooser: Add a property to control whether the preview entry is shown or not 2011-08-15 18:57:54 -04:00
Alberto Ruiz
731120e26e GtkFontChooser: Better test preview text 2011-08-15 18:57:54 -04:00
Alberto Ruiz
c34a2d65d0 GtkFontChooser: Use GTK_DISABLE_DEPRECATED on the test code 2011-08-15 18:57:54 -04:00
Alberto Ruiz
5eb614a25b GtkFontChooser: Add gtk_font_selection_dialog_get_select_button and use GTK_DISABLE_DEPRECATED in gtkfontsel.h 2011-08-15 18:57:54 -04:00
Alberto Ruiz
1ce5a04406 GtkFontChooser: Changed dialog label from OK to Select, deprecated get_ok_button and internal apply button. 2011-08-15 18:57:54 -04:00
Alberto Ruiz
053d34dc47 GtkFontChooser: Added test for GtkFontSelectionDialog 2011-08-15 18:57:54 -04:00
Alberto Ruiz
31776e2a25 GtkFontChooser: implement gtk_font_selection_set/get_preview_text 2011-08-15 18:57:54 -04:00
Alberto Ruiz
14fbbf1420 GtkFontChooser: check if font name is NULL in gtk_font_selection_set_font_name 2011-08-15 18:57:54 -04:00
Alberto Ruiz
ea4603e5d1 GtkFontChooser: gtk_font_selection_set_font_name implementation 2011-08-15 18:57:54 -04:00
Alberto Ruiz
3f2b09422d GtkFontChooser: Setting the font-name property. Test updates. Remove warnings. 2011-08-15 18:57:54 -04:00
Alberto Ruiz
0aae453d77 GtkFontChooser: Improve bootstrapping of the deprecated lists 2011-08-15 18:57:54 -04:00
Alberto Ruiz
2ef00d23e3 GtkFontChooser: Update selection on deprecated size list selection 2011-08-15 18:57:54 -04:00
Alberto Ruiz
dc1a47ad70 GtkFontChooser: Update selection on deprecated face or font list selection 2011-08-15 18:57:54 -04:00
Alberto Ruiz
0ef0359566 GtkFontChooser: Update size when selecting an item of the deprecated size list 2011-08-15 18:57:54 -04:00
Alberto Ruiz
72a971b0e0 GtkFontChooser: Blocking the cursor change callbacks from happening on the deprecated widgets when selecting the font from the fontselector 2011-08-15 18:57:53 -04:00
Alberto Ruiz
c28b1e32e3 GtkFontChooser: Update deprecated font list on slection 2011-08-15 18:57:53 -04:00
Alberto Ruiz
1821eac1c1 GtkFontChooser: Refactoring the default font size, face and family assignment for clarity 2011-08-15 18:57:53 -04:00
Alberto Ruiz
aa10abacbc GtkFontChooser: Use the theme font as the default font 2011-08-15 18:57:53 -04:00
Alberto Ruiz
4b92872a97 GtkFontChooser: Add callbacks and improve test to take deprecated widgets into account 2011-08-15 18:57:53 -04:00
Alberto Ruiz
e80053c659 GtkFontChooser: Use GTK_DISABLE_DEPRECATED to encapsulate the deprecated functionality 2011-08-15 18:57:53 -04:00
Alberto Ruiz
3c0b6914e0 GtkFontChooser: Unref deprecated widgets on finalize 2011-08-15 18:57:53 -04:00
Alberto Ruiz
bb008411e0 GtkFontChooser: Use scrolled windows for the deprecated widgets 2011-08-15 18:57:53 -04:00
Alberto Ruiz
706167bbbd GtkFontChooser: Populate face names in the deprecated face list 2011-08-15 18:57:53 -04:00
Alberto Ruiz
0d112810f9 GtkFontChooser: Populate font family names in the deprecated family list 2011-08-15 18:57:53 -04:00
Alberto Ruiz
8826a10bc8 GtkFontChooser: Add tree view columns for the deprecated widgets 2011-08-15 18:57:53 -04:00
Alberto Ruiz
915b442dc1 GtkFontChooser: Fix segmentation fault in deprecated size list population 2011-08-15 18:57:53 -04:00
Alberto Ruiz
29a0685ee8 GtkFontChooser: Add deprecated calls to the test 2011-08-15 18:57:53 -04:00
Alberto Ruiz
1a2ef4db60 GtkFontChooser: update the size model for the deprecated size list 2011-08-15 18:57:53 -04:00
Alberto Ruiz
e08006f691 GtkFontChooser: initialization and destruction of deprecated widgets and data models 2011-08-15 18:57:53 -04:00
Alberto Ruiz
abc92d5030 GtkFontChooser: Initial support for deprecated functions 2011-08-15 18:57:53 -04:00
Alberto Ruiz
c96698e95f GtkFontChooser: Filter also by font face 2011-08-15 18:57:53 -04:00
Alberto Ruiz
58b2204651 GtkFontChooser: Layout improvements, spacing between elements and default widget size. 2011-08-15 18:57:53 -04:00
Alberto Ruiz
36156a6c49 GtkFontChooser: Layout improvements. Adding shadow to scrolled windows. Font+Face text is now bold. 2011-08-15 18:57:52 -04:00
Alberto Ruiz
f75e4d314a GtkFontChooser: Improvements on the size setting signals between the preview, scale and spinbutton. Adding more string fields to the model to allow for backwards compatibility. 2011-08-15 18:57:52 -04:00
Alberto Ruiz
1688512252 GtkFontChooser: Fixing mouse scroll zooming behaviour for the preview and the size controls 2011-08-15 18:57:52 -04:00
Alberto Ruiz
858e13cad6 GtkFontChooser: Setting a minimum width andfix the markup for the rows 2011-08-15 18:57:52 -04:00
Alberto Ruiz
af14106a63 GtkFontChooser: Ellipsize cell renderer and set a better size list 2011-08-15 18:57:52 -04:00
Alberto Ruiz
0db1b63b1f GtkFontChooser: Keep reference to the face and the family objects 2011-08-15 18:57:52 -04:00
Alberto Ruiz
88ab6f14d3 GtkFontChooser: Better cursor selection and model leak fixes 2011-08-15 18:57:52 -04:00
Alberto Ruiz
077d897fa4 GtkFontChooser: Added a test program 2011-08-15 18:57:52 -04:00
Alberto Ruiz
f3e9bb312e GtkFontChooser: Enable font selection 2011-08-15 18:57:52 -04:00
Alberto Ruiz
c9150374d9 GtkFontChooser: Setting a default vertical size 2011-08-15 18:57:52 -04:00
Alberto Ruiz
7f125d95e8 GtkFontChooser: Layout enhancements, using a scrolled window for the preview entry. 2011-08-15 18:57:52 -04:00
Alberto Ruiz
cbaca3e4bf GtkFontChooser: Fixed size updating in the preview 2011-08-15 18:57:52 -04:00
Alberto Ruiz
272f11069f GtkFontChooser: Improvements on the spin/slider interaction 2011-08-15 18:57:52 -04:00
Alberto Ruiz
c303d0b18c GtkFontChooser: The spinner now updates the slider size if it is within the range 2011-08-15 18:57:52 -04:00
Alberto Ruiz
1fa2c503a7 GtkFontChooser: Getting the refiltering right for the clear icon. Filter function speedups. 2011-08-15 18:57:52 -04:00
Alberto Ruiz
94ee606f62 GtkFontChooser: Search entry icon is now dynamic depending on the content 2011-08-15 18:57:52 -04:00
Alberto Ruiz
4db5ea20e8 GtkFontChooser: Set the initial size to the slider, initial callbacks for size change 2011-08-15 18:57:52 -04:00
Alberto Ruiz
fb19245493 GtkFontChooser: Live search implemented 2011-08-15 18:57:51 -04:00
Alberto Ruiz
693617700b GtkFontChooser: Inserted and deleted text callbacks 2011-08-15 18:57:51 -04:00
Alberto Ruiz
76809e128a GtkFontChooser: Adding a tree model filter for the search functionality 2011-08-15 18:57:51 -04:00
Alberto Ruiz
ce10919978 GtkFontChooser: Setting the default preview text and the default font size 2011-08-15 18:57:51 -04:00
Alberto Ruiz
9af88217d1 GtkFontChooser: Compilation warning cleanups 2011-08-15 18:57:51 -04:00
Alberto Ruiz
b79802789d GtkFontChooser: Iterate over faces as well as families to list them 2011-08-15 18:57:51 -04:00
Alberto Ruiz
f854a46890 GtkFontChooser: Improvements in the font face listing 2011-08-15 18:57:51 -04:00
Alberto Ruiz
8655384f51 GtkFontChooser: Set rules hint to TRUE in the main tree view 2011-08-15 18:57:51 -04:00
Alberto Ruiz
7611fe60f8 GtkFontChooser: Populated font list model 2011-08-15 18:57:51 -04:00
Alberto Ruiz
e570a91abb GtkFontChooser: Add column and cell renderer 2011-08-15 18:57:51 -04:00
Alberto Ruiz
6439fb4263 GtkFontChooser: Create functions to bootstrap the treeview column and settings and update the font list 2011-08-15 18:57:51 -04:00
Alberto Ruiz
48473b48e6 GtkFontChooser: Set vbox to no homogeneus 2011-08-15 18:57:51 -04:00
Alberto Ruiz
8a4cda71af GtkFontChooser: Setting the height of the preview and have a define for the top padding 2011-08-15 18:57:51 -04:00
Alberto Ruiz
6c44e85852 GtkFontChooser: Added slider and spin button 2011-08-15 18:57:51 -04:00
Alberto Ruiz
f0eef60123 GtkFontChooser: Adding the preview 2011-08-15 18:57:51 -04:00
Alberto Ruiz
f59b74622d GtkFontChooser: Adding the alignment to the selection 2011-08-15 18:57:51 -04:00
Alberto Ruiz
0c721d919c GtkFontChooser: Create alignment for the preview entry 2011-08-15 18:57:51 -04:00
Alberto Ruiz
1b302d3fad GtkFontChooser: Added main treeview 2011-08-15 18:57:51 -04:00
Alberto Ruiz
d46d1d7fcd GtkFontChooser: Avoid using show_all explicitely 2011-08-15 18:57:50 -04:00
Alberto Ruiz
810eda9cca GtkFontChooser: Create fundamental widgets for the new GtkFontSelection 2011-08-15 18:57:50 -04:00
Alberto Ruiz
9702e7c456 GtkFontChooser: Add private members to GtkFontSelectionPrivate 2011-08-15 18:57:50 -04:00
Alberto Ruiz
4f38ff9757 GtkFontChooser: Remove all cruft from the current GtkFontSelection implementation and start a new widget 2011-08-15 18:57:50 -04:00
Jesse van den Kieboom
99686a2fef Added gtk_text_iter_assign API
https://bugzilla.gnome.org/show_bug.cgi?id=645258
2011-08-15 15:29:23 +02:00
Paolo Borelli
508353fd15 Do not manually create empty label
gtk_notebook_update_labels will take care of creating it if needed.
2011-08-15 15:08:28 +02:00
Greg Hellings
bd26ce1db6 Install gdk/win32 headers
Added install commands for the gdk/win32 headers as referenced from
gdkwin32.h.

https://bugzilla.gnome.org/show_bug.cgi?id=653964
2011-08-15 13:00:14 +03:00
Kalev Lember
d86c1486ba gtk-demo: Fix the path to demo sources for the win32 build 2011-08-14 15:18:38 +03:00
John (J5) Palmieri
c3e0a0035e [gi] annotate gdk_container_set_user_data to take a GObject
* this allows bindings to correctly marshal the parameter
2011-08-14 08:07:10 -04:00
John Ralls
f84c787be4 Bug 655122: Lion Crashes during resize
Move resizing detection to a separate function and on 10.7 detect
resizes on all edges so that they don't result in grabs.
2011-08-13 15:30:59 -07:00
John Ralls
fc7dfd7246 Bug 655122: Detect OSX version for handling version-dependent special
cases (the one at hand is window resizing, which is handled differently
on OSX 10.7 from earlier versions).
2011-08-13 15:29:11 -07:00
Jorge González
7862187015 Updated Spanish translation 2011-08-13 17:37:02 +02:00
Laszlo Pandy
991b782b75 Fix incomplete &gt; entities in docs. 2011-08-13 15:22:44 +02:00
plesry
c4008dff3b Updated Traditional Chinese translation(Hong Kong and Taiwan) 2011-08-13 15:23:01 +08:00
Javier Jardón
8afe90224b configure.ac: Bump gdk-pixbuf required version
gdk-pixbuf 2.22.0 relies on G_CONST_RETURN which is deprecated by now.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=656421
2011-08-12 20:02:59 +01:00
Alexander Shopov
4cdc14d55f Updated Bulgarian translation 2011-08-11 22:11:28 +03:00
Cosimo Cecchi
9d269bd7f2 settings: use the right RC parser for the gtk-visible-focus setting
Without the parser the property the property won't be settable by themes
using settings.ini
2011-08-11 15:38:45 +02:00
Jürg Billeter
c7bcef426b widget: Add transfer annotation for gtk_widget_set_window
gtk_widget_set_window does not add any reference to the window and
unrealize will destroy it.
2011-08-11 12:35:46 +02:00
Javier Jardón
9e89bf34bf Remove local copy of introspection.m4
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=652991
2011-08-10 21:15:56 +01:00
Dan Winship
c4a5c99074 Fix cut-and-paste error in GtkEntryAccessible/GtkLabelAccessible
The y position of the character depends on the window's y coordinate,
not its x coordinate.
2011-08-10 15:19:56 -04:00
Matthias Clasen
2ba9c4b4a7 Make focus rectangles optional
This commit introduces a new setting, gtk-visible-focus, backed
by the Gtk/VisibleFocus X setting. Its three values control how
focus rectangles are displayed.

'always' is equivalent to the traditional GTK+ behaviour of always
rendering focus rectangles.

'never' does what it says, and is intended for keyboardless
situations, e.g. tablets.

'automatic' hides focus rectangles initially, until the user
interacts with the keyboard, at which point focus rectangles
become visible.

https://bugzilla.gnome.org/show_bug.cgi?id=649567
2011-08-10 16:34:20 +02:00
Daniel Mustieles
6596dbff31 Updated Spanish translation 2011-08-10 13:30:55 +02:00
Rachid BM
99080af3ee Language improvements
Changed rgba to uppercase (Only in UI strings)
Fixed the typo: tolevel -> toplevel
2011-08-10 12:15:32 +01:00
Cosimo Cecchi
7e22b46c1f combobox: add a "combobox-entry" style class for comboboxes with entries
This way themes can use GtkComboBox.combobox-entry to match that
specific case, and GtkComboBox.combobox-entry .button to match the
button/arrow side of the widget.
2011-08-09 16:08:00 +02:00
Matthias Clasen
d324a99454 Fix entry drawing in the presence of margins
Margins need to be taken into account when comparing requisitions
and allocations, which GtkEntry (and subclasses) do for some reason.
2011-08-09 15:12:21 +02:00
Matthias Clasen
17f99f663f GtkGrid: Add a way to insert rows or columns
This is useful functionality that makes it easier to insert
things in the middle of an already populated grid.

Bug 653817
2011-08-08 13:13:48 +02:00
Will Thompson
5bfef8c80a GtkAppChooser: improve grammar in short_description
https://bugzilla.gnome.org/show_bug.cgi?id=656098
2011-08-07 12:12:11 +02:00
Ignacio Casal Quinteiro
92e1d27475 Fix warning 2011-08-06 19:02:16 +02:00
Benjamin Berg
94782e914c Fix polling for new data in cups print backend (bug #599664) 2011-08-06 10:37:21 +02:00
Federico Mena Quintero
d4b992506a Merge branch 'bgo593793-filechooser-recent-folders-master' 2011-08-02 11:46:05 -05:00
Federico Mena Quintero
2485273247 bgo#655822 - Put back the expand-folders schema in gsettings
Apparently schemas are part of the ABI contract; running apps crash if a
schema disapppears and they happen to access it.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-08-02 11:45:47 -05:00
Daniel Nylander
6c64427273 Updated Swedish translation 2011-08-02 00:46:30 +02:00
Daniel Nylander
48d859b823 Updated Swedish translation 2011-08-02 00:44:17 +02:00
Pavel Holejsovsky
bb09982b66 Avoid introspection scanner warning on GtkPlug and GtkSocket
Make sure that sources with annotations are included into the list of
sources passed to introspection scanner.
2011-08-01 11:09:57 +02:00
Pavel Holejsovsky
21a5b038a7 Add annotations so that methods are properly paired to objects.
Add type annotations to 1st argument of gdk_x11_* functions so that they are
properly recognized as methods of GdkX11 objects.

https://bugzilla.gnome.org/show_bug.cgi?id=655496
2011-08-01 11:09:49 +02:00
Pavel Holejsovsky
0893a3fd39 Enable introspection of X11-specific functions and methods
Functions dealing with native Xlib types were (skip)ed because
gobject-introspection did not have correct Xlib types declarations.
They are corrected now, so these GdkX11 functions can be enabled back
again.

https://bugzilla.gnome.org/show_bug.cgi?id=655495
2011-08-01 11:09:39 +02:00
Kristian Rietveld
dca9db124b Bug 655545 - condition can never be true in gtk_tree_view_real_set_cursor
Spotted by Ben Pfaff.
2011-07-30 23:01:38 +02:00
Kristian Rietveld
58ba8a7c7f quartz: use already existing current_button_state variable 2011-07-30 23:01:38 +02:00
Kristian Rietveld
a979e414fb quartz: remove _gdk_quartz_events_get_current_event_mask 2011-07-30 23:01:38 +02:00
Kristian Rietveld
c9f6c7645c quartz: return modifiers instead of an event mask ... 2011-07-30 23:01:37 +02:00
Kristian Rietveld
ceca333309 quartz: Remove MAC_OS_X_VERSION_MIN_ALLOWED ifdef
I tried to suppress compiler warnings on pre-10.6 machines this way,
but it defeats its purpose when you compile for pre-10.6 machines on
a 10.6 machine.  For now, we have to live with the warnings when
compiling on/for pre-10.6 machines, there does not seem an easy and proper
way to suppress the warnings.
2011-07-28 17:44:02 +02:00
Sergio Cipolla
39a4017c33 Fixed a string in Brazilian Portuguese translation 2011-07-28 09:45:59 -03:00
Federico Mena Quintero
af00ca81e1 Merge branch 'bgo593793-filechooser-recent-folders-master' 2011-07-27 18:56:39 -05:00
Federico Mena Quintero
9112cb4dfa Set the location mode when changing the operation mode
Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-27 18:56:27 -05:00
Federico Mena Quintero
80d0efd94a Switch to OPERATION_MODE_BROWSE when switching to volume or file shortcuts
Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-27 18:56:22 -05:00
Federico Mena Quintero
ff95a79d98 Remove the unused, initial-text logic from the location entry
Years ago, when the location entry only appeared in a popup window, it used to appear
populated with the current folder's path.  We had some logic to do this, but since now
the location entry appears in the main dialog, we can do away with that old code.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-27 18:56:18 -05:00
Federico Mena Quintero
fa2e287687 Create the location_entry in a single function
We had duplicated code to create the entry in two cases, for Open and for Save modes.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-27 18:56:15 -05:00
Federico Mena Quintero
9ed65c5620 Only unset the entry's contents if the entry exists
Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-27 18:56:11 -05:00
Federico Mena Quintero
6c31de64b3 Discard the search widgets in a separate function
Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-27 18:56:06 -05:00
Federico Mena Quintero
3de864cfff Move the widgets above the hpaned to their own box
This way we can re-create the contents of that box easily without disrupting
the rest of the file chooser.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-27 18:56:02 -05:00
Federico Mena Quintero
c1fbdb4fd0 Make operation_mode_set() handle SEARCH and RECENT modes as well
Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-27 18:55:58 -05:00
Federico Mena Quintero
cccf35f862 Centralize changing the operation mode in operation_mode_set()
This will be the central function to switch operation modes:  stop searches or the recent-files
process; switch widgets, etc.

We factor out the common code from recent_switch_to_browse_mode() and search_switch_to_browse_mode(),
and remove those functions.  All the code that switched modes by hand now calls
the central operation_mode_set().

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-27 18:55:54 -05:00
Federico Mena Quintero
7726276fe9 Remove duplicated code from *_switch_to_browse_mode()
That code indeed lives in operation_mode_stop(), so use it instead of
having inlined duplicates.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-27 18:55:50 -05:00
Federico Mena Quintero
9e6e6575de Rename stop_operation() to operation_mode_stop()
We'll now prefix functions to change the impl->operation_mode with 'operation_mode',
for clarity.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-27 18:55:45 -05:00
Federico Mena Quintero
8962e0383f Save selection to recent-files in the asynchronous Save cases
Various paths in SAVE or CREATE_FOLDER return from ::should_respond() but
leave an asynchronous process running.  This process checks some things
in the user's selection, for example, 'does the file exist, and if so
do we need to bring up an overwrite-confirmation dialog?'.  When these
async processes complete *and* it is indeed time for the dialog to
be terminated (via the response-requested signal), we also need to
save the selection to the recently-used list - as ::should_respond() does
by itself in the cases when it can request a response immediately.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-27 18:54:52 -05:00
Federico Mena Quintero
7985ab786d Log to recent-files when confirming the file chooser
To make life easier for users, when apps don't properly update the recently-used list
after choosing a file, we now do that directly from the file chooser.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-27 18:54:42 -05:00
Kristian Rietveld
8d69f3daf2 Bug 508601 - Copying from GTK+ applications causes crash
In GtkClipboardOwner pasteboard:provideDataForType do not call
_gtk_quartz_set_selection_data_for_pasteboard() is selection_data.length
is smaller than 0.  The function relies on having a positive length,
since it stores the length in a uint ...
2011-07-25 22:05:52 +02:00
Matthias Clasen
b0dd7e1cfd widget-factory: small tweaks
Use our canonical example url in the link button, use the placeholder-text
feature for the search entry, and add a runtime switch for the dark theme.
2011-07-25 10:20:56 -04:00
Michael Hutchinson
786521d5a8 Bug 655074 - Fix crash with undecorated windows on MacOS Lion 2011-07-25 12:33:26 +02:00
Matthias Clasen
093612a46c Use G_DEFINE_TYPE for GtkIconViewItemAccessible 2011-07-25 00:46:34 -04:00
Matthias Clasen
2c6c0fe329 Minor cleanups 2011-07-25 00:34:08 -04:00
Matthias Clasen
a4560cdfbb Rework AtkText implementation
Use a PangoLayout, instead of storing a text buffer per item.
And use gtkpango api instead of implementing it all ourselves.
2011-07-25 00:27:42 -04:00
Matthias Clasen
26a040e81b Drop some grandiosity from the AtkAction implementation
There is only one action here, no need to pretend otherwise.
2011-07-24 23:59:00 -04:00
Matthias Clasen
625947f9f2 Use G_DEFINE_TYPE for GtkIconViewAccessible 2011-07-24 23:48:41 -04:00
Matthias Clasen
fadd58a0fb Drop GtkIconViewAccessiblePrivate
Just put the members in GtkIconViewAccessible itself.
2011-07-24 23:28:57 -04:00
Matthias Clasen
8a544d54ea Move GtkBuildable implementation up before accessibility
Just code rearrangement, no other changes.
2011-07-24 23:04:02 -04:00
Matthias Clasen
b7abf0b3ce Mention the demise of gail in 3.2 release notes 2011-07-23 22:28:29 -04:00
Matthias Clasen
2983f3fc14 Update gtk_widget_get_accessible() docs
Don't mention GTK_MODULES for loading a11y implementations
anymore.
2011-07-23 21:28:29 -04:00
Felix Riemann
e8486fdf71 gtkstyleproperty: fix small memory leak
The released value is a string array and thus g_free is not sufficient.

https://bugzilla.gnome.org/show_bug.cgi?id=655173
2011-07-23 21:40:59 +02:00
Matthias Clasen
28cb6f4bb3 Fix up last commit 2011-07-23 13:52:29 -04:00
Matthias Clasen
2937a875a0 Ditch some long dead perl cruft 2011-07-23 13:44:45 -04:00
Yuri Kozlov
07f525368d Updated Russian translation 2011-07-23 21:26:47 +04:00
Matthias Clasen
3f07c44ea9 post-release bump 2011-07-23 10:24:25 -04:00
Matthias Clasen
c3be60198f Towards a working distcheck 2011-07-23 10:12:55 -04:00
Matthias Clasen
749b6cc635 Fix make dist 2011-07-23 10:12:55 -04:00
Luca Ferretti
c10c08ddd6 [l10n] Updated Italian translation 2011-07-23 15:20:35 +02:00
Rico Tzschichholz
ecd5f73dd7 build: Fix makefile for new location of test image 2011-07-23 12:27:45 +02:00
Matthias Clasen
117169649b More updates 2011-07-22 22:01:51 -04:00
Matthias Clasen
ec72283a65 some minor doc fixes 2011-07-22 22:00:34 -04:00
Matthias Clasen
f7e927b93c Try to make the docs build again
After some searching, it turns out that gtk-doc now interprets
markdown, and can no longer accept '-' in the docs without making
a mess. I hope that this does not affect more places in more
subtle ways.
2011-07-22 21:54:08 -04:00
Matthias Clasen
b555a979a4 Drop non-existing functions 2011-07-22 21:53:20 -04:00
Matthias Clasen
a03ab2396e Keep building libgail-util docs for now 2011-07-22 19:52:54 -04:00
Benjamin Otte
d82aeb8245 tests: Fix stylecontext test that we changed semantics for
We don't have different priorities for superclasses anymore.
2011-07-23 01:24:07 +02:00
Philip Withnall
0b4d8433d4 Bug 654266 — No longer possible to set empty text on a GtkProgressBar
Change the semantics of GtkProgressBar:text slightly so that it behaves as
it did before GTK+ 3.

Closes: bgo#654266
2011-07-23 00:09:30 +01:00
Matthias Clasen
71a70a7d5c Use generic marshaler
If only to keep people from refiling the same issue over
and over again...
2011-07-22 18:51:11 -04:00
Matthias Clasen
edcce8e6ba Updates for 3.1.10 2011-07-22 18:51:11 -04:00
Patrick Welche
0388781e8f XK_Num_Lock is called GDK_KEY_Num_Lock in this source tree. 2011-07-22 19:19:33 +01:00
Andre Klapper
91706f7883 Don't use deprecated G_UNICODE_COMBINING_MARK 2011-07-22 19:56:49 +02:00
Javier Jardón
b2d679a45c configure.ac: Bump glib required version
GTK+ depends on Glib 2.29.14 because we are using the new added
g_format_size() glib function
2011-07-22 14:20:50 +02:00
Benjamin Otte
d56e8c8e54 tests: Move declaration tests to new test infrastructure
This way, we can test more feature of them, in particular check for
different errors, which were causing test failures.
2011-07-21 02:43:54 +02:00
Benjamin Otte
47635a2434 themingengine: Return NULL for nonexistant theming engines
his also makes the function conform to its documentation.
2011-07-21 02:43:54 +02:00
Benjamin Otte
9062060304 css: Don't print both border-image-repeat values when they're identical 2011-07-21 02:43:54 +02:00
Benjamin Otte
72bc10a61c css: Ensure that font shorthand parsing sets font name and size 2011-07-21 02:43:54 +02:00
Benjamin Otte
5a1e1579b3 styleproperty: dump image surfaces as PNG data URLs
We're not able to load that (yet?), but it's useful for producing
diffable test dumps.
2011-07-21 02:43:54 +02:00
Benjamin Otte
db66618227 reftests: Add test for border radius clamping 2011-07-21 02:43:54 +02:00
Andrea Cimitan
b3f03d092f roundedbox: Clamp border radius to box size
Note that clamping in rounded_box_grow() is not necessary as that
function cannot lead to overlap unless the rounded box was overlapping
previously.

https://bugzilla.gnome.org/show_bug.cgi?id=655009
2011-07-21 02:43:54 +02:00
Benjamin Otte
a02b82056a tests: Remove unused file from EXTRA_DIST 2011-07-21 02:43:54 +02:00
Benjamin Otte
b0b287f7b5 themingengine: Use the default way of indicating privates 2011-07-21 02:43:54 +02:00
Benjamin Otte
9e36bea907 styleproperty: An unnamed engine equals the default engine 2011-07-21 02:43:54 +02:00
Benjamin Otte
d314709af6 tests: Declare previously invalid CSS as valid now
The CSS is valid, it might just not work (though most of it will for
siblings).
2011-07-21 02:43:54 +02:00
Benjamin Otte
4f5e69fa2c tests: Fix whitespace between url and (
It's not allowed according to CSS (and browsers).
2011-07-21 02:43:54 +02:00
Benjamin Otte
5a1f371e12 cssprovider: Fix names for first and last child pseudo class
The correct name is :first-child, not :first
2011-07-21 02:43:53 +02:00
Ryan Lortie
4ead7b69ea Switch to g_format_size()
g_format_size_for_display() has been deprecated in GLib and replaced with
g_format_size().  Follow that change.
2011-07-20 20:22:26 +02:00
Chun-wei Fan
dc0149612f Update Visual Studio Project Files
-Change ATK dependency back to atk-1.0.lib, and the corresponding include
 folder back to atk-1.0 for all projects as ATK-2.x will still retain the
 1.0 suffixes. (ATK Commit 01cec72)
-Update corresponding description in the VS README.txt files
-Also fix up the VS2010 README.txt file a bit.
2011-07-20 10:40:54 +08:00
Benjamin Otte
75a43bb40c tests: Move empty css parser test to new CSS tests 2011-07-20 02:36:44 +02:00
Benjamin Otte
15674c5bd4 tests: Move stylecontext CSS tests
Use the new CSS infrastructure for part of the old CSS tests. This way
we can probably check for warning messages such as deprecations.
2011-07-20 02:36:44 +02:00
Benjamin Otte
1a763044fe cssprovider: Emit an error when parsing a binding fails 2011-07-20 02:36:44 +02:00
Benjamin Otte
b8465d289b cssprovider: Get the location right for semicolon warnings 2011-07-20 02:36:44 +02:00
Benjamin Otte
5eefc37b3f cssprovider: @import <string> is valid CSS
The parser rewrite insisted on @import url(<string>) syntax, but CSS
xplicitly allows omitting the url string.
2011-07-20 02:36:44 +02:00
Benjamin Otte
014165151f css: Use the correct free function 2011-07-20 02:36:44 +02:00
Benjamin Otte
ebadb36962 notebook: Remove unused private member variable 2011-07-20 02:36:44 +02:00
Matej Urbančič
cb34cfea45 Updated Slovenian translation 2011-07-19 22:28:46 +02:00
Benjamin Otte
1cdb47d960 notebook: Remove the homogenous private member variable
It's unused and therefor always FALSE, so we can remove the parts of the
code that branch based on it.
2011-07-19 12:53:06 +02:00
Benjamin Otte
20c6acfc8d reftests: Add test for recent fix
https://bugzilla.gnome.org/show_bug.cgi?id=654678
2011-07-19 11:58:22 +02:00
Benjamin Otte
6aa000f65b styleproperties: Add unset functions for shorthands
This fixes calls to gtk_style_properties_unset_property() for
shorthand properties.

https://bugzilla.gnome.org/show_bug.cgi?id=654678
2011-07-19 11:58:22 +02:00
Benjamin Otte
68ebc77a9a styleproperties: Add an unset vfunc to style properties
This makes unsetting work for shorthands.
2011-07-19 11:58:22 +02:00
Philip Withnall
fd705ce7c7 progressbar: Fix a signed/unsigned comparison 2011-07-18 19:35:02 +01:00
Benjamin Otte
b0e836e231 a11y: Merge gtksubmenuitem into gtkmenuitem
The reason why they were separate is historic, it's not useful to keep
the distinction.
2011-07-18 19:41:07 +02:00
Benjamin Otte
9306b266a0 a11y: Rename checksubmenuitem to checkmenuitem 2011-07-18 19:21:17 +02:00
Benjamin Otte
77f411c77a a11y: Remove gtkcheckmneuitemaccessible.[ch]
COde uses gtkchecksubmenuitemaccessible exclusively now. And I totally
dig these long finger-twisting names.
2011-07-18 19:05:28 +02:00
Benjamin Otte
fa16a54b21 a11y: Rename radiosubmenuitem to radiomenuitem 2011-07-18 19:01:40 +02:00
Benjamin Otte
438b78a27d a11y: Remove gtkradiomenuitemaccessible.[ch]
We use gtkradiosubmenuitemaccessible exclusively these days.
2011-07-18 18:47:12 +02:00
Benjamin Otte
d5ef8448bb checkbutton: Use gtk_widget_class_set_accessible_role() 2011-07-18 18:30:51 +02:00
Benjamin Otte
0c9b046af0 accellabel: Use gtk_widget_class_set_accessible_role() 2011-07-18 18:30:51 +02:00
Benjamin Otte
f2626b6183 menubar: Use gtk_widget_class_set_accessible_role() 2011-07-18 18:30:51 +02:00
Benjamin Otte
9c30ae02ee toolbar: Use gtk_widget_class_set_accessible_role() 2011-07-18 18:30:50 +02:00
Benjamin Otte
96245d4efb viewport: Use gtk_widget_class_set_accessible_role() 2011-07-18 18:30:50 +02:00
Benjamin Otte
d9bfa563d0 tearoffmenuitem: Use gtk_widget_class_set_accessible_role() 2011-07-18 18:30:50 +02:00
Benjamin Otte
480b5862d4 plug: Use gtk_widget_class_set_accessible_role() 2011-07-18 18:30:50 +02:00
Benjamin Otte
27f96820c8 fontsel: Use gtk_widget_class_set_accessible_role() 2011-07-18 18:30:50 +02:00
Benjamin Otte
c40875ad51 messagedialog: Use gtk_widget_class_set_accessible_role() 2011-07-18 18:30:50 +02:00
Benjamin Otte
6379faaa90 dialog: Use gtk_widget_class_set_accessible_role() 2011-07-18 18:30:50 +02:00
Benjamin Otte
2e570136f5 colorsel: Use gtk_widget_class_set_accessible_role() 2011-07-18 18:30:50 +02:00
Benjamin Otte
299b3bed96 filechooserdialog: Use gtk_widget_class_set_accessible_role() 2011-07-18 18:30:50 +02:00
Benjamin Otte
9c81336830 widget: Reset the accessible role when a new accessible type is set
We want the role to be kept in the accessible object. Using
gtk_widget_class_set_accessible_role() is only meant as a quick
workaround to requiring subclassing of the accessibles in the quite
common case where a subclass does not change the accessible
implementation at all and only has a different role.
2011-07-18 18:30:50 +02:00
Benjamin Otte
b61a200036 separatormenuitem: Use gtk_widget_class_accessible_set_role() 2011-07-18 18:30:50 +02:00
Benjamin Otte
094785bd68 separator: Use gtk_widget_class_accessible_set_role() 2011-07-18 18:30:50 +02:00
Benjamin Otte
017d02b9de hsv: Use gtk_widget_class_accessible_set_role() 2011-07-18 18:30:50 +02:00
Benjamin Otte
8815ccf5c4 calendar: Use gtk_widget_class_accessible_set_role() 2011-07-18 18:30:50 +02:00
Benjamin Otte
b17ad131ea API: Add gtk_widget_class_set_accessible_role()
Easy access to modifying the roles of subclasses, as this is a thing
that commonly changes for various subclasses.
2011-07-18 18:30:49 +02:00
Benjamin Otte
c0df6f9622 menushell: Use GtkMenuShellAccessible as a11y object
Previously it was only used by GtkMenuBar, and that's a naming mismatch.
2011-07-18 18:30:49 +02:00
Benjamin Otte
54e1caa428 a11y: Remove separator menu item special case
gtkseparator.c already takes care of this case.
2011-07-18 18:30:49 +02:00
Benjamin Otte
1f4b524558 assistant: Use gtk_container_remove() when removing pages
Ensures that we properly emit the "remove" signal.
2011-07-18 10:54:57 +02:00
Matthias Clasen
3bfa69fa53 Don't use object data for layer
Just add a regular member in GtkWidgetAccessible for it.
2011-07-17 23:17:38 -04:00
Matthias Clasen
6d33c783d0 Get rid of the focus_gtk vfunc
Only GtkWidgetAccessible and GtkWindowAccessible had implementations,
and they could easily be converted to focus_event handlers.
2011-07-17 23:04:00 -04:00
Matthias Clasen
2b5140c974 Avoid a compiler warning 2011-07-17 23:03:34 -04:00
Matthias Clasen
f9c4977306 Update expected test output
There was some stipple left there, still.
2011-07-17 19:38:23 -04:00
Matthias Clasen
2da37ba038 Don't run testfocus in 'make check'
It is not meant for that.
2011-07-17 19:37:39 -04:00
Matthias Clasen
095ea84611 Make destroying assistants work again
During destruction, we need to be careful to not ask the content
notebook to remove itself from itself.
2011-07-17 19:35:37 -04:00
Matthias Clasen
e756b2e50d Use canonical names
Use canonical names for both signals and properties.
2011-07-17 18:52:37 -04:00
Matthias Clasen
dc2ae6c0a5 Don't emit a nonexisting signal
The signal is called "popdown", not "podown".
2011-07-17 18:45:46 -04:00
Matthias Clasen
25a4e8e7de Don't return a value from a void function
Reported in bug 654720, patch by Brian Cameron.
2011-07-17 18:05:17 -04:00
Aurimas Černius
bb4c98b783 Updated Lithuanian translation. 2011-07-16 17:23:39 +03:00
Aurimas Černius
69e594f04d Updated Lithuanian translation. 2011-07-16 17:10:40 +03:00
Matthias Clasen
ffa112d586 Add an initial focus testbed
This is an attempt to explore differences in GTK+'s and gails
notions of which widget currently has the focus. Since gail
does all its focus updates in an idle, we cannot do the
comparisons synchronously, so just check ever so often in
a timeout.
2011-07-16 10:03:20 -04:00
Matthias Clasen
102faa3037 GtkLabelAccessible: avoid extra selection-changed emissions
This copies the same code that the entry accessible uses
to check for selection changes.

https://bugzilla.gnome.org/show_bug.cgi?id=654428
2011-07-16 09:44:02 -04:00
Florian Müllner
7741f5a09a theming-engine: Adjust register_property() to recent glib change
GParamSpec now uses an intern'ed string for 'name', so the code
in gtk_theming_engine_register_property() which prefixes the name
with a namespace has to be adjusted.

https://bugzilla.gnome.org/show_bug.cgi?id=654695
2011-07-15 20:50:26 +02:00
Carlos Garnacho
b5f30143ed x11: Skip GenericEvents with no cookie data in the xi2 device manager
https://bugzilla.gnome.org/show_bug.cgi?id=653947

It could happen that a cookie event has been already allocated/freed
in an event filter, as it can't be allocated a second time, all GDK
can do is skipping the event. Spotted by Guillaume Desmottes.
2011-07-15 18:33:44 +02:00
Carlos Garnacho
6aab48ead0 gdk/x11: Add gdk_x11_device_manager_lookup()
This function can be used to find the GdkDevice wrapping
an XInput2 device ID. For core devices, the Virtual Core
Pointer/Keyboard IDs (2/3) may be used.
2011-07-15 18:14:38 +02:00
Carlos Garnacho
f90c154472 gdk/x11: Add gdk_x11_device_get_id()
This function can be used to find out the XInput2 device ID
behind a GdkDevice, mostly useful when you need to interact
with say Clutter, or raw libXi calls.
2011-07-15 18:14:38 +02:00
Matthias Clasen
1f264ddb4b Don't use deprecated style api
gtk_widget_modify_font() has been superseded by
gtk_widget_override_font(), so use that in GtkMessageDialog.
2011-07-15 11:07:38 -04:00
Yaron Shahrabani
b5f4a5689b Updated Hebrew translation. 2011-07-15 11:03:43 +03:00
Matthias Clasen
3cc22eed44 Add some GtkAccessible documentation
Describe the current thinking about how to provide
3rd party accessible implementations.
2011-07-14 19:50:21 -04:00
Matthias Clasen
7c2414ec7e Drop private GtkAccessible api
We no longer use factories anywhere.
2011-07-14 19:42:12 -04:00
Matthias Clasen
3e05518881 Drop unneeded includes
We no longer use the private GtkAccessible api here.
2011-07-14 19:40:50 -04:00
Matthias Clasen
d8c00cd537 Revert "Add a getter for the accessible type of a widget class"
This reverts commit 9a212b3120.
2011-07-14 19:28:07 -04:00
Kristian Rietveld
88a18a28d5 quartz: Remove call to deprecated gdk_pointer_ungrab 2011-07-14 14:22:38 +02:00
John Ralls
86794ce008 Bug 653450 - gtkfilechooser crashes when added favorite
Ensure that display is set during drag-and-drop, and that string lists'
memory is zeroed after allocation to prevent g_strfreev() from
over-running.
2011-07-14 14:17:51 +02:00
Chun-wei Fan
cbc593bc22 Dist the VS 2008 a11y/libgail-util projects
Accidently left out this item in my last commit...
2011-07-14 11:57:22 +08:00
Chun-wei Fan
5ab8120689 Added VS projects for a11y and libgail-util
-Added projects to compile the a11y portion of GTK+.  This is now necessary
 as a11y/GAIL is now integrated into the main GTK+ library, and it must
 be built before compiling/linking GTK+.  This project is done like the
 GDK/GTK+ projects, where the source file listings for the VS2008/2010
 projects are fed into templates (.vcprojin, .vcxprojin and
 .vcxproj.filtersin) during 'make dist'
-Added projects to compile the libgail-util DLL (no templates for this
 as this does not have source files added/removed often)
-Added the new projects into distribution, and headers, DLLs and .LIB files
 into the "install" stage
2011-07-14 11:53:36 +08:00
Matthias Clasen
9a212b3120 Add a getter for the accessible type of a widget class
This will be necessary to port out-of-tree a11y implementations
from the atk object factory approach to this new way of doing
things.
2011-07-13 23:02:25 -04:00
Federico Mena Quintero
b53f602891 Save selection to recent-files in the asynchronous Save cases
Various paths in SAVE or CREATE_FOLDER return from ::should_respond() but
leave an asynchronous process running.  This process checks some things
in the user's selection, for example, 'does the file exist, and if so
do we need to bring up an overwrite-confirmation dialog?'.  When these
async processes complete *and* it is indeed time for the dialog to
be terminated (via the response-requested signal), we also need to
save the selection to the recently-used list - as ::should_respond() does
by itself in the cases when it can request a response immediately.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-13 16:39:12 -05:00
Mario Blättermann
afc6aa8126 [l10n] Updated German translation 2011-07-13 20:25:15 +02:00
Mario Blättermann
e47246927f [l10n] Updated German translation 2011-07-13 20:14:27 +02:00
Chun-wei Fan
8b8070e4b7 Update VS 2010 property sheet
The output folder of the .def files needs to be updated as well
2011-07-13 16:05:20 +08:00
Chun-wei Fan
a32be5d7e6 Don't include unistd.h unconditionally 2011-07-13 15:27:28 +08:00
Piotr Drąg
611104b737 Updated Polish translation 2011-07-13 08:46:37 +02:00
Rudolfs Mazurs
754a107f10 Updated Latvian translation. 2011-07-12 21:15:39 +03:00
Rudolfs Mazurs
5a7335cc98 Updated Latvian translation. 2011-07-12 21:04:31 +03:00
Federico Mena Quintero
f1ca0eebc6 Log to recent-files when confirming the file chooser
To make life easier for users, when apps don't properly update the recently-used list
after choosing a file, we now do that directly from the file chooser.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-12 11:36:19 -05:00
Kjartan Maraas
afd0726912 Updated Norwegian bokmål translation 2011-07-12 12:45:42 +02:00
Matthias Clasen
08e62bab9a Add a test for atk_get_root() 2011-07-11 23:57:56 -04:00
Matthias Clasen
5556ae9f80 Don't install any gail headers
There is no public API here.
2011-07-11 23:52:22 -04:00
Matthias Clasen
91bfe9f0c0 Make gtk_container_remove work for assistants 2011-07-11 23:12:55 -04:00
Matthias Clasen
bf70fbb696 Drop an unneeded include 2011-07-11 23:12:55 -04:00
Matthias Clasen
86fcb8b66f Add gtk_assistant_remove_page
This was suspiciously missing, considering we have the usual
append/prepend/insert_page methods.
2011-07-11 23:12:55 -04:00
Jonathan Matthew
ad9da2727d GMountOperation::show-processes support for OpenBSD using kvm(3) 2011-07-12 07:56:01 +10:00
Benjamin Otte
375eb8ebce tests: Add a test for menus 2011-07-11 03:10:04 +02:00
Benjamin Otte
17d5afcae2 a11y: Only advertise action if menuitems are selectable
There's no "click" action for separatormenuitems, for example.
2011-07-11 03:08:32 +02:00
Benjamin Otte
a82cbf29a2 a11y: Don't advertise ROLE_MENU in submenuitems
We use submenuitems for all menuitems now. So they shouldn't be all
advertised as menus. For the ones that do have submenus, we still
advertise ROLE_MENU per the last patch.
2011-07-11 02:51:43 +02:00
Benjamin Otte
8f9493ddf2 a11y: Make menuitem accessible return ROLE_MENU when it has a submenu
Otherwise keep using the role set via atk_object_set_role().
2011-07-11 02:51:43 +02:00
Fran Dieguez
d55728c941 Updated Galician translations 2011-07-11 00:12:43 +02:00
Daniel Mustieles
b81826fc7e Updated Spanish translation 2011-07-10 21:05:37 +02:00
Daniel Mustieles
207c485856 Updated Spanish translation 2011-07-10 21:05:06 +02:00
Piotr Drąg
6c6dab9d63 Updated POTFILES.in 2011-07-10 14:44:49 +02:00
Daniel Mustieles
9586305cc4 Updated Spanish translation 2011-07-10 10:55:50 +02:00
Matthias Clasen
07380c1e64 Make all of a11y/ compile with -Wshadow 2011-07-10 00:24:26 -04:00
Matthias Clasen
634e95eba1 Avoid more shadowing warnings 2011-07-10 00:20:17 -04:00
Matthias Clasen
88312319c4 Avoid more compiler warnings
Turns out link is a shadow-happy name, too.
2011-07-10 00:16:53 -04:00
Matthias Clasen
1803e1b57c Avoid compiler warnings
The text variable in gtk_label_accessible_get_selection was
shadowing a parameter of the same name.
2011-07-10 00:10:54 -04:00
Matthias Clasen
9f58645eca Avoid compiler warnings
The obj variable in gtk_notebook_accessible_notify_gtk was shadowing
the parameter of the same name.
2011-07-10 00:10:20 -04:00
Matthias Clasen
a20c7ed214 Avoid unnecessary includes
Including string.h makes the compiler complain about parameters
and variables called index, which is not nice.
2011-07-10 00:10:15 -04:00
Matthias Clasen
ddfa756ac7 Convert GailCellParent to GtkCellAccessibleParent 2011-07-09 23:57:16 -04:00
Matthias Clasen
4e5629bed1 Convert GailTextCell to GtkTextCellAccessible 2011-07-09 23:57:16 -04:00
Matthias Clasen
7ddf0dff8f Convert GailImageCell to GtkImageCellAccessible 2011-07-09 23:57:16 -04:00
Matthias Clasen
920c1c4c83 Convert GailRendererCell to GtkRendererCellAccessible 2011-07-09 23:57:16 -04:00
Matthias Clasen
3688c1a2d3 Convert GailBooleanCell to GtkBooleanCellAccessible
Including assorted cleanups and _-prefixing of exported API.
2011-07-09 23:57:16 -04:00
Matthias Clasen
1da67a2298 Convert GailContainerCell to GtkContainerCellAccessible
Including assorted cleanups and _-prefixing of exported API.
2011-07-09 23:57:16 -04:00
Matthias Clasen
07461459d4 Convert GailCell to GtkCellAccessible
Including _-prefixing the API to reduce unwanted exports.
2011-07-09 23:57:16 -04:00
Matthew Barnes
4d17ff973e GtkAssistant doesn't notice destroyed pages
Listen for GtkContainer::remove signals from the internal notebook.

https://bugzilla.gnome.org/show_bug.cgi?id=653705
2011-07-09 17:56:03 -04:00
Matthias Clasen
3846a59bab Drop a few more unwanted exports
Remaining now are just cell accessibles.
2011-07-09 16:43:39 -04:00
Matthias Clasen
d98622b2ea Reduce the number of unwanted exports
_-prefix most of the get_type functions in a11y/.
There are still some more symbols left.
2011-07-09 16:32:40 -04:00
Matthias Clasen
671565245e Another forgotten static 2011-07-09 16:04:45 -04:00
Matthias Clasen
88537fb4cc Another forgotten static 2011-07-09 16:04:13 -04:00
Matthias Clasen
dc8d64d6f2 Add a forgotten static 2011-07-09 15:33:28 -04:00
Matthias Clasen
2aeb7042d0 Drop the fake GailUtil subclass
Since it is not a subclass at all. Instead, just have a function
that overrides the vfuncs in AtkUtilClass.
2011-07-09 15:33:28 -04:00
Benjamin Otte
ccaa0af7d0 filechooser: Fix set-but-not-used warning from gcc 2011-07-09 21:24:41 +02:00
Benjamin Otte
05eb4113d9 a11y: Fix warnings when removing widgets that don't have accessibles
The remove handler would not check that removed widgets do indeed have
an accessible associated with them and would happily run all the removal
code with a NULL object. Not good.
2011-07-09 21:24:09 +02:00
Ignacio Casal Quinteiro
06b1362999 gtkaccelmap: the data gtk_accel_map_foreach needs to be annotated as allow-none 2011-07-09 12:54:23 +02:00
Matthias Clasen
a71b892c97 Add a test for AtkUtil functions
This test revealed the horrors commented on in the previous
commit.
2011-07-08 23:21:53 -04:00
Matthias Clasen
182b6f7a3c This is more horrible than I had realized
Due to tragic misunderstandings at the birth of ATK, AtkUtil
can't actually be properly derived. Instead, each implementation
has to poke its vfuncs directly into the AtkUtilClass struct.

So painful to have shipped this stuff for 10 years...
2011-07-08 23:20:06 -04:00
Matthias Clasen
d7ded58f51 Clean up gailutil.c a bit 2011-07-08 23:05:51 -04:00
Matthias Clasen
4c76d9fe31 Separate GailUtil and GailMisc
Not sure how these ended up as siamese twins in the same
source file. Of course, separating them doesn't make them
any more beautiful.
2011-07-08 22:52:03 -04:00
Matthias Clasen
56fb725a7e Convert GailToplevel to GtkToplevelAccessible 2011-07-08 22:39:00 -04:00
Matthias Clasen
9979e2a443 Drop remaining uses of gail_misc api
Fold them into their last remaining user, in gailtextcell.c
2011-07-08 22:03:13 -04:00
Matthias Clasen
64d3314a64 Drop now unused gail_misc API 2011-07-08 20:12:45 -04:00
Matthias Clasen
db1eeb0651 Drop gailtextutil from gtk/a11y
The last user was GailTextCell, and that can use gtk_pango
api instead.
2011-07-08 18:41:01 -04:00
Matthias Clasen
a7190d11c2 No longer need to strip the decorations when generating gtk.def, either 2011-07-08 18:41:01 -04:00
Matthias Clasen
2cdac4704c gtk.symbols: remove remaining G_GNUC_ decorations
These are no longer used for anything
2011-07-08 18:41:01 -04:00
Juan Pablo Ugarte
704dd8327f Fixed bug #654125 "gdkoffscreenwindow set any impl handlers to null but adhoc gdk_window_set_* do not cope" 2011-07-08 19:27:00 -03:00
Matthias Clasen
77db52ac9a We're no longer a module
And we don't support not loading the module anymore, either.
So take out the code that looks at environment variables for
that purpose, and don't print a misleading message about
module loading.
2011-07-08 16:37:07 -04:00
Matthias Clasen
fabc5a9117 gail_misc_add_attribute no longer used outside gailmisc.c
This reduces the number of unwanted exported gail symbols
from 90 to 89. Still some way to go...
2011-07-08 16:31:48 -04:00
Federico Mena Quintero
b80fb88aff Merge bgo593793-filechooser-recent-folders-master branch.
The file chooser now starts up in recent-files mode, or in recent-folders mode,
if the caller didn't set a current_folder on it.  Setting a current_folder is
now discouraged, so that the file chooser can have a chance of presenting
useful locations to the user.

See https://live.gnome.org/DocumentCentricGnome/Help%20the%20user%20choose%20a%20place%20to%20put%20a%20new%20file
for the rationale behind these changes.
2011-07-08 11:43:32 -05:00
Cosimo Cecchi
1fdfb18c37 iconview: make it possible for selected cells to render a border
Call gtk_render_frame() after gtk_render_background() there.

https://bugzilla.gnome.org/show_bug.cgi?id=654179
2011-07-08 11:36:04 -04:00
Johan Dahlin
a47528fd59 Clarify that gtk_builder_connect_signals can only be connected once 2011-07-07 15:41:29 -03:00
Abduxukur Abdurixit
7d1bad41f3 Added UG translation 2011-07-07 17:06:54 +02:00
Javier Jardón
c344880b4e tests/a11y/Makefile.am: Use AM_CPPFLAGS instead deprecated INCLUDES 2011-07-07 13:50:01 +01:00
Javier Jardón
b3c3a7c35d Revert "asd"
Not appropriate commit message

This reverts commit f02812c0d6.
2011-07-07 13:47:59 +01:00
Javier Jardón
245c177e4b Revert "docs: fix building for libgail-util"
libgail-util is going away

This reverts commit 13db79db63.
2011-07-07 13:47:41 +01:00
Rico Tzschichholz
13db79db63 docs: fix building for libgail-util 2011-07-07 11:20:02 +01:00
Javier Jardón
f02812c0d6 asd 2011-07-07 11:20:02 +01:00
Matthias Clasen
a38d119f16 Drop gail_misc_buffer_get_run_attributes
Instead fold the code into the sole caller and get rid
of gailmisc usage in the text view accessible altogether.
2011-07-06 23:19:40 -04:00
Matthias Clasen
d1b0ae62a5 Drop an unneeded include
One step close to dropping gailmisc.
2011-07-06 23:18:52 -04:00
Benjamin Otte
a24ec1583b gtkpango: Count letters properly
The code was using the wrong variable and that then caused assertions
2011-07-07 03:37:52 +02:00
Benjamin Otte
15ab20fdfb a11y: Make submenu code handle non-existing submenus
As we're going to merge the two accessibles for submenus, we need to
make sure the code that insisted on submenus can handle the case where
no submenu exists.
2011-07-06 20:55:11 +02:00
Benjamin Otte
d5dad3422b a11y: Fix leaking of state sets 2011-07-06 20:48:35 +02:00
Benjamin Otte
7b2f8949dd styleproperty: Fix leak 2011-07-06 20:41:31 +02:00
Benjamin Otte
552113131c menuitems: Use submenuitem accessible exclusively
Submenus can come and go, so we cannot use an accessible that doesn't
allow for that.

Also, this fixes a rather large refleak.
2011-07-06 18:47:00 +02:00
Benjamin Otte
70b8f8f7ef assistant: Use gtk_widget_class_set_accessible_type()
Less code and no leaks!
2011-07-06 18:47:00 +02:00
Javier Jardón
32e00d1f43 Use AM_CPPFLAGS instead the obsolete INCLUDES 2011-07-06 15:58:32 +01:00
Benjamin Otte
30930e643f a11y: Redo TextView cursor/selection signal handling
As part of the removal of idles, redo how we emit signals on the
accessible. Should work as good or better than before, but with a lot
less code.
2011-07-06 16:50:09 +02:00
Benjamin Otte
87c33fa21a tests: Update text test for textview
1) Allow inserting text to move the cursor to after the inserted text
2) Implement selecting text for GtkTextView. Also assert if it's an
   unsupported widget type.
3) Select an inside part of the widget, not the end.
2011-07-06 16:50:09 +02:00
Benjamin Otte
768b192ddb modules: Blacklist gail
And print a message when somebody has it enabled that indicates that
something is wrong but doesn't sound too scary.
2011-07-06 16:50:09 +02:00
Benjamin Otte
4abbe4cb52 a11y: Use the canonical way to connect to signals
No functional changes at all, the generated code should in fact be
identical.
2011-07-06 16:40:05 +02:00
Benjamin Otte
eeae39d359 a11y: Simplify code 2011-07-06 16:40:05 +02:00
Benjamin Otte
659d24c9ab a11y: Remove idle handler for switch action handling 2011-07-06 16:40:04 +02:00
Benjamin Otte
8efc350127 a11y: Remove set_description handling from GtkSwitch
The function is unused in AT-SPI.
2011-07-06 16:40:04 +02:00
Benjamin Otte
ccbe6c816b range: Do not use idles to trigger actions 2011-07-06 16:40:04 +02:00
Benjamin Otte
2870b58638 a11y: Don't use an idle handler for entry actions 2011-07-06 16:40:04 +02:00
Rico Tzschichholz
2c51d76c1f Fix two typos in Makefiles 2011-07-06 16:33:55 +02:00
Javier Jardon
8a84056d0a gtktreeviewaccessible: free the string in the correct position 2011-07-06 14:36:29 +01:00
Javier Jardon
ad0c0b8eb3 Do not initialize the priv pointer before check type 2011-07-06 14:25:06 +01:00
Javier Jardon
f90f2858c8 Fix few typos in the migration docs
gdk_pixbuf_get_from_surface() don't take 8 args but 5
2011-07-06 11:59:56 +01:00
Matthias Clasen
ba0bc468d6 Fix the build
I didn't pay enough attention when merging, it seems.
2011-07-05 16:57:46 -04:00
Matthias Clasen
57874f7ece Update assistant tests 2011-07-05 16:10:26 -04:00
Matthias Clasen
521807f33d Drop the factory from the icon view accessible 2011-07-05 16:10:26 -04:00
Matthias Clasen
9f88efd2bb Drop the factory from GtkAssistantAccessible 2011-07-05 16:10:26 -04:00
Matthias Clasen
511eb79331 Update expected test output
The recent change to notebook page parent handling is showing
up in the output of the notebook.ui test.
2011-07-05 16:10:26 -04:00
Matthias Clasen
38f34f4f6f GtkSeparatorMenuItem: Drop the accessible factory 2011-07-05 16:10:26 -04:00
Matthias Clasen
2980659ab1 Add api for setting the layer
Add api for setting the component layer, instead of open-coding
the object data key, and use it.
2011-07-05 16:10:26 -04:00
Matthias Clasen
e1463ab57c Silence compiler warnings 2011-07-05 16:10:26 -04:00
Matthias Clasen
5d90ca35c2 Set accessible parents of notebook children
Explicitly set the notebook page object as the accessible parent
of the page, otherwise, AtkObject follows the widget parents chain
and makes the notebook accessible the parent.
2011-07-05 16:10:26 -04:00
Matthias Clasen
3fb86e1c6f Verify that notify::accessible parent is emitted 2011-07-05 16:10:26 -04:00
Matthias Clasen
b83122dc05 Drop use of factories for cell accessibles 2011-07-05 16:10:26 -04:00
Matthias Clasen
5a10e9b0b4 Add an initial focus handling test
This is failing currently, since focus handling is all
in defer-to-idle country.
2011-07-05 16:10:25 -04:00
Matthias Clasen
5559242ea9 Change the toolkit name in GailUtil to 'gtk', too 2011-07-05 16:10:25 -04:00
Matthias Clasen
b61043dcfa Change the toolkit attribute from gail to gtk
Update test results to match.
2011-07-05 16:10:25 -04:00
Matthias Clasen
eb81d45024 Move GtkSwitchAccessible to a11y/ 2011-07-05 16:10:25 -04:00
Matthias Clasen
e6251f0248 Move GtkSpinnerAccessible to a11y/ 2011-07-05 16:10:25 -04:00
Matthias Clasen
f839379d01 Drop the atk_component_add/remove_focus_handler implementation
Instead, just connect to focus-event directly.
2011-07-05 16:09:57 -04:00
Matthias Clasen
775ccf39e7 Initial conversion of GailWidget to GtkWidgetAccessible 2011-07-05 16:09:57 -04:00
Matthias Clasen
89e57c6978 Convert GailContainer to GtkContainerAccessible 2011-07-05 16:08:57 -04:00
Matthias Clasen
64eec8a97a Convert GailMenuShell to GtkMenuShellAccessible 2011-07-05 16:08:57 -04:00
Matthias Clasen
0e2f3271b9 Convert GailMenu to GtkMenuAccessible 2011-07-05 16:08:57 -04:00
Matthias Clasen
ed08baccd9 Convert GailWindow to GtkWindowAccessible
While doing this, drop the get_mdi_zorder implementation
that really should come from the window manager side. Dropping
this saves some 500 lines.
2011-07-05 16:08:57 -04:00
Matthias Clasen
8432ea3574 Convert GailButton to GtkButtonAccessible
This drops the AtkText implementation, and also strips handling
of children out. Instead of listening for enter/leave/press/released,
just listen for state changes on the widget.
2011-07-05 16:08:57 -04:00
Matthias Clasen
a3113386df Drop unneeded includes of gdkkeysyms.h
Just a minor cleanup; gtk.h includes this header in GTK+ 3.
2011-07-05 16:08:57 -04:00
Matthias Clasen
254538bf77 Drop unneeded includes gailtextutil.h
Almost done with getting rid of GailTextUtil.
2011-07-05 16:08:57 -04:00
Matthias Clasen
3459dc480a Convert Gail(Sub)MenuItem to GtkAccessible classes
This is along the same lines as the previous commit,
with the same caveat.
2011-07-05 16:08:57 -04:00
Matthias Clasen
209a2d1ba0 Convert GailCheck(Sub)MenuItem to GtkAccessible classes
This is along the same lines as the previous commit,
with the same caveat.
2011-07-05 16:08:57 -04:00
Matthias Clasen
64b9599866 Convert GailRadio(Sub)MenuItem to GtkAccessible classes
The way submenus are handled here isn't really right, since
they can come and go at runtime, but I've left it like this
for now. A side-effect is that we can't use
gtk_widget_class_set_accessible_type here, but have to
override get_accessible.
2011-07-05 16:08:57 -04:00
Matthias Clasen
2d655446ba Add a test for menus 2011-07-05 16:08:57 -04:00
Matthias Clasen
896769df69 Convert GailExpander to GtkExpanderAccessible
At the same time, drop the AtkText implementation.
Also, reintroduce a GtkBoxAccessible, since the previous
way of setting the role in get_accessible was affecting
GtkBox subclasses negatively.

Adjust expected test output to match.
2011-07-05 16:08:57 -04:00
Matthias Clasen
6087131ab6 Add a placeholder-text test
Contributed by Joanmarie Diggs.
2011-07-05 16:08:56 -04:00
Matthias Clasen
ff5eb4adfe Convert GailStatusbar to GtkStatusbarAccessible
And drop the AtkText implementation at the same time.
Update test results to match.
2011-07-05 16:08:56 -04:00
Matthias Clasen
9a0fd43df2 Convert GailNotebookPage to GtkNotebookPageAccessible
At the same time, drop the AtkText implementation, and simplify
accordingly. Test output has been updated to match.
2011-07-05 16:08:56 -04:00
Matthias Clasen
8bb24a936f Don't overwrite roles
Otherwise, every GtkBox subclass will have to override
get_accessible just to keep their roles.
2011-07-05 16:08:56 -04:00
Matthias Clasen
0bbe09a28e Avoid excessive child_changed::added emissions
We are listening to page-added and emit child_changed::added
in response to that, so don't let the add_gtk handler add
extraneous extra signal emissions. This fixes the child-handling
test for GtkNotebook.
2011-07-05 16:08:56 -04:00
Matthias Clasen
318192b937 Convert GailNotebook to GtkNotebookAccessible 2011-07-05 16:08:56 -04:00
Matthias Clasen
6012f096c9 Convert GailTreeView to GtkTreeViewAccessible
Mostly code rearrangement and cleanup, but also a memory
leak fix in gtk_tree_view_accessible_get_column_description().
2011-07-05 16:08:56 -04:00
Matthias Clasen
b0915a69de Add more children tests 2011-07-05 16:08:56 -04:00
Matthias Clasen
7371e3f7cf Convert GailComboBox to GtkComboBoxAccessible 2011-07-05 16:08:56 -04:00
Benjamin Otte
2f744db943 tests: Don't print selection count
Selection count is tested via assertions and can be inferred from
looking at the number of selected children.

And I'd like to reduce the output of the tests. We're outputting way too
much anyway.
2011-07-05 16:08:56 -04:00
Benjamin Otte
e0324064bc tests: Make accessibility-dump output selected children by name
And put one child in every row to make diffing easier.
2011-07-05 16:08:56 -04:00
Benjamin Otte
4ca42d9785 tests: Fix compiler warnings 2011-07-05 16:08:56 -04:00
Benjamin Otte
3ea8cfc02f tests: Add assert to accessibility-dump
Check that number of selected children == number of children that
actually are selected. If that's not the case, assert, to avoid people
being careless about adding tests.
2011-07-05 16:08:56 -04:00
Matthias Clasen
e02a94080a Silence compiler warnings 2011-07-05 16:08:56 -04:00
Benjamin Otte
5d57716ef8 a11y: Make notebookpage emit child-added signal sync
Don't use an idle handler
2011-07-05 16:08:55 -04:00
Benjamin Otte
f59cb0e05d a11y: Keep the gail notebook in the notebook page
We used to keep the GtkNotebook, but that causes issues at creation time
of the GailNotebook, when the GtkNotebook does not yet have an
accessible set and so it can't be queried.
2011-07-05 16:08:55 -04:00
Benjamin Otte
790d8e324b a11y: Redo notebook page management
Previously, the code tried to track the indexes of the pages and keep
them up to date in a list and tracking the index in the
GtkNotebookPage. Now, we store the widget we are tracking in the
GailNotebookPage and keep a hash table of widget=>GailNotebookPage in the
GailNotebook. This frees us from the burden of tracking page changes.
2011-07-05 16:08:55 -04:00
Benjamin Otte
9cf9abd5b0 a11y: Redo notebok page lifetime management
It is now done by the GailNotebook. Previously it tried to do it itself.
Also, we now use GtkNotebook::page-removed to track the removal, as
opposed to child::parent-set.
2011-07-05 16:08:55 -04:00
Benjamin Otte
fdc40111f8 a11y: Remove idle handler from menuitem action 2011-07-05 16:08:55 -04:00
Benjamin Otte
3e49e2387c a11y: Remove idle handler for expander actions 2011-07-05 16:08:55 -04:00
Benjamin Otte
55dec3a798 a11y: Remove idle handler for combo box action 2011-07-05 16:08:55 -04:00
Benjamin Otte
05d7260e19 a11y: Remove idle handler from GailButton 2011-07-05 16:08:55 -04:00
Benjamin Otte
7c00940470 a11y: Use gtk_button_clicked() to click a button.
Don't fiddle with events.
2011-07-05 16:08:55 -04:00
Benjamin Otte
6b02119bb1 a11y: Remove "press" and "release" actions from buttons
http://mail.gnome.org/archives/gnome-accessibility-devel/2011-June/msg00020.html
has some details about this.
The main problem is that the internal button states get fiddled with and
that is not a good idea to do from an AT.

Also update tests to reflect that.
2011-07-05 16:08:55 -04:00
Benjamin Otte
8e28e22bcf a11y: Do actions on cells immediately
No idle handlers, please.
2011-07-05 16:08:55 -04:00
Benjamin Otte
52c0933bc0 a11y: Use simple code for window name change tracking
Remove idle handler and omit checking if the name really was changed.
ATs will either have to live with the name not really changoing or we
should check in GtkWindow.
2011-07-05 16:08:55 -04:00
Matthias Clasen
ac10ac6450 Add more child-handling related tests 2011-07-05 16:08:55 -04:00
Matthias Clasen
0b952dcc85 Emit the same changed_children details as everybody else
...if any of this was documented...
2011-07-05 16:08:55 -04:00
Matthias Clasen
48c3d8e1cf Drop gail-private-macros.h
Nothing like obfuscating an early return behind a macro.
2011-07-05 16:08:55 -04:00
Matthias Clasen
e4dc06b7d5 Add a test for scrolled window child count 2011-07-05 16:08:54 -04:00
Matthias Clasen
53c90cebb2 Convert GailScrolledWindow to GtkScrolledWindowAccessible 2011-07-05 16:08:54 -04:00
Matthias Clasen
fecefc6cdf Drop use of gail_return_if_fail 2011-07-05 16:08:54 -04:00
Matthias Clasen
3ab623e391 Fix a test crash 2011-07-05 16:08:54 -04:00
Matthias Clasen
f052710b85 Remove old files 2011-07-05 16:08:54 -04:00
Matthias Clasen
13e8bace97 Convert GailScaleButton to GtkScaleButtonAccessible 2011-07-05 16:08:54 -04:00
Matthias Clasen
583a5e4ea4 Drop another unused include 2011-07-05 16:08:54 -04:00
Matthias Clasen
a8b67d2064 Convert GailToggleButton to GtkToggleButtonAccessible 2011-07-05 16:08:54 -04:00
Matthias Clasen
f54cc70238 Nuke GailAdjustment
This was a fairly trivial wrapper around GtkAdjustment with
no particularly important reason for existence.
2011-07-05 16:08:54 -04:00
Matthias Clasen
1ff2076cdd GtkAdjustment: add an auxiliary function
This is going to be used in AtkValue implementations.
2011-07-05 16:08:54 -04:00
Matthias Clasen
98918137a8 Drop an unneeded include 2011-07-05 16:08:54 -04:00
Matthias Clasen
e2847d9637 Convert GailRadioButton to GtkRadioButtonAccessible 2011-07-05 16:08:54 -04:00
Matthias Clasen
369b4a605e GtkLabelAccessible: drop an unneeded include
We eventually want to get rid of gailmisc, so this is progress.
2011-07-05 16:08:54 -04:00
Matthias Clasen
c750139c85 Convert GailPaned to GtkPanedAccessible 2011-07-05 16:08:54 -04:00
Matthias Clasen
7f58482d4e Convert GailRange to GtkRangeAccessible 2011-07-05 16:08:54 -04:00
Matthias Clasen
5f6ed88b7a GtkTextViewAccessible: get rid of GailTextUtil usage
Instead, use the newly added GtkTextBuffer functions.
2011-07-05 16:08:53 -04:00
Matthias Clasen
aa291863bb GtkTextBuffer: Add accessible api
These functions match closely to the AtkText interface;
they will be used in the GtkTextView accessible implementation.
Keep them private for now.
2011-07-05 16:08:53 -04:00
Matthias Clasen
d15319b717 Convert GailLinkButton to GtkLinkButtonAccessible 2011-07-05 16:08:53 -04:00
Matthias Clasen
2152424541 Convert GailImage to GtkImageAccessible 2011-07-05 16:08:53 -04:00
Matthias Clasen
a166051b60 Convert GailProgressBar to GtkProgressBarAccessible 2011-07-05 16:08:53 -04:00
Matthias Clasen
87195bc3cd Convert GailScrollbar to GtkScrollbarAccessible 2011-07-05 16:08:53 -04:00
Matthias Clasen
eebf34dd5f Update test results for recent changes 2011-07-05 16:08:53 -04:00
Matthias Clasen
a129392bb4 Convert GailFrame to GtkFrameAccessible 2011-07-05 16:08:53 -04:00
Matthias Clasen
1ef996ca3c Remove GailBox
It was only setting a role, and we can do that just as well
in get_accessible().
2011-07-05 16:08:53 -04:00
Matthias Clasen
6aedf8f066 Remove GailCalendar
This was just setting a role, which we can do just as well
in get_accessible().
2011-07-05 16:08:10 -04:00
Matthias Clasen
103b97301d Adapt to expected output to recent changes 2011-07-05 16:08:10 -04:00
Matthias Clasen
4a7a667f5f Drop GailSeparator
Instead, just set a suitable role on a GtkWidgetAccessible.
2011-07-05 16:08:10 -04:00
Matthias Clasen
ab8d94d195 Convert GailArrow to GtkArrowAccessible 2011-07-05 16:08:10 -04:00
Matthias Clasen
5fb86cf7da Convert GailScale to GtkScaleAccessible 2011-07-05 16:08:10 -04:00
Benjamin Otte
3e6fc7417d tests: Update range tests for slider value in description 2011-07-05 16:08:10 -04:00
Benjamin Otte
a2dbfaf43d stylecontext: #include <math.h> when using math functions 2011-07-05 16:08:10 -04:00
Benjamin Otte
64d4b76384 a11y: Make it compile again
Overriding CFLAGS is a bad idea. Use INCLUDES instead.
2011-07-05 16:08:10 -04:00
Benjamin Otte
787170c4cd a11y: Update tests after removing AtkText from GailExpander 2011-07-05 16:08:10 -04:00
Benjamin Otte
fea49ed621 a11y: Update tests after removing AtkText from GailRange 2011-07-05 16:08:10 -04:00
Matthias Clasen
ce793bd3ee GtkTextviewAccessible: some initial cleanup and code rearrangement 2011-07-05 16:08:10 -04:00
Matthias Clasen
42cc6ad6c6 GtkEntryAccessible: Slight simplification of attribute handling
Make this use the same convenience function as is used elsewhwere.
2011-07-05 16:08:09 -04:00
Matthias Clasen
786ade734c GtkLabelAccessible: avoid some pointless variables 2011-07-05 16:08:09 -04:00
Matthias Clasen
3f9d39ffce Initial move GailTextView -> GtkTextViewAccessible
This just does the renaming, and drops the factory.
2011-07-05 16:08:09 -04:00
Benjamin Otte
e81657cba8 tests: Add an a11y test for scales 2011-07-05 16:08:09 -04:00
Benjamin Otte
a5b08ea931 gail: Remove AtkText implementation from GailScale
AtkText should only be implemented by text editing widgets. For just
giving out a small text string, AtkObject::name should be used.
2011-07-05 16:08:09 -04:00
Benjamin Otte
e510d5beba cellareacontext: Don't ever return -1 for preferred sized
People don't check for -1 when computing size requests. Document this
new behavior.
2011-07-05 16:08:09 -04:00
Benjamin Otte
447fae8d4b Revert 'Insert an LRM, to prevent -20 to come out as 20- in RTL'
Correct text direction for printing of doubles should be (and is) done
by printf() and friend and not enforced by GtkScale.

This reverts commit 5eb2aac947

https://bugzilla.gnome.org/show_bug.cgi?id=322571
2011-07-05 16:08:09 -04:00
Benjamin Otte
d0f0d4c77f a11y: Export the printed value of a scale as the description. 2011-07-05 16:08:09 -04:00
Benjamin Otte
bbda677728 a11y: Remove AtkText implementation from GailMenuitem
AtkText should only be implemented by text editing widgets. For just
giving out a small text string, AtkObject::name should be used.
2011-07-05 16:08:09 -04:00
Benjamin Otte
0ca420918b a11y: Remove AtkText implementation from GailExpander
AtkText should only be implemented by text editing widgets. For just
giving out a small text string, AtkObject::name should be used.
2011-07-05 16:08:09 -04:00
Matthias Clasen
abe6c28bc2 Add some texts for text selection signals
Test that we do emit ::text_caret_moved and ::text_selection_changed
as expected.
2011-07-05 16:08:09 -04:00
Matthias Clasen
2358be732d Minor optimization
No need to get the cursor position twice in a row.
2011-07-05 16:08:09 -04:00
Matthias Clasen
262e59869f GtkLabelAccessible: some selection handling fixes
Don't move the cursor to 0 when removing the selection,
and don't overlook growing selections.
2011-07-05 16:08:09 -04:00
Matthias Clasen
3e84cc9b17 GtkLabel: optimize away some ::notify emissions 2011-07-05 16:08:09 -04:00
Matthias Clasen
5d38185448 Skip line-related tests for GtkEntry
GtkEntry sets single-paragraph mode on its pango layout,
so the results for line-related navigation don't match.
2011-07-05 16:08:09 -04:00
Matthias Clasen
2f758b9b50 GtkEntryAccessible: shorten some function names
Just cosmetics
2011-07-05 16:08:09 -04:00
Matthias Clasen
ca166c9a1e Remove a bit of dead code 2011-07-05 16:08:08 -04:00
Matthias Clasen
442ec1b624 GtkEntryAccessible: Clean up the AtkAction implementation a bit
No functional changes.
2011-07-05 16:08:08 -04:00
Matthias Clasen
99a54565a3 Purge traces of insert idle handler 2011-07-05 16:08:08 -04:00
Matthias Clasen
212241ffda GtkEntryAccessible: Rework text_changed handling
No more signal emission from an idle.
2011-07-05 16:08:08 -04:00
Matthias Clasen
a1cf2315a0 Fix up signal ordering issues in GtkEntry
Ensure that text and selection boundaries are in a
consistent state when we emit notifications, that ::insert-text
and ::delete-text are emitted before any changes, and that
::changed is emitted after property notifications when inserting
or deleting text.
2011-07-05 16:08:08 -04:00
Matthias Clasen
5398a160ad Add a test for entry signals
These tests check that text and selection boundaries are in a
consistent state when we emit notifications, that ::insert-text
and ::delete-text are emitted before any changes, and that
::changed is emitted after property notifications when inserting
or deleting text.
2011-07-05 16:08:08 -04:00
Matthias Clasen
7872c2c19e GtkEntryAccessible: port from GailTextUtil to GtkPango
Also clean up and rearrange the code.
As a side-effect, the no-longer-existing stipple attributes
are dropped.  Update test results to match.
2011-07-05 16:08:08 -04:00
Matthias Clasen
b83ee1e5f9 Allow use of private api in a11y/ 2011-07-05 16:08:08 -04:00
Matthias Clasen
52a2e1e628 Trivial whitespace fix 2011-07-05 16:08:08 -04:00
Matthias Clasen
6c7e858286 GtkSpinButtonAccessible: Coding style cleanups
And some code rearrangement.
2011-07-05 16:08:08 -04:00
Matthias Clasen
918514d51d First cut at GailEntry -> GtkEntryAccessible
Replace the factory for entry and spin button with
gtk_widget_class_set_accessible_type() calls, and move then
to the GtkAccessible namespace.
2011-07-05 16:08:08 -04:00
Matthias Clasen
c2d1e3eeb0 Avoid warnings in clipboard code
The a11y selection tests poke the selection on unrealized
labels. Don't spew warnings in this case.
2011-07-05 16:08:08 -04:00
Matthias Clasen
ca5db10bda Add some tests for selection handling 2011-07-05 16:08:08 -04:00
Matthias Clasen
81c809e27a Add some more basic tests 2011-07-05 16:08:08 -04:00
Matthias Clasen
3744742804 Remove debug spew 2011-07-05 16:08:07 -04:00
Matthias Clasen
f0715f434e Expand the insert/delete text
GtkLabel passes this now.
2011-07-05 16:08:07 -04:00
Matthias Clasen
0437677b12 Update test results
The label accessible port dropped the no-longer-existing
stipple attributes; so update the expected test results to match.
2011-07-05 16:08:07 -04:00
Matthias Clasen
c74ccbb86e Port GtkLabelAccessible from GailTextUtil to GtkPango api
Unfortunately, we still keep a copy of the text around, for
::insert/::delete signals; those emissions need to be moved to
GtkLabel itself.
2011-07-05 16:08:07 -04:00
Matthias Clasen
1164ceb4fc GtkStyleContext: add some aux. a11y api
This function translates the fg/bg color into atk attributes.
2011-07-05 16:08:07 -04:00
Matthias Clasen
1f2b8a6545 Add some aux. pango api to help AtkText implementations
These functions are implementations of the AtkText api on top
of a PangoLayout, and are intended to replace GailTextUtil.

Since gtkpango.h is a private header, also remove the individual
inclusion prohibition.
2011-07-05 16:08:07 -04:00
Matthias Clasen
53535f03cf Replace the boundary test
The new test is much smaller, and the results have been carefully
looked at; GtkLabel gets it right, the others don't.

Also, temporarily include some code that dumps out useful information.
2011-07-05 16:08:07 -04:00
Matthias Clasen
db2da1de42 Sort text attributes alphabetically in dumps 2011-07-05 16:08:07 -04:00
Matthias Clasen
889b2714d5 GtkLabel: factor out two getters
Make the get_property switch look a little nicer.
We export these functions privately for use in the label
accessible implementation later on.
2011-07-05 16:08:07 -04:00
Benjamin Otte
504c0fdc27 messagedialog: Initialize style values in init()
Fixes underallocation warnings
2011-07-05 16:08:07 -04:00
Benjamin Otte
5ec01aac61 a11y: Remove setters for column description/header 2011-07-05 16:08:07 -04:00
Benjamin Otte
44e4b94acb a11y: Make treeview header and caption no longer settable
It's not exposed in AT-SPI so we don't need it.
2011-07-05 16:08:07 -04:00
Benjamin Otte
56ebb3dd0e a11y: Remove setters for row description/header
AT-SPI doesn't expose them, so there's no need to keep them.
2011-07-05 16:08:07 -04:00
Matthias Clasen
1b8c38f6e1 GtkHSV: set a suitable role for the accessible
The consensus of the accessibility team was that 'color chooser'
fits best for this. Update tests to match.
2011-07-05 16:08:07 -04:00
Matthias Clasen
3edebfb81c GtkSpinner: set a suitable role for the accessible
The consensus of the accessibility team was that this is
an animation. Update tests to match.
2011-07-05 16:08:07 -04:00
Matthias Clasen
828d70c6d7 GtkLabelAccessible: remove redundant check
We always have the textutil now, so remove some NULL checks.
Also, never say 'State is defunct' again...
2011-07-05 16:08:06 -04:00
Matthias Clasen
dddf587aec GtkLabel: freeze property notification where appropriate
When setting properties that require recalculating the label
text, freeze notification until the label is properly updated.
This fixes bug 126797.
2011-07-05 16:08:06 -04:00
Matthias Clasen
441bf26a2e GtkLabelAccessible: remove broken workarounds
This removes a horrible workaround for bug 126797. To prevent
picking up accidental markup in label texts, the label accessible
is listening for window creation and mapping and defers initializing
its text until then.
2011-07-05 16:08:06 -04:00
Matthias Clasen
91960a2132 Add a testcase for a very old bug
This tests a problem that was first noticed in 2003, in
bug 126797: The text of a label accessible is not properly
updated when the label switches from !use-markup to use-markup.
2011-07-05 16:08:06 -04:00
Matthias Clasen
437aaccc19 Test lots of boring string functions
Needless to say, these tests still fail.
2011-07-05 16:08:06 -04:00
Matthias Clasen
ec7c50ef00 Add some AtkText tests
These unfortunately all fail really miserably, currently.
2011-07-05 16:08:06 -04:00
Matthias Clasen
a381fd288c GailLabel -> GtkLabelAccessible
A first experimental conversion from the gail namespace to gtkaccessible.
At the same time, use gtk_widget_class_set_accessible_type() to register
the accessible type for GtkLabel.
2011-07-05 16:08:06 -04:00
Matthias Clasen
a0790f1000 Remove gail_widget_new()
The function was unused and unnecessary.
2011-07-05 16:08:06 -04:00
Matthias Clasen
e80e585639 Forgotten file 2011-07-05 16:08:06 -04:00
Matthias Clasen
743cb1fc96 spinbutton testcase 2011-07-05 16:08:05 -04:00
Matthias Clasen
2610a43e1c iconview testcase 2011-07-05 16:08:05 -04:00
Matthias Clasen
55d8a684c7 Paned testcase 2011-07-05 16:08:05 -04:00
Matthias Clasen
9d4ce36199 Statusbar testcases 2011-07-05 16:08:05 -04:00
Matthias Clasen
fb91fd7e3c tree-performance: test with tree stores too
This duplicates the current test with a GtkTreeStore instead
of a GtkListStore.
2011-07-05 16:08:05 -04:00
Matthias Clasen
2deeab4c4f GailTreeView: optimize a bit
Avoid many unnecessary list iterations by using a hash table
to store cell infos, and caching row and column counts. Based
on patches by William Jon McCann, bug 554171.

tree-performance results:

before:  (MINPERF:large tree test with a11y: 9.18531sec)
after:   (MINPERF:large tree test with a11y: 0.923463sec)

for comparison, without accessibility:
(MINPERF:large tree test: 0.016179sec)
2011-07-05 16:08:05 -04:00
Matthias Clasen
23bc606c79 a11y: add a treeview performance test
This test creates a treeview with a few columns and a liststore,
and then populates it with a 1000 rows.
2011-07-05 16:08:05 -04:00
Matthias Clasen
430957b036 Add a calendar testcase 2011-07-05 16:08:05 -04:00
Matthias Clasen
8aced27009 Add an infobar testcase 2011-07-05 16:08:05 -04:00
Matthias Clasen
f2d6439bc7 Add a GtkProgressBar testcase 2011-07-05 16:08:05 -04:00
Matthias Clasen
5d84495b77 Add a GtkSpinner testcase 2011-07-05 16:08:05 -04:00
Matthias Clasen
96d5ea96fd Add a lockbutton testcase 2011-07-05 16:08:05 -04:00
Matthias Clasen
3cc413e84f Add a testcase for all the pickers 2011-07-05 16:08:05 -04:00
Matthias Clasen
4573659deb Don't pass NULL to functions expecing a real string
...and when you do pass them a real string, don't leak it.
2011-07-05 16:08:04 -04:00
Benjamin Otte
a8f663ce5e Revert "Add a testcase with a print dialog"
THe testcase depends on the installed printers, so is nondeterministic.

This reverts commit 5bf14cc7485fe015ad15747454e877f2fb3dabc5.
2011-07-05 16:08:04 -04:00
Benjamin Otte
a3ca0bf898 Revert "Add a filechooser testcase"
File choosers depend on the files in the current directory and the
settings the user has set for the file chooser, so the output cannot be
deterministic.

This reverts commit f05c9e02c49f857c33e02c3d89483fcccb5df254.
2011-07-05 16:08:04 -04:00
Benjamin Otte
aaa40bdc0a Revert "Add a testcase involving a font selection dialog"
The font chooser depends on the fonts installed on the system, so the
output is nondeterministic.

This reverts commit 08fdc399762c2af07d94e42a1801e691e5d4d6ab.
2011-07-05 16:08:04 -04:00
Benjamin Otte
d346be96c2 tests: Don't emit a message for every unnamed object 2011-07-05 16:08:04 -04:00
Benjamin Otte
4c0814a176 tests: Reset the unnamed counter before a test run
This guarantees that objects are named the same all the time.
2011-07-05 16:08:04 -04:00
Benjamin Otte
521f9e2f15 gail: Add support for action_set_description
As set_description is never called and unsupported by the at-spi, we can
omit implementing it.
This means we can also omit get_description calls in various places, as
they'd just return the default value: NULL.
2011-07-05 16:08:04 -04:00
Benjamin Otte
26a2cfe62a tests: Fix crash due to freeing random pointers 2011-07-05 16:08:04 -04:00
Benjamin Otte
9ddea3f4e1 a11y: Remove hack for old code
This code was supposed to work around a bad interaction between GOK and
Nautilus from 7 years ago.
If it still exists, the GOK developers may complain to the Nautilus
developers.

https://bugzilla.gnome.org/show_bug.cgi?id=137401
2011-07-05 16:08:04 -04:00
Benjamin Otte
a65cb51d49 gail: Remove useless code
The ATK default code does the same thing as these two functions.
2011-07-05 16:08:04 -04:00
Joachim Breitner
317d7a1f54 docs: Remove mention of client messages 2011-07-05 16:08:04 -04:00
Matthias Clasen
b9c0d226c0 Add an assistant testcase 2011-07-05 16:08:04 -04:00
Matthias Clasen
1783b5c85e Add a testcase involving an expander 2011-07-05 16:08:03 -04:00
Matthias Clasen
5a257fe95f Add a testcase with a print dialog 2011-07-05 16:08:03 -04:00
Matthias Clasen
b2e624c50c Add a messagedialog testcase 2011-07-05 16:08:03 -04:00
Matthias Clasen
c950bd540b Add a testcase involving a font selection dialog 2011-07-05 16:08:03 -04:00
Matthias Clasen
4149124b2b Add a testcase with an appchooser dialog 2011-07-05 16:08:03 -04:00
Matthias Clasen
0f2c739473 Add a README for accessibility-dump 2011-07-05 16:08:03 -04:00
Matthias Clasen
4dfc4fbdaf Add an about dialog testcase 2011-07-05 16:08:03 -04:00
Matthias Clasen
f59b9e52d4 Add a color chooser testcase 2011-07-05 16:08:02 -04:00
Matthias Clasen
ac8e00010a Add a scrollbar to the range testcase 2011-07-05 16:08:02 -04:00
Matthias Clasen
dfb8fa9b5a Add a filechooser testcase 2011-07-05 16:08:02 -04:00
Matthias Clasen
56100a017a Remove debug spew
This had crept into the expected output for the buttons
testcase.
2011-07-05 16:08:02 -04:00
Matthias Clasen
ffb6df5f42 GailTreeView: deal with absence of model 2011-07-05 16:08:02 -04:00
Matthias Clasen
7f44184f61 GailImageCell: Deal with absence of pixbufs
...and when there are pixbufs, don't leak them.
2011-07-05 16:08:02 -04:00
Matthias Clasen
0f8823b4a4 Fix dependencies between directories
This ensures that libgtk gets relinked when I touch sources
in gtk/a11y.
2011-07-05 16:08:02 -04:00
Matthias Clasen
5ebbf00f0a Try harder to generate names for accessibles
We are still hitting the 'no name' case in GtkFileChooser for
a GailBox, otherwise.
2011-07-05 16:08:02 -04:00
Matthias Clasen
dbf204b5b9 Handle AtkValue implementations that return integer values
We do this by transforming the returned GValue to a string.
As a side-effect, the formatting for doubles changes, so
adjust expected output to match.
2011-07-05 16:08:01 -04:00
Matthias Clasen
8fdcb60c87 Don't build the libgail-util docs
The doc build for that is currently broken, and libgail-util is
undergoing reconstructive surgery anyway, currently.
Or maybe it'll turn out to be an amputation...
2011-07-05 16:08:01 -04:00
Benjamin Otte
98a11cedf0 tests: omit fg-color and bg-color values from attributes
They depend on the environment, too.
2011-07-05 16:08:01 -04:00
Benjamin Otte
b6bd3ef4f4 tests: Add line breaks when dumping text attributes
This improves diff readability a lot when attributes differ.
2011-07-05 16:08:01 -04:00
Benjamin Otte
4227a63f48 widget: Use g_type_add_class_private()
It turns out that that funciton does indeed exist and my rant was just
outdated. Shame on me.
2011-07-05 16:08:01 -04:00
Benjamin Otte
5449ec0a30 gail: Fix compile warning 2011-07-05 16:08:01 -04:00
Benjamin Otte
fd5ceee925 tests: undefine GTK_DISABLE_DEPRECATED as we include deprecated types 2011-07-05 16:08:01 -04:00
Matthias Clasen
17e219fbce Remove debug spew 2011-07-05 16:08:01 -04:00
Matthias Clasen
054057a640 Fix GtkSwitchAccessible type definition
It turns out that ATK_DEFINE_TYPE_WITH_CODE() is broken; it
tells GType that the class and instance size for the accessible
type are the same as for its parent type. Which is not true
if your instance struct has members such as 'description' here.
This was causing hard-to-track-down memory corruption, since
description and the GtkAccessible private pointer were sharing
the same memory location.
2011-07-05 16:08:00 -04:00
Matthias Clasen
4dfb500732 Add a test involving a tree view 2011-07-05 16:08:00 -04:00
Matthias Clasen
eb60a7ed54 Dump AtkTable properties
Also, make get_name() deal better with GtkAccessibles whose
widgets don't have buildable names.
2011-07-05 16:08:00 -04:00
Matthias Clasen
52aa225713 Dump AtkComponent properties
Note that the spatial aspects of AtkComponent are all dependent
on fonts and other environmental factors, thus we only dump the
little bits outside of that.
2011-07-05 16:08:00 -04:00
Matthias Clasen
570c185935 Make the dumped output a bit more readable
By adding sections for each interface.
2011-07-05 16:08:00 -04:00
Matthias Clasen
04d6c99a71 Add a test involving a text view 2011-07-05 16:08:00 -04:00
Matthias Clasen
901395db67 Dump AtkStreamableContent properties
Also, simplify the format for links slightly.
2011-07-05 16:08:00 -04:00
Matthias Clasen
bdab7cc8ff Fix the expected output for range.ui
GtkScale puts a LRM character at the start of the string.
2011-07-05 16:08:00 -04:00
Matthias Clasen
57fc8f183a Add a test involving links 2011-07-05 16:08:00 -04:00
Matthias Clasen
97ddbb5ff2 Dump AtkHyperLinkImpl properties 2011-07-05 16:07:59 -04:00
Matthias Clasen
0311ffe023 Fix some problems with the GailLinkButton implementation 2011-07-05 16:07:59 -04:00
Matthias Clasen
0740876d0e Add a test involving ranges 2011-07-05 16:07:59 -04:00
Matthias Clasen
2672a3afef Dump AtkValue properties 2011-07-05 16:07:59 -04:00
Matthias Clasen
6641ae85ff Add a test involving a selection 2011-07-05 16:07:59 -04:00
Matthias Clasen
913c5241ae Dump AtkSelection properties
Also make get_name() deal with object that are not GtkAccessible,
but implement AtkText. An example of this is GailNotebookPage.
2011-07-05 16:07:59 -04:00
Matthias Clasen
a6d741b6a4 Dump AtkAction properties
Adjust expected output to match.
2011-07-05 16:07:59 -04:00
Matthias Clasen
22fc55f716 Dump AtkImage properties too
Update expected output to match.
2011-07-05 16:07:59 -04:00
Matthias Clasen
58b4b410fa More text properties 2011-07-05 16:07:59 -04:00
Matthias Clasen
76f71b8f9c Dump AtkText properties too
...would be nice if these actually _were_ properties.
Update the expected output to match.
2011-07-05 16:07:58 -04:00
Matthias Clasen
9860acfcbe Remove remnants of GnomeCanvas
There were some random places where gail was poking at types
to see if they were a GnomeCanvas. Just remove this.
2011-07-05 16:07:58 -04:00
Matthias Clasen
bd6b799d26 Fix make check
Not really the best fix; for now just ignore accessible parents
that are not GtkAccessibles - it seems that something causes
GailToplevels to show up as parents of GailWindows, randomly.
2011-07-05 16:07:58 -04:00
Matthias Clasen
784e4a81eb Remove an extra line from expected output 2011-07-05 16:07:58 -04:00
Matthias Clasen
5952c6abbb Don't forget to free an empty attribute set 2011-07-05 16:07:58 -04:00
Matthias Clasen
f3ae93af95 Add a more convenient way to dump
For initial creation of the results, allow to run
accessibility-dump --generate file.ui,
which will dump just the expected output to stdout,
without any extra decorations.
2011-07-05 16:07:58 -04:00
Matthias Clasen
d36d6172d2 Dump more accessibility data
This commit adds dumping of parents, attributes and states.
The expected dump output has been adjusted to match.
2011-07-05 16:07:58 -04:00
Matthias Clasen
667504d791 Add new tests to EXTRA_DIST 2011-07-05 16:07:58 -04:00
Matthias Clasen
3f01b42652 Add a test that sets ::accessible-name 2011-07-05 16:07:57 -04:00
Matthias Clasen
5c1b0b005e Add a test that has a labeled-by relation in it 2011-07-05 16:07:57 -04:00
Benjamin Otte
f76c439897 tests: Add first shot at an accessibility dump tool
The tool works like this:
  ./accessibility-dump [FILE ...]
If no files are given, all files with the extension ".ui" in the current
directory are taken. For every file "test.ui", the following steps are
performed:
1) test.ui is loaded using GtkBuilder
2) The accessible for the window is loaded
3) The information of accessible is converted into a string using a
   syntax defined in this test file
4) The generated string is diffed with the file "test.txt"
5) If the diff is empty, the test is a success, if not, the test fails.
6) The diff is output when the test runner is run with --verbose

So to add a test named "test", create a file called "test.ui", put it
into this directory. Then create the expected output file "test.txt",
put it into this directory too. You can create the initial version of
this file by invoking "./accessibility-dump --verbose test.ui". The
output will contain the expected text and can be copy/pasted into the
text file.
2011-07-05 16:07:57 -04:00
Benjamin Otte
ebf8bf0000 API: Add gtk_widget_class_set_accessible_type()
The function is supposed to bypass the ATK registry. For 2 reasons:
1) We get rid of a lot of boilerplate madness.
2) The registry allows creating multiple accessibles per widget and we
   don't.

The old code for registries is still there.
2011-07-05 16:07:57 -04:00
Benjamin Otte
9ebcd66d43 widget: Add a GtkWidgetClassPrivate
As long as glib doesn't provide class privates, we'll have to ship our
own...
2011-07-05 16:07:57 -04:00
Benjamin Otte
dfe5459437 a11y: Remove unused HTML objects
Seems they were for GtkHTML and never used since GAIL got imported into
GTK.
2011-07-05 16:07:57 -04:00
Matthias Clasen
d4a1a03614 No need for gail.h 2011-07-05 16:07:57 -04:00
Matthias Clasen
9453332cce NO_GAIL not used anymore 2011-07-05 16:07:57 -04:00
Matthias Clasen
f1bf642c98 We're not a module anymore
So no need to implement module entry points; and libgnome is
dead too, so no need to export functions for it either.
2011-07-05 16:07:57 -04:00
Matthias Clasen
8bbab02215 Add a first, trivial test for accessibles 2011-07-05 16:07:57 -04:00
Matthias Clasen
813b2c0aff And remove it from the build too 2011-07-05 16:07:57 -04:00
Matthias Clasen
d3ab2fe19c Remove the old gail tests
This is not what we are looking for in tests, and it hasn't been
touched in ages.
2011-07-05 16:07:56 -04:00
Benjamin Otte
773df067e8 gtk: Include gail by default, don't build it as a module
It is now no longer possible to disable it.
This doesn't matter though because GTK will not instantiate a11y
objects until you actually use it. So nothing changes in practice.
2011-07-05 16:07:56 -04:00
Benjamin Otte
8c32d2d516 gtk: Move a11y tests fro a11y/tests to tests/a11y 2011-07-05 16:07:56 -04:00
Benjamin Otte
48b9521cbb gail-util: Move into toplevel directory 2011-07-05 16:07:56 -04:00
Benjamin Otte
b6025e44a9 gail: Copy gail-util functions into gail
Otherwise we get a circular dependency if we move libgail into GTK:
GTK depends on gail-util depends on gail (is part of GTK)
2011-07-05 16:07:56 -04:00
Benjamin Otte
df2e122b5c gail: Move from modules/other/gail to gtk/a11y 2011-07-05 16:07:56 -04:00
Benjamin Otte
3ec9e6c5e8 gail: No need to include modules/other in CFLAGS anymore
Now that we include headers directly, ew don't need it anymore. And the
current directory is included automatically.
2011-07-05 16:07:56 -04:00
Benjamin Otte
ee606d1684 gail: Include files directly
Instead of including <gail/gailfoo.h>, include "gailfoo.h"
Private headers should be included like this (to make it esily visible
that the headers are private) and we want to move this directory to a
different name, so hardcoding the directory name is counterproductive to
that.
2011-07-05 16:07:56 -04:00
Arash Mousavi
842b1decc8 Updated Persian translations 2011-07-05 22:21:40 +04:30
Matthias Clasen
28398e250a Post-release version bump
Up to 3.1.9
2011-07-05 11:04:06 -04:00
Matthias Clasen
66d8b6bd6e 3.1.8 2011-07-05 11:03:23 -04:00
Matthias Clasen
646a657453 Update NEWS 2011-07-05 09:37:43 -04:00
Benjamin Otte
769c795d57 reftests: Use an offscreen window to avoid artifacts
When tests are larger than the screen size and no compositing is
enabled, the window will be clipped to the screen size and all areas
outside of the screen have undefined contents.

To avoid this, we can use an offscreen window.
2011-07-05 15:28:18 +02:00
Benjamin Otte
ace4faa4e2 reftests: Fix label-sizing reference for Pango
See https://bugzilla.gnome.org/show_bug.cgi?id=649783 for a discussion
of the problem. Should this bug be fixed, this patch can just be
reverted.
2011-07-05 15:18:14 +02:00
Benjamin Otte
84e6f353ac reftests: load/save file once in Glade
This way the output is canonicalized for further editing. No changes
have been done.
2011-07-05 15:17:23 +02:00
Yaron Shahrabani
3c46df5fcb Updated Hebrew translation. 2011-07-02 10:26:09 +03:00
Federico Mena Quintero
121f787136 Update the docs with the policies for Save dialogs
Basically, don't ever set the current folder, and only use
gtk_file_chooser_set_filename() for 'File/Save As'.  This is so
that the file chooser will be able to present its recently-used
lists as appropriate, giving the user good suggestions by default.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-01 19:12:09 -05:00
Federico Mena Quintero
9eb324dbaf No need to highlight the file's basename when setting the base folder
None of the cases where _gtk_file_chooser_entry_set_base_folder() appear to require
the entry highlighting the file's basename.  Doing the highlighting actually makes
things look weird in Save/Recent mode if you

  1. type a filename
  2. click on a recent-folder,

as right after (2) your filename would get its basename highlighted for
no apparent reason.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-01 19:07:12 -05:00
Federico Mena Quintero
894be790bf Hide the Create Folder button in recent-files mode when the pathbar is on
The create-folder machinery doesn't handle that case yet; we may enable it later
once we figure out the implications for the GUI.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-01 19:07:12 -05:00
Federico Mena Quintero
6bb34d7dd4 Centralize the setting of the pathbar's widgets
It used to be that every part of the file chooser's code would show/hide the widgets
near the pathbar as needed.  Now we have two central functions:

  path_bar_update()
  path_bar_set_mode()

These take care of all the widget shuffling;  setting the visibility of the
pathbar, info bar, and Create Folder button as appropriate; setting the contents
of the info bar, etc. - based on the current operation_mode and action.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-01 19:07:12 -05:00
Federico Mena Quintero
18ebec28c9 Create the recently-used widgets and infobar from the pathbar widgets as well
Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-01 19:07:12 -05:00
Federico Mena Quintero
3b2e4623f3 Move the pathbar creation to its own function
We will centralize the place where all the pathbar-related widgets are created:
the location button, the pathbar itself, the Create Folder button, and in
subsequent commits, the info bar as well.  We will deal with the pathbar/infobar
as a unit, instead of swapping them in and out in an ad-hoc fashion.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-01 19:07:12 -05:00
Federico Mena Quintero
4d9fdb1c1b Warn the user when he still needs to type a filename or choose a folder
Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-01 19:07:11 -05:00
Federico Mena Quintero
b442a3a4ea Return the recent-folder plus filename in Save mode from get_files()
Since the GtkFileChooserEntry already gets the recent-folder set upon it when a recent-folder
is selected, it already can give us the correct fully-formed path.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-01 19:07:11 -05:00
Federico Mena Quintero
ae42f286bb Allow resolving absolute paths even if there is no base_folder
This lets us do proper completion in GtkFileChooserEntry even when no base folder
has been set.  Completion for relative paths won't work, as usual, as expected.
2011-07-01 19:07:11 -05:00
Federico Mena Quintero
1af579b1a2 Set the filename entry's base folder when a recent-folder is selected
This lets the filename entry do completion relative to the selected recent-folder.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-01 19:07:11 -05:00
Federico Mena Quintero
064ff39ad7 Instruct the user to pick a folder when nothing is selected in the recent-folders list
Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-01 19:07:11 -05:00
Federico Mena Quintero
b90e1211cf Put recently-used folders in the recently-used list
Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-01 19:07:10 -05:00
Federico Mena Quintero
e7196ee985 Turn a struct field into a local variable
Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-01 19:07:10 -05:00
Federico Mena Quintero
5564df4ac9 Remove unused struct field
Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-01 19:07:10 -05:00
Federico Mena Quintero
d64c88d4d1 Actually highlight the 'recently used' and 'search' items in the shortcuts bar
They weren't being selected in the shortcuts bar when those modes were
activated programmatically, instead of through the user selecting
them from the user interface.
2011-07-01 19:07:10 -05:00
Federico Mena Quintero
252ace6681 Start in recently-used mode when no folder is set
In RELOAD_EMPTY mode, when no folder has been selected by the calling app, we now
start showing the recently-used list.  The rationale is as follows:

  - In Open mode, the user is likely to pick a file he has used recently.

  - In Save mode, the user is likely to want a destination folder which
    he has used recently.

For the Save case, where we want to present the user with recent folders instead
of recent files, we will make the recent-list do so in subsequent commits.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-01 19:07:10 -05:00
Federico Mena Quintero
1ffd36814a Put the pathbar in the 'Save in folder:' row in Save mode
Now we reparent the browse_path_bar_hbox to that spot in Save mode,
or to be above the file lists in Open mode.  The pathbar makes for a very
clear indication of the location to save in.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-01 19:07:09 -05:00
Federico Mena Quintero
4353a5f88c Get rid of the save_folder_combo
And with this we get rid of the craziness of having a separate filter model
for the combobox's model.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-01 19:05:12 -05:00
Federico Mena Quintero
3146c790a7 Remove the expander in Save mode, and the configuration key
This effectively makes the file chooser always be in 'expanded' mode.
Later, we'll move the pathbar to the 'Save in folder:' line.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-01 19:05:12 -05:00
Federico Mena Quintero
904ad6620f Utility function to extract folders from the recently-used list
This extracts the parent folders from the items in the recently-used
list.  We'll use it in the file chooser to present a list of
recently-used folders.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
2011-07-01 19:01:24 -05:00
Cosimo Cecchi
ba76f54549 reftests: Add test for box brokenness
This is a tests for the last commit.
2011-07-02 01:57:27 +02:00
Benjamin Otte
246a7ecbc9 box: Remove cache for sibling paths
We can't cache this path as widgets might dynamically add or remove
style classes without telling us. At which point the stored path does
not work.
2011-07-02 01:40:16 +02:00
Cosimo Cecchi
668790ddee toolbar: don't leak the sibling path 2011-07-01 12:33:26 -04:00
Cosimo Cecchi
34d85f04e5 toolbar: don't count invisible widgets when building the sibling path
Also, fix RTL nth-child handling for toolbars.
2011-07-01 12:31:22 -04:00
Cosimo Cecchi
9417017f5b toolbar: invalidate order when an item visibility changes 2011-07-01 12:31:22 -04:00
Matthias Clasen
e2a2da224d Test box and toolbar regions in parallel
This makes it easy to see discrepancies.
Plus, it is fun
2011-07-01 12:31:22 -04:00
Matthias Clasen
301c120b74 toolbar: nth-child support for GtkToolbar
This doesn't quite work right yet.
2011-07-01 12:31:22 -04:00
Cosimo Cecchi
ef153a5fff box: follow children visibility when building the sibling path
This fixes nth-child not working for widgets which were not
visible before being added to the box, but it's also a better fix
for https://bugzilla.gnome.org/show_bug.cgi?id=652769
2011-07-01 11:48:22 -04:00
Cosimo Cecchi
e731caf8d0 Revert "gtkbox: Invalidate order on changes, even if the child is not visible"
This reverts commit 8cb0cc58e3.
2011-07-01 11:47:41 -04:00
Matthias Clasen
c2449763ce Fix up docs for predefined style classes.
The table was incomplete and out of date. Instead, just
put a list of links in that place, and move all the extra
documentation to the macros. Bug 653785
2011-06-30 19:18:26 -04:00
Matthias Clasen
c22fb1684c GdkKeymap: Prevent an infinite loop in the non-XKB case
Somehow the increment got lost, as comparison with the 2.x code
shows.
2011-06-30 14:45:16 -04:00
Vincent Untz
8cb0cc58e3 gtkbox: Invalidate order on changes, even if the child is not visible
When we build the sibling path for the order, we do not skip hidden
children (since, quoting the comment, "we cannot reliably detect changes
in widget visibility"). So we need to invalidate the order when hidden
children are reordered and removed.

https://bugzilla.gnome.org/show_bug.cgi?id=652769
2011-06-30 09:11:28 +02:00
John (J5) Palmieri
9c4892f291 [gi] add more annotations to force drag and drop api to be methods 2011-06-29 14:54:25 -04:00
Wouter Bolsterlee
8a11ea6dcc Updated Dutch translation by Wouter Bolsterlee 2011-06-29 19:31:53 +02:00
John (J5) Palmieri
f46f038abd [gi] make sure gtk_drag_dest_unset is annotated as a method 2011-06-29 12:11:36 -04:00
Juan Pablo Ugarte
ea81c710d0 Make GtkBuilder do not delay construct properties that can be resolved
(so construct is respected when possible) and skip construct only props that
can not.
2011-06-29 11:45:33 -03:00
Javier Jardon
445ac0e650 gtk/gtkmenuitem: Remove reference to deprecated and removed GtkItem 2011-06-29 15:01:19 +01:00
Chun-wei Fan
9eeadc2dc8 Update VS2010 READNE.txt
This file should have Windows CRLF EOL as well
2011-06-29 13:55:46 +08:00
Chun-wei Fan
f1306f7bd1 Re-attempt to correct EOL on VS2010 solution
This time I realized that I needed to set autocrlf=false on my Windows side
... ugh...

This is one of those files that must have CRLF line endings to work
correctly :|
2011-06-29 12:49:14 +08:00
Claudio Saavedra
ca801abb4c Use a PAGE_STEP macro instead of a magic number
Helps to understand the code.

https://bugzilla.gnome.org/show_bug.cgi?id=653512
2011-06-28 09:47:44 +03:00
Ihar Hrachyshka
f403a4c8aa Updated Belarusian translation. 2011-06-28 01:32:49 +03:00
Matthias Clasen
7bbe537915 Don't forget to initialize a variable
Pointed out by clang in bug 653333.
2011-06-27 16:47:59 -04:00
John (J5) Palmieri
f685ce37fc [gi] correct annotation for GtkMenuPositionFunc callbacks 2011-06-27 13:45:17 -04:00
Mike Gorse
4fa3cef795 bgo#653191 - fix uninitialized variable in gtk_file_chooser_entry.c 2011-06-27 12:36:11 -05:00
Paolo Borelli
399de11116 Speed up page insertion
Make sure to call widget_set_child_visible(false) on all tabs except the
current before calling widget_set_parent.
2011-06-26 20:41:21 +02:00
Ihar Hrachyshka
2c91626560 Updated Belarusian translation. 2011-06-25 21:32:27 +03:00
Ihar Hrachyshka
e967374fe4 Updated Belarusian translation. 2011-06-25 21:28:16 +03:00
Chun-wei Fan
c0d54cde0c Update VS projects distribution
Change the EXTRA_DIST to distribute the gtk3-demo projects (instead of
gtk-demo)
2011-06-25 02:06:53 +08:00
Chun-wei Fan
f74585caea Add headers required by gtk/gtkwin32embedwidget.c
Some functions from the added headers are needed by this file to compile
without C4013 (a.k.a implicit declaration of ...) warnings/errors
2011-06-24 13:19:58 +08:00
Chun-wei Fan
0c9d2795e3 Update VS project files
-Reinstate build/win32/vs10/gtk+.sln with the correct EOL (DOS/Windows), so
 that it will be correctly recognized by Windows instead of having the
 annoying "Unrecognized Visual Studio Version".

-Update property sheets to reflect on new headers added

-Change the demo program to be gtk3-demo.exe, to be consistent with the
 names on other platforms, and updated/renamed related project/solution
 files, and added overlay.c to the list of demo sources.
2011-06-24 12:48:22 +08:00
Chun-wei Fan
c5250adce1 Temporarily remove build/win32/vs10/gtk+.sln
The line endings need to be DOS/Windows...
2011-06-24 12:42:47 +08:00
Murray Cumming
191afb88f9 GtkPaned docs: Remove sentence saying see GtkPaned. 2011-06-24 00:21:32 +02:00
Arash Mousavi
f0443b6549 Updated Persian Translation 2011-06-23 23:32:24 +04:30
Scott Moreau
24f1132671 Track wayland protocol changes. 2011-06-23 07:06:35 -04:00
Colin Walters
873539e2d2 introspection.m4: Update from g-i
This fixes substitution with dash.
2011-06-22 11:07:37 -04:00
Fran Diéguez
8558c05f4b Updated Galician translations 2011-06-21 13:58:45 +02:00
Claudio Saavedra
c3b7590c77 Avoid GApplication being released twice on gtk_application_remove_window() calls
Removing the window from the window list before setting the
application to %NULL avoids gtk_application_remove_window() triggering
another call to gtk_application_window_removed(), which would release
the application a second time.

https://bugzilla.gnome.org/show_bug.cgi?id=653053
2011-06-21 00:38:33 +03:00
Javier Jardón
d2b6480ba2 docs: remove tmpl directories
We do not use template files anymore
2011-06-20 14:24:57 +01:00
Javier Jardón
6a2d175457 configure.ac: Generate xz tarballs with ustar format by default 2011-06-20 11:46:16 +01:00
Chun-wei Fan
7a032ecdfe Update VS property sheets
As Cairo and Cairo-GObject are often built as two seperate DLLs/modules,
set the property sheets to link to both libraries, instead of using the
previous approach where a monolithic Cairo DLL which contains GObject
support is used.
2011-06-20 17:05:00 +08:00
Chun-wei Fan
a49ef87f5f Refine Visual C++ 2010 projects
-Remove unneeded tags from projects
-Seperate intermediate directories for projects to avoid rebuilding/
 linking on every rebuild and MSBuild errors (et al.) for not being
 able to write into build log files as they are in use.
2011-06-20 12:19:54 +08:00
Kjartan Maraas
ef50f7a4e8 Updated Norwegian bokmål translation. 2011-06-19 17:32:13 +02:00
Jorge González
0e430faa81 Updated Spanish translation 2011-06-19 17:18:01 +02:00
Matthias Clasen
e81426dbd6 Add sibling information to widget path string representations 2011-06-18 12:36:38 -04:00
Matthias Clasen
0725e417c5 Fix css syntax in example 2011-06-18 11:11:47 -04:00
Matthias Clasen
b71b560e56 Remove an unused variable 2011-06-17 22:57:35 -04:00
Matthias Clasen
ebebbe4da4 Remove nonexisting properties
glade insists on adding GtkGrid:n-rows and :n-columns, for
no good reason...
2011-06-17 20:35:41 -04:00
Cosimo Cecchi
71eb9d123d tests: import the widget-factory test for theming
Courtesy of Andrea Cimitan <andrea.cimitan@canonical.com>.
2011-06-17 11:51:14 -04:00
Matthias Clasen
8f357bb809 Update keybinding docs
These were still explaining gtkrc syntax.
2011-06-16 23:51:06 -04:00
Matthias Clasen
5eb8ca1882 Remove unnecessary includes
gtkstyle.h is similarly unused.
2011-06-16 23:35:24 -04:00
Matthias Clasen
f1a9c3efff Remove unused includes
Nothing is using gtkrc.h functionality any more.
2011-06-16 23:33:43 -04:00
Matthias Clasen
04ce0467ab Silence a warning 2011-06-16 23:18:03 -04:00
Matthias Clasen
9bb5077b90 GtkBox: don't reset styles too often 2011-06-16 22:15:50 -04:00
José Aliste
1da07caaed info_bar: call style_updated at the end of info_bar_init
This fix a render bug where the infobar would not add borders
arount its content. Fix proposed by Benjamin Otte.
2011-06-16 14:34:14 -04:00
Chun-wei Fan
e8fb1bcb13 Update Visual C++ projects
Use G_ENABLE_DEBUG for all debug builds
2011-06-16 15:34:43 +08:00
Benjamin Otte
e54ccaee53 toolbar: Better fix for animations
It turns out there's more places where the toolbar item size is used as
the margin box instead of the content box. Because of that, store the
margin box when allocating and use it whenever calls
toolbar_content_get_allocation() instead of calling
gtk_widget_get_allocation().
2011-06-15 22:50:59 +02:00
Benjamin Otte
ba869e0fe0 toolbar: Handle the fact that size_allocate() != get_allocation()
size_allocate() allocates the available space for the margin box,
get_allocation() returns the actual space of the content box and those
can be different. And then animations never stop.
If that makes you go "huh?", you might want to read
http://www.w3.org/TR/CSS21/box.html
and the docs for gtk_widget_compute_align().
2011-06-15 20:14:18 +02:00
Benjamin Otte
4edb3f08e4 reftests: fix background-area reftest after the last commit 2011-06-15 11:25:26 -04:00
Cosimo Cecchi
af77ba78bb themingengine: shrink the background size to the padding-box
This fixes a regression introduced by this commit [1] that causes
background to draw beyond the padding-box, which breaks rounded corners,
(in addition to not being compliant with what CSS does by default).

[1] http://git.gnome.org/browse/gtk+/commit/?id=c56700ca3029a9ab1362009bff35f2a70e432c02

https://bugzilla.gnome.org/show_bug.cgi?id=652618
2011-06-15 11:03:56 -04:00
Xan Lopez
b47c7405f2 themingengine: plug a couple of leaks 2011-06-15 14:13:20 +02:00
Xan Lopez
8eb48a876b border-image: Fix leakage 2011-06-15 13:46:16 +02:00
Benjamin Otte
d3535ff6ce tests: Add tests for font-family
This readds the tests now that font-family works again. They were
previously removed when font-family support was backed out due to bugs.
2011-06-15 12:57:21 +02:00
Benjamin Otte
0d253b67f4 css: Make font property a shorthand
... and implement the CSS font properties:
- font-size
- font-style
- font-family
- font-weight
- font-variant

This is the second try at this. The first was backed out previously due
to bugginess. Let's hope this one survives a bit longer.

Also makes the font-family CSS test work again.
2011-06-15 12:52:53 +02:00
Matthias Clasen
0c162851ed Add a missing break statement 2011-06-14 21:59:55 -04:00
Matthias Clasen
519b3ca861 Add a missing break statement 2011-06-14 21:58:51 -04:00
Matthias Clasen
5254fbacfb Avoid an oob read 2011-06-14 21:56:50 -04:00
Matthias Clasen
f68c073e33 Remove a redundant NULL check 2011-06-14 21:53:53 -04:00
Matthias Clasen
32f0761daa Avoid a dereference-before-null-check 2011-06-14 21:50:16 -04:00
Matthias Clasen
d5dad6412b Give this code a chance to work
At least it does not get uninitialized variable warnings now.
2011-06-14 21:44:12 -04:00
Matthias Clasen
37167ec458 Make this code more meaningful 2011-06-14 21:18:08 -04:00
Matthias Clasen
d3c427a767 Don't forget to cleanup varargs 2011-06-14 21:14:48 -04:00
William Jon McCann
be7f734aff tests: Add simple test for image clipboard 2011-06-14 16:06:33 -04:00
Matej Urbančič
da9e1954eb Updated Slovenian translation 2011-06-14 18:24:30 +02:00
Juan A. Suarez Romero
c903ece96b image: Initialize variable 2011-06-14 09:49:23 +00:00
Matthias Clasen
e3e9527354 GtkAssistant: improve button labels
Forward/Back/Last has been declared strange; so go with something
a little more friendly: Continue/Go Back/Finish.
https://bugzilla.gnome.org/show_bug.cgi?id=652506
2011-06-13 22:35:15 -04:00
Benjamin Otte
76f2aa737b docs: Add Since tag to GtkWidget::draw 2011-06-13 18:29:07 +02:00
Benjamin Otte
44245caae5 demos: Remove unused variable 2011-06-13 18:27:24 +02:00
Benjamin Otte
f4a6ef0d50 tests: Add a CSS test for color parsing errors
In [particular check for the fix in the last commit.
2011-06-13 15:01:52 +02:00
Benjamin Otte
9e2ebdee07 cssparser: Actually send an error in an error case
The error case was excess commas in rgb/rgba colors, such as
rgba(0,255,0,0,0.5)
2011-06-13 15:01:52 +02:00
Benjamin Otte
a471b4b198 themingengine: Improve handling of different colors
We don't want to have different colors cause seams, so we try very hard
to render them at the same time.
2011-06-13 15:01:52 +02:00
Benjamin Otte
407b3f2cde themingengine: Implement support for multiple border colors
Also use this support to implement inset and outset border styles
without cheats.
2011-06-13 15:01:52 +02:00
Benjamin Otte
3aa73bebea styleproperty: Add border-*-color style properties
And make border-color a shorthand
2011-06-13 15:01:52 +02:00
Benjamin Otte
016e0c1a3e reftests: Check that the default border color is the foreground color 2011-06-13 15:01:52 +02:00
Benjamin Otte
abc239f444 styleproperty: The default border color is the normal color 2011-06-13 15:01:52 +02:00
Benjamin Otte
ba7d1c2104 styleproperty: Make default_value() take a state
Because of this, resolve() needs to take a state, too. This is so that
we can have default values depend on other values (like border color).
2011-06-13 15:01:52 +02:00
Benjamin Otte
e0b1943c97 roundedbox: Fix border radius grow algorithm
When one radius gets to 0, the other should be set to 0, too. Otherwise
the paths constructed from it will not be correct.
2011-06-13 15:01:52 +02:00
Matthias Clasen
7cd471fb56 Bump version 2011-06-13 08:03:40 -04:00
Matthias Clasen
d9fa5b342b Forgotten file 2011-06-13 07:33:47 -04:00
Carlos Garnacho
d3274e8e06 xi2: Handle XIM modules that replace events
Fixes Bug 645993 - XIM has wierd behaviors. Some XIM modules
filter every key event, possibly replacing it with their own
one. These events usually have serial=0, so make
GdkDeviceManagerXI2 also listen on these.
2011-06-13 07:16:16 -04:00
Matthias Clasen
2ce9ff2d6a Remove broken font-family css test 2011-06-13 06:56:12 -04:00
Matthias Clasen
bb26d305e6 Update for 3.1.6 2011-06-13 00:16:55 -04:00
Ignacio Casal Quinteiro
cfb2a45f9a overlay: add initial version of gtkoverlay 2011-06-12 23:27:18 -04:00
Javier Jardón
f50da3babe configure.ac: Use aux directory to store autogenerated files 2011-06-13 03:52:09 +01:00
Daniel Drake
794a3706cd gtkdnd: Don't bind/unbind keycodes that couldn't be determined
At http://dev.laptop.org/ticket/10643 we are seeing that drag-and-drop
within the Sugar shell causes all of Sugar's custom keybindings to be
removed.

This is because gtkdnd tries to unbind XK_KP_Space, which (on my systems)
is resolved to NoSymbol by XKeycodeToKeysym(). NoSymbol has value 0,
the same as AnyKey, and XUngrabKey(AnyKey) is equivalent to unbinding
all possible keycodes.

Fix this by catching NoSymbol before binding/unbinding.

https://bugzilla.gnome.org/show_bug.cgi?id=652402
2011-06-12 21:44:00 -04:00
Matthias Clasen
36f6c6167b Revert "gtk/gtkmenuitem: gtk_misc_set_alignment replacing"
This reverts commit 49e62d2a5f.
It turns out that GtkAccelLabel is not quite ready for
widget align properties.
2011-06-12 21:36:37 -04:00
Javier Jardón
85747da972 tests: use GdkRGBA instead GdkColor 2011-06-13 00:24:53 +01:00
Javier Jardón
4a9bd917a0 gtk-demo/colorsel.c: Do not use GtkAlignment 2011-06-13 00:04:39 +01:00
Javier Jardón
04fa731e6b gtk.symbols: Add missing api 2011-06-12 23:00:14 +01:00
Benjamin Otte
287069ca3c default theme: Fix menuitem check/radio colors 2011-06-12 23:35:39 +02:00
Benjamin Otte
3712ec71d4 default theme: fix menuitem selections 2011-06-12 23:28:43 +02:00
Benjamin Otte
d7598aabe3 default theme: fix tooltip colors 2011-06-12 23:26:53 +02:00
Benjamin Otte
4f649e10fa themingengine: Add magic to draw inset/outset properly
Use a bunch of tricks to get inset/outset right with a small amount of
code. In particular, fix the hidden sides causing artifacts.

Included is a bunch of code comments explaining what we actually do.
2011-06-12 23:00:25 +02:00
Benjamin Otte
cd4c527451 themingengine: Reduce border to 0 on hidden sides
Fixes drawing of expanders.
2011-06-12 23:00:25 +02:00
Benjamin Otte
8b0bffc3a2 themingengine: Fix inset/outset drawing 2011-06-12 23:00:24 +02:00
Javier Jardón
7c0e18f8a6 gailtextcell: Fix typo 2011-06-12 21:46:18 +01:00
Ignacio Casal Quinteiro
391917063e textview: do not destroy the layout in unrealize
Now instead of invalidating when we create the layout we invalidate
when we realize the widget and we remove the invalidation when
unrealizing. It was pointless too destroying the layout in unrealize
as at the end what we just wanted was to remove the invalidation idles.
2011-06-12 17:54:07 +02:00
Benjamin Otte
deed7175ca roundedbox: Handle shrinking to zero
We need it for wide separators.
2011-06-12 03:42:29 +02:00
Cosimo Cecchi
61c253a132 themingengine: set the right coordinates for the rounded box rect 2011-06-11 13:32:15 -04:00
Matej Urbančič
8e945d04a8 Updated Slovenian translation 2011-06-11 17:44:59 +02:00
Matej Urbančič
0e1cc8a944 Updated Slovenian translation 2011-06-11 17:40:17 +02:00
Jorge González
9baabe7ca3 Updated Spanish translation 2011-06-11 11:34:19 +02:00
Benjamin Otte
3a1da7f09c styleproperty: Resolve NULL RGBAs to pink
.. instead of returning NULL and crashing.

Fixes no-colors reftest
2011-06-11 10:44:16 +02:00
Benjamin Otte
a536a50dbd reftests: Add reftest for unresolvable properties 2011-06-11 10:41:17 +02:00
Benjamin Otte
8861f6dbfb styleproperty: Fall back to default values, instead of recursing
Copy/paste error. The original commit message even explains this.
2011-06-11 10:38:23 +02:00
Benjamin Otte
7dbea94fd2 styleproperty: Add a default value func for border-image-width
This is necessary because we want to use NULL as the default value. But
the default value for borders is { 0, 0, 0, 0 } and not NULL.

Fixes border-image-gradient and border-image-repeat reftests.
2011-06-11 09:29:43 +02:00
Benjamin Otte
a1d19be950 reftests: Add a test for inset box-shadow
This test is copied from the CSS spec. The reference is very sensitive
to the rendering algorithm in use, because the rounded corners have
semi-transparent pixels. It might be necessary to update them in the
future.
2011-06-11 09:29:43 +02:00
Benjamin Otte
b196abe8be themingengine: Render inset box shadow on top of backgrounds 2011-06-11 09:29:43 +02:00
Benjamin Otte
590aadd056 styleproperty: Parse shadow options in any order
The CSS spec allows random ordering of various properties, so we should,
too.
2011-06-11 09:29:43 +02:00
Cosimo Cecchi
1539ade9d5 cssprovider: add a doc paragraph about box-shadow 2011-06-11 09:29:43 +02:00
Cosimo Cecchi
6b5b5cb305 styleproperty: register the box-shadow property 2011-06-11 09:29:43 +02:00
Cosimo Cecchi
4d986f7fb0 shadow: add _gtk_box_shadow_render()
This supports only inset box-shadow elements for now.
2011-06-11 09:29:43 +02:00
Benjamin Otte
40dfcfcbc4 themingengine: Draw border with GtkRoundedBox 2011-06-11 09:29:43 +02:00
Benjamin Otte
459278c5e1 themingengine: Use GtkRoundedBox for drawing backgrounds 2011-06-11 09:29:42 +02:00
Benjamin Otte
48814c8d1e themingengine: Do pattern merging smarter
Create an intermdiate surface and fill() with it later. Instead of doing
clip + paint twice.
2011-06-11 09:29:42 +02:00
Benjamin Otte
86719e1d35 gtk: Add GtkRoundedBox
CSS drawing operates on rounded boxes a lot, so it makes sense to split
them out instead of duplicating them everywhere.
2011-06-11 09:29:42 +02:00
Benjamin Otte
d8033c3796 themingengine: Get rid of extra variables
Now that we don't change the width/height anymore, we can keep using it
for scaling he background.
2011-06-11 09:29:42 +02:00
Benjamin Otte
117b50dd21 themingengine: remove unused variable 2011-06-11 09:29:42 +02:00
Benjamin Otte
281ce813fc reftests: Add background-area reftest
Checks the fix from last commit: background area is supposed to be the
border box.
2011-06-11 09:29:32 +02:00
Benjamin Otte
c56700ca30 themingengine: background applies to full border
The code was attempting to only apply it to half of the border. But
according to CSS, the background area by default is the full border box.
2011-06-11 02:08:28 +02:00
Benjamin Otte
06642cab56 themingengine: Remove unnecessary optimization
Code is likely as fast or faster without it, and this saves code.
2011-06-11 02:04:17 +02:00
Matthias Clasen
abca0f050e Update gtkimcontextsimpleseqs.h
This is using the updated compose-parse.py from the previous commit.
2011-06-10 18:36:06 -04:00
Matthias Clasen
0bbc2ed520 Update compose-parse.py
This update makes compose-parse.py work with Unicode 6.0 and make
it generate the new GDK_KEY_ defines. Patch by Ryo Hashimoto,
bug 651979.
2011-06-10 18:33:05 -04:00
Diego Celix
71dc365e8a gtktoolitemgroup: gtk_misc_set_alignment replacing
Replacing the function gtk_misc_set_alignment () with
gtk_widget_set_halign () and gtk_widget_set_valign () in
gtk/gtktoolitemgroup.c

https://bugzilla.gnome.org/show_bug.cgi?id=650762
2011-06-10 17:59:58 -04:00
Diego Celix
b16c973699 gtkprinteroptionwidget: gtk_misc_set_alignment
Replacing the function gtk_misc_set_alignment () with
gtk_widget_set_halign () and gtk_widget_set_valign () in
gtk/gtkprinteroptionwidget.c

https://bugzilla.gnome.org/show_bug.cgi?id=650762
2011-06-10 17:59:57 -04:00
Diego Celix
90e2fdca71 gtk/gtkfontsel: gtk_misc_set_alignment replacing
Replacing the function gtk_misc_set_alignment () with
gtk_widget_set_halign () and gtk_widget_set_valign () in
gtk/gtkfontsel.c

https://bugzilla.gnome.org/show_bug.cgi?id=650762
2011-06-10 17:59:56 -04:00
Diego Celix
c92600c00f gtk/gtkassistant: gtk_misc_set_alignment replacing
Replacing the function gtk_misc_set_alignment () with
gtk_widget_set_halign () and gtk_widget_set_valign () in
gtk/gtkassistant.c

https://bugzilla.gnome.org/show_bug.cgi?id=650762
2011-06-10 17:59:55 -04:00
Diego Celix
0a75ffd4a3 gtkprintunixdialog: gtk_misc_set_alignment replace
Replacing the function gtk_misc_set_alignment () with
gtk_widget_set_halign () and gtk_widget_set_valign () in
gtk/gtkprintunixdialog.c

https://bugzilla.gnome.org/show_bug.cgi?id=650762
2011-06-10 17:59:54 -04:00
Diego Celix
a06dfd6873 gtkprintbackend: gtk_misc_set_alignment replacing
Replacing the function gtk_misc_set_alignment () with
gtk_widget_set_halign () and gtk_widget_set_valign () in
gtk/gtkprintbackend.c

https://bugzilla.gnome.org/show_bug.cgi?id=650762
2011-06-10 17:59:53 -04:00
Diego Celix
eb54d933a8 gtkpagesetupunixdialog: gtk_misc_set_alignment
Replacing the function gtk_misc_set_alignment () with
gtk_widget_set_halign () and gtk_widget_set_valign () in
gtk/gtkpagesetupunixdialog.c

https://bugzilla.gnome.org/show_bug.cgi?id=650762
2011-06-10 17:59:52 -04:00
Diego Celix
8af988e744 gtkfilechooserdefault: gtk_misc_set_alignment
Replacing the function gtk_misc_set_alignment () with
gtk_widget_set_halign () and gtk_widget_set_valign () in
gtk/gtkfilechooserdefault.c

https://bugzilla.gnome.org/show_bug.cgi?id=650762
2011-06-10 17:59:51 -04:00
Diego Celix
df9d7cf9aa gtkcellrendereraccel: gtk_misc_set_alignment
Replacing the function gtk_misc_set_alignment () with
gtk_widget_set_halign () and gtk_widget_set_valign () in
gtk/gtkcellrendereraccel.c

https://bugzilla.gnome.org/show_bug.cgi?id=650762
2011-06-10 17:59:49 -04:00
Diego Celix
cc0be1f949 gtk/gtkmessagedialog: gtk_misc_set_alignment
Replacing the function gtk_misc_set_alignment () with
gtk_widget_set_halign () and gtk_widget_set_valign () in
gtk/gtkmessagedialog.c

https://bugzilla.gnome.org/show_bug.cgi?id=650762
2011-06-10 17:59:48 -04:00
Diego Celix
0924e4d668 gtk/gtkmountoperation: gtk_misc_set_alignment
Replacing the function gtk_misc_set_alignment () with
gtk_widget_set_halign () and gtk_widget_set_valign () in
gtk/gtkmountoperation.c

https://bugzilla.gnome.org/show_bug.cgi?id=650762
2011-06-10 17:59:47 -04:00
Diego Celix
cb03ea518c gtk/gtkradiomenuitem: gtk_misc_set_alignment
Replacing the function gtk_misc_set_alignment () with
gtk_widget_set_halign () and gtk_widget_set_valign () in
gtk/gtkradiomenuitem.c

https://bugzilla.gnome.org/show_bug.cgi?id=650762
2011-06-10 17:59:46 -04:00
Diego Celix
49e62d2a5f gtk/gtkmenuitem: gtk_misc_set_alignment replacing
Replacing the function gtk_misc_set_alignment () with
gtk_widget_set_halign () and gtk_widget_set_valign () in
gtk/gtkmenuitem.c

https://bugzilla.gnome.org/show_bug.cgi?id=650762
2011-06-10 17:59:45 -04:00
Matthias Clasen
1c8632c911 One more change 2011-06-10 17:42:14 -04:00
Matthias Clasen
2204405c9c Expand migration hints for h/v boxes 2011-06-10 17:40:16 -04:00
Marc-André Lureau
9bdcffd271 build: fix win32 configure checks
Notice the broken check for "os_win32" vs. "$os_win32".
Improve a bit the rest of autofoo stuff around it.

https://bugzilla.gnome.org/show_bug.cgi?id=652282
2011-06-10 20:13:12 +02:00
Benjamin Otte
7adfd8a0f5 reftests: Remove unused file from EXTRA_DIST 2011-06-10 16:26:39 +02:00
Benjamin Otte
0bfb663d0c cups: Fix unused variable warning when not using colord 2011-06-10 15:01:04 +02:00
Javier Jardón
bf0d8402f5 gtk: Use const instead G_CONST_RETURN 2011-06-10 13:07:54 +01:00
Javier Jardón
a8f5a8b919 docs: Do not use G_CONST_RETURN 2011-06-10 13:07:54 +01:00
Javier Jardón
7c688cb8a6 gdk: Use const instead G_CONST_RETURN 2011-06-10 13:07:54 +01:00
Richard Hughes
7a328b377c If --enable-colord or --disable-colord is not used when configuring, autodetect the presence of colord 2011-06-10 12:34:54 +01:00
Yaron Shahrabani
10ab6f3570 Updated Hebrew translation. 2011-06-10 12:57:26 +03:00
Javier Jardón
0ec4fa558f docs: Improve crossreferences
Use #GtkOrientable:orientation instead "orientation"
2011-06-10 10:56:35 +01:00
Murray Cumming
151bcc6dfa Box, etc: Improve docs after H* and V* deprecations.
Stop documenting the base class as just a base class for the
H and V specializations, copying the useful descriptions from
those H/V classes to the base class. Do not advise the use of
the H/V classes or refer to them unnecessarily.
2011-06-10 09:50:45 +02:00
Yaron Shahrabani
342754e8a2 Updated GLib Translations. 2011-06-10 08:17:10 +03:00
Matthias Clasen
53b586abcf Avoid underallocations in the custom paper dialog 2011-06-10 00:17:56 -04:00
Matthias Clasen
8771f2ce9c Don't rely on button allocations for invisible headers
Now that we are not allocating treeview column buttons anymore
with invisible headers, we can't rely on their allocations for
other things like cell area computations anymore. Use x-offset
and width of the column directly, instead.
2011-06-10 00:17:56 -04:00
Matthias Clasen
eeca20a800 Add API to get x position of treeview columns
Their width was already available.
2011-06-10 00:17:56 -04:00
Cosimo Cecchi
9e5d6544ba border-image: unpack the GtkGradient if there's one
So that it will eventually be resolved by the style property lookup
machinery.
2011-06-09 23:07:50 -04:00
Cosimo Cecchi
35fdce68e1 cellrendererpix: make the icon render properly again
pix_rect was not initialized anymore, so the gdk_rectangle_intersect()
call would always fail.
2011-06-09 22:59:06 -04:00
Matthias Clasen
a081485269 GtkTreeView: Don't short-circuit header-height calculation
The code was putting header_height at zero when there is
no model. That leads to temporary underallocation of header
buttons.
2011-06-09 21:40:08 -04:00
Matthias Clasen
1743e18c87 GtkDialog: avoid underallocations
GtkDialog changes its size depending on style properties. If
we only do this in response to ::style-updated, it happens during
the initial realization of the dialog and leads to the dialog
'growing' between when we determine the initial window size and
when we allocate it that size. So, do this beforehand.
2011-06-09 20:43:02 -04:00
Cosimo Cecchi
3d1407a01a border-image: add support for border-image-width too
It's useful to set a slice size != border-width, as backgrounds are
clipped to border-width too.

As slices can be half-transparent and overlap the background,
this would not fill the border box properly if we only use a single
property for specifying the width.

Also, this brings us even closer to CSS3.
2011-06-09 20:01:57 -04:00
Matthias Clasen
5fcf9ae09e Don't size-allocate invisible headers
We don't ignore their size requests when determining the
column width, so allocating them is bound to spew tons
of annoying underallocation warnings.
2011-06-09 18:55:19 -04:00
Cosimo Cecchi
1208f2bde0 shadow: render icon-shadow for spinners 2011-06-09 23:17:09 +02:00
Cosimo Cecchi
aa37e7323f entry: use the current state when rendering symbolic icons
Make sure the current state is picked up when rendering symbolic icons
too.
2011-06-09 23:17:09 +02:00
Cosimo Cecchi
8efa8a067e entry: use GTK_STYLE_CLASS_IMAGE when rendering the entry icon 2011-06-09 23:17:09 +02:00
Cosimo Cecchi
430f6ecbc3 stylecontext: add an "image" style class
For images such as icons in GtkEntry widgets.
2011-06-09 23:17:09 +02:00
Cosimo Cecchi
02e82d69b8 entry: use gtk_render_icon() 2011-06-09 23:17:09 +02:00
Cosimo Cecchi
0198662d79 cellrendererpix: use gtk_render_icon() 2011-06-09 23:17:09 +02:00
Cosimo Cecchi
e6a3257b55 image: use gtk_render_icon() 2011-06-09 23:17:09 +02:00
Cosimo Cecchi
514e77581a stylecontext: add gtk_render_icon() 2011-06-09 23:17:09 +02:00
Cosimo Cecchi
0cd810ff7c themingengine: use cairo image surfaces to render state effects
This makes the code cleaner and allows this to be re-used in a
pixbuf-less future.
2011-06-09 23:17:09 +02:00
Cosimo Cecchi
2446aef0ea themingengine: add gtk_theming_engine_render_icon()
Renders a pixbuf in the provided rectangle, applying effects such as
'icon-shadow'.
2011-06-09 23:17:09 +02:00
Cosimo Cecchi
b6b66803c0 shadow: add _gtk_icon_shadow_paint()
Paints a shadow of the current source, using the defined colors.
2011-06-09 23:17:09 +02:00
Cosimo Cecchi
ef78d5b730 styleproperties: add an 'icon-shadow' style property
It's a custom property with the same semantics of text-shadow, which
works on icons and icon-like UI elements, such as spinners, arrows and
separators.
2011-06-09 23:17:09 +02:00
Cosimo Cecchi
c935439a72 border-image: fix a horizontal/vertical index typo 2011-06-09 17:06:00 -04:00
Jorge González
2daba94825 Updated Spanish translation 2011-06-09 23:05:15 +02:00
Cosimo Cecchi
aa515e71d1 spinbutton: don't render an additional background below arrows
It's an entry, so it already has a background below, even when the entry
doesn't have a frame. Also, gtk_spin_button_draw_arrow() will render a
background and a frame in the arrow space anyway.
2011-06-09 15:06:19 -04:00
Cosimo Cecchi
4d8b5baf7e spinbutton: don't remove the entry style class while rendering arrows 2011-06-09 15:06:18 -04:00
Cosimo Cecchi
42d7487a6e border-image: don't try to unpack values from a NULL border-image
NULL is a valid value for border-image, so if it's NULL when unpacking,
don't try to access the struct fields, but just init the GValues for the
unpacked parameters.
2011-06-09 15:06:18 -04:00
Murray Cumming
fe7125e00c gtkcssprovider.h: Remove a trailing comma. 2011-06-09 20:36:14 +02:00
Richard Hughes
9bff51e538 Add optional colord support to the CUPS print module
This functionality adds a new 'Printer Profile' entry to the 'Color' page in the
UNIX print dialog if colord support is enabled.

This shows the user what color profile will be used for the settings they have
selected, and if no profile or the default profile is going to be used.

We are deliberately not allowing the user to _change_ the selected profile, as
the ICC profile is an implementation detail, and we should not change the other
print settings based on the characterization state.

The OpenICC group broadly recommend showing the profile that is used, so that
power users can be sure the correct profile is being used at the right time.

Normal users won't care, as they don't know how horrible the color match is
without profiling the printer and media.
2011-06-09 18:31:02 +01:00
Richard Hughes
16d0fca4f5 Add a 'value' GObject property to GtkPrinterOption so that it can be used with g_object_bind_property() 2011-06-09 15:50:34 +01:00
Kjartan Maraas
84b3d63838 Updated Norwegian bokmål translation 2011-06-09 13:02:39 +02:00
Benjamin Otte
77c102ae6e testtreeview: Don't use deprecated classes to make things interesting 2011-06-09 06:21:11 +02:00
Benjamin Otte
6114b06b3b testgtk: Fix deprecation 2011-06-09 06:20:42 +02:00
Benjamin Otte
2fd625d191 gail: Fix for new box handling 2011-06-09 06:18:10 +02:00
Benjamin Otte
acaaca4c76 gail: Fix scrollbar index_in_parent() implementation 2011-06-09 06:16:23 +02:00
Benjamin Otte
dee2e74736 gail: Remove unreachable code 2011-06-09 06:00:34 +02:00
Benjamin Otte
53e3f43217 reftests: ADd test for overlapping border-image slices 2011-06-09 05:51:55 +02:00
Benjamin Otte
88026c5073 themingengine: Don't modify pattern
Instead, scale/unscale the cairo_t.
2011-06-09 05:51:54 +02:00
Benjamin Otte
9affa9fc4d reftests: Add border-image-repeat
Tests that border-image-repeat is rendered correctly.
The reftest is done via toolbars stuffed into a GtkFixed using
background-image and images tuned for it.
2011-06-09 05:51:54 +02:00
Benjamin Otte
3ef4a3d46f border-image: Redo border-image rendering
The new code is smaller, less crashy and correct(er), but arguably more
complex. I'd have liked to make it simpler, but this border image
algorithm is complex...
2011-06-09 05:51:54 +02:00
Benjamin Otte
9606633d94 border-image-repeat: Fix order of hrepeat and vrepeat 2011-06-09 05:51:54 +02:00
Benjamin Otte
4f8283055e border-image: Don't use NEAREST filtering
use EXTEND_PAD instead to avoid borders.
2011-06-09 05:51:54 +02:00
Benjamin Otte
c0a6b1fb90 borderimage: No need to resolve
border-image is a shorthand, so it's unpacked unresolved and repacked
resolved.
2011-06-09 05:51:54 +02:00
Cosimo Cecchi
4e95e6ae21 border-image: move private types to gtkcsstypes.c 2011-06-09 05:51:54 +02:00
Cosimo Cecchi
052d6ef6da border-image: don't cache the cairo_surface_t in GtkBorderImage
It's not useful to cache these surfaces here, as the GtkBorderImage will
be always generated on the fly, being a shorthand property.

This also allows to get rid of the intermediate image surfaces for
rendering the slices; we now use cairo_surface_create_for_rectangle()
to proxy the slices from the source surface to the rendered area, which
should also yield better performance.
2011-06-09 05:51:54 +02:00
Cosimo Cecchi
a2a8d3e8f4 docs: expand the docs for border-image
https://bugzilla.gnome.org/show_bug.cgi?id=651194
2011-06-09 05:51:54 +02:00
Cosimo Cecchi
4cfccde6da border-image: ensure image->resolved is set when resolving the gradient
https://bugzilla.gnome.org/show_bug.cgi?id=651194
2011-06-09 05:51:54 +02:00
Cosimo Cecchi
83a383e4ba reftests: add reftests for border-image with gradient and url sources
https://bugzilla.gnome.org/show_bug.cgi?id=651194
2011-06-09 05:51:54 +02:00
Cosimo Cecchi
e3dd437b67 styleproperty: turn border-image into a shorthand property
It's composed by
- border-image-source: a cairo_pattern_t holding an image from file or a
  gradient
- border-image-slice: a GtkBorder containing the slice offsets to apply
  on the image
- border-image-repeat: a GtkRepeatType for the image

We deviate from pure CSS3 in the following ways:

* border-image-width is assumed to be always 1, i.e. always equal to
  what's specified by border-width. I don't think it's a particularly
  useful property to have, but we could add it later if needed.
* border-image-outset is absent, as we can't render outside of the
  allocation yet.

https://bugzilla.gnome.org/show_bug.cgi?id=651194
2011-06-09 05:51:54 +02:00
Cosimo Cecchi
9976530fe0 border-image: change Gtk9Slice to GtkBorderImage
It's a similar private type, which is much more powerful, and respects
the CSS rendering specification for border-image.

https://bugzilla.gnome.org/show_bug.cgi?id=651194
2011-06-09 05:51:53 +02:00
Benjamin Otte
e45230ad39 gdk: Make background changes queue a repaint
For client-side windows, we need to queue a repaint when the background
changes. For native windows, the windowing system does take care of it,
but client-side windows are our own, so we gotta do it manually.

https://bugzilla.gnome.org/show_bug.cgi?id=652102
2011-06-09 05:51:53 +02:00
Benjamin Otte
2a4c361831 gdk: Don't set backgrounds on input-only windows
It doesn't make sense to allow a background on input-only windows, so
instead of setting it and then never using it, we just don't ever set
it.
2011-06-09 05:51:53 +02:00
Benjamin Otte
4dbeac9275 toolpalette: Remove composite support
It seems to be very broken wrt input handling, causing random icons to
light up etc.
So until this is fixed, better remove composite support. It only removes
animations, so it's not a big loss for functionality.
2011-06-09 05:51:36 +02:00
Michal Suchanek
a64bc46c9e bgo#652045 - Initialize local_only in GtkFileChooserEntry
This has to be done also when we switch to the entry, otherwise completion for
non-local URIs won't work.
2011-06-08 16:24:48 -05:00
Marek Kašík
f737246a6a Trivial optimisation in GtkPrinterOptionWidget
Signed-off-by: Richard Hughes <richard@hughsie.com>
2011-06-08 18:23:11 +01:00
Richard Hughes
a8aeeffb19 Fix 93957459d8
It seems GtkHBox got dropped since my patch was reviewed. Oopsie.
2011-06-08 16:52:43 +01:00
Richard Hughes
93957459d8 Add a GtkPrinterOptionWidget type of INFO to just show informational text from the print backend
This fixes https://bugzilla.gnome.org/show_bug.cgi?id=652103
2011-06-08 16:38:23 +01:00
Javier Jardón
a1ce49c30e gtk: Clean some includes 2011-06-08 15:23:53 +01:00
Javier Jardón
17ae6b2e0d gtk[h/v]box: Recommend the use of GtkGrid. 2011-06-08 13:51:20 +01:00
Matthias Clasen
18c8fe52f0 Don't use GtkAlignments 2011-06-07 22:31:45 -04:00
Matthias Clasen
6176e23b30 Don't use a GtkAlignment 2011-06-07 22:31:34 -04:00
Matthias Clasen
15a4a41b72 GtkFileChooserEntry: don't use a GtkAlignment 2011-06-07 22:17:06 -04:00
Matthias Clasen
3e066e893e Use buttonboxes instead of hbuttonboxes 2011-06-07 22:03:19 -04:00
Matthias Clasen
7d3c5b2763 Drop unneeded includes: gtkalignment.h 2011-06-07 21:53:11 -04:00
Matthias Clasen
4cbbe565b9 Deprecate h/v variants of GtkBox
This has been discussed in bug 541009.
2011-06-07 21:44:24 -04:00
Matthias Clasen
12d3f26d66 Deprecate h/v variants of GtkScale
This has been discussed in bug 541009.
2011-06-07 21:43:32 -04:00
Matthias Clasen
214069caee Deprecate h/v subclasses of GtkPaned
This has been discussed in bug 541009.
2011-06-07 21:40:12 -04:00
Matthias Clasen
d41844c946 Deprecate h/v subclasses of GtkScrollbar
This has been discussed in bug 541009.
2011-06-07 21:38:15 -04:00
Matthias Clasen
00544af8c2 Deprecate h/v subclasses of GtkSeparator
This has been discussed in bug 541009.
2011-06-07 21:35:57 -04:00
Matthias Clasen
fdd324c855 Deprecate h/v buttonbox subclasses
This has been discussed in bug 541009.
2011-06-07 21:32:49 -04:00
Matthias Clasen
d8b3bfe778 Use separators instead of hseparators 2011-06-07 21:29:01 -04:00
Matthias Clasen
41952fd767 More include cleanups 2011-06-07 21:25:20 -04:00
Matthias Clasen
ab3c63cc3a More include cleanups 2011-06-07 21:23:07 -04:00
Matthias Clasen
817e878fb5 More include cleanups 2011-06-07 21:16:00 -04:00
Matthias Clasen
3bdc51164a More include cleanups 2011-06-07 21:12:00 -04:00
Matthias Clasen
b9a59c2ad6 Clean up more includes
Mainly removing unused h/v includes, but also adding some that
will be necessary as replacements.
2011-06-07 20:54:23 -04:00
Matthias Clasen
c134446230 Use boxes instead of hboxes 2011-06-07 19:56:27 -04:00
Matthias Clasen
f32d243bb0 Use boxes instead of hboxes 2011-06-07 19:56:12 -04:00
Matthias Clasen
8389161842 GtkStatusbar: derive from GtkBox, not GtkHBox 2011-06-07 19:55:46 -04:00
Matthias Clasen
ec4b566866 GtkPrinterOptionWidget: derive from GtkBox, not GtkHBox 2011-06-07 19:55:24 -04:00
Matthias Clasen
876cbb7517 GtkInfoBar: derive from GtkBox, not GtkHBox 2011-06-07 19:55:03 -04:00
Matthias Clasen
34085147e9 GtkFileChooserButton: derive from GtkBox, not GtkHBox 2011-06-07 19:54:40 -04:00
Matthias Clasen
29e6646292 docs: fix parameter name mismatches 2011-06-07 19:30:51 -04:00
Matthias Clasen
682296391f tests: Use boxes instead of vboxes 2011-06-07 18:39:15 -04:00
Matthias Clasen
611b0767c0 Use boxes instead of vboxes 2011-06-07 18:38:46 -04:00
Matthias Clasen
cdaaea7017 Use boxes instead of vboxes 2011-06-07 18:38:28 -04:00
Matthias Clasen
44686b63c3 Use boxes instead of vboxes 2011-06-07 18:38:01 -04:00
Matthias Clasen
453849acf3 Add a missing include 2011-06-07 18:37:36 -04:00
Matthias Clasen
5b5c8f23d9 GtkFileChooserDefault: derive from GtkBox, not GtkVBox 2011-06-07 18:36:57 -04:00
Matthias Clasen
88c6fc1d84 GtkFileChooserWidget: derive from GtkBox, not GtkVBox 2011-06-07 18:36:22 -04:00
Matthias Clasen
7c0d51dd5c GtkRecentChooserDefault: derive from GtkBox, not GtkVBox 2011-06-07 18:35:46 -04:00
Matthias Clasen
b1278b9ee2 GtkRecentChooserWidget: derive from GtkBox, not GtkVBox 2011-06-07 18:35:28 -04:00
Matthias Clasen
896540f56b GtkFontSelection: derive from GtkBox, not GtkVBox 2011-06-07 18:34:57 -04:00
Matthias Clasen
5df02faa5f GtkColorSel: derive from GtkBox, not GtkVBox 2011-06-07 18:34:34 -04:00
Matthias Clasen
8a5e1fe543 Don't include gtk.h here 2011-06-07 18:32:48 -04:00
Matthias Clasen
e7f88838f6 Remove an unneeded include 2011-06-07 18:32:24 -04:00
Matthias Clasen
e789a31cf2 GtkPageSetupUnixPrintDialog: remove an unneeded include 2011-06-07 13:16:58 -04:00
Matthias Clasen
310c0d440b GtkPrintUnixDialog: remove an unneeded include 2011-06-07 13:14:42 -04:00
Matthias Clasen
d2c682c9e9 Remove an unneeded include 2011-06-07 13:04:22 -04:00
Matthias Clasen
4962545ef3 GtkPathBar: don't use a GtkAlignment 2011-06-07 13:01:00 -04:00
Javier Jardón
02285b232c gail: Use GdkRGBA instead GdkColor 2011-06-07 17:42:24 +01:00
Matthias Clasen
c26b83a0ea GtkMountOperation: don't use a GtkAlignment 2011-06-07 12:41:10 -04:00
Javier Jardón
d87190f60f docs: Make "migrating to GtkStyleContext" a separate chapter 2011-06-07 17:02:49 +01:00
Matthias Clasen
d4224cd325 GtkGrid: Fix a size allocation problem
We need pay attention the the request mode when doing size allocation.
The code was using request mode for requisition, but orientation
for allocation.

Also add a reftest that exhibits the issue, courtesy of
Benjamin Otte.
2011-06-07 11:05:50 -04:00
Matthias Clasen
eb76287995 GtkAboutDialog: Don't use an alignment
Use align and margin widget properties instead.
2011-06-07 09:53:02 -04:00
Javier Jardón
15a914202d gail/tests: Use const instead G_CONST_RETURN 2011-06-07 14:28:45 +01:00
Javier Jardón
5e2b5680a4 gail: use const instead G_CONST_RETURN 2011-06-07 14:28:45 +01:00
Kjartan Maraas
515499d949 Updated Norwegian bokmål translation 2011-06-07 08:21:30 +02:00
Chun-wei Fan
d07907d2de Update Windows Resource template information 2011-06-07 11:16:57 +08:00
Matthias Clasen
2f7e13067e GtkUnixPrintDialog: Don't use GtkAlignment
It is going to be deprecated soon. Instead, use
widget align and margin properties.
2011-06-06 22:36:39 -04:00
Matthias Clasen
8224287d5c GtkCustomUnixPaperDialog: don't use a GtkAlignment
Those are going to be deprecated sometime soon.
Instead, use widget align and margin properties.
2011-06-06 22:31:31 -04:00
Bastien Nocera
7a0dc3c72d gdk: Update keysyms list from latest X.org headers
Fixed the touchpad on/off keybindings in gnome-settings-daemon.
https://bugzilla.gnome.org/show_bug.cgi?id=651706
2011-06-06 21:15:53 -04:00
Kazuki Iwamoto
74f57ee04d Avoid a crash in gtk_im_context_ime_reset
When GTK+ runs with inputim-ime.dll module, there is NULL
pointer reference. Because "context_ime->client_window" may
be NULL in gtk_im_context_ime_reset.

https://bugzilla.gnome.org/show_bug.cgi?id=644906
2011-06-06 19:33:23 -04:00
Cosimo Cecchi
3ef2e36637 lockbutton: ensure the lock symbolic icon is rendered 16x16px
https://bugzilla.gnome.org/show_bug.cgi?id=651734
2011-06-06 15:12:27 -04:00
Matthias Clasen
68fcede223 Hacky support for combo boxes
This extends the current hacks in gailmenuitem to not only
recognize menuitems with labels in them, but also menuitems
which contain a GtkCellView, since those are used by GtkComboBox
nowadays.

Some of the AtkText apis are not fully supported.

https://bugzilla.gnome.org/show_bug.cgi?id=650302
2011-06-06 13:55:48 -04:00
Vincent Untz
288df3d016 gtksearchenginetracker: Use non-case sensitive search for non-fts search
https://bugzilla.gnome.org/show_bug.cgi?id=642773
2011-06-06 16:39:33 +01:00
Javier Jardón
c5868f05db docs: building: Fix links to the location of tarballs 2011-06-06 14:30:47 +01:00
Javier Jardón
955dbdc042 docs: building: Update links to the location of tarballs
Mention ftp.gtk.org for glib and use download.gnome.org instead
ftp.gnome.org
2011-06-06 14:27:47 +01:00
Javier Jardón
e8f36232de docs: building: Update links to the location of tarballs
Nowadays the tarballs are uploaded to ftp.gnome.org instead ftp.gtk.org
2011-06-06 13:50:33 +01:00
Javier Jardón
15206d85f5 docs: dependencies: Split the list of dependencies
External and non-external
2011-06-06 13:09:52 +01:00
Javier Jardón
1739dab356 docs:building: re-order list of dependencies
Libraries that GTK+ depends on maintained by the GTK+ team first
2011-06-06 12:35:42 +01:00
Javier Jardón
007b718688 docs: building: gz is not used anymore, but xz instead 2011-06-06 12:27:17 +01:00
Javier Jardón
7b0d77def5 gtkcontainer: Move private functions to private header
https://bugzilla.gnome.org/show_bug.cgi?id=651707
2011-06-06 12:10:29 +01:00
Javier Jardón
23dda3ea8e gtkbutton: Move private functions to private header
https://bugzilla.gnome.org/show_bug.cgi?id=651707
2011-06-06 11:58:07 +01:00
Matej Urbančič
7d79486083 Updated Slovenian translation 2011-06-05 22:39:59 +02:00
Benjamin Otte
c6285387e3 widget: Update the font at the right place
Doing it unconditionally is not useful when the subclasses actually
using them can only ever do it in the style_updated signal. So do it in
the style_updated handler instead.
2011-06-04 21:18:09 +02:00
Benjamin Otte
0ba14bb256 paned: Properly hide panes that were set to invisible
Gets rid of random windows when hiding the Totem statusbar.
2011-06-04 21:18:09 +02:00
Javier Jardón
fdf979dce2 gtkwidget: Move private functions to private header
https://bugzilla.gnome.org/show_bug.cgi?id=651707
2011-06-04 14:00:55 +02:00
Matej Urbančič
2144976341 Updated Slovenian translation 2011-06-03 22:17:38 +02:00
Klemen Košir
68e1056bb0 Updated Slovenian translation 2011-06-03 22:15:46 +02:00
Juan Pablo Ugarte
f430a76f10 Fixed bug #576492 "GtkBuilder does not respect G_PARAM_CONSTRUCT properties"
Added G_PARAM_CONSTRUCT flag in gtk_builder_get_parameters() checks as suggested by Johan Dahlin.
2011-06-03 14:38:59 -03:00
Matthias Clasen
6cee81c7b8 gail: Add back get_name for menu items
This was lost when GailItem was nuked. Not having it is leading
to problems, even though randomly poking strings out of your children
seems to be a less than perfect approach to naming...
2011-06-02 23:26:09 -04:00
Javier Jardón
32ef28bc85 Replace gtk_misc_set_padding() with GtkWidget:margin properties
https://bugzilla.gnome.org/show_bug.cgi?id=651605
2011-06-02 18:49:54 +02:00
Javier Jardón
31f53dd8d4 gtkaccellabel: Do not use GET_PRIV macro 2011-06-02 15:10:49 +02:00
Javier Jardón
b8b54cdf3d gtkaccelgroup.c: Do not use GET_PRIV macro 2011-06-02 15:10:49 +02:00
Matthias Clasen
cfffa32d4b gtk-demo: Add an app chooser button demo
Add a 'Mail' app chooser to the 'Pickers' example.
2011-06-01 21:44:22 -04:00
Matthias Clasen
bfa5d367b4 GtkCustomUnixPaperDialog: use an inline toolbar
This makes the dialog more similar to similar patterns,
e.g. in the file chooser.
2011-06-01 21:36:50 -04:00
Benjamin Otte
2e6bb2a0c9 Revert "css: Make font property a shorthand"
The hack in gtk_style_context_get_font() was causing segfaults in
combobox code. This is not acceptable and I'm not awake enough to fix
it, so just reverting until it's fixed sanely is easiest.

This reverts commit cf6bfbdb17.
2011-06-02 02:31:44 +02:00
Benjamin Otte
a659143d55 docs: There is no font-name style property
It's "font"
2011-06-02 02:03:52 +02:00
Benjamin Otte
1845849596 styleproperty: Move resolving code
Also, resolving now always succeeds - if it doesn't we fall back to the
default value right here, instead of later.
2011-06-02 02:03:52 +02:00
Benjamin Otte
cc3afc7c0f Revert "API: Add API to set style properties to be inherit"
Inheritance is now done using style property flags, so thereis no ned
anymore to clobber the pspec flags namespace.
Also, there is no need to expose this functionality in the public API
without exposing more of the styleproperty API.

This essentially reverts commit 9bfd3d2eec.
2011-06-02 02:03:52 +02:00
Benjamin Otte
9f0e993b60 styleproperty: Use the new flags for inheritance
Instead of gtk_style_param_set_inherit()
2011-06-02 02:03:52 +02:00
Benjamin Otte
4feddc6190 styleproperty: Add flags
This allows to set a bunch of specific features, like inheritance in
here, without having to molest the psec.
2011-06-02 02:03:52 +02:00
Benjamin Otte
d59081310b styleproperties: Rename enum value
I want to use that same enum value elsewhere.
2011-06-02 02:03:52 +02:00
Benjamin Otte
fd4ffbb6da styleproperty: Add _gtk_style_property_is_inherit()
And use it instead of gtk_style_param_get_inherit()
2011-06-02 02:03:52 +02:00
Benjamin Otte
abeaad6166 stylecontext: Implement the color getters using the regular API
Has two benefits:
1) Less code
2) I can refactor things
2011-06-02 02:03:52 +02:00
Benjamin Otte
8f6efd00e7 themingengine: Improve junction handling code
As junctions just modify the border radius and we now have a per-corner
border-radius, we can just set the border-radius to 0 for those corners
and get the same effect.
2011-06-02 02:03:52 +02:00
Benjamin Otte
cf6bfbdb17 css: Make font property a shorthand
... and implement the CSS font properties:
- font-size
- font-style
- font-family
- font-weight
- font-variant
2011-06-02 02:03:52 +02:00
Benjamin Otte
8d77fcb2d5 styleproperty: Factor out the string print function
We print strings in lots of places.
2011-06-02 02:03:52 +02:00
Benjamin Otte
b5544f5514 tests: Add tests for font-family 2011-06-02 02:03:52 +02:00
Benjamin Otte
66396d2bab styleproperty: Move default value setting to styleproperty.c 2011-06-02 02:03:52 +02:00
Benjamin Otte
914654901c styleproperties: use property, not pspec as key
This allows calling functions on the style property from more places.
2011-06-02 02:03:52 +02:00
Benjamin Otte
bda86b5dd3 tests: Add a test for border-radius handling 2011-06-02 02:03:52 +02:00
Benjamin Otte
0aa07c6fd6 cssprovider: Remove colors when resetting 2011-06-02 02:03:52 +02:00
Benjamin Otte
a105edbf78 tests: Add a cute demo and test app for the new box css
It contains a live editor for CSS, that thing finds lots of bugs...
2011-06-02 02:03:51 +02:00
Benjamin Otte
2bc0fca209 box: Add RTL support for sibling paths
We want the reverse path when the box is right-to-left.
2011-06-02 02:03:51 +02:00
Benjamin Otte
bdb8c64dd0 reftests: Add a reftest setting all colors to "none" 2011-06-02 02:03:51 +02:00
Benjamin Otte
be71ea611b tests: Add CSS test for the last two bugs
And it's a 1-byte file, too!
2011-06-02 02:03:51 +02:00
Benjamin Otte
b1aa59d385 css: Don't infloop when resyncing over a slash 2011-06-02 02:03:51 +02:00
Benjamin Otte
beccec296b css: We want to unescape backslashes, not slashes 2011-06-02 02:03:51 +02:00
Benjamin Otte
940cdb4a7f stylecontext: Don't crash when colors are "none"
Instead, use their default value (pink).
2011-06-02 02:03:51 +02:00
Benjamin Otte
0d69d9558e css: Match pseudo-classes for siblings 2011-06-02 02:03:51 +02:00
Benjamin Otte
cd838480eb box: Add support for siblings in widget paths of box children 2011-06-02 02:03:51 +02:00
Benjamin Otte
bc9c43c1cb box: Only emit pack-type notify if the pack type really changed
This is not very useful in itself, but the code reorg will be useful
once we do style invalidation.
2011-06-02 02:03:51 +02:00
Benjamin Otte
79de8e4d08 API: Add support for siblings to widget paths 2011-06-02 02:03:51 +02:00
Benjamin Otte
b669efa1a3 docs: Fix typo 2011-06-02 02:03:51 +02:00
Benjamin Otte
67fe600b2e widgetpath: Factor out the element copy function
I'll need that function soon.
2011-06-02 02:03:51 +02:00
Benjamin Otte
f0e5b57699 widgetpath: Use ref/unref in boxed function
This way we avoid lots of copying when using widget paths as properties.

Keeping this as a separate patch so bugs where people were modifying a
structure they shouldn't are easily visible.
2011-06-02 02:03:51 +02:00
Benjamin Otte
03eb4c38c9 widgetpath: Make structure refcounted
I want to use widget paths in a way that make a lot more sense with a
refcounted structure. See the following patches.
2011-06-02 02:03:51 +02:00
Benjamin Otte
91602cca6e themingengine: Add support for the border-radii 2011-06-02 02:03:51 +02:00
Benjamin Otte
90ff426396 css: Add all border-radius properties
Implement all border-radisu properties as specified by
http://www.w3.org/TR/css3-background/#the-border-radius
The end goal here is to get joined buttons to really look joined.
2011-06-02 02:03:51 +02:00
Benjamin Otte
812b32e9e5 styleproperty: Add a helper function for printing doubles
We will want to print doubles more often, so add a little helper
function for it. We cannot use printf() here, because we want English
locale output.
2011-06-02 02:03:51 +02:00
Benjamin Otte
97a07a79f3 styleproperty: Make keybindings use custom parse/print functions
We don't want to use it for GPtrArray.
2011-06-02 02:03:50 +02:00
Benjamin Otte
d14fbf3254 styleproperty: Allow passing in a parse func and a print func
It's not used yet, but it's now possible to specify a custom read or
write func.
2011-06-02 02:03:50 +02:00
Benjamin Otte
715674c45b styleproperty: Rename ParseFunc and PrintFunc typedefs
Rename them to GtkStyleParseFunc and GtkStylePrintFunc, so we can export
them.
2011-06-02 02:03:50 +02:00
Benjamin Otte
d0e1e2b103 css: Move property parsing into styleproperty file
Just shuffles code around for parsing properties.
2011-06-02 02:03:50 +02:00
Benjamin Otte
5a42464547 css: Rename function to _gtk_style_property_parse_value()
... and take an optional style property as argument. This way, we can
allow custom parse functions for properties. The style property needs to
be optional so that we can use it for widget style properties, too.
2011-06-02 02:03:50 +02:00
Benjamin Otte
35488f5846 css: Rename struct variable
I want to add parse_func as something different soon.
2011-06-02 02:03:50 +02:00
Benjamin Otte
3e7f74c456 styleproperty: Change _css_value_to_string()
Name it _gtk_style_property_print_value() and actually pass it the style
property. This way, we can later change it to use custom print functions
for different style properties.
2011-06-02 02:03:50 +02:00
Benjamin Otte
02a9cb5bc0 css: Change to_string() to print()
It's preferrable to print to an existing GString instead of returning a
char* everywhere that needs to be freed later.
2011-06-02 02:03:50 +02:00
Benjamin Otte
43cca78a98 reftests: Test new pseudo-class support in GtkBox 2011-06-02 02:03:50 +02:00
Benjamin Otte
a6daba5e78 API: Change semantics of gtk_container_get_child_path()
Include the child widget path in the returned path now. This allows
customizing the path of the current widgets - like adding flags to child
widgets (and maybe siblings in the future).
2011-06-02 02:03:50 +02:00
Benjamin Otte
b0616c8225 API: Add gtk_widget_path_append_for_widget()
Includes a bunch of header shuffling so we can use GtkWidget* in
gtkwidgetpath.h
2011-06-02 02:03:50 +02:00
Matthias Clasen
60081644ae Silence a theme parser error 2011-06-01 18:40:11 -04:00
Benjamin Otte
352569298a notebook: Implement height_for_width and width_for_height getters 2011-06-02 00:07:25 +02:00
Benjamin Otte
4d78e9c8af notebook: Rewrite size request function for wfh 2011-06-02 00:07:25 +02:00
Benjamin Otte
d7519e6ca2 notebook: Split out tabs size computation into its own function 2011-06-02 00:07:25 +02:00
Benjamin Otte
edd2f24b6e notebook: Compute tab width in a simpler way
This code should be more obvious: The check only needs to check for
scrollable widgets, and only needs to compare to tab_width.

As a side note, for vis_pages == 1, tab_width will be smaller than
tab_max + stuff, so this code will not behave differently.
2011-06-01 21:57:45 +02:00
Benjamin Otte
86aefc2c31 notebook: Remove uneeded function declaration 2011-06-01 21:45:21 +02:00
Benjamin Otte
975f735fb7 notebook: Include arrow size in tab size computation
We don't want tabs to resize when a 2nd page is added, just because the
scroll arrows are now visible. And we do want the arrow size to be
included.

Note: Previosuly this code was never run, as the check
  requisition->width < tab_width
was only run when tab_width wasn't computed, so was still equal to 0
(same for the height). So what this patch essentially does it add the
functionality of the if switch.
2011-06-01 17:46:22 +02:00
Benjamin Otte
2108e42306 tests: Make variable const to silence gcc 2011-06-01 16:52:34 +02:00
Javier Jardón
37bade27f5 configure.ac: Use AS_HELP_STRING instead deprecated AC_HELP_STRING 2011-06-01 13:43:18 +02:00
Matthias Clasen
1371a86fb1 GtkLabel: Make selection behave more similar to GtkEntry
For shift-clicks inside the selection, shrink the selection.
https://bugzilla.gnome.org/show_bug.cgi?id=353712
2011-06-01 01:08:13 -04:00
Matthias Clasen
4cd9009c57 Trivial NULL vs 0 confusion 2011-06-01 00:05:06 -04:00
Matthias Clasen
c56150ea5b Fix an example 2011-05-31 23:50:13 -04:00
Matthias Clasen
2833cc2327 Change GtkTreePath to grow exponentially
To avoid quadratic behaviour when building up
paths by repeated appending indices. Bug 634491.
2011-05-31 22:10:58 -04:00
Matthias Clasen
906292541a Add tests for GtkTreePath 2011-05-31 22:10:40 -04:00
Matthias Clasen
1c261fe2ae GtkSearchEngineTracker: avoid an unused variable warning 2011-05-31 21:26:40 -04:00
Matthias Clasen
949125b56b Make tracker search engine less verbose
Patch by Vincent Untz,
https://bugzilla.gnome.org/show_bug.cgi?id=642768
2011-05-31 20:50:42 -04:00
Matthias Clasen
0b9cd78017 Add annotations to gtk_css_provider_load_from_data
https://bugzilla.gnome.org/show_bug.cgi?id=646859
2011-05-31 20:37:43 -04:00
Matthias Clasen
5abadc6d95 GtkIconTheme: a small optimization
John Lindgren points out in bug 650202 that using judicious
use of g_key_file_has_key() can save some cycles in application
startup.
2011-05-31 20:29:53 -04:00
Matthias Clasen
0705474be6 GtkEntry: don't forget to disconnect idles
As pointed out by John Lindgren in bug 650114, GtkEntry forgets
to disconnect an idle source when the completion is set to NULL.
2011-05-31 20:11:28 -04:00
Alexander Saprykin
8d9f413c9b gtkeditable.c: Remove unused variable in example code
https://bugzilla.gnome.org/show_bug.cgi?id=650167
2011-05-31 20:09:58 -04:00
Matthias Clasen
7ef362ec67 GtkEntryCompletion: add a sanity check
Patch by John Lindgren,
https://bugzilla.gnome.org/show_bug.cgi?id=650110
2011-05-31 20:07:14 -04:00
Diego Celix
7839c27e13 gtk/gtkcolorsel: gtk_misc_set_alignment replacing
Replacing the function gtk_misc_set_alignment () with
gtk_widget_set_halign () and gtk_widget_set_valign () in
gtk/gtkcolorsel.c

https://bugzilla.gnome.org/show_bug.cgi?id=650762
2011-05-31 20:02:43 -04:00
Diego Celix
95fd3d708d gtk/gtknotebook: gtk_misc_set_alignment replacing
Replacing the function gtk_misc_set_alignment () with
gtk_widget_set_halign () and gtk_widget_set_valign () in
gtk/gtknotebook.c

https://bugzilla.gnome.org/show_bug.cgi?id=650762
2011-05-31 20:02:42 -04:00
Diego Celix
d291709ee7 gtkcustompaperunixdialog: gtk_misc_set_alignment
Replacing the function gtk_misc_set_alignment () with
gtk_widget_set_halign () and gtk_widget_set_valign () in
gtk/gtkcustompaperunixdialog.c

https://bugzilla.gnome.org/show_bug.cgi?id=650762
2011-05-31 20:02:41 -04:00
Diego Celix
ee18c5fef3 gtk/gtkfilechooserbutton: gtk_misc_set_alignment
Replacing the function gtk_misc_set_alignment () with
gtk_widget_set_halign () and gtk_widget_set_valign () in
gtk/gtkfilechooserbutton.c

https://bugzilla.gnome.org/show_bug.cgi?id=650762
2011-05-31 20:02:39 -04:00
Matthias Clasen
ab6e3366bc GtkAppChooser: improve docs
Add a cross-reference to GContentType.
https://bugzilla.gnome.org/show_bug.cgi?id=650012
2011-05-31 20:00:50 -04:00
Matthias Clasen
80a7e21e6a Make cross-references to gio docs work 2011-05-31 20:00:11 -04:00
Matthias Clasen
8143ce69eb GtkApplication: Add window-added/-removed signals
This is useful to let unrelated parts of an application (or
plugins) learn about the windows of an application. Based
on a patch by Matt Barnes,
https://bugzilla.gnome.org/show_bug.cgi?id=641087
2011-05-31 19:12:13 -04:00
Matthias Clasen
75390b2d60 Sort GtkApplication windows by most-recently-focused
Based on a patch by Matt Barnes,
https://bugzilla.gnome.org/show_bug.cgi?id=624539
2011-05-31 18:28:55 -04:00
Cosimo Cecchi
5b4932adaa gtk-demo: don't use a non-existent icon name 2011-05-31 17:54:24 -04:00
Javier Jardón
fb9e4c2c37 all: avoid boxed structs copying where possible (and 2)
Use the GtkStyleContext accessors for boxed properties where possible,
to reduce allocations.
2011-05-31 19:18:11 +02:00
Javier Jardón
e5c7daa828 tests: avoid boxed structs copying where possible
Use the GtkStyleContext accessors for boxed properties where possible,
to reduce allocations.
2011-05-31 19:12:24 +02:00
Carlos Garnacho
20433efbfa gtkcssprovider: Free shorthand border GValues in the right place
The call to gtk_border_free() within unpack_border() felt completely
in the wrong place, as the border actually pertains to the GValue
being unpacked. Plus, the GValue itself was also being leaked.
2011-05-30 19:29:22 +02:00
Carlos Garnacho
2c8e01dc80 gtkcssprovider: plug several leaks
In finalize(), clear all rulesets.
In parse_declaration(), Free the GValue under unhandled error situations.
In gtk_css_provider_load_internal(), Do not leak the file contents.
2011-05-30 19:26:28 +02:00
Carlos Garnacho
de4ca3ae13 gtkstyleproperty: Plug two leaks
In rgba_value_parse(), unref the symbolic color once we've resolved it.
In gradient_value_parse(), take the GtkGradient so we leave no dangling
references.
2011-05-30 19:21:42 +02:00
Carlos Garnacho
b68172b2c6 gtkstyleproperties: zero GValue out before using G_VALUE_COLLECT_INIT()
Fixes invalid reads in valgrind
2011-05-30 19:18:41 +02:00
Carlos Garnacho
747dc65c2c gtkcssprovider: Use g_slice_dup() to copy GValues around
GValues stored in GtkCssRulesets are gslice managed, so don't
g_memdup() GValues from shorthand properties. This fixes
memory corruptions when reloading contents in a GtkCssProvider.
2011-05-30 19:13:36 +02:00
Carles Ferrando
7a730ae213 [l10n]Updated Catalan (Valencian) translation 2011-05-29 14:10:00 +02:00
Carles Ferrando
0ce123c7c3 [l10n]Updated Catalan (Valencian) translation 2011-05-29 14:09:36 +02:00
Kristjan SCHMIDT
4216780ddd Updated Esperanto translation 2011-05-28 14:32:09 +02:00
Benjamin Otte
3500063bc1 liststore: Replace macro with an inline function
Also remove a duplicate check in gtk_list_store_iter_is_valid().

gcc was complaining about "comparison always true" when using the macro.
2011-05-27 16:11:10 +02:00
Benjamin Otte
0b653abcd4 styleproperties: Remove unused priv variables 2011-05-27 16:11:10 +02:00
Benjamin Otte
c5af8c7e3a treeview: Remove unused variables
... and all the code doing complex computations to assign values to
them.
2011-05-27 16:11:10 +02:00
Benjamin Otte
c1b2cbcf50 button: Remove unused variables 2011-05-27 16:11:10 +02:00
Benjamin Otte
d46deb35b2 docs: Remove unused variables in shooter example 2011-05-27 16:11:09 +02:00
Benjamin Otte
b3ec31f8b6 gtk-demo: Don't store anchor in an unused variable 2011-05-27 16:11:09 +02:00
Benjamin Otte
f6ee34c8b1 gtk-demo: Remove unused variable for text tags 2011-05-27 16:11:09 +02:00
Benjamin Otte
2881930e68 tests: Remove unused variables 2011-05-27 16:11:09 +02:00
Benjamin Otte
8c4653c4f2 tests: Make forcing of class registers work without gcc warnings 2011-05-27 16:11:09 +02:00
Benjamin Otte
d1a8d73871 css: Constify path argument to _css_selector_matches()
It should have been const all the time, but I assumed widgetpath code
wasn't properly const. PEBKAC.
2011-05-27 16:11:09 +02:00
Benjamin Otte
f4b7b287b9 widgetpath: Make includes absolute
Just like everywhere else
2011-05-27 16:11:09 +02:00
Benjamin Otte
f6ffd6df8a menuitem: Remove unused variable
Seriously, can't people compile with -Werror? Broke with
5f2ef59d69
2011-05-27 16:11:09 +02:00
Benjamin Otte
7b94a6ff2f styleproperty: Fix memleak in unpacking code 2011-05-27 16:11:09 +02:00
Benjamin Otte
f4e730e718 menuitem: Fix copy/paste error
Thanks to Kalev Lember for noticing this one.
2011-05-27 16:11:09 +02:00
Carlos Garnacho
e89d6b8741 configure: Check for XGetEventData()
This is a call only available in recent libX11, only the XI2 code
depends on this within GDK, but XI2 implies having GenericEvents
available too.
2011-05-27 11:53:26 +02:00
Carlos Garnacho
3285605c54 gdk: do not fallback to event->xany.window in GdkEventTranslator
This is already done in gdk_event_source_get_filter_window(), and
could lead to wrong event assignment if an event translator happens
to return a window for an event it doesn't handle.
2011-05-27 11:53:04 +02:00
Matthias Clasen
2c192cf998 Cut deadwood
The old tutorial examples haven't been built in years, and are
not useful to keep around in git unless somebody does the work
to integrate them into the 'Getting started' section of the
current docs.
2011-05-26 13:15:40 -04:00
Florian Müllner
76278811b6 configure: Fix build of pixbuf-demo 2011-05-26 15:03:21 +02:00
Matthias Clasen
cf86c7c9bb Move demos around
The pixbuf-demo gets its own subdirectory, the other small
tests move from demos/ to tests/.
2011-05-26 00:32:31 -04:00
Matthias Clasen
6499d89a6e And actually delete it 2011-05-26 00:21:54 -04:00
Matthias Clasen
5a6bfa2674 Remove no-longer-needed pixbuf_init hack
Since gdk-pixbuf is now a separate project again, we no
longer need to locate it inside our source tree.
2011-05-26 00:20:59 -04:00
Matthias Clasen
7f6e51ba2f Remove an incomplete, dead copy of testgtk 2011-05-26 00:08:43 -04:00
Matthias Clasen
9fd0458f1c Simplify GtkLockButton
Now it is actually just a button, which makes things simpler
and is closer to what the designers want.
2011-05-25 20:19:08 -04:00
Benjamin Otte
5f2ef59d69 menuitem: Position submenus properly
Now that we can actually query the menu's size, don't query the
preferred minimum size and hope it's correct, but use its actual size.
2011-05-25 04:49:12 +02:00
Benjamin Otte
067dc19177 menu: Realize window before positioning
We want the menu realized so we know the size it's allocating to itself.
And we need that size to position the menu properly.
This is best visible on right-to-left.
2011-05-25 04:48:20 +02:00
Benjamin Otte
8cfcb2c123 paned: More fixes to keep windows in sync with widgets
Fixes sidebar in evince not showing up. This was caused by the
visiblility of the widget changing and the paned not fixing its child
window's visibility accordingly.
2011-05-25 04:27:15 +02:00
Kjell Ahlstedt
2ebe1ef6f2 bgo#642929 - Don't infinite-loop in GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER
If the user pressed Enter to confirm the file chooser while the filename entry
was empty, then gtk_file_chooser_default_should_respond() would go back and forth
between the cases for handling the filename entry and the file list.
2011-05-23 15:02:00 -05:00
Benjamin Otte
a21042c156 tests: Add simple CSS test for widget style properties 2011-05-23 15:56:09 +02:00
Benjamin Otte
7de5a4e08d cssprovider: Don't convert widget style properties to CSS
They are still CSS, so converting them is wrong.
2011-05-23 15:56:09 +02:00
Benjamin Otte
7836df29cb cssprovider: Use right hash table when printing
If the CSS provider had widget style properties, printing them would
crash since 82b340f6f0
2011-05-23 15:56:09 +02:00
Benjamin Otte
97a8ff80cc window: Only draw resize grip if its window exists
Don't rely on priv->resize_grip_visible as the code comment in the
variable declaration indicates.
This fixes warnings with GtkPlug, which can cause resize_grip_visible to
be TRUE but grid_window to be NULL - running tests/teststatusicon
reproduces this.

This broke with 7ef113ce56
2011-05-23 15:56:09 +02:00
Matthias Clasen
f30efa7759 Remove unused function attributes from symbol files 2011-05-22 23:39:48 -04:00
Kristian Rietveld
cd3896e10e quartz: actually register gdk_quartz_display_dispose 2011-05-22 12:29:37 +02:00
Kristian Rietveld
dfff35423f quartz: fix a typo 2011-05-22 12:27:38 +02:00
Benjamin Otte
4c6721d096 cssparser: Fix typo where we used "uint" for a type
Interestingly this works for gcc, but breaks on MSVC.
2011-05-22 06:07:45 +02:00
Benjamin Otte
21236cf270 style: Make margin a shorthand
... and add the real properties:
- margin-top
- margin-left
- margin-bottom
- margin-right
2011-05-22 05:56:12 +02:00
Benjamin Otte
a35aa96149 style: Make padding a shorthand
... and add the real properties:
- padding-top
- padding-left
- padding-bottom
- padding-right
2011-05-22 05:56:12 +02:00
Benjamin Otte
0c7e5a51f3 reftests: sort EXTRA_DIST in Makefile 2011-05-22 05:56:12 +02:00
Benjamin Otte
4d92835997 reftests: Add a reftest to check shorthands do work
Checks shorthands are properly unpacked in the CSS and that they indeed
set all relevant properties. Or at least border-width does.
2011-05-22 05:56:12 +02:00
Benjamin Otte
ef51b5be76 reftests: Add label-shadows test
Tests shadows work properly for rotated labels
2011-05-22 05:56:12 +02:00
Benjamin Otte
962ecc6fa5 shadow: Redo shadow implementation for rotations
The shadows went bonkers when the labels were rotated
2011-05-22 05:56:12 +02:00
Benjamin Otte
ec34c4bd83 themingeninge: Handle translations properly
We want to keep the location of where to render, but transform th
context by the pango transform.
2011-05-22 05:56:12 +02:00
Benjamin Otte
03fbb1f34f label: Account for y-translation when rotating 2011-05-22 05:56:11 +02:00
Benjamin Otte
bd610582b8 tests: Add parser test for shorthands 2011-05-22 05:56:11 +02:00
Benjamin Otte
f5c7cefcca style: Convert border-width to a shorthand
Add the corresponding properties it refers to, too:
- border-top-width
- border-left-width
- border-bottom-width
- border-right-width
2011-05-22 05:56:11 +02:00
Benjamin Otte
42a4bd1c5b style: Add support for shorthand properties
Shorthand properties are basically the same a in CSS. For storage in
style properties or the CSS provider, they are unpacked into the real
values, so it is possible to partially override them.

No properties are yet converted to the new world yet, this is just the
code for supporting them.
2011-05-22 01:25:17 +02:00
Benjamin Otte
70e654f1a5 stylepropertis: Use set_by_property() in set_valist()
... instead of duplicating code. This causes an extra g_value_copy().
If that turns out to be a performance issue, we can invent something
that handles this (like passing a gboolean take_value).

The reason for this duplication deletion is that we want to complicate
the setting code to handle shorthands by unpacking them and storing the
separate values.
2011-05-22 01:25:16 +02:00
Benjamin Otte
73c39f5b16 styleproperties: Add _gtk_style_properties_set_property_by_property()
... as a replacement for _gtk_style_properties_set_property_by_pspec().
We'll need that to handle shorthands.
2011-05-22 01:25:16 +02:00
Benjamin Otte
b67ae42ecd styleproperties: Use peek_property() in get_valist() 2011-05-22 01:23:43 +02:00
Benjamin Otte
0a368fe622 styleproperties: Validate values when setting them
Note that validation is not necessary when resolving, because all values
are valid for those cases.
2011-05-22 01:23:36 +02:00
Benjamin Otte
e7db090620 styleproperties: Remove needless check 2011-05-21 22:49:43 +02:00
Benjamin Otte
b889f499a7 styleproperties: Use peek_property in get_property
... instead of duplicating the code.
2011-05-21 22:49:43 +02:00
Benjamin Otte
5f5cc79623 styleproperties: Adapt _gtk_style_properties_peek_property()
Optionally return the GtkStyleProperty that was looked up. This feature
isn't used yet, but will soon be.
2011-05-21 22:49:43 +02:00
Benjamin Otte
727a839d71 styleproperties: Move the style property handling code
... from gtkstyleproperties.c to gtkstyleproperty.c
2011-05-21 22:49:43 +02:00
Benjamin Otte
5eca8f8275 css: Rename gtkcssstrfuncs file to gtkstyleproperty
The idea is to handle the style property registering etc in this file
instead of the styleproperties file. The next commits will move those
files.
2011-05-21 22:49:43 +02:00
Benjamin Otte
e64b220791 stringfuncs: Remove _gtk_css_parse_url() from header
No code changes, just moving the function in the c file so it doesn't
need to be forward-declared.
2011-05-21 22:49:43 +02:00
Benjamin Otte
548a1302ee cssprovider: Use _gtk_style_property_lookup()
This way we get the actual data node and can use it.
2011-05-21 22:49:43 +02:00
Benjamin Otte
777a6846db styleproperties: Put gtk_style_property_lookup() in private header 2011-05-21 22:49:43 +02:00
Benjamin Otte
0f211f78a5 styleproperties: Class ref no longer necessary
Now that we initialize the pspecs on-demand, we can avoid the class ref.
2011-05-21 22:49:43 +02:00
Benjamin Otte
85e900b522 styleproperties: Init the default properties when they're needed
Instead of initing the default style properties in the class_init
func of the style properties, init them when they are first needed -
when they are queried or when new ones are registered.

That way, they will always be available.
2011-05-21 22:49:42 +02:00
Benjamin Otte
a2200e8971 styleproperties: constify gtk_style_property_lookup() 2011-05-21 22:49:42 +02:00
Benjamin Otte
1bd065fa4d styleproperties: Rename the storage struct for style pspecs
PropertyNode => GtkStyleProperty
2011-05-21 22:49:42 +02:00
Benjamin Otte
d7c9d8ce15 tests: Add forgotten file
File was forgotten in 8fd6bd323c
2011-05-21 22:48:52 +02:00
Diego Celix
ea79cd4314 gtk/gtkstatusbar: gtk_misc_set_alignment replacing
Replacing the function gtk_misc_set_alignment () with
gtk_widget_set_halign () and gtk_widget_set_valign () in
gtk/gtkstatusbar.c

https://bugzilla.gnome.org/show_bug.cgi?id=650664
2011-05-21 09:16:00 -04:00
Matthias Clasen
e578489579 Allow NULL permissions
This is useful in some scenarios.
2011-05-21 09:12:40 -04:00
Benjamin Otte
d333911d30 docs: Add missing <row> 2011-05-21 03:41:52 +02:00
Cosimo Cecchi
8c65d9181d themingengine: use the text-shadow property to render text shadow
This also avoids hardcoding a shadow for insensitive text in the engine,
as it can now be applied from the theme directly.

https://bugzilla.gnome.org/show_bug.cgi?id=649314
2011-05-20 18:49:54 -04:00
Cosimo Cecchi
73e0070774 shadow: add a method to paint the shadow for a PangoLayout
https://bugzilla.gnome.org/show_bug.cgi?id=649314
2011-05-20 18:49:54 -04:00
Cosimo Cecchi
c3f3e4a670 styleproperties: resolve properties of type GTK_TYPE_SHADOW
https://bugzilla.gnome.org/show_bug.cgi?id=649314
2011-05-20 18:49:50 -04:00
Cosimo Cecchi
016f540931 styleproperties: add a "text-shadow" style property
And document its use in the CSS parser gtk-doc.

https://bugzilla.gnome.org/show_bug.cgi?id=649314
2011-05-20 18:44:15 -04:00
Cosimo Cecchi
5b6253252e css: add a parser for GTK_TYPE_SHADOW properties
https://bugzilla.gnome.org/show_bug.cgi?id=649314
2011-05-20 18:44:12 -04:00
Cosimo Cecchi
fcc78bedc8 shadow: add a GtkShadow private type
This will be used as a base both for parsing text-shadow and box-shadow
properties. The type is private, as there's no real use in exporting
this in a public API.

https://bugzilla.gnome.org/show_bug.cgi?id=649314
2011-05-20 18:44:07 -04:00
Cosimo Cecchi
8301b24ee5 assistant: pack the sidebar in a frame instead of an event box
This has mostly two advantages:
- the most obvious one is the theme can render a border around the
  sidebar if it wants to.
- we also can avoid hardcoding a container border width for the sidebar,
  and just use a padding from the theme. This also allows different
  themes to define a different padding, etc.

The drawback is we must draw the background ourselves, but it's easy
enough.

https://bugzilla.gnome.org/show_bug.cgi?id=650530
2011-05-19 10:54:04 -04:00
Cosimo Cecchi
6bbb9d6f15 assistant: remove an useless gtk_widget_reset_style() call
It's not needed to call _reset_style() here, as we did not add the
widget to the parent container yet.

https://bugzilla.gnome.org/show_bug.cgi?id=650530
2011-05-19 10:54:01 -04:00
Benjamin Otte
3ecb308e56 menu: Only realize menu if it isn't realized yet
Lots of code calls gtk_menu_popup() and we don't want to resize the
window needlessly.
In this particular case, keyboard navigation to submenus caused those
submenus to shrink.

Note: I'm not sure this fix doesn't have nasty side effects, as I'm not
a specialist on menu popup code, so if it does, we'll need to revert it.
Until then, let's keep it, it fixes a bug.
2011-05-19 13:04:19 +02:00
Benjamin Otte
7a0600644c tests: Add missing CSS test 2011-05-19 03:16:03 +02:00
Carlos Garnacho
1b53741e4c gdk: Document gdk_window_add_filter()+XGenericEvents behavior 2011-05-18 22:34:33 +02:00
Carlos Garnacho
a529568f79 gdk: Get the right filter window for XI2 events
GdkDeviceManagerXI2 now implements GdkEventTranslator::get_window,
retrieving the right window from the contained XIEvent.
2011-05-18 22:34:33 +02:00
Carlos Garnacho
55cc9f3339 gdk: Add _gdk_x11_event_translator_get_window()
This method can be implemented by event translators so they
return the right window from XGenericEventCookie events, as
ev->xany.window isn't meaningful for these.

GdkEventSource now also uses this to find out the right window
filters to apply.
2011-05-18 22:34:33 +02:00
Carlos Garnacho
53d77a829a gdk: Move XGetEventData() call to GdkEventSource
This function should be called just once across every possible
event translator and GdkFilterFunc that wants to deal with
any cookie event.
2011-05-18 22:34:32 +02:00
Benjamin Otte
3410b14751 mac keys: Add a missing semicolon 2011-05-18 22:17:59 +02:00
Benjamin Otte
c3701c737c keys.css: Remove semicolons at end of rules
This is not CSS conform (it will break resync code after errors for
generic CSS parsers), so I deprecated the support for that semicolon.
2011-05-18 22:17:59 +02:00
Cosimo Cecchi
d392af2e36 reftests: Check that inherited properties work 2011-05-18 22:17:59 +02:00
Benjamin Otte
a1858c5454 cssprovider: When loading themes, don't pass in an error
We want to parse existing themes as well as possible instead of failing.
And the g_warning() is preserved.
2011-05-18 22:17:59 +02:00
Benjamin Otte
17e3d6f85e cssprovider: Don't propagate deprecation messages to passed-in error
It's an informative message, don't stop parsing the CSS because of it.
2011-05-18 22:17:59 +02:00
Benjamin Otte
d2ef71627b css: Make property parsing functions take a css parser
Instead of reading a string and then passing that in, let the parse
functions use the full power of the parser.
2011-05-18 22:17:59 +02:00
Benjamin Otte
03e84b7ee3 css: Move binding set parsing to strfuncs 2011-05-18 22:17:59 +02:00
Benjamin Otte
c73d1cf2a6 cssstringfuncs: Read colors as symbolic colors always
... and then try to resolve them, so static colors get resolved in
advance, just like it was before.
2011-05-18 22:17:58 +02:00
Benjamin Otte
9e18d8b448 symboliccolor: Allow props == NULL when resolving
If props == NULL in gtk_symbolic_color_resolve(), fail sanely for named
colors. The docs used to say it was not allowed to pass NULL for named
color, but that had problems:
1) You do not know if a color was created that way. This is especially
   hard for generic users (like language bindings).
2) It wasn't even true. Colors using other symbolic colors would also
   fail when trying to resolve their named colors, but the docs didn't
   say so.
And because I want to use the function to resolve static colors early
where possible, I changed things.
2011-05-18 22:17:58 +02:00
Benjamin Otte
8111d99183 cssprovider: Cache if rulesets have inheritable style properties
This provides a huge speedup as we only need to preprocess style
properties when they are indeed inherited. This roughly doubles the
performance of the CSS matcher and brings the time taken by
gtk_css_provider_get_style() from 19% to 7% in my favorite benchmark.
2011-05-18 22:17:58 +02:00
Benjamin Otte
82b340f6f0 cssprovider: Keep two hash tables per ruleset
One for the style properties, one for the widget style properties.
This way we can make one hash table by pspec which means we don't have
to repeat the pspec lookup.
2011-05-18 22:17:58 +02:00
Benjamin Otte
399a439103 cssprovider: Add a new setter for rulesets
We now have set-by-pspec (which is used for normal style properties) and
set-by-name (which is used by widget properties).
2011-05-18 22:17:58 +02:00
Benjamin Otte
0318ab2ce1 cssprovider: Refactor handling of rulesets
Keep rulesets as an on-stack/heap structure instead of allocating all
instances separately.
Also, pass a ruleset to the ruleset parser, so we can make the ruleset
parser do lots of fancy things that might be useful for performance.
2011-05-18 22:17:58 +02:00
Benjamin Otte
151294576d cssprovider: Refactor code to have a gtk_css_ruleset_matches() 2011-05-18 22:17:58 +02:00
Benjamin Otte
71c748b47e cssprovider: Rename "SelectorStyleInfo" to "Ruleset"
No code changes, just clarification of the name
2011-05-18 22:17:58 +02:00
Benjamin Otte
b37f9fdf81 css: Implement inherit properties
Huge performance hit (slows down things roughly by a factor of 3), but
necessary for CSS conformance and for implementing "inherit" and
percentages.
2011-05-18 22:17:58 +02:00
Benjamin Otte
25c396409c reftests: Check style property order
Ensure that style properties are read in the correct order, by having a
property twice with vastly different values.
2011-05-18 22:17:58 +02:00
Benjamin Otte
c1dc3e9372 css: Refactor code to do property lookups earlier
We want to ook up the property in the CSS parser, so we can do fancy
things with it. We currently don't but we want to later.
2011-05-18 22:17:57 +02:00
Benjamin Otte
82399bf457 styleproperties: Speed up by not optimizing
g_quark_try_string() takes a lock and then does a hashtable lookup. So
just using a string hash table for properties is faster.
2011-05-18 22:17:57 +02:00
Benjamin Otte
4c92fb2b5d styleproperties: Speed up style_property_lookup()
Use the already existing bsearch version instead of iterating the array
manually.
2011-05-18 22:17:57 +02:00
Benjamin Otte
beba515243 styleproperties: Use the pspec as the hash table key
The code used the quarked name before, but when we already have the
pspec we want to have a lookup that does not involve quarking. And
lookup is equally fast if we only have the name.
2011-05-18 22:17:57 +02:00
Benjamin Otte
d6f0042773 css: Make _gtk_css_selector_matches() take a path length
This will be necessary when handling inherit.
2011-05-18 22:17:57 +02:00
Benjamin Otte
08e83ca66b cssprovider: Simplify code
Don't go through an intermediate array when matching styles.
2011-05-18 22:17:57 +02:00
Benjamin Otte
f04f943708 styleproperties: Mark "color" and "font" as inherit
Keeping it identical to CSS 2.1 again
2011-05-18 22:17:57 +02:00
Benjamin Otte
9bfd3d2eec API: Add API to set style properties to be inherit
The API is not used anywhere yet.
2011-05-18 22:17:57 +02:00
Benjamin Otte
8605a2a10a cssprovider: Speed up gtk_widget_style_get() property lookups
Previously we got the list of all matching rules and then iterated it to
find the first one that had the property. Now we look while matching
rules, so we don't lookup rules that we don't need.
2011-05-18 22:17:57 +02:00
Benjamin Otte
d3c60cc89c css: Don't query type for regions
Regions are regions and don't match by type.
2011-05-18 22:17:57 +02:00
Benjamin Otte
1400644069 reftests: Add a test ensuring selectors don't match children
Previously, the selector "Foo" would not only match Foo widgets, but
also all widgets that are descendants of Foo.
2011-05-18 22:17:57 +02:00
Benjamin Otte
f3ed498c5b reftests: Add a test for descendant CSS selectors match
In widget hierarchy like "Foo Bar Bar Baz", we want the selector "Foo >
Bar Baz" to match, because it matches the elements 1, 2 and 4.
Previously, the selector only matches the Bar at position 3 and then
failed because it wasn't preceded by a Foo.
2011-05-18 22:17:56 +02:00
Benjamin Otte
806c804271 reftests: Add a test that checks that * matches regions 2011-05-18 22:17:56 +02:00
Benjamin Otte
dda83e2f98 reftests: Unset background-image in CSS of test
Otherwise the test screws up when it's set
2011-05-18 22:17:56 +02:00
Benjamin Otte
b8eac1e130 reftests: Add a check for matching regions only once 2011-05-18 22:17:56 +02:00
Benjamin Otte
710caeb512 tests: Add a test for enum values 2011-05-18 22:17:56 +02:00
Benjamin Otte
619d344d8d css: Raised SYNTAX error when enum value can't be parsed 2011-05-18 22:17:56 +02:00
Benjamin Otte
8ca799cc39 reftests: Add a test for matching by class 2011-05-18 22:17:56 +02:00
Benjamin Otte
78de3e8180 reftests: Add a test for matching by name 2011-05-18 22:17:56 +02:00
Benjamin Otte
269fe0f347 reftests: Add a test for matching by subtype 2011-05-18 22:17:56 +02:00
Benjamin Otte
90caef4abe reftests: Add test to check that matching by type works 2011-05-18 22:17:56 +02:00
Benjamin Otte
174cfff50f tests: Add a test to ensure we handle unknown pseudo-classes correctly
1) We want to throw an unknown value
2) We want to skip the whole rule
2011-05-18 22:17:56 +02:00
Benjamin Otte
e7aa125eb0 tests: Add a test for all selector combination
The test contains an error where we complain about a duplicate value for
":hover:hover"
2011-05-18 22:17:56 +02:00
Benjamin Otte
e875c619ef css: No more special code for regions
Just treat regions the same as elements.
2011-05-18 22:17:55 +02:00
Benjamin Otte
fc88b0f47c css: Rewrite selectors
Selectors now go into their own C file. The new selectors are modeled a
lot closer to the CSS spec. In particular the specificity computation
matches CSS 2.1 exactly.

For details about the why, see also:
http://mail.gnome.org/archives/gtk-devel-list/2011-May/msg00061.html
https://bugzilla.gnome.org/show_bug.cgi?id=649798
2011-05-18 22:17:55 +02:00
Benjamin Otte
4e2d3f5d18 cssprovider: Remove a bunch of commented-out code
The code was only kept for reference while writing the new parser, it's
not necessary anhymore.
2011-05-18 22:17:55 +02:00
Benjamin Otte
ce44c95ce8 tests: Be more verbose in error messages.
Also, it makes it easier to copy/paste diffs from the message log...
2011-05-18 22:17:55 +02:00
Benjamin Otte
dd78ab5a2f tests: Add test that ensures we properly parse the color red 2011-05-18 22:17:55 +02:00
Benjamin Otte
42fb004dfc tests: Add another parsing test from the css spec 2011-05-18 22:17:55 +02:00
Benjamin Otte
3f07482b10 tests: Add parsing test from the css spec 2011-05-18 22:17:55 +02:00
Benjamin Otte
2b807e574d tests: Make the parser fail without assertions
Use the new g_test_fail() function. This way, the testsuite usually
doesn't crash, but actually finishes.
2011-05-18 22:17:55 +02:00
Benjamin Otte
7ccb9db79e css: Rewrite the parser
Instead of relying on GScanner and its idea of syntax, code up a parser
that obeys the CSS spec.
This also has the great side effect of reporting correct line numbers
and positions.

Also included is a reorganization of the returned error values. Instead
of error values describing what type of syntax error was returned, the
code just returns SYNTAX_ERROR. Other messages exist for when actual
values don't work or when errors shouldn't be fatal due to backwards
compatibility.
2011-05-18 22:17:55 +02:00
Benjamin Otte
058bbb2aec tests: Add a test for importing nonexistant files 2011-05-18 21:58:47 +02:00
Benjamin Otte
c7ef2225b7 tests: Add tests for cyclic imports 2011-05-18 21:58:47 +02:00
Benjamin Otte
427c97a635 tests: Add test for recursively importing an identical file 2011-05-18 21:58:46 +02:00
Benjamin Otte
e1dda3d03f cssprovider: Don't hardcode strings anymore 2011-05-18 21:58:46 +02:00
Benjamin Otte
cec2875d36 cssprovider: Add support for strings 2011-05-18 21:58:46 +02:00
Benjamin Otte
2a0ac6d102 cssprovider: Parse strings as identifiers when parsing property values 2011-05-18 21:58:46 +02:00
Benjamin Otte
6b66efe873 cssprovider: Add recursion checks for @import
This is pretty important, because otherwise recursions cause crashes.
And if you accidentally change your theme to one that crashes on load,
all your gonna SEGV and then on reboot, gdm tries to load the theme...
2011-05-18 21:58:46 +02:00
Benjamin Otte
22492a37c1 cssprovider: Allow storing the parent stylesheet 2011-05-18 21:58:46 +02:00
Benjamin Otte
286b5b9b72 cssprovider: Don't fail if an import doesn't work 2011-05-18 21:58:46 +02:00
Benjamin Otte
d6c6a0bcc0 cssprovider: Reimplement gtk_css_provider_load_from_path()
Call gtk_css_provider_load_from_file() instead of the internal function.
This has two advantages:
1) It simplifies the code a lot
2) It gets rid of GMappedFile usage. GMappedFile does not work
   everywhere, so this is finally portable.
2011-05-18 21:58:46 +02:00
Benjamin Otte
b0d3078aa7 cssprovider: Make @import use the new load_internal() func 2011-05-18 21:58:46 +02:00
Benjamin Otte
a183375b94 cssprovider: Make load_internal() load the contents
This way, we achieve two things:
1) We can unify file loading to one location
2) We can emit the error from file loading using the parsing-error
   signal. This is very useful for @import handling in particular.
2011-05-18 21:58:46 +02:00
Benjamin Otte
5bedc822ec cssprovider: Introduce gtk_css_provider_take_error_full()
Emits the error without the need for a scanner. Also simplifies
gtk_css_provider_take_error() because we now can assert an available
scanner at all times.
2011-05-18 21:58:46 +02:00
Benjamin Otte
f937d0275a cssprovider: More error handling into load_internal()
Now the parsing functions starting at parse_stylesheet() don't have to
care about errors anymore.
2011-05-18 21:58:46 +02:00
Benjamin Otte
da52175013 cssprovider: Add a load_internal function that all loads chain to 2011-05-18 21:58:46 +02:00
Benjamin Otte
77b40f2dcd tests: Order files by name before adding them as tests
Ensures that the order of tests is not dependant on your hard disk.
2011-05-18 21:58:46 +02:00
Benjamin Otte
5cf6a8a23f cssprovider: Keep base url in the scanner
And provide a nice function to query it. Simplifies a bunch of code.
2011-05-18 21:58:46 +02:00
Benjamin Otte
84ba8255fc cssprovider: Move properties to scanner constructor
So we can set them in one place.
2011-05-18 21:58:46 +02:00
Benjamin Otte
2de4f71586 cssprovider: Don't store scanner in the struct
Instead, create scanners whenever we actually parse stuff.
2011-05-18 21:58:46 +02:00
Benjamin Otte
5c940f2bd4 cssprovider: Get rid of gtk_css_provider_reset_parser()
Instead call gtk_css_scanner_reset(). There is nothing else we could
need to do.
2011-05-18 21:58:45 +02:00
Benjamin Otte
607846879e cssprovider: Keep track of passed in error differently
Instead of having an error member in the CSS provider's private struct,
connect a signal handler when an error is passed in. This has two
advantages:
1) It makes the code clearer as we don't have to keep track of an error
   member anywhere.
2) It causes a non-emission of the g_warning() when an error was passed
   in, because it only triggers when no signal handlers are connected.
   So we get identical behavior to GTK 3.0 where warnings where only
   emitted when no error was passed in.
2011-05-18 21:58:45 +02:00
Benjamin Otte
8fb6fdd3e7 cssprovider: Do error handling differently
Instead of aborting a parse whenever we encounter an error, parse to the
end. But if a GError was passed in, reset the provider completely as if
nothing had been parsed.
2011-05-18 21:58:45 +02:00
Benjamin Otte
992ee6a203 cssprovider: Emit a g_warning() when a css file is erroneous
... and no other error handler is active. See the source code comment
for the reasoning.
2011-05-18 21:58:45 +02:00
Benjamin Otte
2d75dd2fdf cssprovider: No need to restore after @import parsing
With the recent changes, this just resets the error, and we don't the
error reset from subfile parsing.
2011-05-18 21:58:45 +02:00
Benjamin Otte
3e146b468b cssprovider: Store current properties and selectors in scanner
They don't belong in the css provider
2011-05-18 21:58:45 +02:00
Benjamin Otte
f3bb815517 cssprovider: Use scanner variable instead of priv->scanner 2011-05-18 21:58:45 +02:00
Benjamin Otte
d85cbfe157 cssprovider: Pass scanner argument explicitly to error functions 2011-05-18 21:58:45 +02:00
Benjamin Otte
5bc2ae1a91 cssprovider: Update the scope modifying functions
Make them take the scanner as an argument, as that's what gets changed,
not the CssProvider.
2011-05-18 21:58:45 +02:00
Benjamin Otte
83ebc91dce cssprovider: track state in the scanner
This way, we don't have to do magic copies when we create a new scanner
for a subfile.
2011-05-18 21:58:45 +02:00
Benjamin Otte
740f2458bf cssprovider: Add a private structure to the scanner
So far, it's unused
2011-05-18 21:58:45 +02:00
Benjamin Otte
073d75a880 cssprovider: Add a custom gtk_css_scanner_destroy() function
So far, it does nothing
2011-05-18 21:58:45 +02:00
Benjamin Otte
5ca9f25523 cssprovider: Pass the scanner explicitly to parse_stylesheet()
This is the first step in decoupling the scanner from the provider.
2011-05-18 21:58:45 +02:00
Benjamin Otte
318a3af96e cssprovider: No need to set user data anymore 2011-05-18 21:58:45 +02:00
Benjamin Otte
796d593cc1 tests: Make css-parser test take files as argument
Takes the css files to be tested as argument and runs with it.
2011-05-18 21:58:45 +02:00
Benjamin Otte
1f4b09b2fb tests: Add a test for border parsing 2011-05-18 21:58:45 +02:00
Benjamin Otte
195589feac tests: Add new test checking weird behavior for declarations 2011-05-18 21:58:44 +02:00
Benjamin Otte
cb8a595a65 cssprovider: Clean up declaration parser to conform to more tests
The tests will follow with the next commits
2011-05-18 21:58:44 +02:00
Benjamin Otte
22bda2b92f cssprovider: Rework declaration parsing loop
The new loop can cope better with invalid identifiers and manages to
resume parsing properly.
2011-05-18 21:58:44 +02:00
Benjamin Otte
fbf658b04e tests: Add CSS integer parsing tests 2011-05-18 21:58:44 +02:00
Benjamin Otte
d28816bdba tests: Add test for booleans to CSS tests 2011-05-18 21:58:44 +02:00
Benjamin Otte
5e054b37a2 cssprovider: Don't fail with invalid syntax when parsing a value
Instead, raise a PROPERTY_VALUE error, find the next semicolon or
closing bracket and resume parsing.
2011-05-18 21:58:44 +02:00
Benjamin Otte
be1da7ef92 tests: (Try to) print the actual enum value in the errors file
Instead of gtk-some-error-quark 5, print
GTK_SOME_ERROR_SOMETHING_FAILED.
2011-05-18 21:58:44 +02:00
Benjamin Otte
71b18a9006 test: Add a bunch of default properties to the CSS parser
One of each type, so that we can test the parsing of them.
2011-05-18 21:58:44 +02:00
Benjamin Otte
a94ea9a4e3 css: Overhaul value parsing
Value parsing only sometimes emitted errors. Sometimes it didn't emit
errors but ignored the value, sometimes it took a default, sometimes it
converted it to something it deemed suitable.

While refactoring, I moved the whole GValue <=> char * conversion
routines to a separate file, to make navigating the core css provider
easier.
2011-05-18 21:58:44 +02:00
Benjamin Otte
a50a06b583 cssprovider: Remove now useless variables 2011-05-18 21:58:44 +02:00
Benjamin Otte
469ed3e8ed cssprovider: Remove scanner_report_warning() function
That function does superbad stuff just to print out something on stderr.
Don't do superbad stuff.
2011-05-18 21:58:44 +02:00
Benjamin Otte
f1307ef428 tests: Make CSS parser pass NULL as error.
We are trapping errors via signals now.
2011-05-18 21:58:44 +02:00
Benjamin Otte
2d0162c97b tests: Check errors in css test 2011-05-18 21:58:44 +02:00
Benjamin Otte
35c9650752 tests: Change the way the code does diffs
Use a temp file for intermediate storage and properly unlink that
tempfile after the diff is done.
2011-05-18 21:58:44 +02:00
Benjamin Otte
4622614784 cssprovider: use INVALID_SYNTAX for unexpected token error 2011-05-18 21:58:44 +02:00
Benjamin Otte
b34f004f43 cssprovider: Change declaration parsing for error reporting
Previously, we only checked for errors after parsing the full
declaration. Now we detect errors with the property before even
attempting to parse its value.
The benefit here is that the error reporting reports the correct line
and position numbers.
2011-05-18 21:58:44 +02:00
Benjamin Otte
ee53156762 API: cssprovider: Add more error codes 2011-05-18 21:58:44 +02:00
Benjamin Otte
78afa9671e API: cssprovider: Make error a signal 2011-05-18 21:58:44 +02:00
Benjamin Otte
06d4dab48c cssprovider: Handle errors completely via new error functions 2011-05-18 21:58:43 +02:00
Benjamin Otte
582aa955c2 cssprovider: Provide better API to set errors 2011-05-18 21:58:43 +02:00
Benjamin Otte
707ba8597f cssprovider: Have a private error variable 2011-05-18 21:58:43 +02:00
Benjamin Otte
c18dc15694 tests: Add test for auto-closing at end of file 2011-05-18 21:58:43 +02:00
Benjamin Otte
38ca304825 cssprovider: Automatically add final closing bracket to last rule 2011-05-18 21:58:43 +02:00
Benjamin Otte
224d65032e tests: Add CSS test checking that we don't need a semicolon 2011-05-18 21:58:43 +02:00
Benjamin Otte
8fd6bd323c tests: Add two simple css tests 2011-05-18 21:58:43 +02:00
Benjamin Otte
64fd32cdef tests: Add a test for the CSS parser
Tests in the parser need 1 or 2 files:
1) test.css
2) test.ref.css (optional, defaults to test.css)

The test instantiates a CSS provider, loads test.css, then dumps the
loaded file to test.out.css and then checks that that file matches
test.ref.css. If not, it dumps a diff between those two to the log and
fails.

You want to run the test with --verbose to get the output dumped to
stdout.
2011-05-18 21:58:43 +02:00
Benjamin Otte
9d9f1e38b2 cssprovider: Ignore empty rules 2011-05-18 21:58:43 +02:00
Benjamin Otte
b1556abe04 API: gtk: Add gtk_css_provider_to_string()
This is intented to convert the contents of a CSS provider back to a
string.
It is not complete yet but good enough for starting a testsuite. :)
2011-05-18 21:58:43 +02:00
Benjamin Otte
8b6f92d087 API: Add gtk_gradient_to_string() 2011-05-18 21:58:43 +02:00
Benjamin Otte
dc43239a61 gtk: Add _gtk_animation_description_to_string()
Reverses _gtk_animation_description_from_string()
2011-05-18 21:58:43 +02:00
Benjamin Otte
6e18b5f3de API: gtk: Add gtk_symbolic_color_to_string()
See future commits for why this is useful. Or try to debug some color
problem.
2011-05-18 21:58:43 +02:00
Benjamin Otte
b566debef9 cssprovider: Add a function for signalling errors 2011-05-18 21:58:43 +02:00
Benjamin Otte
f5bc27f7ef cssprovider: Store cssprovider in scanner's user data 2011-05-18 21:58:43 +02:00
Cosimo Cecchi
f398745a15 treeview: don't arbitrairly add 2 to the expander size
Bump the default expander size by 2 pixels instead.

https://bugzilla.gnome.org/show_bug.cgi?id=650424
2011-05-18 11:12:47 -04:00
Cosimo Cecchi
42f5856e77 treeview: render a frame around the rows, after drawing their background
https://bugzilla.gnome.org/show_bug.cgi?id=650424
2011-05-18 11:12:31 -04:00
Cosimo Cecchi
1a7239481c raleigh: clear up menu handling in the fallback CSS
Now that menus properly respect padding/border, this is not needed
anymore.
2011-05-18 10:45:51 -04:00
Cosimo Cecchi
091a4d7f22 menu: don't use the border as a padding value
Borders should be rendered inside the allocation, not act as a second
padding.

https://bugzilla.gnome.org/show_bug.cgi?id=650418
2011-05-18 10:45:50 -04:00
Cosimo Cecchi
c8a59a6f92 all: avoid boxed structs copying where possible
Use the GtkStyleContext accessors for boxed properties where possible,
to reduce allocations.

https://bugzilla.gnome.org/show_bug.cgi?id=650420
2011-05-18 10:27:21 -04:00
Chun-wei Fan
61e49e159a Update Visual C++ README.txt
-Make the build preparation instructions a bit more clear.
-Tell people about the (now optional) use of fontconfig in the
 Visual C++ builds.
2011-05-18 12:02:10 +08:00
Carlos Garnacho
52452236bc button: Fix typo in keyboard grab's evmask
https://bugzilla.gnome.org/show_bug.cgi?id=650382, spotted
by Alexander Larsson.
2011-05-17 13:17:25 +02:00
Colin Walters
7bc2f539d0 Explicitly declare internal reserved bits in GdkModifierType
XKB and GDK both add "internal" bits to GdkModifierType.  In C,
this typically doesn't cause problems as bitfields are just integers,
and there's no validation.  However for bindings, it's normal to
convert enumerations to "native" enumeration types, which don't
support unknown bits.  See bug 597292.

https://bugzilla.gnome.org/show_bug.cgi?id=634994
2011-05-16 12:35:40 -04:00
Colin Walters
931e8e38ef gdk_display_get_pointer: Screen out parameter is (transfer none) 2011-05-16 12:35:40 -04:00
Yaron Shahrabani
55e093dcb5 Update Hebrew translation. 2011-05-13 08:28:50 +03:00
Yaron Shahrabani
80d77458c7 Update Hebrew translation. 2011-05-13 08:26:01 +03:00
Benjamin Otte
c2f23ccd23 reftests: Add a shell script to create tests
See the documentation in the script.
Tests are not yet added as the output from the 2 included scripts
doesn't match and the intended reference output first needs to be agreed
on.
2011-05-13 02:46:15 +02:00
Matthias Clasen
b219b3b0ec Add shortcuts for the !children case
Not that we are doing too much work in that case, but we are
segfaulting, which is bad.
https://bugzilla.gnome.org/show_bug.cgi?id=649972
2011-05-12 20:12:51 -04:00
Matthias Clasen
76a96626fd Flesh out the GtkGrid migration chapter some more 2011-05-12 19:34:10 -04:00
Benjamin Otte
d20aa1f8dc reftests: Add a test for the label fix 2011-05-12 23:40:26 +02:00
Benjamin Otte
5084739756 themingengine: Set current point to 0,0 when rendering rotated layout
Otherwise the layout may move to who-knows-where
2011-05-12 23:40:26 +02:00
Matthias Clasen
3ace68ee6f Add an initial migration chapter for GtkGrid 2011-05-11 23:55:54 -04:00
Matthias Clasen
7b6e3be4a7 Another grid spacing reftest
This one checks that empty rows/columns don't affect layout.
2011-05-11 19:52:33 -04:00
Micah Carrick
86f5849158 Fix annotation for Gtk.TreeView.enable_model_drag_source
https://bugzilla.gnome.org/show_bug.cgi?id=649979
2011-05-11 16:15:23 -04:00
Matthias Clasen
87e46bfaa9 Add some reftests comparing aspects of grid and box spacing 2011-05-11 13:48:00 -04:00
Benjamin Otte
f96777ea02 paned: Be careful about showing windows
The previous code failed to account for all child visibility and paned
mapedness invariants which could cause stray GDK windows to appear.
Not good.

Credit goes to Xan for triggering it.
2011-05-11 00:47:23 +02:00
Matthias Clasen
1ab425b132 GtkAssistant: make the content expand
Its all about the content, so make sure the content fills
the available space.
2011-05-10 17:57:21 -04:00
Friedel Wolff
a14e77fc97 Fix two small translation bugs 2011-05-10 12:47:22 +02:00
Benjamin Otte
d01d90fccd reftests: Add test for undersized children of GtkPaned
Tests the recent fixes done in 206b9f940d
and 6bda6f0c58
2011-05-10 01:39:14 +02:00
Matej Urbančič
f9c60b109a Updated Slovenian translation 2011-05-09 20:22:00 +02:00
Jorge González
a87ba4efe3 Updated Spanish translation 2011-05-09 19:39:39 +02:00
Benjamin Otte
6bda6f0c58 paned: Ensure children aren't underallocated
Instead, allocate them a proper size and just clip them using the window
we added for them in the last commit.
2011-05-09 18:55:13 +02:00
Benjamin Otte
206b9f940d paned: Create a GDK window for every child
We need the window to clip drawing. Otherwise we cannot allow
undersizing without doing underallocations.
2011-05-09 18:37:08 +02:00
Benjamin Otte
b6c8671fde reftests: Add CSS file for alignment test
We need to force arrow scaling to 1.0 to get the alignment right.
2011-05-09 13:25:36 +02:00
John Stowers
21761ce5fc Add missing gtk_widget_override_* annotations
https://bugzilla.gnome.org/show_bug.cgi?id=649779
2011-05-09 23:09:26 +12:00
Fran Diéguez
dcbf362621 Updated Galician translations 2011-05-09 13:08:53 +02:00
Matthias Clasen
f3a66d0783 Dueling arrow positioning fixes...
Revert my fix, which conflicted with Benjamins fix for the same
issue.
2011-05-08 21:33:12 -04:00
Matthias Clasen
432e89685f Fix up the misc-alignment test
The new-style ui file had some left-over GtkMisc properties
in it.
2011-05-08 21:28:36 -04:00
Matthias Clasen
3b3c5e19d9 Fix a arrow positioning
This gets the misc-alignment test for arrows closer to
not failing.
2011-05-08 21:28:36 -04:00
Benjamin Otte
42450cacd9 reftests: Modify test to ensure identical output
GtkArrow and the align properties use different methods (float vs int)
to center the arrow. If the size of the arrow is odd, this will cause a
rendering that differs by half a pixel. So we request an even size for
both the arrow and the container and everything works out.
2011-05-09 01:36:00 +02:00
Benjamin Otte
3c2105c9cd reftests: Add misc-alignment test to Makefile 2011-05-09 01:12:29 +02:00
Benjamin Otte
50c36f38ff reftests: Actually add toplevel vs popup testcase
Adds missing files from 79d1b11d0b and
reverts eba4ca3e66.
2011-05-09 01:10:13 +02:00
Benjamin Otte
ece3c54f57 arrow: Don't include padding in computation of alignment 2011-05-09 01:07:35 +02:00
Kristian Høgsberg
2ebdcf5f37 wayland: Track wayland API changes 2011-05-08 13:20:11 -04:00
Jorge González
d9760a1d3c Updated Spanish translation 2011-05-08 17:54:29 +02:00
Daniel Mustieles
7867908ef3 Updated Spanish translation 2011-05-08 17:33:59 +02:00
Daniel Mustieles
f1ed0ace1c Updated Spanish translation 2011-05-08 17:30:08 +02:00
Matthias Clasen
2e1fa6df4a Post-release bump 2011-05-07 13:04:38 -04:00
Matthias Clasen
e97baf7906 3.1.4 2011-05-07 13:01:16 -04:00
Matthias Clasen
1de66e0c52 Another distcheck fix 2011-05-07 13:00:58 -04:00
Matthias Clasen
90ad52687c Work around testsuite failures for distcheck 2011-05-07 12:59:09 -04:00
Matthias Clasen
5b9e402cf3 Fix a typo in !HAVE_XCURSOR code paths
Patch by Victor Oliveira,
http://bugzilla.gnome.org/show_bug.cgi?id=649665
2011-05-07 12:01:04 -04:00
Daniel Mustieles
99b9e35f8f Updated Spanish translation 2011-05-07 12:39:45 +02:00
Matthias Clasen
111b7fd504 Distcheck fixes 2011-05-07 00:07:07 -04:00
Matthias Clasen
eba4ca3e66 Drop missing tests 2011-05-07 00:03:13 -04:00
Matthias Clasen
a805e70615 Add a new forgotten symbol 2011-05-06 23:51:52 -04:00
Matthias Clasen
e31c73d83f More updates 2011-05-06 23:46:18 -04:00
Matthias Clasen
569f480bc0 Update the NEWS for 3.1.4 2011-05-06 23:34:49 -04:00
Matthias Clasen
1d647df176 Add a lock button widget
This is a special-purpose button that can be used together with
GPermission objects to control the sensitivity of system settings.

Suitable permission objects can e.g. be obtained from PolicyKit.

http://bugzilla.gnome.org/show_bug.cgi?id=626457
2011-05-06 22:44:38 -04:00
Matthias Clasen
5cb3f5ff0f Remove outdated comments
Neither GdkColors nor GdkRGBAs are ever 'allocated' nowadays.
2011-05-06 17:05:35 -04:00
Tristan Van Berkom
9fd1feb2a8 Adding more traditional checkered background to testtextview. 2011-05-06 17:05:35 -04:00
Tristan Van Berkom
e217c455f8 Added Since 3.2 annotations for new GdkRGBA properties. 2011-05-06 17:05:34 -04:00
Tristan Van Berkom
cefb950110 Added internal GdkRGBA support for GtkTextTag::paragraph-background-rgba
Added the remaining implementation bits for rendering paragraph backgrounds
with rgba values and updated the test case.
2011-05-06 17:05:34 -04:00
Tristan Van Berkom
2b2d7aa305 Fixed GtkTextTag to sync the GdkColors with the new GdkRGBA values for backwards compatability. 2011-05-06 17:05:34 -04:00
Tristan Van Berkom
d3c77f0330 Handled error_color with GdkRGBA in gtktextdisplay.c. 2011-05-06 17:05:34 -04:00
Tristan Van Berkom
604292a404 Fixed textview rendering regression.
Background color was not painted on the whole tagged segment after
line breaking, this was due to the default ->prepare_run() function
wiping the internal PangoColors clean... fixed this by unconditionally
setting local rgba colors from prepare_run instead of comparing them
and bailing out.
2011-05-06 17:05:34 -04:00
Tristan Van Berkom
d399a4acab Added GdkRGBA properties to GtkTextTag.
This now allows text view to render text with alpha values in
the text foreground and backgrounds, the work is almost complete,
currently the error-underline-color is still a GdkColor style property
and since we use only GdkRGBA for rendering it needs to be converted
and applied, probably a new rgba version of the style property should
also be introduced.

This commit adds tests/testtextview that must be run from the tests/
directory to show translucent text in action.
2011-05-06 17:05:10 -04:00
Cosimo Cecchi
297e739395 testassistant: don't use deprecated functions 2011-05-06 16:08:42 -04:00
Cosimo Cecchi
579afaa9a1 progressbar: fetch the padding without the trough style class
This is consistent with the rest of the widget, which uses only one
padding value.

https://bugzilla.gnome.org/show_bug.cgi?id=649593
2011-05-06 15:10:43 -04:00
Cosimo Cecchi
73d9ca67e6 cellrendererprogress: don't force drawing inside the border
The progressbar is composed by two different rendered areas: the trough
(i.e. the non-filled part of the bar) and the bar itself.

The bar should be able to fill the whole height/width of the trough
without resorting to nasty hacks in the theme, and we can control the
amount of space between the bar and the trough with the padding already.

https://bugzilla.gnome.org/show_bug.cgi?id=649593
2011-05-06 15:10:43 -04:00
Matthias Clasen
e805320a14 gtk3-demo: assistant demo simplications
Since header and sidebar images are no longer used, don't set them.
2011-05-06 14:56:43 -04:00
Matthias Clasen
c83e76fb12 GtkAssistant: an new style for assistants
GtkAssistant is widely recognized as a butt-ugly widget.

This commit changes its style to look more modern. We
deprecate the sidebar and header image properties and
don't show them anymore. Instead, page titles are arranged
in a sidebar, with the title of the current page shown
in highlighted style.
2011-05-06 14:56:43 -04:00
Matthias Clasen
e8413cc28e testassistant: some more tests 2011-05-06 14:56:36 -04:00
Matthias Clasen
e244e5050b Silently allow child properties on grandchildren
This commit simply removes some child->parent == container checks,
to add some flexibility for containers with 'inner structure'.
If these checks are considered useful, we can bring them back
with a is_child vfunc that allows container implementations to
decided who they consider legitimate child.
2011-05-06 14:29:47 -04:00
Matthias Clasen
deb271d355 Add gtk_container_child_notify
This is a variant of gtk_widget_child_notify() that takes an
explicit container, instead of relying on widget->parent to
be the correct container to use.
2011-05-06 14:29:14 -04:00
Matthias Clasen
c8c1075cfe gtk-demo: Don't leave a dangling pointer to a destroyed widget
When destroying the assistant, clean up the static variable
that points to it.
2011-05-06 14:28:28 -04:00
Matthias Clasen
73bf1740e9 Some additional auto-mnemonic fixes
Previously, we would also show mnemonics if the user hits
Ctrl+Alt, even though Ctrl+Alt+<x> does not actually trigger.
2011-05-06 14:10:23 -04:00
Rui Matos
6889d5b008 GtkWindow: set mnemonics visible on focus in if modifier is pressed
With gtk-auto-mnemonics on, we hide mnemonics on focus out. We should also
check if the modifier is pressed on focus in and if so, show mnemonics again.

https://bugzilla.gnome.org/show_bug.cgi?id=618815
2011-05-06 14:10:23 -04:00
Javier Jardón
d543a9c6f9 configure.ac: Indeed the minimum required version is 2.29.4, not 2.29.2 2011-05-06 18:54:22 +01:00
Javier Jardón
4e75148796 configure.ac: Bump glib minimum required version to 2.29.2
As we are using the new g_test_fail() in the gtk-reftest
2011-05-06 18:52:14 +01:00
Benjamin Otte
f6e11febfa Revert "arrow: Make minimum size 5px"
This reverts commit 1c46e04f30.

The change broke too many widgets that relied on the size being
constant. A proper fix would require letting themes override the size.
That would probably also require letting themes specify the size
relative to font size.
2011-05-06 19:35:40 +02:00
Matthias Clasen
6c1133c885 Add an alignment property test
This test compares GtkAlignment properties and GtkWidget margin and
alignment properties.
2011-05-05 22:21:59 -04:00
Matthias Clasen
9966acbdaa Expand GtkMisc tests to cover arrows and images
This unveils something fishy with arrows.
2011-05-05 21:47:14 -04:00
Matthias Clasen
587e534b7e Add a misc-alignment reftest
This test compares GtkMisc properties and GtkWidget margin and
alignment properties.
2011-05-05 17:53:12 -04:00
Matthias Clasen
ebc325d38c More box<>grid comparison tests
Add a more complicated case with multiple expanding children.
Also, make the window a popup.
2011-05-05 17:13:28 -04:00
Colin Walters
703af0fb48 gtkicontheme: More explicitly note ownership transfers of duplicated string
I was hunting a memory leak and couldn't find it; at least I'm
pretty sure all of these are OK.  But document things better
for the future.

Also use g_hash_table_replace in one more case for consistency.

https://bugzilla.gnome.org/show_bug.cgi?id=649457
2011-05-05 16:02:10 -04:00
Benjamin Otte
dced75dcc4 reftests: Add missing css file for grid-expand test 2011-05-05 19:34:31 +02:00
Benjamin Otte
ac06529f61 reftests: Add testcase for label justify fix 2011-05-05 17:33:44 +02:00
Benjamin Otte
33e6479554 label: Compute label offset properly for wrapped justified labels
label offsets were computed wrong for wrapped or ellipsized labels that
were right- or center-justified and had excess space available.
2011-05-05 17:33:44 +02:00
Benjamin Otte
278260a3ae reftests: Fix filename in makefile 2011-05-05 17:33:44 +02:00
Benjamin Otte
79d1b11d0b reftests: Add a test that ensures toplevels and popups render identical 2011-05-05 17:33:44 +02:00
Benjamin Otte
66f0544238 reftests: Ensure we got a draw event before quitting the main loop 2011-05-05 17:33:04 +02:00
Benjamin Otte
3f4f900242 reftests: Add a hack to make toplevels work in various WMs
If we have a toplevel, and not a popup window, do wait an additional
0.5s to give the WM/server enough time to actually create the window.

This is a hack and there should be a better solution. But it works.

Please use POPUP windows for tests unless the test must use toplevel
windows.
2011-05-05 17:33:04 +02:00
Benjamin Otte
5c026f32e9 reftests: Plug a leak 2011-05-05 17:33:04 +02:00
Benjamin Otte
9f47d388f2 reftests: Add test for box expand handling 2011-05-05 17:33:04 +02:00
Benjamin Otte
96c9dd119b reftests: Add a test for grid expand flags 2011-05-05 17:33:04 +02:00
Javier Jardón
2f3e1fa3e4 gtk/gtktrayicon-x11.c: Use GdkRGBA instead GdkColor 2011-05-05 12:48:09 +01:00
Matthias Clasen
b8fe808e15 GtkButtonBox: add a non-homogeneous child property
This makes it easier to add things like lock buttons in
dialogs. Part of #626457.
2011-05-05 07:46:03 -04:00
Matthias Clasen
dd95a099be Fix box-packing test 2011-05-05 07:28:18 -04:00
Matthias Clasen
8816a12f0b Expand box-packing reftest
Compare vexpand behavior, too.
2011-05-04 22:58:32 -04:00
Matthias Clasen
f3fbdeecdb Add a box-packing reftest
This test compares GtkHBox expand handling with GtkGrid+GtkWidget::hexpand,
to ensure that replacing GtkHBox by GtkGrid works as intended.
2011-05-04 20:40:22 -04:00
Daniel Mustieles
9797bf4fe8 Updated Spanish translation 2011-05-04 22:46:27 +02:00
Javier Jardón
1fcfa91ee3 gdk/x11/gdkcursor-x11.c: Use GdkRGBA instead GdkColor 2011-05-04 17:58:17 +01:00
Kristian Rietveld
8285c7f60f GdkWindow: remove unused variable 2011-05-04 07:31:39 +02:00
Matthias Clasen
e8dd560851 Convert the commit message into a README
Not everybody thinks git grep is a great doc reader...
2011-05-03 19:37:00 -04:00
Carlos Garnacho
2a1a969d23 GdkWindow: Fix gdk_window_set_[device_]cursor() issues with root/foreign windows
It could be the case that gdk_window_set_cursor() is called on
pointers not yet known to the device tracking code in GdkDisplay,
so update the cursor on all master pointers.

The code actually updating the cursor for the given window has
been refactored out to gdk_window_set_cursor_internal(), used
in gdk_window_set_device_cursor() as well, which makes it handle
root/foreign windows too.

https://bugzilla.gnome.org/show_bug.cgi?id=649313
2011-05-04 01:00:42 +02:00
Colin Walters
b90e8cfc36 gtkdnd: Add API that takes GIcon
This will be useful for me to port gnome-panel to gnome-menus 4, which
uses GAppInfo, which in turn returns icon references as GIcon.

https://bugzilla.gnome.org/show_bug.cgi?id=649295
2011-05-03 12:53:46 -04:00
Colin Walters
e36c9dffac gtkimageprivate: Drop unused theme_change_id 2011-05-03 11:04:56 -04:00
Benjamin Otte
d0451d6fa4 reftests: Add a --output option to the test runner
This argument specifies where to dump images instead of /tmp. It's not
hooked up to the test runner, so that one will continue to dump into
/tmp.
2011-05-03 15:40:49 +02:00
Benjamin Otte
3a5669afd0 reftests: Add test for low mnemonics
Low mnemonics were invisible previously. This tests the fix from
9bb145a677
2011-05-03 15:40:49 +02:00
Benjamin Otte
97ad34c3a7 reftests: Test that nonresizable windows get the right size
We want the default size, not the minimum one. This tests the fixes from
4f23dc34be
2011-05-03 15:40:49 +02:00
Benjamin Otte
32a3ad412e tests: Add a test for small ellipsized labels
Tests the fix from bf41392861
2011-05-03 15:40:49 +02:00
Benjamin Otte
af75173ddd reftests: Add grid-homogeneous test
Checks that the homogeneous properties of GtkGrid actually do what
they're supposed to.

Tests fixes from 8331b45a5f
2011-05-03 15:40:49 +02:00
Benjamin Otte
17a6d6b5f6 reftests: Add a test for correct entry text clipping in progress drawing
Tests for fixes in da1f618b09
2011-05-03 15:40:49 +02:00
Benjamin Otte
9229b3216a reftests: Add label-sizing test
Checks that the size requests for labels are as they should be for
required and natural size given various combinations of wrap, ellipsize,
width-chars and max-width-chars.

See
http://mail.gnome.org/archives/gtk-devel-list/2011-April/msg00036.html
for the discussion spawning this test.
2011-05-03 15:40:48 +02:00
Benjamin Otte
363dbb6039 reftests: Add
Add a new test runner supposed to do a lot of generic tests. Run it like
this:

./gtk-reftest [OPTIONS] TESTFILE [TESTFILES...]

where FILE is a GtkBuilder ui file to run.

For a general test named "test", you want to have the following files:
1) test.ui
2) test.ref.ui
3) test.css (optional)
The test will then check that test.ui and test.ref.ui are rendered
identically with the provided css.

In detail, for every provided TESTFILE the test runner will:
1) Add the css to the default screen
2) Load the test.ui file and the test.ref.ui file
3) Grab the first GtkWindow subclass widget
4) gtk_widget_show() it and take a snapshot image of its contents into
   a cairo surface.
5) Compare the two images to be bitwise identical. If they are not, a
   diff image will be created hilighting the differences.
6) Save the images as png files to the output directory named:
   - test.out.png (rendering of test.ui)
   - test.ref.png (rendering of test.ref.ui)
   - test.diff.png (optional, differences from step 5)
7) Fail the test if the two images are not bitwise identical

Credit for the idea of reftests goes to Mozilla and in particular David
Baron. For a larger introduction of why reftests are useful, see
http://weblogs.mozillazine.org/roc/archives/2008/12/reftests.html
2011-05-03 15:40:48 +02:00
Benjamin Otte
69300df1fc label: Allow using more underline modes 2011-05-03 15:38:43 +02:00
Martin Pitt
1e1cca8912 GdkWindow: Add missing (allow-none) annotations 2011-05-03 09:30:49 +02:00
Benjamin Otte
ecb0fa952a accellabel: Remove leftover debug code
The disabling of the check was added in
63a0ab5e73

Ooops.
2011-05-02 20:09:17 +02:00
Benjamin Otte
b102df5370 cellarea: Fix warning messages to display the right type
The warning displayed the type of the area instead of the cell
renderer's type before.
2011-05-02 20:09:17 +02:00
Javier Jardón
fb3c16b7ad tests/testgtk.c: Fix crash in cursor test
This was introduced in
commit ac4c12ff60
2011-05-02 18:20:23 +01:00
Benjamin Otte
87ecd9ad59 menuitem: Deprecate gtk_menu_item_set_right_justified()
And the getter, too: gtk_menu_item_get_right_justified() and the
corresponding property. Also make the only caller use the private
structure (as it did before the recent patches).
2011-05-02 16:57:12 +02:00
Benjamin Otte
e8c6dbfab1 testgtk: right-justify menuitem by using expand/align flags
gtk_menu_item_set_right_justify() is about to be deprecated and this
thing should work. (Note: should, because I didn't implemented it yet.)
2011-05-02 16:57:12 +02:00
Benjamin Otte
0203cd612e gtk-demo: Don't right-justify menu items
We don't want to demo things that are a bad idea (quoted from the docs).
2011-05-02 16:57:12 +02:00
Javier Jardón
3b2e710aa4 gtkbuilder.c: gtk_builder_value_from_string() also support GdkRGBA values 2011-05-02 15:43:45 +01:00
Javier Jardón
a8811efcd7 docs: Remove documentation about deprecated and removed GtkText 2011-05-02 15:41:02 +01:00
Arnel Borja
c064808a1a Bypass libtool for linking with libuuid on win32
Fixes a regression introduced in 07d49ee5.

Libtool by default refuses to link static libraries into shared
libraries. In Windows, libuuid is however a static library and needed
for shared libgtk; as a work around, use "-Wl,-luuid" to pass the option
directly to the linker.

https://bugzilla.gnome.org/show_bug.cgi?id=642214
2011-05-02 10:19:59 -04:00
Javier Jardón
a817b4763d gtkcalendar: Remove unused variable 2011-05-02 14:59:53 +01:00
Javier Jardón
8e1fdaebe7 docs/reference/gtk/text_widget.sgml: Use GdkRGBA instead GdkColor 2011-05-02 14:08:43 +01:00
Javier Jardón
e73c0d9800 docs/tools/widgets.c: Use GdkRGBA instead GdkColor 2011-05-02 14:08:42 +01:00
Abduxukur Abdurixit
dac718a463 Added UG translation 2011-05-02 08:44:33 +02:00
Abduxukur Abdurixit
1130f1c263 Added UG translation 2011-05-02 08:34:06 +02:00
Kristian Rietveld
0b3b2a943a tooltips: treat scroll events like key/button press instead of motion
This avoids tooltips from staying visible when scrolling using scroll
events.  Suggested by Paul Davis.
2011-05-01 16:39:21 +02:00
Matthias Clasen
cf588d7404 GtkWidget: avoid an unused variable warning 2011-05-01 10:02:58 -04:00
Benjamin Otte
4f23dc34be window: Make non-resizable windows use default size for geometry hints
Previously, we were trying to size them by the default size, but then
setting the minimum size as the geometry hints' minimum and maximum
size.
2011-05-01 08:47:58 +02:00
Benjamin Otte
63a0ab5e73 accellabel: Only daw accelerator after natural size has been reached 2011-05-01 08:02:15 +02:00
Benjamin Otte
406b2e9e58 window: Remove overeagerness with new size guessing
Don't use the guessed size when we are interested in the minimum size.
So now we can really shrink menubars.

This reverts parts of 08b2ac1d90
2011-05-01 08:02:15 +02:00
Benjamin Otte
f74df9ba70 menubar: Rewrite size allocation to take natural sizes into account
Yay for properly ellipsizing menubars!
2011-05-01 08:02:15 +02:00
Benjamin Otte
4c9b8e0fcd menubar: Only query ipadding when we actually need it 2011-05-01 05:38:47 +02:00
Benjamin Otte
ae32f2fe90 menubar: Respect ipadding also in y direction 2011-05-01 05:30:42 +02:00
Benjamin Otte
cb99f0750d tests: Make testmenubars make all menubar items ellipsized
This reproduces a bug in Nautilus. And it allows to shrink things,
woohoo!
2011-05-01 04:44:56 +02:00
Benjamin Otte
27a661143e settings: Recompute styles when font name changes 2011-05-01 04:44:56 +02:00
Benjamin Otte
22a1bd6d6b menubar: Implement height-for-width / width-for-height
Pretty much just required hooking up the 2 vfuncs, the previous code
reorg did the rest of the work.
2011-05-01 04:44:56 +02:00
Benjamin Otte
c52f733a2d menubar: Actually query minimum and natural size of children
Previously, we only queried the minimum size and reported that as
natural size, too.
2011-05-01 04:44:56 +02:00
Benjamin Otte
3091a90538 menubar: Query only the necessary size from the child
The get_preferred_size() function was compied form elsewhere. We should
really make that a common API.
2011-05-01 04:44:56 +02:00
Benjamin Otte
923fcaa928 menubar: Only compute the necessary size
There's no need to compute height when we're only interested in width
2011-05-01 04:44:56 +02:00
Benjamin Otte
5aac83bf08 menubar: compute in advance wether to add toggle size 2011-05-01 04:44:56 +02:00
Benjamin Otte
f2bf5ce378 menubar: Change function prototype for size request function
This is in preparation for redoing that function to actually care about
natural sizes.
2011-05-01 04:44:56 +02:00
Benjamin Otte
d6fbbe159f menubar: Remove unnecessary return_if_fail() in vfuncs 2011-05-01 04:44:56 +02:00
Benjamin Otte
62e6bc7c34 menubar: Remove useless function declaration 2011-05-01 04:44:56 +02:00
Benjamin Otte
d8dfa74b4e menubar: Remove unused variable 2011-05-01 04:44:56 +02:00
Benjamin Otte
a85883ba2b imagemenuitem: No need to query image size by default
Also makes the code look nicer, so woohoo
2011-05-01 04:44:56 +02:00
Benjamin Otte
a64a2aded4 menubar: Compute proper size even when invisible 2011-05-01 04:44:56 +02:00
Fran Diéguez
a102dbcf12 Updated galician translations 2011-04-30 23:52:35 +02:00
Matthias Clasen
896a6b2452 Fix the build
G_GNUC_FUNCTION is deprecated.
2011-04-29 16:50:17 -04:00
Colin Walters
9d84e6cda7 Drop the last remaining translated g_warning/g_error calls
http://mail.gnome.org/archives/desktop-devel-list/2011-March/msg00069.html

https://bugzilla.gnome.org/show_bug.cgi?id=648943
2011-04-29 10:33:50 -04:00
Colin Walters
466d688fea updateiconcache: Don't translate g_warning/g_error 2011-04-29 10:24:21 -04:00
Kalev Lember
bcc153e262 Disable gtk-update-icon-cache.exe.manifest with --enable-gtk2-dependency
When gtk-update-icon-cache building is suppressed, its manifest file
should also not be installed.

https://bugzilla.gnome.org/show_bug.cgi?id=648938
2011-04-29 10:11:12 -04:00
Kalev Lember
95904a5a1b perf: Use different marshaller prefix than in gtk
Avoids multiple symbol definitions in gtk/gtkmarshalers.c
and perf/marshalers.c when both objects are linked in.

https://bugzilla.gnome.org/show_bug.cgi?id=648926
2011-04-29 10:11:05 -04:00
Benjamin Otte
5642703b0e notebook: Match horizontal and vertical code paths
I have no idea what this code does, but it looks better now. :o
2011-04-29 11:05:37 +02:00
Benjamin Otte
8e1714d59b notebook: Respect left border when allocating tab widgets
This mirrors the code for the other tab locations.
2011-04-29 11:05:36 +02:00
Benjamin Otte
409143637f notebook: Respect padding when computing tabs for left/right
This mirrors the top/bottom code
2011-04-29 11:05:36 +02:00
Benjamin Otte
9a4aec1446 Don't adjust for values that we have previously adjusted for
The padding had been taken into account by the computation of
priv->allocation, so don't compute it twice.
2011-04-29 11:05:36 +02:00
Benjamin Otte
02b14ffad9 notebook: Use the right padding for inactive tabs 2011-04-29 08:48:36 +02:00
Benjamin Otte
7962a4b716 window: Invert check that was wrong 2011-04-29 03:27:02 +02:00
Benjamin Otte
1c46e04f30 arrow: Make minimum size 5px, as opposed to the 15 it was before
Number chosen by staring out the window and counting visible stars.

This is necessary so that path bars don't underallocate the arrow widget
they use.
2011-04-28 22:21:45 +02:00
Benjamin Otte
5b1ca9dfa8 widget: Allow underallocation for scrollables
Also document this fact.
2011-04-28 22:21:45 +02:00
Benjamin Otte
2eac1ac73b docs: Fix liststore docs
gtk-doc was very unhappy. It's not anymore
2011-04-28 22:21:45 +02:00
Benjamin Otte
7e2eed8c1b widget: Update underallocation warning
Also print the parent widget. As the parent's size_allocate
implementation is usually the culprit for this warning happening, it
makes sense to print it.
2011-04-28 22:21:45 +02:00
Benjamin Otte
6e3b4af3c5 paned: Move showing of the handle from realize() to map()
Also only show the paned if it's actually supposed to be visible.
2011-04-28 22:21:45 +02:00
Benjamin Otte
3e9664ce65 paned: Remove needless check 2011-04-28 22:21:45 +02:00
Kizito Birabwa
c3ac782fd3 Updated Luganda translation 2011-04-28 20:29:03 +01:00
Benjamin Otte
92f9892cca widget: Warn when allocation for gtk_widget_size_allocate() is too small
Widgets may not be underallocated, it is the responsibility of the
caller to ensure this never happens.
2011-04-28 05:13:30 +02:00
Benjamin Otte
7a322193e8 notebook: Warn if builder file defines multiple tab widgets per page
Glade causes such files when a notebook page has no content. And it's
especially bad because the last tab widget wins, so the label displayed
in Glade will not be what you see when you run the app.
2011-04-28 00:54:34 +02:00
Giorgos Stephanakis
f6fc816497 l10n: Updated Greek translation for gtk+ 2011-04-27 23:20:24 +03:00
Benjamin Otte
38ea7abaae recentchooser: Fix default size setting
Set the min content size on the scrolled window instead of using
gtk_widget_set_size_request() on a widget where it's not recognized.
2011-04-27 19:59:02 +02:00
Benjamin Otte
1763b3a0b5 window: Make comparison be the right direction
Messed something up there...
2011-04-27 15:27:52 +02:00
Benjamin Otte
187f91eb90 label: Don't crash when a builder file contains unknown attributes 2011-04-27 00:43:16 +02:00
Benjamin Otte
8331b45a5f grid: Fix homogeneuous properties being flipped 2011-04-27 00:42:44 +02:00
Benjamin Otte
0094621e82 cssprovider: #include gio
We reference GFile...
2011-04-27 00:42:44 +02:00
Benjamin Otte
c7e5d0c63d tooltip: Use the actual size of the window we're going to show
It's easy by realizing the window first.

Don't try to guess the alorithm used by gtkwindow.c for sizing the
window, it might not be what we expect.
2011-04-27 00:27:29 +02:00
Benjamin Otte
85aebe74cf window: Be smarter about computing the default size
See the code comments for the reasoning behind this. After we don't
force a "guessed" minimum size for labels anymore, a lot of issues
started to surface that this patch attempts to fix. In particular:

1) Tooltips where wrapped as much as possible.
2) The recentchooser submenu displayed only ellipsize dots.
2011-04-27 00:27:29 +02:00
Benjamin Otte
08b2ac1d90 window: Split out size guessing function
This doesn't do anything special yet, but I'm about to change that.
2011-04-26 23:15:19 +02:00
Benjamin Otte
6e6837a130 window: Use int instead of uint consistently 2011-04-26 22:44:43 +02:00
Chun-wei Fan
9d59926c6f VS2010 support-update property sheet
Update the Gdk-Pixbuf 2.0 include path to be consistent with
autotools-based builds
2011-04-27 01:02:07 +08:00
Chun-wei Fan
61a74fbd61 VS2008/2010 support: Update README.txt
-Make the GDK-Pixbuf requirements more clear
-Tell people about the usage of ATK-2.x
2011-04-27 00:53:16 +08:00
Chun-wei Fan
527a299fdd Bug 643270: VS2010 Project Files (autotools)
-Update to distribute the VS2010 files.
-Added rules in Makefile.am's of GDK and GTK to fill in the
 project/filter files templates with up-to-date source file
 listings to simplify maintenace.

Any comments on the usage of the VS2010 files are welcome!
2011-04-27 00:48:05 +08:00
Chun-wei Fan
343d24c348 Bug 643270: VS 2010 Project Files
These are the VS2010 Project files to compile GDK and GTK+, using
the Win32 backend, along with a brief README.txt explaining the
process.

The GDK and GTK project/filter files are templates that are filled
in during "make dist" with up-to-date source file listings as far
as possible, to simplify maintenance.

Comments on their usage are most welcome.
2011-04-27 00:48:04 +08:00
Benjamin Otte
9bb145a677 widget: Add hack to make label mnemonics work again
Mnemonics for characters that go beyond the baseline (q, y, g) were not
being shown, because they are drawn outside of the label's allocated
size.
This patch just disables the clip-to-size for labels, so that the label
can draw outsize of its allocation. In most cases, that works around
this bug.

https://bugzilla.gnome.org/show_bug.cgi?id=648570
2011-04-26 14:15:34 +02:00
Matthew Barnes
7ae4a06d1f GtkComboBox: Improve gtk_combo_box_set_active_id
- Passing a NULL ID string should be equivalent to
  gtk_combo_box_set_active (combo_box, -1).
- Use g_strcmp0() instead of strcmp() when comparing
  ID strings to avoid a crash when an ID is NULL.
- Return a boolean indicating if the ID was found or not.

https://bugzilla.gnome.org/show_bug.cgi?id=647806
2011-04-26 07:59:53 -04:00
Matthew Barnes
54c3f05848 Desensitize "Select All" when GtkEntry is empty
This avoids possible confusion in some situations, and
selecting an empty string is not very useful.

https://bugzilla.gnome.org/show_bug.cgi?id=647962
2011-04-26 07:56:09 -04:00
Matthias Clasen
7d3693b82b GtkEntry: Explicitly disconnect keymap signals
Might fix https://bugzilla.gnome.org/show_bug.cgi?id=648419
2011-04-26 07:48:27 -04:00
Chun-wei Fan
13cff6ddce VS2008 support: Process filechooser gsettings xml
This will copy the xml file and compile it so that the GTK+3 filechooser
can be used on Windows, especially the MSVC-compiled versions.
2011-04-25 15:05:02 +08:00
Abduxukur Abdurixit
099e1afadc Added UG translation 2011-04-24 21:36:40 +02:00
Abduxukur Abdurixit
5600214b90 Added UG translation 2011-04-24 21:28:59 +02:00
Javier Jardón
ac4c12ff60 tests: Use gtk_box_new() instead v/h subclasses 2011-04-22 14:44:02 +01:00
Benjamin Otte
bf41392861 label: Fix an invariant leading to required > minimum 2011-04-22 02:51:52 +02:00
Michael Natterer
6c24a25751 gdk: add precondition checks to all GdkKeymap functions
so it warns instead of simply crashing. Also fix some whitespace
stuff.
2011-04-21 23:54:52 +02:00
Alberto Ruiz
953112f91f Adding allow-none introspection annotation for GtkInitFunc parameters 2011-04-20 20:11:11 +01:00
Alberto Ruiz
d78ace6c34 Adding introspection annotation to GtkModuleIinitFunc to specify array and length parameters 2011-04-20 20:06:14 +01:00
Javier Jardón
58b2e9caaf docs: Do not generate the template files anymore
All the documentation is now in inline comments
2011-04-20 12:21:57 +01:00
Benjamin Otte
da1f618b09 entry: Translate progress region properly when drawing text 2011-04-19 22:18:19 +02:00
Benjamin Otte
76294fcf1d entry: No need to queue a redraw on state changes
GtkWidget already does that.
2011-04-19 22:18:19 +02:00
Benjamin Otte
2d58625e02 entry: Also update cached style values when the state changes 2011-04-19 22:18:19 +02:00
Benjamin Otte
66dc6ea150 entry: Initialize cached values 2011-04-19 22:18:19 +02:00
Benjamin Otte
a9a2a08162 entry: g_object_notify*( when we change the invisible char 2011-04-19 22:18:19 +02:00
Benjamin Otte
0aae66c15e entry: Split out style-updating things into their own function 2011-04-19 22:18:19 +02:00
Benjamin Otte
72ebc788a6 entry: Move cairo_save() call for clarity
We want save, clip, draw1, restore, save, clip, draw2, restore
and not save, save, clip, draw1, restore, clip, draw2, restore

Functionally the same thing, but not as obvious
2011-04-19 22:18:19 +02:00
Benjamin Otte
6fee78341a entry: Omit useless clip
We do the same clip further above, so no need to repeat it
2011-04-19 22:18:19 +02:00
Benjamin Otte
033d204b9e entry: Guard clipping with a save/restore
Just t be sure, so people don't get bugs later when they refactor code.
2011-04-19 22:18:18 +02:00
Benjamin Otte
c70698084c entry: Remove needless check
The only window we're ever called to draw is our own window. D'oh.
2011-04-19 22:18:18 +02:00
Benjamin Otte
10fd53970c docs: Strictify the docs for gtk_cairo_should_draw_window()
We don't actually enforce the docs, but we will in the future. (in fact,
I only added this because widgets were doing stupid things.)
2011-04-19 22:18:18 +02:00
Benjamin Otte
9bd206a65c label: No need to special case single-line mode
It's already taken care of by the layout.
2011-04-19 22:18:18 +02:00
Benjamin Otte
38676ef718 label: Request more natural size for ellipsizing wrapping labels 2011-04-19 22:18:18 +02:00
Benjamin Otte
484e04aed2 label: Pass the desired height to measuring layout
We always pass -1 for now.
2011-04-19 22:18:18 +02:00
Benjamin Otte
403815f96f label: Remove wrap width leftovers
They're not used anymore, so we can just delete all of this code.
2011-04-19 22:18:18 +02:00
Benjamin Otte
2ecab7b90d label: Set the height of the label when ellipsized or wrapped
Obviously, we want to set it to the label's allocated height.

Also simplifies the size allocation code.
2011-04-19 22:18:18 +02:00
Benjamin Otte
5cb260075e label: Don't use a rectangle variable if we don't use a rectangle 2011-04-19 22:18:18 +02:00
Benjamin Otte
26b2f3127a label: Redo size computation
This gets use closer to the label sizing discussed on the mailing lists.
2011-04-19 22:18:18 +02:00
Benjamin Otte
8e34bff045 label: Set wrap on the layout unconditionally 2011-04-19 22:18:18 +02:00
Benjamin Otte
ffb23fb827 label: Remove duplicated comment 2011-04-19 22:18:18 +02:00
Benjamin Otte
c8ce1106c1 label: Don't try to guess a label's size
People should use window default sizes or label
width-chars/max-width-chars to find the idea layout for a label inside
of relying on magic.
2011-04-19 22:18:18 +02:00
Benjamin Otte
b5dc24fd28 widget: Make gtk_widget_get_aux_info() private 2011-04-19 22:18:18 +02:00
Benjamin Otte
c7cae341a1 label: Don't care about aux info
aux info is something that GtkWidget should do, not any of its
subclasses.
2011-04-19 22:18:18 +02:00
Benjamin Otte
4000d65ee3 paned: Use hfw queries during allocation 2011-04-19 22:18:17 +02:00
Benjamin Otte
116a104970 paned: Cleanup size_allocate()
Don't keep the allocation in 2 variables, just keep the first one.
2011-04-19 22:18:17 +02:00
Benjamin Otte
392c0dc145 paned: Implement get_width_for_height() and get_height_for_width() 2011-04-19 22:18:17 +02:00
Benjamin Otte
a45c599543 paned: Generalize code
No semantic changes, just splitting out a common function and passing a
-1 around.
2011-04-19 22:18:17 +02:00
Gintautas Miliauskas
09cbf24e72 Updated Lithuanian translation. 2011-04-19 13:59:58 +02:00
Javier Jardón
5f3e73eae3 Move documentation to inline comments: GtkRc
The last one!
2011-04-19 11:51:06 +01:00
Lapo Calamandrei
ce80929b83 [broadway] New adwaita based css for "wm"
Created by Lapo Calamandrei.
2011-04-19 08:30:21 +02:00
Alexander Larsson
dc56a51cec [broadway] Remove debug spew 2011-04-18 20:51:53 +02:00
Alexander Larsson
cfd8150759 [broadway] Use cairo to generate png uris 2011-04-18 20:51:53 +02:00
Alexander Larsson
0abd5e2767 [broadway] Stream data over websocket
The zlib compressed xmlhttprequest thing was a nice hack, but it doesn't
really work in production. Its not portable, doesn't have enought API
(missing notification for closed sockets) and having to synchronize
between two different connections in a reliable way is a pain.

So, we're going everything over the websocket. This is a pure switch,
but after this we want to modify the protocol to work better over
the uncompressed utf8 transport of websockets.
2011-04-18 20:51:53 +02:00
Alexander Larsson
2cb9ce954e [broadway] Remove old demo code 2011-04-18 20:51:53 +02:00
Javier Jardón
edd186e274 Move documentation to inline comments: GtkUIManager 2011-04-18 18:55:34 +01:00
Alexander Larsson
02e9b97981 [broadway] Implement wm close in browser 2011-04-18 11:50:29 +02:00
Alexander Larsson
52074b4cac [broadway] Report most special keys in keypressed
Some special key keycode values as seen in keydown actually match
normal keys (like "." has a keyCode 46 on keyPress, which is the same
as Delete, but 190 for KeyDown). So we must match the special keys on
keypress. However, some things must be checked on keydown as they are not
generating keypress events.
2011-04-18 10:55:41 +02:00
David King
e279210522 widget: add Since tags for margin accessors 2011-04-18 08:22:54 +02:00
Matthias Clasen
dd73be389b Fix commit 5f55c42047
Make gtk_menu_shell_activate static and don't use it
outside gtkmenushell.c
2011-04-17 23:15:06 -04:00
Chun-wei Fan
c4010ec039 Update build/win32/vs9/README.txt
Update again due to the usage of ATK-2.x to avoid confusion
about its usage in compilation...
2011-04-18 10:16:01 +08:00
Javier Jardón
5ae68baaf2 docs: Remove no longer needed template files 2011-04-18 02:08:38 +01:00
Javier Jardón
d2d42f9bfc Move documentation to inline comments: GtkMenuItem 2011-04-18 02:08:37 +01:00
Javier Jardón
93522ce25f Move documentation to inline comments: GtkFontSelectionDialog 2011-04-18 02:08:37 +01:00
Javier Jardón
9d63d16e3e Move documentation to inline comments: GtkWindowGroup 2011-04-18 02:08:37 +01:00
Javier Jardón
f7b7e8a6b8 Move documentation to inline comments: GtkDnd 2011-04-18 02:08:37 +01:00
Javier Jardón
911ae50956 Move documentation to inline comments: GtkTreeModelSort 2011-04-18 02:08:37 +01:00
Javier Jardón
b83a4f2e1d Move documentation to inline comments: GtkToggleButton 2011-04-18 02:08:37 +01:00
Javier Jardón
5ff0fb6bbd Move documentation to inline comments: GtkSizeGroup 2011-04-18 02:08:37 +01:00
Javier Jardón
0553a5524d Move documentation to inline comments: GtkTextBuffer 2011-04-18 02:08:36 +01:00
Javier Jardón
138409faae Move documentation to inline comments: GtkPrintUnixDialog 2011-04-18 02:08:36 +01:00
Javier Jardón
14f12a4b1b Move documentation to inline comments: GtkPrintSettings 2011-04-18 02:08:36 +01:00
Javier Jardón
25c2569a5d Move documentation to inline comments: GtkPrintContext 2011-04-18 02:08:36 +01:00
Javier Jardón
c029306b4c Move documentation to inline comments: GtkRadioMenuItem 2011-04-18 02:08:36 +01:00
Javier Jardón
c9af14678e Move documentation to inline comments: GtkTextMark 2011-04-18 02:08:36 +01:00
Javier Jardón
7ee963c260 Move documentation to inline comments: GtkRadioToolButton 2011-04-18 02:08:36 +01:00
Chun-wei Fan
b810bc88ec Update VS 2008 support to use ATK-2.0
-Update GTK+ project and property sheet to use ATK-2.0.
-Tell people about this in the README.txt file
2011-04-18 01:57:37 +08:00
Chun-wei Fan
11ba5c209b Update build/win32/vs9/README.txt
Make the VS 2008 build instructions and information
more up-to-date and clearer to people.

Please let me know if I have missed any needed details...
Thanks
2011-04-18 00:17:51 +08:00
Paolo Borelli
1ad1c33f52 Small cleanup in label sizing code.
Move ellipsized_chars calculation in the scope where it is used.

https://bugzilla.gnome.org/show_bug.cgi?id=647284
2011-04-17 17:23:26 +02:00
Paolo Borelli
af7650ce1f Factor out a get_char_pixels method for clarity.
https://bugzilla.gnome.org/show_bug.cgi?id=647284
2011-04-17 17:16:47 +02:00
Ignacio Casal Quinteiro
76a571b61e [textview] remove idles when unmapping
This avoids the textview taking the whole cpu when it is hidden.
2011-04-17 16:10:48 +02:00
Benjamin Otte
49c7869582 docs fix typo
Was accidentally introduced in 1351d40cfe

Thanks Paolo for noticing.
2011-04-17 12:49:58 +02:00
Kristian Rietveld
874dfc24b2 treeview: Do not unconditionally set width_changed to TRUE, which redraws
Patches by Benjamin Otte.

The "invalidate last column" hack is removed.  It is now of no use since
the entire widget will be redrawn when a single column changes.
2011-04-17 01:14:51 +02:00
Kristian Rietveld
4d5d915afe treeview: if we are below rows that changed height: redraw
We have to redraw if we are below a couple of rows that changed height
in do_validate_rows().  This will still require a redraw for a large
amount of cases, can we do better?  You would expect that a redraw of
the tree view is not required when the dy changes with the same delta
as the delta of the height accrued when validating the nodes.  This
further optimization will likely require changes to the top_row/dy
synchronization code.
2011-04-17 01:14:51 +02:00
Kristian Rietveld
4594370b46 treeview: Avoid queueing a redraw in do_validate_rows()
If the changed rows are not visible, we likely do not have to redraw
in conjunction to resize.  Spotted by Benjamin Otte.
2011-04-17 01:14:51 +02:00
Benjamin Otte
a5e1337ad7 cssprovider: Move private struct definition to header
consistency, improved debugging, etc
2011-04-16 22:31:25 +02:00
Benjamin Otte
1351d40cfe entry: Fix gtk_entry_get_icon_at_pos()
The passed in coordinates are widget-relative, not window-relative.
2011-04-16 22:31:24 +02:00
Benjamin Otte
f2a20cd9fd entry: Use the new get_frame_size() argument in gtk_entry_draw_frame() 2011-04-16 22:31:24 +02:00
Benjamin Otte
fd9aac8225 entry: Add the ability to query frame size in two ways
TRUE: relative to widget->window
FALSE: relative to widget

For now, no caller has beeen changed.
2011-04-16 22:31:24 +02:00
Benjamin Otte
7ef113ce56 window: Only draw the resize grip if it is actually visible
This issue can only be seen if someone calls gtk_widget_draw() on the
window as otherwise gtk_cairo_should_draw_window() would return FALSE.
2011-04-16 22:31:24 +02:00
Benjamin Otte
71e9606e16 docs: Fix wrong description for query-tooltip
Coordinates are not relative to widget->window
2011-04-16 22:31:24 +02:00
Benjamin Otte
e29cceb391 menushell: Include a function in the private header
Don't copy over the implementation. This avoids a copy of the function.
Reverts 0098344f84.
2011-04-16 22:28:40 +02:00
Benjamin Otte
6b712ac93b window: cast value so gcc shuts up 2011-04-16 22:06:41 +02:00
Kristian Rietveld
84ebafc305 Merge two if-blocks with same condition 2011-04-16 20:16:03 +02:00
Xavier Claessens
00fa4a2fc0 Do not call invalidate_empty_focus() when not realized
Fixes bug 626503
2011-04-16 20:13:51 +02:00
Stéphane Maniaci
e3ce60cc2d Make GtkFileChoser remember the last directory opened
Introduces a 'last-folder-uri' GSettings key, where we remember the last-opened
folder from the previous instance of the file chooser.

The idea is that this works globally, across all applications, so it will be
easy to do things like

  1. Save an attachment from a mail (or some other file)
  2. Open another program
  3. Do File/Open and automatically get sent to the folder where (1) happened.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>

https://bugzilla.gnome.org/show_bug.cgi?id=644426
2011-04-15 15:34:22 -05:00
Alexander Larsson
1fdd4915fc [broadway] Make close button text unselectable 2011-04-15 20:34:32 +02:00
Alexander Larsson
7f14b8bedf [broadway] Implement gdk_window_begin_resize_drag
This makes the resize grip work.
2011-04-15 20:34:32 +02:00
Alexander Larsson
c331d397f0 [broadway] Remove window from hashtable when destroyed 2011-04-15 20:34:32 +02:00
Alexander Larsson
66231a29b8 [broadway] Ungrab if grabbed window is destroyed 2011-04-15 20:34:32 +02:00
Alexander Larsson
22c250e324 [broadway] Correctly handle ungrabs in the browser side
Always call doUngrab to get the right event, and always do this
if the grabbed window is hidden or destroyed.
2011-04-15 20:34:31 +02:00
Chun-wei Fan
0098344f84 Update gtk/gtkmenuitem.c...
Copy over the implementation of _gtk_menu_shell_activate
so that C4013 warning/error (aka gcc's "implicit
declaration of ...") can be avoided when compiling with MSVC

This is in response of the changes for bug 554057 in commit
5f55c42047
2011-04-16 00:42:08 +08:00
Paolo Borelli
3e6af07f46 Free MenuPopulateData struct in all the cases.
For clarity factor out create/free functions.

https://bugzilla.gnome.org/show_bug.cgi?id=646876
2011-04-15 11:11:17 +02:00
Javier Jardón
09efa564cb Move documentation to inline comments: GtkHSV 2011-04-15 02:14:14 +01:00
Javier Jardón
b398f96bed Move documentation to inline comments: GtkMenuToolButton 2011-04-15 02:14:14 +01:00
Javier Jardón
c0b3bfd7b6 Move documentation to inline comments: GtkToolButton 2011-04-15 01:41:13 +01:00
Javier Jardón
c1e8577a66 Move documentation to inline comments: GtkLabel 2011-04-15 01:41:13 +01:00
Javier Jardón
c5a760ad2b Move documentation to inline comments: GtkListStore 2011-04-15 01:41:13 +01:00
Javier Jardón
0dd93537b3 Move documentation to inline comments: GtkIconTheme 2011-04-15 01:41:13 +01:00
Matthias Clasen
b097729d5a Don't leak a list when activating keybindings
Patch by Rui Matos,
https://bugzilla.gnome.org/show_bug.cgi?id=647790
2011-04-14 20:22:18 -04:00
Alexander Larsson
887743728f [broadway] Handle keyboard modifiers in state 2011-04-14 21:36:42 +02:00
Alexander Larsson
01da867dac [broadway] Emulate hardware keycodes in keyboard events
We can't really know the client side keymaps, so we use the keysym
as the hardware keycode (essentially claiming to have a keyboard with
one key for all possible keysyms). This is not ideal, but its hard to
do better with no knowledge of the client side keyboard mappings.
(And html keyboard events suck badly...)
2011-04-14 21:36:42 +02:00
Alexander Larsson
7d37534ee2 [broadway] Implement keyboard event better
We're using the noVNC keyboard even handling model (and some of the
code with permissions). This means we combine data from keydown and
keypress to figure out the translated keysyms according to the keyboard
layout at the users machine.
2011-04-14 21:36:42 +02:00
Chun-wei Fan
f9ad0c61b2 Add gdk_win32_window_get_type into gdk.symbols
This symbol needs to be exported for GDK (Win32) so that the
runtime checks for Win32 backend usage can be done on
MSVC-compiled versions of GTK+ too.

I did not add the corresponding symbols for the other backend
though-they are probably exported automatically by GCC AFAIK.

This is done to make commit
9db4accf9c
work on MSVC
2011-04-14 23:48:49 +08:00
Benjamin Otte
8632ec43eb label: we can't ignore sizes on ellipsized labels
So don't use this optimization when a label is ellipsized.

https://bugzilla.gnome.org/show_bug.cgi?id=646517
2011-04-14 14:59:24 +02:00
Benjamin Otte
0a23796f5d cssprovider: Use g_type_depth() instead of computing the depth manually 2011-04-14 14:59:24 +02:00
Benjamin Otte
dcae3598b3 sizerequest: return CONSTANT_SIZE in return_if_fail() 2011-04-14 14:59:24 +02:00
Benjamin Otte
616e6d1565 testgtk: Make it possible to stop the progressbar from updating
This way, I can check that my invalidation fixes actually work.
2011-04-14 14:59:24 +02:00
Matthias Clasen
c43ada95aa GtkTimeline: don't look when animations are disabled
Otherwise, we end up doing maximal work with minimal effect, and
bring the X server to 100% CPU. Note that this makes spinner widgets
look really unclear, but they really have to be changed to adapt
to enable-animations == FALSE at the widget level.
2011-04-14 08:58:48 -04:00
Javier Jardón
dd28e22aa1 Move documentation to inline comments: GtkIconFactory 2011-04-14 00:07:42 +01:00
Javier Jardón
6ec9ba2aad Move documentation to inline comments: GtkHandleBox 2011-04-14 00:07:42 +01:00
Javier Jardón
39179e3402 Move documentation to inline comments: GtkFontSelection 2011-04-14 00:07:42 +01:00
Javier Jardón
fe65ec5b87 Move documentation to inline comments: GtkFileChooserDialog 2011-04-14 00:07:42 +01:00
Javier Jardón
2da9a5791f Move documentation to inline comments: GtkFileChooserButton 2011-04-14 00:07:42 +01:00
Javier Jardón
fbb57d301d Move documentation to inline comments: GtkToggleToolButton 2011-04-14 00:07:42 +01:00
Matthias Clasen
fd48df53d1 Bump version 2011-04-13 18:15:43 -04:00
1910 changed files with 332636 additions and 230056 deletions

View File

@@ -1,7 +1,7 @@
## Makefile.am for GTK+
include $(top_srcdir)/Makefile.decl
SRC_SUBDIRS = gdk gtk modules demos tests perf examples
SRC_SUBDIRS = gdk gtk libgail-util modules demos tests perf examples
SUBDIRS = po po-properties $(SRC_SUBDIRS) docs m4macros build
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
@@ -63,10 +63,6 @@ gdk-x11-3.0.pc gdk-win32-3.0.pc gdk-quartz-3.0.pc gdk-broadway-3.0.pc gdk-waylan
rm -f $@ && \
cp gdk-3.0.pc $@
gtk+-*-3.0-uninstalled.pc: gtk+-3.0-uninstalled.pc
rm -f $@ && \
cp gtk+-3.0-uninstalled.pc $@
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = gdk-3.0.pc gtk+-3.0.pc gail-3.0.pc
@@ -84,8 +80,6 @@ DISTCLEANFILES = \
gdk-3.0.pc \
gdk-x11-3.0.pc \
gail-3.0.pc \
gtk+-3.0-uninstalled.pc \
gail-3.0-uninstalled.pc \
config.lt
distclean-local:
@@ -145,6 +139,7 @@ DISTCHECK_CONFIGURE_FLAGS = \
--enable-gtk-doc \
--enable-man \
--disable-rebuilds \
--disable-maintainer-mode \
--enable-introspection
GITIGNOREFILES = \

View File

@@ -1,6 +1,6 @@
# GTK+ - The GIMP Toolkit
GTESTER = gtester # in $PATH for non-GLIB packages
GTESTER = gtester -k # in $PATH for non-GLIB packages
GTESTER_REPORT = gtester-report # in $PATH for non-GLIB packages
# initialize variables for unconditional += appending
@@ -10,7 +10,7 @@ TEST_PROGS =
### testing rules
# Xvfb based test rules
XVFB = Xvfb -ac -noreset -screen 0 800x600x16
XVFB = Xvfb -ac -noreset -screen 0 1024x768x16
XIDS = 101 102 103 104 105 106 107 197 199 211 223 227 293 307 308 309 310 311 \
491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 \
991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 \
@@ -29,7 +29,7 @@ endif
XVFB_START = \
${XVFB} -help 2>/dev/null 1>&2 \
&& XID=`for id in $(XIDS) ; do test -e /tmp/.X$$id-lock || { echo $$id; exit 0; }; done; exit 1` \
&& { ${XVFB} :$$XID -screen 0 800x600x16 -nolisten tcp -auth /dev/null >/dev/null 2>&1 & \
&& { ${XVFB} :$$XID -nolisten tcp -auth /dev/null >/dev/null 2>&1 & \
trap "kill -15 $$! " 0 HUP INT QUIT TRAP USR1 PIPE TERM ; } \
|| { echo "Gtk+Tests:ERROR: Failed to start Xvfb environment for X11 target tests."; exit 1; } \
&& DISPLAY=:$$XID && export DISPLAY

855
NEWS
View File

@@ -1,3 +1,858 @@
Overview of Changes in GTK+ 3.3.14
==================================
* Theming
- Fixes for border handling in GtkEntry,
GtkCellRendererText, GtkComboBox
- Parse values more carefully, supporting
percentages, angles
- Implement CSS linear-gradient syntax
- Support background-size
- Support a gtk.gresource file in themes
* Bugs fixed
543520 Cups custom options are not sent properly
649121 Crash in GtkAppChooserDialog packagekit button
669176 Regression: atk-add-key-event-listener doesn't work
* Updated translations
Galician
Norwegian bokmål
Spanish
Overview of Changes in GTK+ 3.3.10
==================================
* GtkApplication:
- Move application menu handling over from GIO
- Fix resize grip positioning in GtkApplicationWindow
* Wayland:
- Make combo boxes work
- Make key modifiers work like on X11
- Make mouse buttons work correctly
* Quartz:
- Make key modifiers work more like they do on X11
* Printing:
- Fix handling of custom cups options
* Accessibility:
- Bring key snooping support back for now
* Translation updates:
Spanish
Overview of Changes in GTK+ 3.3.8
=================================
* GtkApplication:
- Supports logout notification and inhibiting
- Buttons, toolbuttons and switches can now be connected
to GActions
* GtkSpinButton no longer allows to change the value
when not editable
* GtkLabel link support has been rewritten to be be
more robust
* GtkBuilder:
- Supports the 'id' in GtkComboBoxText
- Can parse GVariant-valued properties
- Support loading from a GResource
* GtkImage:
- Support loading from a GResource
* GtkUIManager:
- Support loading from a GResource
* Accessibility:
- key snooping support has been removed
* Wayland backend:
- Cursor handling updates
- Look for cursors in the 'weston' directory
- Make resize grips work
- Implement device grabs
- Implement window geometry hints
- Set surface type based on window type hint
- Add basic clipboard and selection implementations
- Implement client-side keyboard repeat
- Update GdkWindow focus state to match reality
* Theming:
- Improved CSS compliance for selector matching
- Improved CSS compliance for value resolution,
including full support for 'inherit', 'initial',
'currentColor', 'none'
- Support border-style properties
- 'window-unfocused' has been renamed to 'backdrop'
* New deprecations:
- GdkColor
- GtkButton::inner-border
* Miscellaneous:
- Turn default theme css files and dnd cursors into
GResources
* Bugs fixed:
543520 Cups custom options are not sent properly
612396 ...default of entry-text-column for GtkComboBoxText
613728 Rationalize GtkTreeView focus
620240 GNOME Drag & Drop broken for remote X sessions
629878 Missing "Back" and "Forward" icons for Firefox
631414 Add symbolic constants for event emission control
639875 crashes when unparenting a tab from a window...
657367 GtkAction: Hold a reference to proxy widgets
659516 gtk_css_provider_to_string lacks "since" tag
660139 GtkGrid gives Gtk-Warnings about negative sizes when empty
660309 check x11 backend when create xim module
663479 "Finishing" ("Completion") and "Advanced" tabs are empty
665015 "Widget (%s) has more than one label" unwanted warnings
666103 Should be able to match the parent where a dropdown menu...
666600 allocate the CSS border and deprecate GtkButton-inner-border
666685 SIGSEGV in _gtk_tree_selection_internal_select_node
666710 Fix compose sequences disabling other sequences
666842 [patch] "sticky" window state reported wrongly on X11
667018 Fix compilation on Windows
667229 gtkspinbutton: Respect value of inherited 'editable' property
667394 Gtk(Tool)Button: add an 'action-name' property
667473 gdk_rgba_free (NULL)
667485 gdk_rgba_parse error checking
667534 Non-XInput2 build fix
667546 GApplication doc mentions g_application_set_app_menu
667628 GtkWindow:application property should have G_PARAM_CONSTRUCT
667695 GAction leaked in examples/plugman.c
667705 fix up GtkApplication on OS X
666921 Fix the _NET_SUPPORTING_WM_CHECK window fetch to be spec...
* Translation updates:
Arabic
Bulgarian
Finnish
Hebrew
Norwegian bokmål
Spanish
Overview of Changes in GTK+ 3.3.6
=================================
* GtkApplication has grown support for exporting application
menus and menubars on the bus, as a GMenuModel. The
new GtkApplicationWindow toplevel automatically
displays these menu models when needed.
* GtkSpinButtons have received a long-overdue face-lift
to make them easier to use with both mouse and touch.
* GtkScale has gained a has-origin property to request
filled-in drawing of the trough.
* GtkWindow can now request that the window manager hide
the titlebar when the window is maximized.
* The GtkTreeView accessibility support and the core
treeview code have been extensively refactored;
performance should be much improved. But watch out
for regressions.
* The GtkFileChooser entry completion code has been
extensively refactored; it now uses GtkEntryCompletion
* Excessive dependencies have been culled from Requires:
lines in pc files. Dependent modules may have to declare
dependencies that they were getting 'for free' in the past.
* Theming improvements:
- The background-clip and background-origin CSS properties
have been implemented
* Win32 improvements:
- Theming of column headers, radio buttons and menuitems,
notebook tabs, etc has been fixed
- Menus, tooltips, and other popups show above the task bar
* Wayland:
- The Wayland backend has been updated to the current Wayland API
* Bugs fixed:
603823 Print to File suggests ".ps" as filename...
640317 gtk_draw_insertion_cursor should be moved to gtk_render
646461 Leak in gtkfilechooserbutton.c: model_free_row_data
650943 Clicking resize grip causes strange mouse grabbing beh...
661428 Allow themes to know when a toplevel window appears un...
662814 Request for way to tell gtk_recent_manager_add_item_qu...
664137 Crash in Audacious audio player when browsing the add ...
664456 segfault on arrow keypress in empty GtkIconView
664467 prop-editor is broken for GdkColor properties
664469 color button doesn't notify "color" and "alpha" when c...
664537 GtkCssProvider: don't segfault when CSS file is not found
664640 CUPS authentication does not work
665140 Draw the scale split
665326 FTBFS: missing Xi/Pango/Fc for gtk-query-immodules-3.0
665616 Add hide-titlebar-when-maximized setting
665741 Crashes in treeview when pressing End key.
665999 Introspection wrong for GDK_INPUT_ONLY vs GDK_INPUT_OUTPUT
666242 Separators in menuitem are not vertically aligned
641999 Consider adding a workarea API
657578 Toggling the state of a GtkCheckButton causes accessible...
659445 Accessible event.any_data is incorrect for text-removed...
663573 Rework GtkFileChooserEntry
666392 widget: Flip the sensitive flag even if the state doesn't...
666552 Layered region is leaked in GdkWindow
* Updated translations
Breton
Kazakh
Russian
Slovak
Spanish
Overview of Changes in GTK+ 3.3.4
=================================
* The beagle search backend has been dropped
* Stop using GDK/GTK_DISABLE_DEPRECATED guards for deprecated
functions; instead use function attributes
* Make GtkCellRendererAccel support naked keyvals, so it can
be used in gnome-control-center
* GDK changes
- Make the Mod1 == Alt assumption official
- The Broadway backend has initial support for V7+ websockets
* GtkApplication no longer uses gtk_main internally
* GtkNotebook now destroys its action widgets, instead of leaking them
* Theming improvements:
- Background images can now be tiled instead of stretched,
using the background-repeat CSS property
- Unfocused windows can be themed differently, using
the 'window-unfocused' state flag
* Accessibility improvements:
- Much better treeview performance
- Completely ignore invisible columns in treeviews
- Many a11y/treeview-related crashes fixed
- Combo box keybindings are reported again
- Textview respects display lines again
* OS X improvements:
- Improved handling of motion events and event state
- Handle recursive CFRunLoops
- More fixes to accel handling
* Win32 improvements:
- Many fixes, making this the first version of GTK+ 3 that
works well on Windows
* Bugs fixed:
84314 gdk_display_sync() and gdk_flush()
142874 use of SetWindowLong in gdkwindow-win32.c causes incorrect...
169811 configure_event and window-state-event are not emitted con...
171456 "Keep Above" option in Gimp broken on Win32
324254 Realizing a top-level window widget early positions it at 0,0
516822 gtk_window_fullscreen does not resize correctly if removing...
542777 Scroll-Wheel doesn't scroll (Win)
552041 Windows' System Menu from taskbar is buggy
603559 gtk should handle missing immodules better
604156 gtk_window_set_modal() freezes application completely
606727 Can't bind keys on numerical keypad with numlock on
612359 Dialog positioning hints fail on Windows 7
616544 win32 drag and drop (DnD) broken for GTK+ 3
628049 Native windows don't work very well
631384 Images pasted from clipboard are shifted/wrapped
647460 typo in msw_style.c?
652239 win32: resurect Windows clipboard selection notification
658841 Ensure native window in gdk_win32_drawable_get_handle()...
658842 Fix win32 _gdk_windowing_window_at_pointer - port to gtk3
659151 Cannot obtain accessible keybinding for comboboxes
659257 Gtk-WARNING **: GtkRecentChooserWidget 0x80da890 is mapped...
661858 Add annotations for some GtkRadio* constructors
661859 Add annotations for some GtkSymbolicColor constructors
661997 Gtk crashes when changing the TreeView model while rubber...
662160 gtk_print_operation_cancel fails
662628 Add keyboard brightness to keyname-table.h
662670 Pressing "Enter" in print dialog box will not cause printing
662691 menuitem: Always treat submenus as popup
662755 Keycode support in GtkCellRendererAccel broken
662839 Fix XIGrabKeycode usage
662870 Fix introspection annotations for GtkRadioToolButton
662953 x11: Fix window manager change detection
663073 gtk_dialog_new_with_buttons should be G_GNUC_NULL_TERMINATED
663138 iconview: layout items immediately when setting a GtkTreeModel
663182 Dragging any item on OS X crashes Banshee
663345 'from gi.repository import Gtk' fails in jhbuild
663396 With multiple master devices, right clicking may show popup...
663522 css: start background-repeat
663605 Fix event->state of many event types on quartz
663694 GtkTreeViewAccessibleCellInfo are leaked
663761 gtk: Fix GtkCellRenderer ignoring keycodes
663825 calling gtk_progress_bar_set_fraction with a fraction > 1.0...
663856 Make option-foo accelerators use the right symbol
663994 GtkTextView no longer reports the correct line text to ATs...
664021 GtkSpinButton: Clarify clamping behavior in gtk_spin_button...
664027 Build fails with undefined reference to `gdk_keymap_get_mod...
664132 gdk_cairo_region_create_from_surface broken on PPC...
Overview of Changes in GTK+ 3.3.2
=================================
* GtkCellRendererAccel can show virtual modifiers
* Theming improvements:
- CSS: 'transparent' can be used a color
- Improved notebook tab rendering
- Support opacity and rounded corners for tooltips
* OS X improvements:
- Disable mnemonics
- Make Option work as a modifier
- Cleanup of modifiers: Alt/Option is MOD1, Command is MOD2
- Fix keyval <> Unicode and lowercase/uppercase mapping
* Improvements of cross-platform key and button event handling:
- Support '<Primary>' in accelerator strings
- Use approprivate modifiers for extending and modifying
selections, depending on the platform
- Use the appropriate button for triggering context menus,
depending on the platform
* Bugs fixed:
628936 gtk build fails because of objective-c elements
653289 GtkCellRendererText "edited" signal not emitted...
655057 rendering issues with map plugin
657770 Write to released memory in gtkdnd-quartz.c
658767 Drag and Drop NSEvent capture is racy
658772 Directory paths for resource directories are hard-coded
659022 gtk_tree_model_filter_clear_cache_helper: assertion failed
659655 3 errors in Spanish translation of gtk+
660687 roxterm X crashes with accessibility enabled
660730 Use of "struct stat" breaks Windows
659602 Provide an abstraction for the platform's use...
659406 Abstract what triggers a context menu
660619 __SIZEOF_INT__ and __SIZEOF_POINTER__ may not be defined
599617 a modern tooltip look
628936 gtk build fails because of objective-c elements
631167 GtkComboBox with has-entry=true should not require...
651818 Crash in gtk_app_chooser_refresh()
659672 gtk_tree_view_column_dispose() does not remove from tree...
660139 GtkGrid gives Gtk-Warnings about negative sizes...
660833 all: add an 'only-child' pseudo-class selector
661032 out-of-tree builds result in broken gtk-doc documentation
661089 gtkfontbutton.c will not compile on Solaris
661780 GTK_STOCK_INDENT references wrong images
661835 GMountOperation on OpenBSD: remove the need for kvm(3)
662024 tests/css/parser/selector.errors missing from EXTRA_DIST
662132 --sync
662177 Toolbar returns invalid paths for toolbar items
662230 treemodel: document gtk_tree_path_free() as allow-none
662308 Scrollbars seem to unconditionally reserve a space...
662467 tooltip: only update shape if the window is realized
662481 Clean up the gtkprivate directory redefinition mess
662629 notebook: update tab area allocation when switching page
* Translation updates
Brazilian Portuguese
British English
Catalan (Valencian)
Czech
Dutch
Esperanto
Japanese
Galician
Latvian
Serbian
Spanish
Simplified Chinese
Traditional Chinese
Vietnamese
Overview of Changes in GTK+ 3.2
===============================
* GtkFontChooser:
- More speed ups. The font chooser will now load
instanteously, even if you have thousands of fonts
* Bug fixes
659826 new broadband connection weirdness in assistant
659966 Fix module blacklisting
640741 Fix return value fo gtk_tree_view_column_cell_get_position
Assertion in the treeview accessible code
Fix erroneous beeping in textview keynav
* Translation updates
Assamese
Basque
Brazilian Portuguese
Bulgarian
Catalan
Czech
Danish
French
Galician
German
Hungarian
Japanese
Korean
Latvian
Lithuanian
Oriya
Polish
Portuguese
Russian
Slovenian
Spanish
Swedish
Telugu
Overview of Changes in GTK+ 3.1.92
==================================
* GtkIconView:
- Cells will now be prelighted, if you set the
GtkCellRendererPixbuf::follow-state property.
* GtkFontChooser:
- Speed up population of the font list somewhat.
More speedups are expected in 3.2
* Bugs fixed:
615501 GtkIconView does not support prelight cells
658981 Inability to effectively clear string indicator in stf imp...
659241 GtkPaned initially allocates space for separator, even if...
659247 link-button: Reset the mouse cursor when destroyed
* Translation updates:
Asturian
Belarussian
Brazilian Portuguese
British English
Bulgarian
French
Galician
German
Latvian
Portuguese
Punjabi
Russian
Serbian
Slovenian
Swedish
Overview of Changes in GTK+ 3.1.90
==================================
* GtkAppChooserButton: A new function has been added
that makes it possible to have the button select the
default app (as opposed to the most-recently-used app).
* A lot of feedback on the the tree model refactoring has
been incorporated via new test cases and bug fixes
* The filechooser search has been ported to tracker 0.12
and is using the tracker DBus API directly now.
* The new fontchooser API has been reworked a bit to make
it follow the same pattern we use else where. GtkFontChooser
is now an interface that is implemented by GtkFontChooserButton,
GtkFontChooserDialog and GtkFontChooserWidget (to which the
original GtkFontChooser has been renamed).
* Bugs fixed
514843 gtkfilechooser should be more robust to malformed URIs...
617583 Dead accents keys don't work in GTK+ applications on OSX
642706 No way to select the default entry
657353 GtkTreeModelFilter hangs when filtering
657627 new font chooser API inconsistent
658272 Port gtksearchenginetracker.c to tracker 0.11/0.12
658379 Disabled devices still added to list on startup
658398 Use of uninitialized variable reported by Valgrind
658507 better comboboxes for right to left languages
658600 Geany crashes when reopening file chooser dialog
658696 Crash when inserting a new node
658774 Regression: GtkFileChooserButtons do not expand
* Translation updates:
Belarusian
British English
French
Galician
Indonesian
Italian
Latvian
Norwegian bokmål
Persian
Polish
Portuguese
Punjabi
Simplified Chinese
Slovenian
Spanish
Swedish
Tamil
Overview of Changes in GTK+ 3.1.18
==================================
* GtkFileChooser:
- It is no possible to go to the containing folder of a
selected file in recent files or search results.
* Bugs fixed
530253 typo ifaces under gtk_tree_view_set_reorderable
566202 GTK_SELECTION_MULTIPLE description unclear
581435 gtk_tree_view_set_drag_dest_row() needs more documentation
655631 Description of x and y parameters in gtk_render_arrow is in...
657793 Support NULL sibling in gtk_grid_attach_next_to
657882 gtk_css_provider_propagate_error's signature not updated...
657963 themingengine: remove xthickness FIXME from gtk_render_line()
657985 reeview: add GTK_STYLE_CLASS_SEPARATOR for tree view separators
658008 Centered text alignment in GtkAssistant is wrong
658077 Add theming support to GtkPathBar
658111 gtk_label_set_pattern() is reset by a call to gtk_box_pack_...
658168 Gtk-Message: Failed to load module "gail"
658200 gtk_toolbar_finalize() does stuff it shouldn't
Fix colord support in the print dialog
* Translation updates
Belarusian
Brazilian Portuguese
Esperanto
Galician
Korean
Lithuanian
Overview of Changes in GTK+ 3.1.16
==================================
* Make distcheck work again, and fix errors that crept in by
lack of a working distcheck.
* Bugs fixed:
656223 GtkToolShell: Move vfunc default results to default impl...
Overview of Changes in GTK+ 3.1.14
==================================
* GtkTreeView:
- The GtkTreeModelFilter and GtkTreeModelSort implementations
have been improved and a comprehensive test suite has been added.
* GtkFileChooser:
- The selected file(s) can now be copied to the clipboard
* Bugs fixed:
656851 Allow use of GVariant in GtkListStore
344858 gtk_menu_item_new_with_label() created widget with refcount 2
349502 option to copy full path in "Save AS"/"Open file" dialogs
621076 GtkTreeModelFilter does not emit all signals in some situations
634136 GtkTable::children accessor
649588 crash when sending a notification: "Gdk-CRITICAL **: gdk_visual_...
650762 gtk_misc_set_alignment replacement with the new API functions
651827 Crash in check_application()
656986 GtkSwitch is unusable when added to primary toolbar.
657146 Missing files in POTFILEs.in
657260 Gtk should use AtkWindow and remove that hack on GailUtil
657359 Crash when specifying data length in gtk_css_provider_load_...
657384 missing accessors for GdkEvent structures
* Translation updates:
Galician
German
Gujarati
Indonesian
Norwegian bokmål
Persian
Russian
Serbian
Spanish
Swedish
Traditional Chinese
Uighur
Overview of Changes in GTK+ 3.1.12
==================================
* GtkFontChooserDialog: A newly designed font selection dialog
that is intended to replace GtkFontSelectionDialog
* Drawing of focus rectangles is now optional; it can be turned
off altogether, or until actual keyboard interaction happens,
with the gtk-visible-focus setting.
* OS X: Fixes for 10.7 (Lion)
* Bugs fixed:
407885 A new GtkFontSelectionDialog
508601 Copying from GTK+ applications causes crash
599664 The print dialog should not block while looking for an...
645258 Add gtk_text_iter_assign API
649567 hide focus rectangles when not keynavigating
652991 Remove local copy of introspection.m4
653817 Would like GtkGrid methods to insert rows/columns
653964 Installing MinGW32 build misses gdk/win32 headers
655074 Fix crash with undecorated windows on MacOS Lion
655122 Crash when resizing window on MacOS Lion
655173 small memory leak in GtkStyleProperty
655495 Make X11-specific functions introspectable
655496 X11-specific objects methods are introspected as static functions
655545 condition can never be true in gtk_tree_view_real_set_cursor
655822 Removal of GSettings key causes crash on upgrades
656098 Tweak GtkAppChooser's short description
656421 3.1.10: G_DISABLE_DEPRECATED detection breaks compilation
* Translation updates
Brazilian Portuguese
Bulgarian
Russian
Spanish
Swedish
Traditional Chinese
Overview of Changes in GTK+ 3.1.10
==================================
* Assorted file chooser improvements/redesign:
- Remove the expander in Save mode
- Move the path bar up in Save mode
- Remember the last opened directory
- Start in recently-used mode when no folder is set
- Update recent-files when confirming in the file chooser
* Accessibility:
- Gail has been merged into GTK+ and is no longer a module
- A testsuite for a11y functionality has been added
* Theming:
- Icon view cells can now have a border
* GtkMountOperation can now show processes on OpenBSD
* Gdk input devices now expose their XInput2 device ID
via gdk_x11_device_get_id()
* Bugs fixed:
653450 gtkfilechooser crashes when adding favorite
653705 GtkAssistant doesn't notice destroyed pages
653947 Crash in gdk/x11/gdkdevicemanager-xi2.c:get_event_window
654125 gdkoffscreenwindow set any impl handlers to null...
654179 iconview: make it possible for selected cells to render...
654428 focusable labels are emitting inappropriate object:text-sel...
654678 Message dialog's primary text font increases on every call...
654695 Memory corruption in gtk_theming_engine_register_property()
654720 void return issues cause compile issues for GTK 3.1.8
655009 Clamp border radius following CSS specs
654266 No longer possible to set empty text on a GtkProgressBar
* Translation updates:
Galician
German
Hebrew
Latvian
Lithuanian
Norwegian bokmål
Persian
Polish
Slovenian
Spanish
Uighur
Overview of Changes in GTK+ 3.1.8
=================================
* Theming improvements:
- Multiple colors are now supported
- Support CSS font properties like font-size, font-family, etc
- nth-child works for toolbars too
* Bug fixes:
652506 Improve GtkAssistant button labels
652618 themingengine: shrink the background size to the padding-box
652769 Reordering/removing hidden children in GtkBox results in 100% CPU
653053 Avoid GApplication being released twice...
653191 uninitialized variable in completion_match_func
653333 Assigned value is garbage or undefined in gtktoolpalette.c:565
653512 GtkEntryCompletion: Use a PAGE_STEP macro instead of a magic number
653785 GtkStyleContext ignores style classes when getting style properties
* Translation updates:
Belarusian
Dutch
Galician
Hebrew
Norwegian bokmål
Persian
Slovenian
Spanish
Overview of Changes in GTK+ 3.1.6
=================================
* GtkOverlay is a new container that allows to place one or more
'overlay' widgets on top of another widget. This can be used
for 'floating statusbars' and similar interfaces.
* GtkLockButton has been simplified in appearance to look like
a normal button
* GtkNotebook now supports height-for-width layout
* Accessibility for menuitems and combo boxes has been restored
* The horizontal and vertical subclasses of GtkBox, GtkPaned,
GtkSeparator, GtkScrollbar, GtkScale and GtkButtonBox have
been deprecated
* The print dialog can now display color profile information
* Many enhancements and fixes to CSS theming
- The CSS parser has been rewritten with the goal of better
CSS compliance and improved error handling
- A testsuite for the parser has been added
- Attributes can be inherited from parent widgets
- Shorthand properties are supported
- Color and font attributes are now inherited
- Borders and padding are now handled much more consistently,
and border-radius support is more complete
- text-shadow, box-shadow and icon-shadow attributes are now
supported
- nth-child works for boxes
* Bug fixes:
353712 allow reducing selection in GtkLabel
576492 GtkBuilder does not respect G_PARAM_CONSTRUCT properties
624539 Keep track of last focused window
634491 gtk_tree_path_append_index() is linear in the number of indices
634994 Explicitly declare internal reserved bits in GdkModifierType
641087 Wish: GtkApplication::window-added signal
642768 Make tracker search backend a bit less verbose
642773 Make file search non-case sensitive
642929 GtkFileChooserDialog with GTK_FILE_CHOOSER_ACTION_CREATE_...
644906 gtkimcontextime.c: NULL pointer reference
646859 GtkCssProvider.load_from_data introspection
649314 Add support for the text-shadow property
649779 Add missing gtk_widget_override_* annotations
649972 Crash when loading an ui file with an empty GtkGrid
649979 Argument count TypeError from Gtk.TreeView.enable_model_drag_...
650012 GtkAppChooser* documentation does not document the content_type
650110 Add sanity check in GtkEntryCompletion
650114 gtk_entry_set_completion does not destroy idle source
650167 Unused variable in GtkEditable example code
650202 Optimization in theme_subdir_load (gtkicontheme.c)
650302 Combo box menu items should expose their displayed text
650382 GtkButton uses wrong values in grab
650418 menu: don't use the border as a padding value
650420 all: avoid boxed structs copying where possible
650424 treeview: theming-related fixes
650530 GtkAssistant beautification patches
650664 gtkstatusbar: gtk_misc_set_alignment () function replacement
651194 Should support border-image as a shorthand property
651706 gdk: Update keysyms list from latest X.org headers
651707 Move private functions to private headers
651734 GtkLockButton: symbolic icon is fuzzy
651979 compose-parse.py can not work with the newest gdkkeysyms.h...
652045 file open dialog refuses to open or complete non-local files
652102 Issues when redrawing multiple GdkWindows
652103 Add a GtkPrinterOptionWidget type of label to just show info...
652282 build: fix win32 configure checks
* Updated translations
Catalan (Valencian)
Esperanto
Galician
Hebrew
Norwegian bokmål
Slovenian
Spanish
Overview of Changes in GTK+ 3.1.4
=================================
* GtkAssistant has received a visual refresh; as a side-effect,
the various image properties are no longer used
* GtkTextView can now handle RGBA colors
* GtkFileChooser now remembers the last opened directory
* GtkLockButton is a new widget to control dialogs with
PolicyKit (or other) permissions
* Size allocation changes:
- GtkPaned and GtkMenuBar now do height-for-width
- GtkAccelLabel is smarter about hiding the accel if too small
- GTK+ now warns if widgets are under-allocated; this
may cause considerable noise, it will be turned off
before the next stable release
- Label size allocation has been reworked, check your labels
- No longer try to guess the size of labels; this makes
it more important to give windows reasonable default
sizes or set width-chars/max-width-chars on labels
- The computation of initial window size has been reworked,
check your windows
* A test framework for mozilla-style reftests has been added
* GDK Broadway backend changes:
- Improved key event handling
- Make resize grips work
- Make window close buttons work
- Stream data over websocket
* Bugs fixed:
618815 mnemonics aren't displayed when Alt is already pressed...
626457 Add a lock button widget
626503 Critical warning in GtkTreeView
642214 GTK+ 3.0 fails to compile caused by linking with libuuid...
644426 GNOME-wide default to remember last folder
646517 "Sending message (completed)" ellipsized in French
646876 Free MenuPopulateData struct in all the cases.
647284 GtkLabel does not honor width-chars anymore.
647790 GtkMenuShell: don't leak a GSList
647806 gtk_combo_box_set_active_id() nit picks
647962 Desensitize "Select All" when GtkEntry is empty
648136 design refresh for gtkassistant
648419 crash in remove_capslock_feedback at gtkentry.c...
648570 Mnemonics don't show under some letters
648943 Drop the last remaining translated g_warning/g_error calls
649295 gtkdnd: Add API that takes GIcon
649313 gdk_window_set_cursor() sets cursor for random set of devices
649457 probable leak in icon theme
649593 GtkProgressBar theming fixes
* Translation updates:
Galician
Greek
Lithuanian
Luganda
Spanish
Uighur
Overview of Changes in GTK+ 3.1.2
=================================

View File

@@ -27,6 +27,18 @@ Installation
See the file 'INSTALL'
Release notes for 3.4
=====================
* The -uninstalled variants of the pkg-config files have been dropped.
Release notes for 3.2
=====================
* The accessible implementations for GTK+ widgets have been integrated
into libgtk itself, and the gail module does not exist anymore. This
change should not affect applications very much.
Release notes for 3.0
=====================

View File

@@ -156,11 +156,17 @@ Use the Microsoft compiler, cl and Make, nmake. Say nmake -f
makefile.msc in gdk and gtk. Be prepared to manually edit various
makefile.msc files, and the makefile snippets in build/win32.
There are also VS 2008 solution and project files to build GTK+, which
There are also VS 2008/2010 solution and project files to build GTK+, which
are maintained by Chun-wei Fan. They should build GTK+ out of the box,
provided that the afore-mentioned dependencies are installed. They will
build GDK with the Win32 backend, GTK+ itself and the gtk-demo program.
(The GAIL and GAIL-util sources are not built by this method yet)
build GDK with the Win32 backend, GTK+ itself (with GAIL/a11y built in),
the GAIL-Util library and the gtk-demo program.
Please refer to the following GNOME Live! page for a more detailed ouline
on the process of building the GTK+ stack and its dependencies with Visual
C++:
https://live.gnome.org/GTK%2B/Win32/MSVCCompilationOfGTKStack
Alternative 1 also generates Microsoft import libraries (.lib), if you
have lib.exe available. It might also work for cross-compilation from

View File

@@ -7,6 +7,8 @@ test -n "$srcdir" || srcdir=.
olddir=`pwd`
cd "$srcdir"
mkdir -p m4
GTKDOCIZE=`which gtkdocize`
if test -z $GTKDOCIZE; then
echo "*** No GTK-Doc found, please install it ***"

View File

@@ -1,4 +1,5 @@
include $(top_srcdir)/Makefile.decl
SUBDIRS = \
vs9
vs9 \
vs10

View File

@@ -0,0 +1,25 @@
include $(top_srcdir)/Makefile.decl
EXTRA_DIST += \
README.txt \
gtk+.sln \
gtk+.props \
gdk-win32.vcxproj \
gdk-win32.vcxproj.filters \
gdk.vcxproj \
gdk.vcxprojin \
gdk.vcxproj.filters \
gdk.vcxproj.filtersin \
gtk.vcxproj \
gtk.vcxprojin \
gtk.vcxproj.filters \
gtk.vcxproj.filtersin \
gtk3-demo.vcxproj \
gtk3-demo.vcxproj.filters \
libgail.vcxproj \
libgail.vcxproj.filters \
libgail.vcxprojin \
libgail.vcxproj.filtersin \
gailutil.vcxproj \
gailutil.vcxproj.filters \
install.vcxproj

View File

@@ -0,0 +1,87 @@
Please do not compile this package (GTK+) in paths that contain
spaces in them-as strange problems may occur during compilation or during
the use of the library.
A more detailed outline for instructions on building the GTK+ with Visual
C++ can be found in the following GNOME Live! page:
https://live.gnome.org/GTK%2B/Win32/MSVCCompilationOfGTKStack
This VS10 solution and the projects it includes are intented to be used
in a GTK+ source tree unpacked from a tarball. In a git checkout you
first need to use some Unix-like environment or manual work to expand
the files needed, like config.h.win32.in into config.h.win32 and the
.vcxprojin and .vcxproj.filtersin files here into corresponding actual
.vcxproj and vcxproj.filters files.
You will need the parts from below in the GTK+ stack: GDK-Pixbuf, Pango,
ATK and GLib. External dependencies are at least Cairo
(with Cairo-GObject support, meaning Cairo 1.10.x or later), zlib, libpng,
gettext-runtime, fontconfig*, freetype*, expat*. See the
build/win32/vs10/README.txt file in glib for details where to unpack them.
It is recommended that one builds the dependencies with VS10 as far as
possible, especially those from and using the GTK+ stack (i.e. GLib,
Cairo, ATK, Pango, GDK-Pixbuf), so that crashes caused by mixing calls
to different CRTs can be kept at a minimum.
zlib, libpng, and Cairo do contain support for compiling under VS10
using VS project files and/or makefiles at this time of writing, For the
GTK+ stack, VS10 project files are either available under
$(srcroot)/build/vs10 in the case of GLib (stable/unstable), ATK
(stable/unstable) and GDK-Pixbuf (unstable), and should be in the next
unstable version of Pango. There is no known official VS10 build
support for fontconfig (along with freetype and expat) and
gettext-runtime, so please use the binaries from:
ftp://ftp.gnome.org/pub/GNOME/binaries/win32/dependencies/ (32 bit)
ftp://ftp.gnome.org/pub/GNOME/binaries/win64/dependencies/ (64 bit)
Unzip the binaries obtained from ftp.gnome.org in <root>\vs10\<PlatformName>,
and build the following, if not already done so:
Note: put the resulting zlib, libpng, pcre and Cairo files as follows:
.dll files: <root>\vs10\<PlatformName>\bin
.lib files: <root>\vs10\<PlatformName>\lib
.h files: <root>\vs10\<PlatformName>\include
The recommended build order for these dependencies:
(first unzip any dependent binaries downloaded from the ftp.gnome.org
as described in the README.txt file in the build/win32/vs10 folder)
-zlib
-libpng
-(for GDK-Pixbuf, if not using GDI+) IJG JPEG
-(for GDK-Pixbuf, if not using GDI+) libtiff
[libtiff requires zlib and IJG JPEG]
-(for GDK-Pixbuf, if not using GDI+) jasper [jpeg-2000 library]
-(optional for GLib) PCRE (version 8.12 or later, use of CMake to
build PCRE is recommended-see build/win32/vs10/README.txt of GLib)
-GLib **
-Cairo (inclusive of Cairo-GObject)
-ATK**
-Pango**
-GDK-Pixbuf**
(note the last 3 dependencies are not interdependent, so the last 3
dependencies can be built in any order)
The "install" project will copy build results and headers into their
appropriate location under <root>\vs10\<PlatformName>. For instance,
built DLLs go into <root>\vs10\<PlatformName>\bin, built LIBs into
<root>\vs10\<PlatformName>\lib and GTK+ headers into
<root>\vs10\<PlatformName>\include\gtk-3.0. This is then from where
project files higher in the stack are supposed to look for them, not
from a specific GLib source tree.
*About the dependencies marked with *: These dependencies are optional
as those are not compulsory components for building and running GTK+
itself, but note that they are needed for people running and building
GIMP or those who need complex script support via fontconfig. They
are referred to by components in Cairo and Pango mainly.
Decide whether you need fontconfig support prior to building Cairo
and Pango.
**:Put the sources of the packages marked with ** in <root>\<package-
source-tree>, and build with VS10 from there.
--Tor Lillqvist <tml@iki.fi>
--Updated by Chun-wei Fan <fanc999@yahoo.com.tw>

View File

@@ -0,0 +1,181 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}</ProjectGuid>
<RootNamespace>gailutil</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="gtk+.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="gtk+.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="gtk+.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="gtk+.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;G_ENABLE_DEBUG;GTK_DISABLE_DEPRECATED;GDK_DISABLE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>atk-1.0.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll</OutputFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ModuleDefinitionFile>..\..\..\libgail-util\gailutil.def</ModuleDefinitionFile>
<ImportLibrary>$(TargetDir)$(ProjectName).lib</ImportLibrary>
<SubSystem>Windows</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;G_ENABLE_DEBUG;GTK_DISABLE_DEPRECATED;GDK_DISABLE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>atk-1.0.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll</OutputFile>
<ModuleDefinitionFile>..\..\..\libgail-util\gailutil.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<ImportLibrary>$(TargetDir)$(ProjectName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>GTK_DISABLE_DEPRECATED;GDK_DISABLE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>atk-1.0.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll</OutputFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ModuleDefinitionFile>..\..\..\libgail-util\gailutil.def</ModuleDefinitionFile>
<ImportLibrary>$(TargetDir)$(ProjectName).lib</ImportLibrary>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>GTK_DISABLE_DEPRECATED;GDK_DISABLE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>atk-1.0.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll</OutputFile>
<ModuleDefinitionFile>..\..\..\libgail-util\gailutil.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<ImportLibrary>$(TargetDir)$(ProjectName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\..\libgail-util\gailmisc.c" />
<ClCompile Include="..\..\..\libgail-util\gailtextutil.c" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="gdk.vcxproj">
<Project>{fc5aadb5-95cd-4bf0-ba8b-0c16fe7073f7}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="gtk.vcxproj">
<Project>{fc5aadb5-95cd-4bf0-ba8b-0c16fe7073f5}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Sources">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Headers">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\libgail-util\gailmisc.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="..\..\..\libgail-util\gailtextutil.c">
<Filter>Sources</Filter>
</ClCompile>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,140 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FA}</ProjectGuid>
<RootNamespace>gdkwin32</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="gtk+.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="gtk+.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="gtk+.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="gtk+.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\gdk;..\..\..\gdk\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;G_ENABLE_DEBUG;$(GdkDefines);INSIDE_GDK_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\gdk;..\..\..\gdk\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>$(GdkDefines);INSIDE_GDK_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\gdk;..\..\..\gdk\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;G_ENABLE_DEBUG;$(GdkDefines);INSIDE_GDK_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\gdk;..\..\..\gdk\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>$(GdkDefines);INSIDE_GDK_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\..\gdk\win32\gdkcursor-win32.c" />
<ClCompile Include="..\..\..\gdk\win32\gdkdevice-win32.c" />
<ClCompile Include="..\..\..\gdk\win32\gdkdevice-wintab.c" />
<ClCompile Include="..\..\..\gdk\win32\gdkdevicemanager-win32.c" />
<ClCompile Include="..\..\..\gdk\win32\gdkdisplay-win32.c" />
<ClCompile Include="..\..\..\gdk\win32\gdkdnd-win32.c" />
<ClCompile Include="..\..\..\gdk\win32\gdkevents-win32.c" />
<ClCompile Include="..\..\..\gdk\win32\gdkgeometry-win32.c" />
<ClCompile Include="..\..\..\gdk\win32\gdkglobals-win32.c" />
<ClCompile Include="..\..\..\gdk\win32\gdkinput.c" />
<ClCompile Include="..\..\..\gdk\win32\gdkkeys-win32.c" />
<ClCompile Include="..\..\..\gdk\win32\gdkmain-win32.c" />
<ClCompile Include="..\..\..\gdk\win32\gdkproperty-win32.c" />
<ClCompile Include="..\..\..\gdk\win32\gdkscreen-win32.c" />
<ClCompile Include="..\..\..\gdk\win32\gdkselection-win32.c" />
<ClCompile Include="..\..\..\gdk\win32\gdktestutils-win32.c" />
<ClCompile Include="..\..\..\gdk\win32\gdkvisual-win32.c" />
<ClCompile Include="..\..\..\gdk\win32\gdkdisplaymanager-win32.c" />
<ClCompile Include="..\..\..\gdk\win32\gdkwin32id.c" />
<ClCompile Include="..\..\..\gdk\win32\gdkwindow-win32.c" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@@ -0,0 +1,79 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx</Extensions>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\gdk\win32\gdkcursor-win32.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gdk\win32\gdkdevice-win32.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gdk\win32\gdkdevice-wintab.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gdk\win32\gdkdevicemanager-win32.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gdk\win32\gdkdisplay-win32.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gdk\win32\gdkdnd-win32.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gdk\win32\gdkevents-win32.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gdk\win32\gdkgeometry-win32.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gdk\win32\gdkglobals-win32.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gdk\win32\gdkinput.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gdk\win32\gdkkeys-win32.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gdk\win32\gdkmain-win32.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gdk\win32\gdkproperty-win32.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gdk\win32\gdkscreen-win32.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gdk\win32\gdkselection-win32.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gdk\win32\gdktestutils-win32.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gdk\win32\gdkvisual-win32.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gdk\win32\gdkdisplaymanager-win32.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gdk\win32\gdkwin32id.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gdk\win32\gdkwindow-win32.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx</Extensions>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\..\gdk\win32\rc\gdk.rc"><Filter>Resource Files</Filter></ResourceCompile>
</ItemGroup>
<ItemGroup>
#include "libgdk.vs10.sourcefiles.filters"
<ClCompile Include="..\..\..\gdk\gdkkeynames.c"><Filter>Source Files</Filter></ClCompile>
</ItemGroup>
<ItemGroup>
<CustomBuild Include="..\..\..\gdk\gdk.symbols">
<Filter>Resource Files</Filter>
</CustomBuild>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,191 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F7}</ProjectGuid>
<RootNamespace>gdk</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="gtk+.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="gtk+.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="gtk+.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="gtk+.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\gdk;..\..\..\gdk\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;G_ENABLE_DEBUG;$(GdkDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>imm32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)-win32$(GtkDllSuffix).dll</OutputFile>
<ModuleDefinitionFile>$(IntDir)gdk.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<ImportLibrary>$(TargetDir)$(ProjectName)-win32-$(GtkApiVersion).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\gdk;..\..\..\gdk\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>$(GdkDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>imm32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)-win32$(GtkDllSuffix).dll</OutputFile>
<ModuleDefinitionFile>$(IntDir)gdk.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<ImportLibrary>$(TargetDir)$(ProjectName)-win32-$(GtkApiVersion).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\gdk;..\..\..\gdk\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;G_ENABLE_DEBUG;$(GdkDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>imm32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)-win32$(GtkDllSuffix).dll</OutputFile>
<ModuleDefinitionFile>$(IntDir)gdk.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<ImportLibrary>$(TargetDir)$(ProjectName)-win32-$(GtkApiVersion).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\gdk;..\..\..\gdk\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>$(GdkDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>imm32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)-win32$(GtkDllSuffix).dll</OutputFile>
<ModuleDefinitionFile>$(IntDir)gdk.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<ImportLibrary>$(TargetDir)$(ProjectName)-win32-$(GtkApiVersion).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<CustomBuild Include="..\..\..\gdk\gdk.symbols">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generating gdk.def</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(GtkGenerateGdkDef)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)gdk.def;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generating gdk.def</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(GtkGenerateGdkDef)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)gdk.def;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Generating gdk.def</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(GtkGenerateGdkDef)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)gdk.def;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generating gdk.def</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(GtkGenerateGdkDef)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)gdk.def;%(Outputs)</Outputs>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\..\gdk\win32\rc\gdk.rc" />
</ItemGroup>
<ItemGroup>
#include "libgdk.vs10.sourcefiles"
<ClCompile Include="..\..\..\gdk\gdkkeynames.c" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="gdk-win32.vcxproj">
<Project>{fc5aadb5-95cd-4bf0-ba8b-0c16fe7073fa}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

673
build/win32/vs10/gtk+.props Normal file
View File

@@ -0,0 +1,673 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="UserMacros">
<GlibEtcInstallRoot>..\..\..\..\..\vs10\$(Platform)</GlibEtcInstallRoot>
<CopyDir>$(GlibEtcInstallRoot)</CopyDir>
<DefDir>$(SolutionDir)$(Configuration)\$(Platform)\obj\$(ProjectName)</DefDir>
<GtkApiVersion>3.0</GtkApiVersion>
<GtkBinaryVersion>2.10.0</GtkBinaryVersion>
<GtkDummyPrefix>\"/dummy\"</GtkDummyPrefix>
<GtkPrefixDefine>GTK_PREFIX="\"$(GtkDummyPrefix)\""</GtkPrefixDefine>
<GdkDefines>GDK_COMPILATION;G_LOG_DOMAIN="\"Gdk\""</GdkDefines>
<GtkIncludedImmodulesDefines>INCLUDE_IM_am_et;INCLUDE_IM_cedilla;INCLUDE_IM_cyrillic_translit;INCLUDE_IM_ime;INCLUDE_IM_inuktitut;INCLUDE_IM_ipa;INCLUDE_IM_multipress;INCLUDE_IM_thai;INCLUDE_IM_ti_er;INCLUDE_IM_ti_et;INCLUDE_IM_viqr</GtkIncludedImmodulesDefines>
<GtkDefines>GTK_COMPILATION;G_LOG_DOMAIN="\"Gtk\"";GTK_HOST="\"i686-pc-vs10\"";GTK_PRINT_BACKENDS="\"file\"";GTK_PRINT_PREVIEW_COMMAND="\"undefined-gtk-print-preview-command\"";$(GtkIncludedImmodulesDefines);GTK_LIBDIR="\"$(GtkDummyPrefix)/lib\"";GTK_DATADIR="\"$(GtkDummyPrefix)/share\"";GTK_DATA_PREFIX="\"$(GtkDummyPrefix)\"";GTK_SYSCONFDIR="\"$(GtkDummyPrefix)/etc\"";MULTIPRESS_CONFDIR="\"$(GtkDummyPrefix)/etc/gtk-$(GtkApiVersion)\"";MULTIPRESS_LOCALEDIR="\"$(GtkDummyPrefix)/share/locale\"";GTK_VERSION="\"$(GtkVersion)/etc\"";GTK_BINARY_VERSION="\"$(GtkBinaryVersion)/etc\"";GDK_DISABLE_DEPRECATED</GtkDefines>
<GtkDoInstall>
echo on
mkdir $(CopyDir)\bin
copy $(Configuration)\$(Platform)\bin\*.dll $(CopyDir)\bin
mkdir $(CopyDir)\bin\gtk3-demo
copy $(Configuration)\$(Platform)\bin\*.exe $(CopyDir)\bin\gtk3-demo
copy ..\..\..\demos\gtk-demo\*.c $(CopyDir)\bin\gtk3-demo
copy ..\..\..\demos\gtk-demo\*.h $(CopyDir)\bin\gtk3-demo
copy ..\..\..\demos\gtk-demo\*.ui $(CopyDir)\bin\gtk3-demo
copy ..\..\..\demos\gtk-demo\*.jpg $(CopyDir)\bin\gtk3-demo
copy ..\..\..\demos\gtk-demo\*.png $(CopyDir)\bin\gtk3-demo
copy ..\..\..\demos\gtk-demo\*.gif $(CopyDir)\bin\gtk3-demo
mkdir $(CopyDir)\lib
copy $(Configuration)\$(Platform)\bin\*-$(GtkApiVersion).lib $(CopyDir)\lib
mkdir $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
copy ..\..\..\gdk\gdk.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
copy ..\..\..\gdk\gdkapplaunchcontext.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
copy ..\..\..\gdk\gdkcairo.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
copy ..\..\..\gdk\gdkcolor.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
copy ..\..\..\gdk\gdkcursor.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
copy ..\..\..\gdk\gdkdevice.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
copy ..\..\..\gdk\gdkdevicemanager.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
copy ..\..\..\gdk\gdkdisplay.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
copy ..\..\..\gdk\gdkdisplaymanager.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
copy ..\..\..\gdk\gdkdnd.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
copy ..\..\..\gdk\gdkenumtypes.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
copy ..\..\..\gdk\gdkevents.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
copy ..\..\..\gdk\gdkkeys.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
copy ..\..\..\gdk\gdkkeysyms.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
copy ..\..\..\gdk\gdkmain.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
copy ..\..\..\gdk\gdkpango.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
copy ..\..\..\gdk\gdkpixbuf.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
copy ..\..\..\gdk\gdkprivate.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
copy ..\..\..\gdk\gdkproperty.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
copy ..\..\..\gdk\gdkrectangle.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
copy ..\..\..\gdk\gdkrgba.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
copy ..\..\..\gdk\gdkscreen.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
copy ..\..\..\gdk\gdkselection.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
copy ..\..\..\gdk\gdktestutils.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
copy ..\..\..\gdk\gdkthreads.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
copy ..\..\..\gdk\gdktypes.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
copy ..\..\..\gdk\gdkvisual.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
copy ..\..\..\gdk\win32\gdkwin32.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
copy ..\..\..\gdk\gdkwindow.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
mkdir $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk\win32
copy ..\..\..\gdk\win32\gdkwin32cursor.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk\win32
copy ..\..\..\gdk\win32\gdkwin32display.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk\win32
copy ..\..\..\gdk\win32\gdkwin32displaymanager.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk\win32
copy ..\..\..\gdk\win32\gdkwin32dnd.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk\win32
copy ..\..\..\gdk\win32\gdkwin32keys.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk\win32
copy ..\..\..\gdk\win32\gdkwin32screen.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk\win32
copy ..\..\..\gdk\win32\gdkwin32window.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk\win32
mkdir $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtk.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkaboutdialog.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkaccelgroup.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkaccelgroupprivate.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkaccellabel.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkaccelmap.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkaccessible.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkaction.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkactiongroup.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkactivatable.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkadjustment.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkalignment.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkappchooser.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkappchooserbutton.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkappchooserdialog.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkappchooserwidget.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkapplication.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkarrow.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkaspectframe.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkassistant.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkbbox.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkbin.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkbindings.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkbox.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkborder.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkbuildable.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkbuilder.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkbutton.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkcalendar.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkcellarea.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkcellareabox.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkcellareacontext.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkcelleditable.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkcelllayout.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkcellrenderer.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkcellrendereraccel.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkcellrenderercombo.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkcellrendererpixbuf.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkcellrendererprogress.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkcellrendererspin.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkcellrendererspinner.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkcellrenderertext.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkcellrenderertoggle.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkcellview.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkcheckbutton.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkcheckmenuitem.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkclipboard.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkcolorbutton.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkcolorsel.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkcolorseldialog.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkcombobox.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkcomboboxtext.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkcontainer.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkcssprovider.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkdebug.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkdialog.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkdnd.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkdrawingarea.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkeditable.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkentry.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkentrybuffer.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkentrycompletion.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkenums.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkeventbox.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkexpander.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkfilechooser.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkfilechooserbutton.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkfilechooserdialog.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkfilechooserwidget.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkfilefilter.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkfixed.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkfontbutton.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkfontsel.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkframe.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkgradient.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkgrid.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkhandlebox.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkhbbox.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkhbox.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkhpaned.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkhscale.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkhscrollbar.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkhseparator.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkhsv.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkiconfactory.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkicontheme.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkiconview.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkimage.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkimagemenuitem.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkimcontext.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkimcontextsimple.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkimmodule.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkimmulticontext.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkinfobar.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkinvisible.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtklabel.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtklayout.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtklinkbutton.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkliststore.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtklockbutton.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkmain.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkmenu.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkmenubar.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkmenuitem.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkmenushell.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkmenutoolbutton.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkmessagedialog.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkmisc.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkmodules.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkmountoperation.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtknotebook.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtknumerableicon.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkoffscreenwindow.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkorientable.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkoverlay.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkpagesetup.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkpaned.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkpapersize.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkplug.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkprintcontext.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkprintoperation.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkprintoperationpreview.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkprintsettings.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkprivate.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkprogressbar.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkradioaction.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkradiobutton.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkradiomenuitem.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkradiotoolbutton.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkrange.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkrc.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkrecentaction.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkrecentchooser.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkrecentchooserdialog.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkrecentchoosermenu.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkrecentchooserwidget.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkrecentfilter.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkrecentmanager.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkscale.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkscalebutton.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkscrollable.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkscrollbar.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkscrolledwindow.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkselection.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkseparator.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkseparatormenuitem.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkseparatortoolitem.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtksettings.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkshow.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtksizegroup.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtksizerequest.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtksocket.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkspinbutton.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkspinner.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkstatusbar.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkstatusicon.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkstock.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkstyle.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkstylecontext.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkstyleproperties.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkstyleprovider.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkswitch.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtksymboliccolor.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktable.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktearoffmenuitem.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktestutils.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktextattributes.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktextbuffer.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktextbufferrichtext.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktextchild.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktextdisplay.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktextiter.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktextlayout.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktextmark.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktexttag.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktexttagtable.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktextview.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkthemingengine.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktoggleaction.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktogglebutton.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktoggletoolbutton.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktoolbar.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktoolbutton.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktoolitem.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktoolitemgroup.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktoolpalette.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktoolshell.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktooltip.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktreednd.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktreemodel.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktreemodelfilter.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktreemodelsort.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktreeselection.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktreesortable.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktreestore.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktreeview.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktreeviewcolumn.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtktypebuiltins.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkuimanager.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkvbbox.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkvbox.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkversion.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkviewport.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkvolumebutton.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkvpaned.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkvscale.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkvscrollbar.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkvseparator.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkwidget.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkwidgetpath.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
copy ..\..\..\gtk\gtkwindow.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
mkdir $(CopyDir)\include\gail-$(GtkApiVersion)\libgail-util
copy ..\..\..\libgail-util\gail-util.h $(CopyDir)\include\gail-$(GtkApiVersion)\libgail-util
copy ..\..\..\libgail-util\gailmisc.h $(CopyDir)\include\gail-$(GtkApiVersion)\libgail-util
copy ..\..\..\libgail-util\gailtextutil.h $(CopyDir)\include\gail-$(GtkApiVersion)\libgail-util
copy ..\..\..\gdk\gdkconfig.h $(CopyDir)\include\gtk-3.0\gdk
copy $(Configuration)\$(Platform)\bin\*-$(GtkApiVersion).lib $(CopyDir)\lib
copy $(Configuration)\$(Platform)\bin\gailutil.lib $(CopyDir)\lib
mkdir $(CopyDir)\share\glib-2.0\schemas
copy ..\..\..\gtk\org.gtk.Settings.FileChooser.gschema.xml $(CopyDir)\share\glib-2.0\schemas
copy ..\..\..\gtk\org.gtk.WindowState.gschema.xml $(CopyDir)\share\glib-2.0\schemas
echo "Compiling gsettings XML Files..."
$(CopyDir)\bin\glib-compile-schemas.exe $(CopyDir)\share\glib-2.0\schemas
</GtkDoInstall>
<GtkGenerateGdkDef>echo EXPORTS &gt;"$(DefDir)\gdk.def" &amp;&amp; cl /EP -DGDK_WINDOWING_WIN32 -DALL_FILES -DG_GNUC_CONST= ..\..\..\gdk\gdk.symbols &gt;&gt;"$(DefDir)\gdk.def"</GtkGenerateGdkDef>
<GtkGenerateGtkDef>echo EXPORTS &gt;"$(DefDir)\gtk.def" &amp;&amp; cl /EP -DGDK_WINDOWING_WIN32 -DINCLUDE_VARIABLES -DG_OS_WIN32 -DALL_FILES -DG_GNUC_MALLOC= -DG_GNUC_CONST= -DG_GNUC_NULL_TERMINATED= -DG_GNUC_PRINTF=;G_GNUC_PRINTF ..\..\..\gtk\gtk.symbols &gt;&gt;"$(DefDir)\gtk.def"</GtkGenerateGtkDef>
<GtkLibtoolCompatibleDllPrefix>lib</GtkLibtoolCompatibleDllPrefix>
<GtkLibtoolCompatibleDllSuffix>-$(GtkApiVersion)-0</GtkLibtoolCompatibleDllSuffix>
<GtkSeparateVS10DllPrefix />
<GtkSeparateVS10DllSuffix>-3-vs10</GtkSeparateVS10DllSuffix>
<GtkDllPrefix>$(GtkSeparateVS10DllPrefix)</GtkDllPrefix>
<GtkDllSuffix>$(GtkSeparateVS10DllSuffix)</GtkDllSuffix>
</PropertyGroup>
<PropertyGroup>
<_PropertySheetDisplayName>gtk+props</_PropertySheetDisplayName>
<OutDir>$(SolutionDir)$(Configuration)\$(PlatformName)\bin\</OutDir>
<IntDir>$(SolutionDir)$(Configuration)\$(PlatformName)\obj\$(ProjectName)\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>..\..\..;$(GlibEtcInstallRoot)\lib\glib-2.0\include;$(GlibEtcInstallRoot)\include\glib-2.0;$(GlibEtcInstallRoot)\include;$(GlibEtcInstallRoot)\include\cairo;$(GlibEtcInstallRoot)\include\atk-1.0;$(GlibEtcInstallRoot)\include\pango-1.0;$(GlibEtcInstallRoot)\include\gdk-pixbuf-2.0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>HAVE_CONFIG_H;G_DISABLE_SINGLE_INCLUDES;ATK_DISABLE_SINGLE_INCLUDES;GDK_PIXBUF_DISABLE_SINGLE_INCLUDES;GTK_DISABLE_SINGLE_INCLUDES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ForcedIncludeFiles>msvc_recommended_pragmas.h;%(ForcedIncludeFiles)</ForcedIncludeFiles>
</ClCompile>
<Link>
<AdditionalDependencies>pangocairo-1.0.lib;cairo.lib;cairo-gobject.lib;pango-1.0.lib;gdk_pixbuf-2.0.lib;gio-2.0.lib;gmodule-2.0.lib;gobject-2.0.lib;glib-2.0.lib;intl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(GlibEtcInstallRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
<PreBuildEvent>
<Command>
if exist ..\..\..\config.h goto DONE_CONFIG_H
copy ..\..\..\config.h.win32 ..\..\..\config.h
:DONE_CONFIG_H
copy ..\..\..\gdk\gdkconfig.h.win32 ..\..\..\gdk\gdkconfig.h
</Command>
</PreBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<BuildMacro Include="GlibEtcInstallRoot">
<Value>$(GlibEtcInstallRoot)</Value>
</BuildMacro>
<BuildMacro Include="CopyDir">
<Value>$(CopyDir)</Value>
</BuildMacro>
<BuildMacro Include="DefDir">
<Value>$(DefDir)</Value>
</BuildMacro>
<BuildMacro Include="GtkApiVersion">
<Value>$(GtkApiVersion)</Value>
</BuildMacro>
<BuildMacro Include="GtkBinaryVersion">
<Value>$(GtkBinaryVersion)</Value>
</BuildMacro>
<BuildMacro Include="GtkDummyPrefix">
<Value>$(GtkDummyPrefix)</Value>
</BuildMacro>
<BuildMacro Include="GtkPrefixDefine">
<Value>$(GtkPrefixDefine)</Value>
</BuildMacro>
<BuildMacro Include="GdkDefines">
<Value>$(GdkDefines)</Value>
</BuildMacro>
<BuildMacro Include="GtkIncludedImmodulesDefines">
<Value>$(GtkIncludedImmodulesDefines)</Value>
</BuildMacro>
<BuildMacro Include="GtkDefines">
<Value>$(GtkDefines)</Value>
</BuildMacro>
<BuildMacro Include="GtkDoInstall">
<Value>$(GtkDoInstall)</Value>
</BuildMacro>
<BuildMacro Include="GtkGenerateGdkDef">
<Value>$(GtkGenerateGdkDef)</Value>
</BuildMacro>
<BuildMacro Include="GtkGenerateGtkDef">
<Value>$(GtkGenerateGtkDef)</Value>
</BuildMacro>
<BuildMacro Include="GtkLibtoolCompatibleDllPrefix">
<Value>$(GtkLibtoolCompatibleDllPrefix)</Value>
</BuildMacro>
<BuildMacro Include="GtkLibtoolCompatibleDllSuffix">
<Value>$(GtkLibtoolCompatibleDllSuffix)</Value>
</BuildMacro>
<BuildMacro Include="GtkSeparateVS10DllPrefix">
<Value>$(GtkSeparateVS10DllPrefix)</Value>
</BuildMacro>
<BuildMacro Include="GtkSeparateVS10DllSuffix">
<Value>$(GtkSeparateVS10DllSuffix)</Value>
</BuildMacro>
<BuildMacro Include="GtkDllPrefix">
<Value>$(GtkDllPrefix)</Value>
</BuildMacro>
<BuildMacro Include="GtkDllSuffix">
<Value>$(GtkDllSuffix)</Value>
</BuildMacro>
</ItemGroup>
</Project>

85
build/win32/vs10/gtk+.sln Normal file
View File

@@ -0,0 +1,85 @@
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual C++ Express 2010
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gdk-win32", "gdk-win32.vcxproj", "{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FA}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gdk", "gdk.vcxproj", "{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F7}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtk", "gtk.vcxproj", "{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F5}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtk3-demo", "gtk3-demo.vcxproj", "{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FC}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libgail", "libgail.vcxproj", "{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gailutil", "gailutil.vcxproj", "{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "install", "install.vcxproj", "{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FB}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FA}.Debug|Win32.ActiveCfg = Debug|Win32
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FA}.Debug|Win32.Build.0 = Debug|Win32
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FA}.Debug|x64.ActiveCfg = Debug|x64
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FA}.Debug|x64.Build.0 = Debug|x64
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FA}.Release|Win32.ActiveCfg = Release|Win32
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FA}.Release|Win32.Build.0 = Release|Win32
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FA}.Release|x64.ActiveCfg = Release|x64
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FA}.Release|x64.Build.0 = Release|x64
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F7}.Debug|Win32.ActiveCfg = Debug|Win32
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F7}.Debug|Win32.Build.0 = Debug|Win32
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F7}.Debug|x64.ActiveCfg = Debug|x64
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F7}.Debug|x64.Build.0 = Debug|x64
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F7}.Release|Win32.ActiveCfg = Release|Win32
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F7}.Release|Win32.Build.0 = Release|Win32
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F7}.Release|x64.ActiveCfg = Release|x64
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F7}.Release|x64.Build.0 = Release|x64
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F5}.Debug|Win32.ActiveCfg = Debug|Win32
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F5}.Debug|Win32.Build.0 = Debug|Win32
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F5}.Debug|x64.ActiveCfg = Debug|x64
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F5}.Debug|x64.Build.0 = Debug|x64
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F5}.Release|Win32.ActiveCfg = Release|Win32
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F5}.Release|Win32.Build.0 = Release|Win32
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F5}.Release|x64.ActiveCfg = Release|x64
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F5}.Release|x64.Build.0 = Release|x64
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FC}.Debug|Win32.ActiveCfg = Debug|Win32
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FC}.Debug|Win32.Build.0 = Debug|Win32
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FC}.Debug|x64.ActiveCfg = Debug|x64
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FC}.Debug|x64.Build.0 = Debug|x64
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FC}.Release|Win32.ActiveCfg = Release|Win32
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FC}.Release|Win32.Build.0 = Release|Win32
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FC}.Release|x64.ActiveCfg = Release|x64
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FC}.Release|x64.Build.0 = Release|x64
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Debug|Win32.ActiveCfg = Debug|Win32
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Debug|Win32.Build.0 = Debug|Win32
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Debug|x64.ActiveCfg = Debug|x64
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Debug|x64.Build.0 = Debug|x64
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Release|Win32.ActiveCfg = Release|Win32
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Release|Win32.Build.0 = Release|Win32
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Release|x64.ActiveCfg = Release|x64
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Release|x64.Build.0 = Release|x64
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Debug|Win32.ActiveCfg = Debug|Win32
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Debug|Win32.Build.0 = Debug|Win32
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Debug|x64.ActiveCfg = Debug|x64
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Debug|x64.Build.0 = Debug|x64
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Release|Win32.ActiveCfg = Release|Win32
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Release|Win32.Build.0 = Release|Win32
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Release|x64.ActiveCfg = Release|x64
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Release|x64.Build.0 = Release|x64
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FB}.Debug|Win32.ActiveCfg = Debug|Win32
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FB}.Debug|Win32.Build.0 = Debug|Win32
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FB}.Debug|x64.ActiveCfg = Debug|x64
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FB}.Debug|x64.Build.0 = Debug|x64
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FB}.Release|Win32.ActiveCfg = Release|Win32
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FB}.Release|Win32.Build.0 = Release|Win32
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FB}.Release|x64.ActiveCfg = Release|x64
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FB}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx</Extensions>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\..\gtk\gtk-win32.rc"><Filter>Resource Files</Filter></ResourceCompile>
</ItemGroup>
<ItemGroup>
#include "libgtk.vs10.sourcefiles.filters"
<ClCompile Include="..\..\..\modules\input\gtkimcontextime.c"><Filter>Source Files</Filter></ClCompile>
<ClCompile Include="..\..\..\modules\input\gtkimcontextmultipress.c"><Filter>Source Files</Filter></ClCompile>
<ClCompile Include="..\..\..\modules\input\gtkimcontextthai.c"><Filter>Source Files</Filter></ClCompile>
<ClCompile Include="..\..\..\modules\input\imam-et.c"><Filter>Source Files</Filter></ClCompile>
<ClCompile Include="..\..\..\modules\input\imcedilla.c"><Filter>Source Files</Filter></ClCompile>
<ClCompile Include="..\..\..\modules\input\imcyrillic-translit.c"><Filter>Source Files</Filter></ClCompile>
<ClCompile Include="..\..\..\modules\input\imime.c"><Filter>Source Files</Filter></ClCompile>
<ClCompile Include="..\..\..\modules\input\iminuktitut.c"><Filter>Source Files</Filter></ClCompile>
<ClCompile Include="..\..\..\modules\input\imipa.c"><Filter>Source Files</Filter></ClCompile>
<ClCompile Include="..\..\..\modules\input\immultipress.c"><Filter>Source Files</Filter></ClCompile>
<ClCompile Include="..\..\..\modules\input\imthai.c"><Filter>Source Files</Filter></ClCompile>
<ClCompile Include="..\..\..\modules\input\imti-er.c"><Filter>Source Files</Filter></ClCompile>
<ClCompile Include="..\..\..\modules\input\imti-et.c"><Filter>Source Files</Filter></ClCompile>
<ClCompile Include="..\..\..\modules\input\imviqr.c"><Filter>Source Files</Filter></ClCompile>
<ClCompile Include="..\..\..\modules\input\thai-charprop.c"><Filter>Source Files</Filter></ClCompile>
</ItemGroup>
<ItemGroup>
<CustomBuild Include="..\..\..\gdk\gtk.symbols">
<Filter>Resource Files</Filter>
</CustomBuild>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,209 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F5}</ProjectGuid>
<RootNamespace>gtk</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="gtk+.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="gtk+.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="gtk+.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="gtk+.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\gdk;..\..\..\gdk\win32;..\..\..\gtk;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;G_ENABLE_DEBUG;$(GtkDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>atk-1.0.lib;pangowin32-1.0.lib;imm32.lib;winspool.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)-win32$(GtkDllSuffix).dll</OutputFile>
<ModuleDefinitionFile>$(IntDir)gtk.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<ImportLibrary>$(TargetDir)$(ProjectName)-win32-$(GtkApiVersion).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\gdk;..\..\..\gdk\win32;..\..\..\gtk;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>$(GtkDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>atk-1.0.lib;pangowin32-1.0.lib;imm32.lib;winspool.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)-win32$(GtkDllSuffix).dll</OutputFile>
<ModuleDefinitionFile>$(IntDir)gtk.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<ImportLibrary>$(TargetDir)$(ProjectName)-win32-$(GtkApiVersion).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\gdk;..\..\..\gdk\win32;..\..\..\gtk;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;G_ENABLE_DEBUG;$(GtkDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>atk-1.0.lib;pangowin32-1.0.lib;imm32.lib;winspool.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)-win32$(GtkDllSuffix).dll</OutputFile>
<ModuleDefinitionFile>$(IntDir)gtk.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<ImportLibrary>$(TargetDir)$(ProjectName)-win32-$(GtkApiVersion).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\gdk;..\..\..\gdk\win32;..\..\..\gtk;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>$(GtkDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>atk-1.0.lib;pangowin32-1.0.lib;imm32.lib;winspool.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)-win32$(GtkDllSuffix).dll</OutputFile>
<ModuleDefinitionFile>$(IntDir)gtk.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<ImportLibrary>$(TargetDir)$(ProjectName)-win32-$(GtkApiVersion).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<CustomBuild Include="..\..\..\gdk\gtk.symbols">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generating gtk.def</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(GtkGenerateGtkDef)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)gtk.def;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generating gtk.def</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(GtkGenerateGtkDef)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)gtk.def;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Generating gtk.def</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(GtkGenerateGtkDef)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)gtk.def;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generating gtk.def</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(GtkGenerateGtkDef)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)gtk.def;%(Outputs)</Outputs>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\..\gtk\gtk-win32.rc" />
</ItemGroup>
<ItemGroup>
#include "libgtk.vs10.sourcefiles"
<ClCompile Include="..\..\..\modules\input\gtkimcontextime.c" />
<ClCompile Include="..\..\..\modules\input\gtkimcontextmultipress.c" />
<ClCompile Include="..\..\..\modules\input\gtkimcontextthai.c" />
<ClCompile Include="..\..\..\modules\input\imam-et.c" />
<ClCompile Include="..\..\..\modules\input\imcedilla.c" />
<ClCompile Include="..\..\..\modules\input\imcyrillic-translit.c" />
<ClCompile Include="..\..\..\modules\input\imime.c" />
<ClCompile Include="..\..\..\modules\input\iminuktitut.c" />
<ClCompile Include="..\..\..\modules\input\imipa.c" />
<ClCompile Include="..\..\..\modules\input\immultipress.c" />
<ClCompile Include="..\..\..\modules\input\imthai.c" />
<ClCompile Include="..\..\..\modules\input\imti-er.c" />
<ClCompile Include="..\..\..\modules\input\imti-et.c" />
<ClCompile Include="..\..\..\modules\input\imviqr.c" />
<ClCompile Include="..\..\..\modules\input\thai-charprop.c" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="gdk.vcxproj">
<Project>{fc5aadb5-95cd-4bf0-ba8b-0c16fe7073f7}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="libgail.vcxproj">
<Project>{f756b0db-40a1-4e9f-be1f-8f02cb86ea46}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@@ -0,0 +1,222 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FC}</ProjectGuid>
<RootNamespace>gtkdemo</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="gtk+.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="gtk+.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="gtk+.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="gtk+.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\gdk;..\..\..\gtk;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;$(GtkPrefixDefine);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<CompileAs>CompileAsC</CompileAs>
</ClCompile>
<Link>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\gdk;..\..\..\gtk;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;$(GtkPrefixDefine);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>CompileAsC</CompileAs>
</ClCompile>
<Link>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\gdk;..\..\..\gtk;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>$(GtkPrefixDefine);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>CompileAsC</CompileAs>
</ClCompile>
<Link>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\gdk;..\..\..\gtk;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>$(GtkPrefixDefine);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>CompileAsC</CompileAs>
</ClCompile>
<Link>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\..\demos\gtk-demo\appwindow.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\assistant.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\builder.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\button_box.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\changedisplay.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\clipboard.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\colorsel.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\combobox.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\dialog.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\drawingarea.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\editable_cells.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\entry_buffer.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\entry_completion.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\expander.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\hypertext.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\iconview.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\iconview_edit.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\images.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\infobar.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\links.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\list_store.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\main.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\menus.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\offscreen_window.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\offscreen_window2.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\overlay.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\panes.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\pickers.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\pixbufs.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\printing.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\rotated_text.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\search_entry.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\sizegroup.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\spinner.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\stock_browser.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\textscroll.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\textview.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\toolpalette.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\transparent.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\tree_store.c" />
<ClCompile Include="..\..\..\demos\gtk-demo\ui_manager.c" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="gdk.vcxproj">
<Project>{fc5aadb5-95cd-4bf0-ba8b-0c16fe7073f7}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="gtk.vcxproj">
<Project>{fc5aadb5-95cd-4bf0-ba8b-0c16fe7073f5}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@@ -0,0 +1,138 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\demos\gtk-demo\appwindow.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\assistant.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\builder.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\button_box.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\changedisplay.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\clipboard.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\colorsel.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\combobox.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\dialog.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\drawingarea.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\editable_cells.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\entry_buffer.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\entry_completion.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\expander.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\hypertext.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\iconview.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\iconview_edit.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\images.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\infobar.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\links.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\list_store.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\main.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\menus.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\offscreen_window.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\offscreen_window2.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\overlay.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\panes.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\pickers.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\pixbufs.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\printing.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\rotated_text.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\search_entry.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\sizegroup.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\spinner.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\stock_browser.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\textscroll.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\textview.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\toolpalette.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\transparent.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\tree_store.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\demos\gtk-demo\ui_manager.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,116 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FB}</ProjectGuid>
<RootNamespace>install</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Utility</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Utility</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Utility</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Utility</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="gtk+.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="gtk+.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="gtk+.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="gtk+.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(GlibEtcInstallRoot)\</OutDir>
<ExtensionsToDeleteOnClean Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(GlibEtcInstallRoot)\</OutDir>
<ExtensionsToDeleteOnClean Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(GlibEtcInstallRoot)\</OutDir>
<ExtensionsToDeleteOnClean Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(GlibEtcInstallRoot)\</OutDir>
<ExtensionsToDeleteOnClean Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<PreBuildEvent>
<Command>$(GtkDoInstall)</Command>
</PreBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<PreBuildEvent>
<Command>$(GtkDoInstall)</Command>
</PreBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<PreBuildEvent>
<Command>$(GtkDoInstall)</Command>
</PreBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<PreBuildEvent>
<Command>$(GtkDoInstall)</Command>
</PreBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ProjectReference Include="gdk.vcxproj">
<Project>{fc5aadb5-95cd-4bf0-ba8b-0c16fe7073f7}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="gtk-demo.vcxproj">
<Project>{fc5aadb5-95cd-4bf0-ba8b-0c16fe7073fc}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="gtk.vcxproj">
<Project>{fc5aadb5-95cd-4bf0-ba8b-0c16fe7073f5}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="gailutil.vcxproj">
<Project>{29e3e814-1ba3-4ad7-a3a7-3669cb80a942}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Sources">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Headers">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
#include "libgail.vs10.sourcefiles.filters"
</ItemGroup>
</Project>

View File

@@ -0,0 +1,126 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}</ProjectGuid>
<RootNamespace>libgail</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="gtk+.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="gtk+.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="gtk+.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="gtk+.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_DEBUG;G_ENABLE_DEBUG;$(GtkDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_DEBUG;G_ENABLE_DEBUG;$(GtkDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>$(GtkDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PreprocessorDefinitions>$(GtkDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
#include "libgail.vs10.sourcefiles"
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@@ -9,5 +9,8 @@ EXTRA_DIST += \
gdk.vcprojin \
gtk.vcproj \
gtk.vcprojin \
gtk-demo.vcproj \
gtk3-demo.vcproj \
libgail.vcproj \
libgail.vcprojin \
gailutil.vcproj \
install.vcproj

View File

@@ -1,4 +1,11 @@
Note that all this is rather experimental.
Please do not compile this package (GTK+) in paths that contain
spaces in them-as strange problems may occur during compilation or during
the use of the library.
A more detailed outline for instructions on building the GTK+ with Visual
C++ can be found in the following GNOME Live! page:
https://live.gnome.org/GTK%2B/Win32/MSVCCompilationOfGTKStack
This VS9 solution and the projects it includes are intented to be used
in a GTK+ source tree unpacked from a tarball. In a git checkout you
@@ -6,10 +13,55 @@ first need to use some Unix-like environment or manual work to expand
the files needed, like config.h.win32.in into config.h.win32 and the
.vcprojin files here into corresponding actual .vcproj files.
You will need the parts from below in the GTK+ stack: gdk-pixbuf, pango,
atk and glib. External dependencies are at least zlib, libpng,
proxy-libintl, fontconfig, freetype, expat. See the corresponding
README.txt file in glib for details where to unpack them.
You will need the parts from below in the GTK+ stack: GDK-Pixbuf, Pango,
ATK and GLib. External dependencies are at least Cairo
(with Cairo-GObject support, meaning Cairo 1.10.x or later), zlib, libpng,
gettext-runtime, fontconfig*, freetype*, expat*. See the
build/win32/vs9/README.txt file in glib for details where to unpack them.
It is recommended that one builds the dependencies with VS9 as far as
possible, especially those from and using the GTK+ stack (i.e. GLib,
Cairo, ATK, Pango, GDK-Pixbuf), so that crashes caused by mixing calls
to different CRTs can be kept at a minimum.
zlib, libpng, and Cairo do contain support for compiling under VS9
using VS project files and/or makefiles at this time of writing, For the
GTK+ stack, VS9 project files are either available under
$(srcroot)/build/vs9 in the case of GLib (stable/unstable), ATK
(stable/unstable) and GDK-Pixbuf (unstable), and should be in the next
unstable version of Pango. There is no known official VS9 build
support for fontconfig (along with freetype and expat) and
gettext-runtime, so please use the binaries from:
ftp://ftp.gnome.org/pub/GNOME/binaries/win32/dependencies/ (32 bit)
ftp://ftp.gnome.org/pub/GNOME/binaries/win64/dependencies/ (64 bit)
Unzip the binaries obtained from ftp.gnome.org in <root>\vs9\<PlatformName>,
and build the following, if not already done so:
Note: put the resulting zlib, libpng, pcre and Cairo files as follows:
.dll files: <root>\vs9\<PlatformName>\bin
.lib files: <root>\vs9\<PlatformName>\lib
.h files: <root>\vs9\<PlatformName>\include
The recommended build order for these dependencies:
(first unzip any dependent binaries downloaded from the ftp.gnome.org
as described in the README.txt file in the build/win32/vs9 folder)
-zlib
-libpng
-(for GDK-Pixbuf, if not using GDI+) IJG JPEG
-(for GDK-Pixbuf, if not using GDI+) libtiff
[libtiff requires zlib and IJG JPEG]
-(for GDK-Pixbuf, if not using GDI+) jasper [jpeg-2000 library])
-(optional for GLib) PCRE (version 8.12 or later, use of CMake to
build PCRE is recommended-see build/win32/vs9/README.txt of GLib)
-GLib **
-Cairo (inclusive of Cairo-GObject)
-ATK**
-Pango**
-GDK-Pixbuf**
(note the last 3 dependencies are not interdependent, so the last 3
dependencies can be built in any order)
The "install" project will copy build results and headers into their
appropriate location under <root>\vs9\<PlatformName>. For instance,
@@ -19,5 +71,16 @@ built DLLs go into <root>\vs9\<PlatformName>\bin, built LIBs into
project files higher in the stack are supposed to look for them, not
from a specific GLib source tree.
*About the dependencies marked with *: These dependencies are optional
as those are not compulsory components for building and running GTK+
itself, but note that they are needed for people running and building
GIMP or those who need complex script support via fontconfig. They
are referred to by components in Cairo and Pango mainly.
Decide whether you need fontconfig support prior to building Cairo
and Pango.
**:Put the sources of the packages marked with ** in <root>\<package-
source-tree>, and build with VS9 from there.
--Tor Lillqvist <tml@iki.fi>
--Updated by Chun-wei Fan <fanc999 --at-- yahoo --dot-- com --dot-- tw>
--Updated by Chun-wei Fan <fanc999@yahoo.com.tw>

View File

@@ -0,0 +1,183 @@
<?xml version="1.0" encoding="big5"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9.00"
Name="gailutil"
ProjectGUID="{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}"
RootNamespace="gailutil"
Keyword="Win32Proj"
TargetFrameworkVersion="196613"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
InheritedPropertySheets=".\gtk+.vsprops"
ConfigurationType="2"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32"
PreprocessorDefinitions="_DEBUG;G_ENABLE_DEBUG;GTK_DISABLE_DEPRECATED;GDK_DISABLE_DEPRECATED"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="4"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
AdditionalDependencies="atk-1.0.lib"
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll"
GenerateDebugInformation="true"
ModuleDefinitionFile="..\..\..\libgail-util\gailutil.def"
ImportLibrary="$(TargetDir)$(ProjectName).lib"
SubSystem="2"
TargetMachine="1"
/>
</Configuration>
<Configuration
Name="Debug|x64"
InheritedPropertySheets=".\gtk+.vsprops"
ConfigurationType="2"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32"
PreprocessorDefinitions="_DEBUG;G_ENABLE_DEBUG;GTK_DISABLE_DEPRECATED;GDK_DISABLE_DEPRECATED"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="atk-1.0.lib"
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll"
LinkIncremental="2"
ModuleDefinitionFile="..\..\..\libgail-util\gailutil.def"
GenerateDebugInformation="true"
SubSystem="2"
ImportLibrary="$(TargetDir)$(ProjectName).lib"
TargetMachine="17"
/>
</Configuration>
<Configuration
Name="Release|Win32"
InheritedPropertySheets=".\gtk+.vsprops"
ConfigurationType="2"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
EnableIntrinsicFunctions="true"
AdditionalIncludeDirectories="..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32"
PreprocessorDefinitions="GTK_DISABLE_DEPRECATED;GDK_DISABLE_DEPRECATED"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="1"
AdditionalDependencies="atk-1.0.lib"
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll"
GenerateDebugInformation="true"
ModuleDefinitionFile="..\..\..\libgail-util\gailutil.def"
ImportLibrary="$(TargetDir)$(ProjectName).lib"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
</Configuration>
<Configuration
Name="Release|x64"
InheritedPropertySheets=".\gtk+.vsprops"
ConfigurationType="2"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32"
PreprocessorDefinitions="GTK_DISABLE_DEPRECATED;GDK_DISABLE_DEPRECATED"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="atk-1.0.lib"
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll"
LinkIncremental="2"
ModuleDefinitionFile="..\..\..\libgail-util\gailutil.def"
GenerateDebugInformation="true"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
ImportLibrary="$(TargetDir)$(ProjectName).lib"
TargetMachine="17"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Sources"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File RelativePath="..\..\..\libgail-util\gailmisc.c" />
<File RelativePath="..\..\..\libgail-util\gailtextutil.c" />
</Filter>
<Filter
Name="Headers"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -32,7 +32,7 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\gdk;..\..\..\gdk\win32"
PreprocessorDefinitions="_DEBUG;$(GdkDefines);INSIDE_GDK_WIN32"
PreprocessorDefinitions="_DEBUG;G_ENABLE_DEBUG;$(GdkDefines);INSIDE_GDK_WIN32"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="2"
@@ -73,7 +73,7 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\gdk;..\..\..\gdk\win32"
PreprocessorDefinitions="_DEBUG;$(GdkDefines);INSIDE_GDK_WIN32"
PreprocessorDefinitions="_DEBUG;G_ENABLE_DEBUG;$(GdkDefines);INSIDE_GDK_WIN32"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"

View File

@@ -32,7 +32,7 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\gdk;..\..\..\gdk\win32"
PreprocessorDefinitions="_DEBUG;$(GdkDefines)"
PreprocessorDefinitions="_DEBUG;G_ENABLE_DEBUG;$(GdkDefines)"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="2"
@@ -97,7 +97,7 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\gdk;..\..\..\gdk\win32"
PreprocessorDefinitions="_DEBUG;$(GdkDefines)"
PreprocessorDefinitions="_DEBUG;G_ENABLE_DEBUG;$(GdkDefines)"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"

View File

@@ -10,9 +10,18 @@ EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtk", "gtk.vcproj", "{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F5}"
ProjectSection(ProjectDependencies) = postProject
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F7} = {FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F7}
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46} = {F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtk-demo", "gtk-demo.vcproj", "{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FC}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtk3-demo", "gtk3-demo.vcproj", "{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FC}"
ProjectSection(ProjectDependencies) = postProject
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F7} = {FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F7}
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F5} = {FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F5}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libgail", "libgail.vcproj", "{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gailutil", "gailutil.vcproj", "{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}"
ProjectSection(ProjectDependencies) = postProject
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F7} = {FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F7}
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F5} = {FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F5}
@@ -23,6 +32,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "install", "install.vcproj",
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F7} = {FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F7}
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F5} = {FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F5}
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FC} = {FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FC}
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942} = {29E3E814-1BA3-4AD7-A3A7-3669CB80A942}
EndProjectSection
EndProject
Global
@@ -73,6 +83,22 @@ Global
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FC}.Release|Win32.Build.0 = Release|Win32
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FC}.Release|x64.ActiveCfg = Release|x64
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FC}.Release|x64.Build.0 = Release|x64
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Debug|Win32.ActiveCfg = Debug|Win32
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Debug|Win32.Build.0 = Debug|Win32
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Debug|x64.ActiveCfg = Debug|x64
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Debug|x64.Build.0 = Debug|x64
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Release|Win32.ActiveCfg = Release|Win32
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Release|Win32.Build.0 = Release|Win32
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Release|x64.ActiveCfg = Release|x64
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Release|x64.Build.0 = Release|x64
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Debug|Win32.ActiveCfg = Debug|Win32
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Debug|Win32.Build.0 = Debug|Win32
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Debug|x64.ActiveCfg = Debug|x64
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Debug|x64.Build.0 = Debug|x64
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Release|Win32.ActiveCfg = Release|Win32
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Release|Win32.Build.0 = Release|Win32
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Release|x64.ActiveCfg = Release|x64
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@@ -4,17 +4,17 @@
Version="8.00"
Name="gtk+props"
OutputDirectory="$(SolutionDir)$(ConfigurationName)\$(PlatformName)\bin"
IntermediateDirectory="$(SolutionDir)$(ConfigurationName)\$(PlatformName)\obj"
IntermediateDirectory="$(SolutionDir)$(ConfigurationName)\$(PlatformName)\obj\$(ProjectName)\"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="..\..\..;$(GlibEtcInstallRoot)\lib\glib-2.0\include;$(GlibEtcInstallRoot)\include\glib-2.0;$(GlibEtcInstallRoot)\include;$(GlibEtcInstallRoot)\include\cairo;$(GlibEtcInstallRoot)\include\atk-1.0;$(GlibEtcInstallRoot)\include\pango-1.0;$(GlibEtcInstallRoot)\include\gdk-pixbuf-2.0"
PreprocessorDefinitions="HAVE_CONFIG_H;G_DISABLE_DEPRECATED;G_DISABLE_SINGLE_INCLUDES;ATK_DISABLE_SINGLE_INCLUDES;GDK_PIXBUF_DISABLE_SINGLE_INCLUDES;GTK_DISABLE_SINGLE_INCLUDES"
PreprocessorDefinitions="HAVE_CONFIG_H;G_DISABLE_SINGLE_INCLUDES;ATK_DISABLE_SINGLE_INCLUDES;GDK_PIXBUF_DISABLE_SINGLE_INCLUDES;GTK_DISABLE_SINGLE_INCLUDES"
ForcedIncludeFiles="msvc_recommended_pragmas.h"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="gdk_pixbuf-2.0.lib pangocairo-1.0.lib pango-1.0.lib cairo.lib gio-2.0.lib gmodule-2.0.lib gobject-2.0.lib glib-2.0.lib intl.lib"
AdditionalDependencies="gdk_pixbuf-2.0.lib pangocairo-1.0.lib pango-1.0.lib cairo-gobject.lib cairo.lib gio-2.0.lib gmodule-2.0.lib gobject-2.0.lib glib-2.0.lib intl.lib"
AdditionalLibraryDirectories="$(GlibEtcInstallRoot)\lib"
/>
<Tool
@@ -105,6 +105,15 @@ copy ..\..\..\gdk\gdkvisual.h $(OutDir)\include\gtk-$(GtkApiVersion)\gdk&#x0D;&#
copy ..\..\..\gdk\win32\gdkwin32.h $(OutDir)\include\gtk-$(GtkApiVersion)\gdk&#x0D;&#x0A;
copy ..\..\..\gdk\gdkwindow.h $(OutDir)\include\gtk-$(GtkApiVersion)\gdk&#x0D;&#x0A;
mkdir $(OutDir)\include\gtk-$(GtkApiVersion)\gdk\win32&#x0D;&#x0A;
copy ..\..\..\gdk\win32\gdkwin32cursor.h $(OutDir)\include\gtk-$(GtkApiVersion)\gdk\win32&#x0D;&#x0A;
copy ..\..\..\gdk\win32\gdkwin32display.h $(OutDir)\include\gtk-$(GtkApiVersion)\gdk\win32&#x0D;&#x0A;
copy ..\..\..\gdk\win32\gdkwin32displaymanager.h $(OutDir)\include\gtk-$(GtkApiVersion)\gdk\win32&#x0D;&#x0A;
copy ..\..\..\gdk\win32\gdkwin32dnd.h $(OutDir)\include\gtk-$(GtkApiVersion)\gdk\win32&#x0D;&#x0A;
copy ..\..\..\gdk\win32\gdkwin32keys.h $(OutDir)\include\gtk-$(GtkApiVersion)\gdk\win32&#x0D;&#x0A;
copy ..\..\..\gdk\win32\gdkwin32screen.h $(OutDir)\include\gtk-$(GtkApiVersion)\gdk\win32&#x0D;&#x0A;
copy ..\..\..\gdk\win32\gdkwin32window.h $(OutDir)\include\gtk-$(GtkApiVersion)\gdk\win32&#x0D;&#x0A;
mkdir $(OutDir)\include\gtk-$(GtkApiVersion)\gtk&#x0D;&#x0A;
copy ..\..\..\gtk\gtk.h $(OutDir)\include\gtk-$(GtkApiVersion)\gtk&#x0D;&#x0A;
copy ..\..\..\gtk\gtkaboutdialog.h $(OutDir)\include\gtk-$(GtkApiVersion)\gtk&#x0D;&#x0A;
@@ -205,6 +214,7 @@ copy ..\..\..\gtk\gtklabel.h $(OutDir)\include\gtk-$(GtkApiVersion)\gtk&#x0D;&#x
copy ..\..\..\gtk\gtklayout.h $(OutDir)\include\gtk-$(GtkApiVersion)\gtk&#x0D;&#x0A;
copy ..\..\..\gtk\gtklinkbutton.h $(OutDir)\include\gtk-$(GtkApiVersion)\gtk&#x0D;&#x0A;
copy ..\..\..\gtk\gtkliststore.h $(OutDir)\include\gtk-$(GtkApiVersion)\gtk&#x0D;&#x0A;
copy ..\..\..\gtk\gtklockbutton.h $(OutDir)\include\gtk-$(GtkApiVersion)\gtk&#x0D;&#x0A;
copy ..\..\..\gtk\gtkmain.h $(OutDir)\include\gtk-$(GtkApiVersion)\gtk&#x0D;&#x0A;
copy ..\..\..\gtk\gtkmenu.h $(OutDir)\include\gtk-$(GtkApiVersion)\gtk&#x0D;&#x0A;
copy ..\..\..\gtk\gtkmenubar.h $(OutDir)\include\gtk-$(GtkApiVersion)\gtk&#x0D;&#x0A;
@@ -219,6 +229,7 @@ copy ..\..\..\gtk\gtknotebook.h $(OutDir)\include\gtk-$(GtkApiVersion)\gtk&#x0D;
copy ..\..\..\gtk\gtknumerableicon.h $(OutDir)\include\gtk-$(GtkApiVersion)\gtk&#x0D;&#x0A;
copy ..\..\..\gtk\gtkoffscreenwindow.h $(OutDir)\include\gtk-$(GtkApiVersion)\gtk&#x0D;&#x0A;
copy ..\..\..\gtk\gtkorientable.h $(OutDir)\include\gtk-$(GtkApiVersion)\gtk&#x0D;&#x0A;
copy ..\..\..\gtk\gtkoverlay.h $(OutDir)\include\gtk-$(GtkApiVersion)\gtk&#x0D;&#x0A;
copy ..\..\..\gtk\gtkpagesetup.h $(OutDir)\include\gtk-$(GtkApiVersion)\gtk&#x0D;&#x0A;
copy ..\..\..\gtk\gtkpaned.h $(OutDir)\include\gtk-$(GtkApiVersion)\gtk&#x0D;&#x0A;
copy ..\..\..\gtk\gtkpapersize.h $(OutDir)\include\gtk-$(GtkApiVersion)\gtk&#x0D;&#x0A;
@@ -316,9 +327,21 @@ copy ..\..\..\gtk\gtkwidget.h $(OutDir)\include\gtk-$(GtkApiVersion)\gtk&#x0D;&#
copy ..\..\..\gtk\gtkwidgetpath.h $(OutDir)\include\gtk-$(GtkApiVersion)\gtk&#x0D;&#x0A;
copy ..\..\..\gtk\gtkwindow.h $(OutDir)\include\gtk-$(GtkApiVersion)\gtk&#x0D;&#x0A;
mkdir $(OutDir)\include\gail-$(GtkApiVersion)\libgail-util&#x0D;&#x0A;
copy ..\..\..\libgail-util\gail-util.h $(OutDir)\include\gail-$(GtkApiVersion)\libgail-util&#x0D;&#x0A;
copy ..\..\..\libgail-util\gailmisc.h $(OutDir)\include\gail-$(GtkApiVersion)\libgail-util&#x0D;&#x0A;
copy ..\..\..\libgail-util\gailtextutil.h $(OutDir)\include\gail-$(GtkApiVersion)\libgail-util&#x0D;&#x0A;
copy ..\..\..\gdk\gdkconfig.h $(OutDir)\include\gtk-3.0\gdk&#x0D;&#x0A;
copy $(ConfigurationName)\$(PlatformName)\bin\*-$(GtkApiVersion).lib $(OutDir)\lib&#x0D;&#x0A;
copy $(ConfigurationName)\$(PlatformName)\bin\gailutil.lib $(OutDir)\lib&#x0D;&#x0A;
mkdir $(OutDir)\share\glib-2.0\schemas&#x0D;&#x0A;
copy ..\..\..\gtk\org.gtk.Settings.FileChooser.gschema.xml $(OutDir)\share\glib-2.0\schemas&#x0D;&#x0A;
copy ..\..\..\gtk\org.gtk.WindowState.gschema.xml $(OutDir)\share\glib-2.0\schemas&#x0D;&#x0A;
echo &quot;Compiling gsettings XML Files...&quot;&#x0D;&#x0A;
$(OutDir)\bin\glib-compile-schemas.exe $(OutDir)\share\glib-2.0\schemas&#x0D;&#x0A;
"
/>
<UserMacro

View File

@@ -31,8 +31,8 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\gdk;..\..\..\gtk"
PreprocessorDefinitions="_DEBUG;$(GtkDefines)"
AdditionalIncludeDirectories="..\..\..\gdk;..\..\..\gdk\win32;..\..\..\gtk"
PreprocessorDefinitions="_DEBUG;G_ENABLE_DEBUG;$(GtkDefines)"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="2"
@@ -63,7 +63,7 @@
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="..\..\..\gdk;..\..\..\gdk\win32"
AdditionalIncludeDirectories="..\..\..\gdk;..\..\..\gdk\win32;..\..\..\gtk"
PreprocessorDefinitions="$(GtkDefines)"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
@@ -96,8 +96,8 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\gdk;..\..\..\gdk\win32"
PreprocessorDefinitions="_DEBUG;$(GtkDefines)"
AdditionalIncludeDirectories="..\..\..\gdk;..\..\..\gdk\win32;..\..\..\gtk"
PreprocessorDefinitions="_DEBUG;G_ENABLE_DEBUG;$(GtkDefines)"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
@@ -128,7 +128,7 @@
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="..\..\..\gdk;..\..\..\gdk\win32"
AdditionalIncludeDirectories="..\..\..\gdk;..\..\..\gdk\win32;..\..\..\gtk"
PreprocessorDefinitions="$(GtkDefines)"
RuntimeLibrary="2"
UsePrecompiledHeader="0"

View File

@@ -1,212 +1,214 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9.00"
Name="gtk-demo"
ProjectGUID="{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FC}"
RootNamespace="gtkdemo"
Keyword="Win32Proj"
TargetFrameworkVersion="131072"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
ConfigurationType="1"
InheritedPropertySheets=".\gtk+.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\gdk;..\..\..\gtk"
PreprocessorDefinitions="_DEBUG;$(GtkPrefixDefine)"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="4"
CompileAs="1"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies=""
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="1"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="1"
/>
</Configuration>
<Configuration
Name="Debug|x64"
ConfigurationType="1"
InheritedPropertySheets=".\gtk+.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\gdk;..\..\..\gtk"
PreprocessorDefinitions="_DEBUG;$(GtkPrefixDefine)"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
CompileAs="1"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies=""
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="1"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="17"
/>
</Configuration>
<Configuration
Name="Release|Win32"
ConfigurationType="1"
InheritedPropertySheets=".\gtk+.vsprops"
CharacterSet="2"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="..\..\..\gdk;..\..\..\gtk"
PreprocessorDefinitions="$(GtkPrefixDefine)"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
CompileAs="1"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies=""
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="1"
/>
</Configuration>
<Configuration
Name="Release|x64"
ConfigurationType="1"
InheritedPropertySheets=".\gtk+.vsprops"
CharacterSet="2"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="..\..\..\gdk;..\..\..\gtk"
PreprocessorDefinitions="$(GtkPrefixDefine)"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
CompileAs="1"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies=""
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="17"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File RelativePath="..\..\..\demos\gtk-demo\appwindow.c" />
<File RelativePath="..\..\..\demos\gtk-demo\assistant.c" />
<File RelativePath="..\..\..\demos\gtk-demo\builder.c" />
<File RelativePath="..\..\..\demos\gtk-demo\button_box.c" />
<File RelativePath="..\..\..\demos\gtk-demo\changedisplay.c" />
<File RelativePath="..\..\..\demos\gtk-demo\clipboard.c" />
<File RelativePath="..\..\..\demos\gtk-demo\colorsel.c" />
<File RelativePath="..\..\..\demos\gtk-demo\combobox.c" />
<File RelativePath="..\..\..\demos\gtk-demo\dialog.c" />
<File RelativePath="..\..\..\demos\gtk-demo\drawingarea.c" />
<File RelativePath="..\..\..\demos\gtk-demo\editable_cells.c" />
<File RelativePath="..\..\..\demos\gtk-demo\entry_buffer.c" />
<File RelativePath="..\..\..\demos\gtk-demo\entry_completion.c" />
<File RelativePath="..\..\..\demos\gtk-demo\expander.c" />
<File RelativePath="..\..\..\demos\gtk-demo\hypertext.c" />
<File RelativePath="..\..\..\demos\gtk-demo\iconview.c" />
<File RelativePath="..\..\..\demos\gtk-demo\iconview_edit.c" />
<File RelativePath="..\..\..\demos\gtk-demo\images.c" />
<File RelativePath="..\..\..\demos\gtk-demo\infobar.c" />
<File RelativePath="..\..\..\demos\gtk-demo\links.c" />
<File RelativePath="..\..\..\demos\gtk-demo\list_store.c" />
<File RelativePath="..\..\..\demos\gtk-demo\main.c" />
<File RelativePath="..\..\..\demos\gtk-demo\menus.c" />
<File RelativePath="..\..\..\demos\gtk-demo\offscreen_window.c" />
<File RelativePath="..\..\..\demos\gtk-demo\offscreen_window2.c" />
<File RelativePath="..\..\..\demos\gtk-demo\panes.c" />
<File RelativePath="..\..\..\demos\gtk-demo\pickers.c" />
<File RelativePath="..\..\..\demos\gtk-demo\pixbufs.c" />
<File RelativePath="..\..\..\demos\gtk-demo\printing.c" />
<File RelativePath="..\..\..\demos\gtk-demo\rotated_text.c" />
<File RelativePath="..\..\..\demos\gtk-demo\search_entry.c" />
<File RelativePath="..\..\..\demos\gtk-demo\sizegroup.c" />
<File RelativePath="..\..\..\demos\gtk-demo\spinner.c" />
<File RelativePath="..\..\..\demos\gtk-demo\stock_browser.c" />
<File RelativePath="..\..\..\demos\gtk-demo\textscroll.c" />
<File RelativePath="..\..\..\demos\gtk-demo\textview.c" />
<File RelativePath="..\..\..\demos\gtk-demo\toolpalette.c" />
<File RelativePath="..\..\..\demos\gtk-demo\tree_store.c" />
<File RelativePath="..\..\..\demos\gtk-demo\ui_manager.c" />
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9.00"
Name="gtk3-demo"
ProjectGUID="{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FC}"
RootNamespace="gtk3demo"
Keyword="Win32Proj"
TargetFrameworkVersion="131072"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
ConfigurationType="1"
InheritedPropertySheets=".\gtk+.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\gdk;..\..\..\gtk"
PreprocessorDefinitions="_DEBUG;$(GtkPrefixDefine)"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="4"
CompileAs="1"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies=""
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="1"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="1"
/>
</Configuration>
<Configuration
Name="Debug|x64"
ConfigurationType="1"
InheritedPropertySheets=".\gtk+.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\gdk;..\..\..\gtk"
PreprocessorDefinitions="_DEBUG;$(GtkPrefixDefine)"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
CompileAs="1"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies=""
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="1"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="17"
/>
</Configuration>
<Configuration
Name="Release|Win32"
ConfigurationType="1"
InheritedPropertySheets=".\gtk+.vsprops"
CharacterSet="2"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="..\..\..\gdk;..\..\..\gtk"
PreprocessorDefinitions="$(GtkPrefixDefine)"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
CompileAs="1"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies=""
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="1"
/>
</Configuration>
<Configuration
Name="Release|x64"
ConfigurationType="1"
InheritedPropertySheets=".\gtk+.vsprops"
CharacterSet="2"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="..\..\..\gdk;..\..\..\gtk"
PreprocessorDefinitions="$(GtkPrefixDefine)"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
CompileAs="1"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies=""
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="17"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File RelativePath="..\..\..\demos\gtk-demo\appwindow.c" />
<File RelativePath="..\..\..\demos\gtk-demo\assistant.c" />
<File RelativePath="..\..\..\demos\gtk-demo\builder.c" />
<File RelativePath="..\..\..\demos\gtk-demo\button_box.c" />
<File RelativePath="..\..\..\demos\gtk-demo\changedisplay.c" />
<File RelativePath="..\..\..\demos\gtk-demo\clipboard.c" />
<File RelativePath="..\..\..\demos\gtk-demo\colorsel.c" />
<File RelativePath="..\..\..\demos\gtk-demo\combobox.c" />
<File RelativePath="..\..\..\demos\gtk-demo\dialog.c" />
<File RelativePath="..\..\..\demos\gtk-demo\drawingarea.c" />
<File RelativePath="..\..\..\demos\gtk-demo\editable_cells.c" />
<File RelativePath="..\..\..\demos\gtk-demo\entry_buffer.c" />
<File RelativePath="..\..\..\demos\gtk-demo\entry_completion.c" />
<File RelativePath="..\..\..\demos\gtk-demo\expander.c" />
<File RelativePath="..\..\..\demos\gtk-demo\hypertext.c" />
<File RelativePath="..\..\..\demos\gtk-demo\iconview.c" />
<File RelativePath="..\..\..\demos\gtk-demo\iconview_edit.c" />
<File RelativePath="..\..\..\demos\gtk-demo\images.c" />
<File RelativePath="..\..\..\demos\gtk-demo\infobar.c" />
<File RelativePath="..\..\..\demos\gtk-demo\links.c" />
<File RelativePath="..\..\..\demos\gtk-demo\list_store.c" />
<File RelativePath="..\..\..\demos\gtk-demo\main.c" />
<File RelativePath="..\..\..\demos\gtk-demo\menus.c" />
<File RelativePath="..\..\..\demos\gtk-demo\overlay.c" />
<File RelativePath="..\..\..\demos\gtk-demo\offscreen_window.c" />
<File RelativePath="..\..\..\demos\gtk-demo\offscreen_window2.c" />
<File RelativePath="..\..\..\demos\gtk-demo\panes.c" />
<File RelativePath="..\..\..\demos\gtk-demo\pickers.c" />
<File RelativePath="..\..\..\demos\gtk-demo\pixbufs.c" />
<File RelativePath="..\..\..\demos\gtk-demo\printing.c" />
<File RelativePath="..\..\..\demos\gtk-demo\rotated_text.c" />
<File RelativePath="..\..\..\demos\gtk-demo\search_entry.c" />
<File RelativePath="..\..\..\demos\gtk-demo\sizegroup.c" />
<File RelativePath="..\..\..\demos\gtk-demo\spinner.c" />
<File RelativePath="..\..\..\demos\gtk-demo\stock_browser.c" />
<File RelativePath="..\..\..\demos\gtk-demo\textscroll.c" />
<File RelativePath="..\..\..\demos\gtk-demo\textview.c" />
<File RelativePath="..\..\..\demos\gtk-demo\toolpalette.c" />
<File RelativePath="..\..\..\demos\gtk-demo\transparent.c" />
<File RelativePath="..\..\..\demos\gtk-demo\tree_store.c" />
<File RelativePath="..\..\..\demos\gtk-demo\ui_manager.c" />
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -0,0 +1,134 @@
<?xml version="1.0" encoding="big5"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9.00"
Name="libgail"
ProjectGUID="{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}"
RootNamespace="libgail"
Keyword="Win32Proj"
TargetFrameworkVersion="196613"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
InheritedPropertySheets=".\gtk+.vsprops"
ConfigurationType="4"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="_DEBUG;G_ENABLE_DEBUG;$(GtkDefines)"
AdditionalIncludeDirectories="..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="4"
/>
</Configuration>
<Configuration
Name="Debug|x64"
InheritedPropertySheets=".\gtk+.vsprops"
ConfigurationType="4"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="_DEBUG;G_ENABLE_DEBUG;$(GtkDefines)"
AdditionalIncludeDirectories="..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
/>
</Configuration>
<Configuration
Name="Release|Win32"
InheritedPropertySheets=".\gtk+.vsprops"
ConfigurationType="4"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
EnableIntrinsicFunctions="true"
PreprocessorDefinitions="$(GtkDefines)"
AdditionalIncludeDirectories="..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
/>
</Configuration>
<Configuration
Name="Release|x64"
InheritedPropertySheets=".\gtk+.vsprops"
ConfigurationType="4"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCLCompilerTool"
PreprocessorDefinitions="$(GtkDefines)"
AdditionalIncludeDirectories="..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Sources"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
#include "libgail.sourcefiles"
</Filter>
<Filter
Name="Headers"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -112,11 +112,15 @@
/* Have the Xrandr extension library */
/* #undef HAVE_RANDR */
/* Define to 1 if shm.h is available */
/* #undef HAVE_SHM_H */
/* Define to 1 if rint() is available */
#ifndef _MSC_VER
#define HAVE_RINT 1
#endif
/* Define to 1 if sigsetjmp is available */
/* #undef HAVE_SIGSETJMP */
/* Define to 1 if round() is available */
#ifndef _MSC_VER
#define HAVE_ROUND 1
#endif
/* Have the sockaddr_un.sun_len member */
/* #undef HAVE_SOCKADDR_UN_SUN_LEN */
@@ -128,6 +132,9 @@
#ifndef _MSC_VER
#define HAVE_STDINT_H 1
#else
#if (_MSC_VER >= 1600) /* VS 2010+ ships with stdint.h */
#define HAVE_STDINT_H 1
#endif
/* #undef HAVE_STDINT_H */
#endif
@@ -135,7 +142,9 @@
#define HAVE_STDLIB_H 1
/* Define to 1 if you have the <strings.h> header file. */
#ifndef _MSC_VER
#define HAVE_STRINGS_H 1
#endif
/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1

View File

@@ -9,8 +9,8 @@
# set GTK_BINARY_AGE and GTK_INTERFACE_AGE to 0.
m4_define([gtk_major_version], [3])
m4_define([gtk_minor_version], [1])
m4_define([gtk_micro_version], [2])
m4_define([gtk_minor_version], [3])
m4_define([gtk_micro_version], [15])
m4_define([gtk_interface_age], [0])
m4_define([gtk_binary_age],
[m4_eval(100 * gtk_minor_version + gtk_micro_version)])
@@ -27,6 +27,7 @@ AC_INIT([gtk+], [gtk_version],
AC_CONFIG_HEADER([config.h])
AC_CONFIG_SRCDIR([gdk/gdktypes.h])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_AUX_DIR([build-aux])
# Define a string for the earliest version that this release has
# backwards binary compatibility with for all interfaces a module
@@ -38,11 +39,11 @@ AC_CONFIG_MACRO_DIR([m4])
m4_define([gtk_binary_version], [3.0.0])
# required versions of other packages
m4_define([glib_required_version], [2.28.0])
m4_define([pango_required_version], [1.24.0])
m4_define([atk_required_version], [1.30])
m4_define([glib_required_version], [2.31.14])
m4_define([pango_required_version], [1.29.0])
m4_define([atk_required_version], [2.1.5])
m4_define([cairo_required_version], [1.10.0])
m4_define([gdk_pixbuf_required_version], [2.22.0])
m4_define([gdk_pixbuf_required_version], [2.25.2])
m4_define([introspection_required_version], [0.10.1])
GLIB_REQUIRED_VERSION=glib_required_version
PANGO_REQUIRED_VERSION=pango_required_version
@@ -61,13 +62,13 @@ AC_SUBST(INTROSPECTION_REQUIRED_VERSION)
# Save this value here, since automake will set cflags later
cflags_set=${CFLAGS+set}
AM_INIT_AUTOMAKE([1.10 no-define -Wno-portability dist-bzip2])
AM_INIT_AUTOMAKE([1.11 -Wall no-define -Wno-portability tar-ustar no-dist-gzip dist-xz])
AM_MAINTAINER_MODE([enable])
# Support silent build rules, requires at least automake-1.11. Disable
# Support silent build rules. Disable
# by either passing --disable-silent-rules to configure or passing V=1
# to make
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
AM_SILENT_RULES([yes])
#
# For each of the libraries we build, we define the following
@@ -262,27 +263,27 @@ AC_ARG_ENABLE(xkb,
[enable_xkb="maybe"])
AC_ARG_ENABLE(xinerama,
[AS_HELP_STRING([--enable-xinerama],
[support Xinerama extension if available [default=maybe]])],,
[support Xinerama extension [default=maybe]])],,
[enable_xinerama="maybe"])
AC_ARG_ENABLE(xinput,
[AS_HELP_STRING([--enable-xinput],
[support XInput extension if available [default=yes]])],,
[support XInput extension [default=yes]])],,
[enable_xinput="maybe"])
AC_ARG_ENABLE(xrandr,
[AS_HELP_STRING([--enable-xrandr],
[support XRandR extension if available [default=maybe]])],,
[support XRandR extension [default=maybe]])],,
[enable_xrandr="maybe"])
AC_ARG_ENABLE(xfixes,
[AS_HELP_STRING([--enable-xfixes],
[support XFixes extension if available [default=maybe]])],,
[support XFixes extension [default=maybe]])],,
[enable_xfixes="maybe"])
AC_ARG_ENABLE(xcomposite,
[AS_HELP_STRING([--enable-xcomposite],
[support X Composite extension if available [default=maybe]])],,
[support X Composite extension [default=maybe]])],,
[enable_xcomposite="maybe"])
AC_ARG_ENABLE(xdamage,
[AS_HELP_STRING([--enable-xdamage],
[support X Damage extension if available [default=maybe]])],,
[support X Damage extension [default=maybe]])],,
[enable_xdamage="maybe"])
AC_ARG_ENABLE(x11-backend,
@@ -298,11 +299,11 @@ AC_ARG_ENABLE(quartz-backend,
[enable the quartz gdk backend])],
[backend_set=yes])
AC_ARG_ENABLE(broadway-backend,
[AC_HELP_STRING([--enable-broadway-backend],
[AS_HELP_STRING([--enable-broadway-backend],
[enable the broadway (HTML5) gdk backend])],
[backend_set=yes])
AC_ARG_ENABLE(wayland-backend,
[AC_HELP_STRING([--enable-wayland-backend],
[AS_HELP_STRING([--enable-wayland-backend],
[enable the wayland gdk backend])],
[backend_set=yes])
@@ -314,6 +315,11 @@ if test -z "$backend_set"; then
fi
fi
AC_ARG_ENABLE(quartz-relocation,
[AS_HELP_STRING([--enable-quartz-relocation],
[enable bundle-based relocation functions])],
[quartz_relocation=yes])
cairo_backends=
backend_immodules=
GDK_BACKENDS=
@@ -323,7 +329,7 @@ GDK_WINDOWING=
GIO_PACKAGE=gio-2.0
PANGO_PACKAGES="pango pangocairo"
if test "x$enable_x11_backend" = xyes; then
if test "$enable_x11_backend" = "yes"; then
# GDK calls the xlib backend "x11," cairo calls it "xlib." Other
# backend names are identical.
cairo_backends="$cairo_backends cairo-xlib"
@@ -336,7 +342,7 @@ if test "x$enable_x11_backend" = xyes; then
#define GDK_WINDOWING_X11"
fi
if test "x$enable_win32_backend" = xyes; then
if test "$enable_win32_backend" = "yes"; then
cairo_backends="$cairo_backends cairo-win32"
GDK_BACKENDS="$GDK_BACKENDS win32"
backend_immodules="$backend_immodules,ime"
@@ -356,6 +362,10 @@ if test "x$enable_quartz_backend" = xyes; then
#define GDK_WINDOWING_QUARTZ"
GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -framework Cocoa"
AM_CONDITIONAL(USE_QUARTZ, true)
if test "x$quartz_relocation" = xyes; then
AC_DEFINE([QUARTZ_RELOCATION], [1], [Use NSBundle functions to determine load paths for libraries, translations, etc.])
fi
else
AM_CONDITIONAL(USE_QUARTZ, false)
fi
@@ -379,7 +389,7 @@ if test "x$enable_wayland_backend" == "xyes"; then
GIO_PACKAGE=gio-unix-2.0
GDK_WINDOWING="$GDK_WINDOWING
#define GDK_WINDOWING_WAYLAND"
WAYLAND_PACKAGES="wayland-client xkbcommon wayland-egl"
WAYLAND_PACKAGES="wayland-client xkbcommon wayland-egl egl"
AM_CONDITIONAL(USE_WAYLAND, true)
else
AM_CONDITIONAL(USE_WAYLAND, false)
@@ -396,7 +406,7 @@ fi
if test "x$enable_debug" = "xyes"; then
test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
GTK_DEBUG_FLAGS="-DG_ENABLE_DEBUG -DG_ERRORCHECK_MUTEXES"
GTK_DEBUG_FLAGS="-DG_ENABLE_DEBUG"
else
if test "x$enable_debug" = "xno"; then
GTK_DEBUG_FLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"
@@ -434,8 +444,6 @@ if test "x$GCC" = "xyes"; then
fi
changequote([,])dnl
CPPFLAGS="$CPPFLAGS -DG_DISABLE_SINGLE_INCLUDES -DATK_DISABLE_SINGLE_INCLUDES"
# Ensure MSVC-compatible struct packing convention is used when
# compiling for Win32 with gcc.
# What flag to depends on gcc version: gcc3 uses "-mms-bitfields", while
@@ -487,6 +495,8 @@ PKG_CHECK_MODULES(BASE_DEPENDENCIES,
PKG_CHECK_MODULES(CAIRO_BACKEND, [$cairo_backends])
PKG_CHECK_MODULES(GMODULE, [gmodule-2.0])
if test "$os_win32" != yes; then
# libtool option to control which symbols are exported
# right now, symbols starting with _ are not exported
@@ -677,23 +687,11 @@ esac
# Run AM_PATH_GLIB_2_0 to make sure that GLib is installed and working
#
GLIB_PACKAGES="gobject-2.0 gio-2.0 gmodule-no-export-2.0"
AM_PATH_GLIB_2_0(glib_required_version, :,
AC_MSG_ERROR([
*** GLIB glib_required_version or better is required. The latest version of
*** GLIB is always available from ftp://ftp.gtk.org/pub/gtk/.]),
gobject gmodule-no-export gthread)
# See if it's safe to turn G_DISABLE_DEPRECATED on.
GLIB_VERSION_MAJOR_MINOR=`$PKG_CONFIG --modversion glib-2.0 | sed "s/\.@<:@^.@:>@*\$//"`
GLIB_REQUIRED_VERSION_MAJOR_MINOR=`echo glib_required_version | sed "s/\.@<:@^.@:>@*\$//"`
if test "x$GLIB_VERSION_MAJOR_MINOR" = "x$GLIB_REQUIRED_VERSION_MAJOR_MINOR"; then
CFLAGS="-DG_DISABLE_DEPRECATED $CFLAGS"
fi
CFLAGS="-DGDK_PIXBUF_DISABLE_DEPRECATED $CFLAGS"
gobject gmodule-no-export)
dnl
dnl Check for bind_textdomain_codeset, including -lintl if GLib brings it in.
@@ -749,6 +747,18 @@ if test $gtk_uxtheme_h = yes; then
fi
AC_MSG_RESULT($gtk_uxtheme_h)
# Check for round()
AC_CHECK_LIB(m,round,have_round=yes,have_round=no)
if test $have_round = yes; then
AC_DEFINE(HAVE_ROUND, 1, [Define to 1 if round() is available])
fi
# Check for rint()
AC_CHECK_LIB(m,rint,have_rint=yes,have_rint=no)
if test $have_rint = yes; then
AC_DEFINE(HAVE_RINT, 1, [Define to 1 if rint() is available])
fi
# Checks for gdkspawn
AC_CHECK_HEADERS(crt_externs.h)
AC_CHECK_FUNCS(_NSGetEnviron)
@@ -925,7 +935,7 @@ if test "x$enable_x11_backend" = xyes; then
have_base_x_pc=true
X_PACKAGES="$X_PACKAGES x11 xext"
x_libs="`$PKG_CONFIG --libs x11 xext`"
X_CFLAGS="`$PKG_CONFIG --cflags x11 xext`"
X_CFLAGS="`$PKG_CONFIG --cflags x11 xext` -DXINPUT2_1_USE_UNSTABLE_PROTOCOL -DXINPUT2_2_USE_UNSTABLE_PROTOCOL"
# Strip out any .la files that pkg-config might give us (this happens
# with -uninstalled.pc files)
@@ -1096,6 +1106,10 @@ if test "x$enable_x11_backend" = xyes; then
fi
fi
# Check for XGetEventData for GenericEvents
AC_CHECK_FUNC(XGetEventData,
AC_DEFINE(HAVE_XGENERICEVENTS, 1, [Have XGenericEvent]))
# set up things for XInput
if test "x$enable_xinput" != "xno" && $PKG_CONFIG --exists "xi" ; then
have_xinput=yes
@@ -1104,6 +1118,7 @@ if test "x$enable_x11_backend" = xyes; then
[Define to 1 if XFree XInput should be used])
X_PACKAGES="$X_PACKAGES xi"
GTK_PACKAGES_FOR_X="$GTK_PACKAGES_FOR_X xi"
AC_CHECK_HEADER(X11/extensions/XInput2.h,
have_xinput2=yes
@@ -1111,6 +1126,10 @@ if test "x$enable_x11_backend" = xyes; then
AC_DEFINE(XINPUT_2, 1, [Define to 1 if XInput 2.0 is available]),
X_EXTENSIONS="$X_EXTENSIONS XInput")
gtk_save_LIBS="$LIBS"
LIBS="$LIBS -lXi"
AC_CHECK_FUNC(XIAllowTouchEvents, AC_DEFINE(XINPUT_2_2, 1, [Define to 1 if XInput 2.2 is available]))
LIBS="$gtk_save_LIBS"
else
AC_DEFINE(XINPUT_NONE, 1,
[Define to 1 if no XInput should be used])
@@ -1241,20 +1260,24 @@ fi
CFLAGS="$saved_cflags"
LDFLAGS="$saved_ldflags"
GDK_PACKAGES="$PANGO_PACKAGES $GIO_PACKAGE $X_PACKAGES $WAYLAND_PACKAGES gdk-pixbuf-2.0 $cairo_backends cairo-gobject"
GDK_PACKAGES="$PANGO_PACKAGES gdk-pixbuf-2.0 cairo cairo-gobject"
GDK_PRIVATE_PACKAGES="$GIO_PACKAGE $X_PACKAGES $WAYLAND_PACKAGES $cairo_backends"
if test "x$enable_x11_backend" = xyes; then
GDK_PRIVATE_PACKAGES="$GDK_PRIVATE_PACKAGES pangoft2"
fi
GDK_DEP_LIBS="$GDK_EXTRA_LIBS `$PKG_CONFIG --libs $GDK_PACKAGES`"
GDK_DEP_CFLAGS="`$PKG_CONFIG --cflags gthread-2.0 $GDK_PACKAGES` $GDK_EXTRA_CFLAGS"
GDK_DEP_LIBS="$GDK_EXTRA_LIBS `$PKG_CONFIG --libs $GDK_PACKAGES $GDK_PRIVATE_PACKAGES` $MATH_LIB"
GDK_DEP_CFLAGS="`$PKG_CONFIG --cflags $GDK_PACKAGES $GDK_PRIVATE_PACKAGES` $GDK_EXTRA_CFLAGS"
#
# If we aren't writing explicit dependencies, then don't put the extra libraries we need
# into the pkg-config files
#
if test $enable_explicit_deps != yes ; then
GDK_PACKAGES="$PANGO_PACKAGES gdk-pixbuf-2.0 cairo-gobject"
GDK_EXTRA_LIBS=
fi
AC_SUBST(GDK_PACKAGES)
AC_SUBST(GDK_PRIVATE_PACKAGES)
AC_SUBST(GDK_EXTRA_LIBS)
AC_SUBST(GDK_EXTRA_CFLAGS)
AC_SUBST(GDK_DEP_LIBS)
@@ -1291,13 +1314,15 @@ else
fi
GTK_PACKAGES="atk cairo cairo-gobject gdk-pixbuf-2.0 gio-2.0"
GTK_PRIVATE_PACKAGES=""
if test "x$enable_x11_backend" = xyes; then
GTK_PACKAGES="$GTK_PACKAGES pangoft2"
GTK_PRIVATE_PACKAGES="$GTK_PRIVATE_PACKAGES pangoft2"
fi
GTK_EXTRA_LIBS=
GTK_EXTRA_CFLAGS=
GTK_DEP_LIBS="$GDK_EXTRA_LIBS $GTK_DEP_LIBS_FOR_X `$PKG_CONFIG --libs $PANGO_PACKAGES $GTK_PACKAGES_FOR_X $GTK_PACKAGES` $GTK_EXTRA_LIBS"
GTK_DEP_CFLAGS="`$PKG_CONFIG --cflags gthread-2.0 $GDK_PACKAGES $GTK_PACKAGES` $GDK_EXTRA_CFLAGS $GTK_EXTRA_CFLAGS"
GTK_DEP_LIBS="$GDK_EXTRA_LIBS $GTK_DEP_LIBS_FOR_X `$PKG_CONFIG --libs $PANGO_PACKAGES $GTK_PACKAGES_FOR_X $GTK_PACKAGES $GTK_PRIVATE_PACKAGES` $GTK_EXTRA_LIBS $MATH_LIB"
GTK_DEP_CFLAGS="`$PKG_CONFIG --cflags $GDK_PACKAGES $GTK_PACKAGES $GTK_PRIVATE_PACKAGES` $GDK_EXTRA_CFLAGS $GTK_EXTRA_CFLAGS"
if test x"$os_win32" = xyes; then
GTK_EXTRA_CFLAGS="$msnative_struct"
@@ -1309,6 +1334,7 @@ PANGO_PREFIX="`$PKG_CONFIG --variable=prefix pango`"
CAIRO_PREFIX="`$PKG_CONFIG --variable=prefix cairo`"
AC_SUBST(GTK_PACKAGES)
AC_SUBST(GTK_PRIVATE_PACKAGES)
AC_SUBST(GTK_EXTRA_LIBS)
AC_SUBST(GTK_EXTRA_CFLAGS)
AC_SUBST(GTK_DEP_LIBS)
@@ -1477,6 +1503,9 @@ if test "x$enable_test_print_backend" != "xno" ; then
fi
AM_CONDITIONAL(TEST_PRINT_BACKEND, test "x$enable_test_print_backend" != "xno")
if test "$os_win32" = "yes"; then
AC_CHECK_TYPES([IPrintDialogCallback],[],[],[[#include <windows.h>]])
fi
################################################################
# Strip -export-dynamic from the link lines of various libraries
@@ -1504,6 +1533,13 @@ fi
GLIB_GSETTINGS
#############
# Resources #
#############
GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable glib_compile_resources gio-2.0`
AC_SUBST(GLIB_COMPILE_RESOURCES)
##################################################
# GObject introspection
##################################################
@@ -1515,24 +1551,79 @@ GOBJECT_INTROSPECTION_CHECK(introspection_required_version)
#################################################
AC_ARG_ENABLE(packagekit,
[AS_HELP_STRING([--disable-packagekit],
[build packagekit open-with module])])
[AS_HELP_STRING([--enable-packagekit=@<:@yes/no/auto@:>@],
[build PackageKit open-with module [default=auto]])],
[enable_packagekit="$enableval"],
[enable_packagekit=auto])
if test "$enable_packagekit" = "auto"; then
if test "$os_win32" = "yes"; then
enable_packagekit=no
else
enable_packagekit=yes
fi
fi
AC_MSG_CHECKING([whether to use PackageKit])
build_packagekit=no
if test "os_win32" != "yes"; then
if test "x$enable_packagekit" != "xno"; then
build_packagekit=yes
AC_DEFINE(ENABLE_PACKAGEKIT, 1, [define to enable packagekit])
if test "x$enable_packagekit" != "xno"; then
if test "$os_win32" != "yes"; then
build_packagekit=yes
AC_DEFINE(ENABLE_PACKAGEKIT, 1, [define to enable packagekit])
else
AC_MSG_ERROR([packagekit support is not available on win32])
fi
fi
AC_MSG_RESULT([$build_packagekit])
AM_CONDITIONAL(ENABLE_PACKAGEKIT, test "x$build_packagekit" = "xyes")
##################################################
# colord module
#################################################
AC_ARG_ENABLE(colord,
[AS_HELP_STRING([--enable-colord=@<:@yes/no/auto@:>@],
[build colord support code [default=auto]])],
[enable_colord="$enableval"],
[enable_colord=auto])
AC_MSG_CHECKING([whether to use colord])
if test "$enable_colord" = "auto"; then
if test "$os_win32" = "yes"; then
enable_colord=no
fi
fi
if test "$enable_colord" != "no"; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
have_colord=no
if test "$enable_colord" != "no"; then
if test "$os_win32" != "yes"; then
PKG_CHECK_MODULES(COLORD, colord >= 0.1.9,
have_colord=yes, have_colord=no)
if test "$enable_colord" = "yes"; then
if test "$have_colord" = "no"; then
AC_MSG_ERROR([--enable-colord specified, but not available])
fi
fi
else
AC_MSG_ERROR([colord support is not available on win32])
fi
fi
AM_CONDITIONAL(ENABLE_PACKAGEKIT, test "x$build_packagekit" = "xyes")
if test "$have_colord" = "yes"; then
AC_DEFINE(HAVE_COLORD, 1, [define if we have colord])
fi
AM_CONDITIONAL(HAVE_COLORD, test "x$have_colord" = "xyes")
##################################################
# Checks for gtk-doc and docbook-tools
##################################################
GTK_DOC_CHECK([1.11])
GTK_DOC_CHECK([1.11],[--flavour no-tmpl])
AC_CHECK_PROG(DB2HTML, db2html, true, false)
AM_CONDITIONAL(HAVE_DOCBOOK, $DB2HTML)
@@ -1585,6 +1676,20 @@ AC_CONFIG_COMMANDS([gdk/gdkconfig.h], [
G_BEGIN_DECLS
/* These macros are used to mark deprecated functions in GDK and
* GTK+ headers, and thus have to be exposed in installed headers.
* But please do *not* use them in other projects. Instead, use
* G_DEPRECATED or define your own wrappers around it.
*/
#ifdef GDK_DISABLE_DEPRECATION_WARNINGS
#define GDK_DEPRECATED
#define GDK_DEPRECATED_FOR(f)
#else
#define GDK_DEPRECATED G_DEPRECATED
#define GDK_DEPRECATED_FOR(f) G_DEPRECATED_FOR(f)
#endif
_______EOF
cat >>$outfile <<_______EOF
@@ -1640,16 +1745,21 @@ gdk-3.0.pc
gtk+-3.0.pc
gtk+-unix-print-3.0.pc
gail-3.0.pc
gtk+-3.0-uninstalled.pc
gail-3.0-uninstalled.pc
m4macros/Makefile
po/Makefile.in
po-properties/Makefile.in
demos/Makefile
demos/gtk-demo/Makefile
demos/gtk-demo/geninclude.pl
demos/pixbuf-demo/Makefile
demos/widget-factory/Makefile
examples/Makefile
tests/Makefile
tests/a11y/Makefile
tests/css/Makefile
tests/css/parser/Makefile
tests/reftests/Makefile
tests/visuals/Makefile
docs/Makefile
docs/reference/Makefile
docs/reference/gdk/Makefile
@@ -1662,6 +1772,7 @@ docs/tools/Makefile
build/Makefile
build/win32/Makefile
build/win32/vs9/Makefile
build/win32/vs10/Makefile
gdk/Makefile
gdk/broadway/Makefile
gdk/x11/Makefile
@@ -1675,12 +1786,10 @@ gtk/Makefile
gtk/makefile.msc
gtk/gtkversion.h
gtk/gtk-win32.rc
gtk/a11y/Makefile
gtk/tests/Makefile
libgail-util/Makefile
modules/Makefile
modules/other/Makefile
modules/other/gail/Makefile
modules/other/gail/libgail-util/Makefile
modules/other/gail/tests/Makefile
modules/engines/Makefile
modules/engines/pixbuf/Makefile
modules/engines/ms-windows/Makefile
@@ -1707,13 +1816,14 @@ echo " GTK+ $GTK_VERSION"
echo " ==========="
echo ""
echo " GDK backends: $GDK_BACKENDS"
if test "x$enable_x11_backend" = "xyes"; then
if test "$enable_x11_backend" = "yes"; then
echo " X11 extensions: $X_EXTENSIONS"
fi
echo " Print backends: $PRINT_BACKENDS"
echo " Dynamic modules: $build_dynamic_modules"
echo " Included immodules: $included_immodules"
echo " PackageKit support: $build_packagekit"
echo " colord support: $have_colord"
echo " Introspection: $found_introspection"
echo " Debugging: $enable_debug"
echo " Documentation: $enable_gtk_doc"

18
debian/README.debian vendored
View File

@@ -1,18 +0,0 @@
libgtk1 for Debian
----------------------
The GIMP Tool Kit (gtk) is a set of widgets to help you program
programs for the X Windowing System easily and powerfully.
gtk is the moving force behind The GNU Image Manipulation Program (The
GIMP) -- the number one freely-available image editing and creation
program available.
gtk is rapidly under development, and the source tree has officially
been separated from The GIMP now, as other teams of programmers
are beginning to write software using its great widget set -- like
GNOME, a desktop interface for X, and gzilla, a freely available
web browser for X.
Ben Gertzfield <che@debian.org>, Mon, 29 Sep 1997 13:11:45 -0700

62
debian/build vendored
View File

@@ -1,62 +0,0 @@
#!/usr/bin/perl -w
# Adjust debian/changelog and build a new
# Debian package of a CVS archive.
# Written 17 November 1998 by Ben Gertzfield
# <che@debian.org>
# This work is released under the GNU
# General Public License, version 2 or
# later.
use strict;
use diagnostics;
use File::Copy;
my $maintainer = 'Ben Gertzfield <che@debian.org>';
my @date = localtime;
my $datestr = sprintf("%d%.2d%.2d", $date[5] + 1900, $date[4] + 1, $date[3]);
my $revision = '01';
open (CHANGELOG, 'debian/changelog') or die "Couldn't open debian/changelog: $!\n";
$_ = <CHANGELOG>;
chomp;
close CHANGELOG;
my ($package, $last_date, $last_revision) = /^(.*?) \((.*?)\.(.*)?\)/;
if ($last_date eq $datestr) {
$revision = sprintf("%.2d", $last_revision + 1);
}
my $new_version = "$datestr.$revision";
copy('debian/changelog', 'debian/changelog.old') or die "Couldn't copy debian/changelog to debian/changelog.old: $!\n";
open(NEWCHANGELOG, ">debian/changelog") or die "Couldn't open debian/changelog for writing: $!\n";
print NEWCHANGELOG "$package ($new_version) unstable; urgency=low\n\n * CVS snapshot build at " . scalar localtime() . "\n\n -- $maintainer " . `date -R` . "\n";
open(OLDCHANGELOG, "debian/changelog.old") or die "Couldn't open debian/changelog.old: $!\n";
while (<OLDCHANGELOG>) {
print NEWCHANGELOG;
}
close OLDCHANGELOG;
close NEWCHANGELOG;
unlink('debian/changelog.old') or die "Couldn't unlink debian/changelog.old: $!\n";
open(NEWVERSION, '>debian/version') or die "Couldn't open debian/version for writing: $!\n";
print NEWVERSION "$new_version\n";
close NEWVERSION;
system('dpkg-buildpackage -b -rfakeroot -us -uc');
unlink 'debian/version' or die "Couldn't unlink debian/version: $!\n";

10
debian/changelog vendored
View File

@@ -1,10 +0,0 @@
gtk+-cvs (19981116.01) unstable; urgency=low
* First test build from CVS
-- Ben Gertzfield <che@debian.org> Tue, 17 Nov 1998 12:02:13 -0800
Local variables:
mode: debian-changelog
add-log-mailing-address: "che@debian.org"
End:

81
debian/control vendored
View File

@@ -1,81 +0,0 @@
Source: gtk+-cvs
Priority: extra
Section: libs
Maintainer: Ben Gertzfield <che@debian.org>
Standards-Version: 2.4.0.0
Package: libgtk-cvs-1.1
Architecture: any
Section: libs
Depends: ${shlibs:Depends}
Conflicts: libgtk-dev (<< 1:1.0.2), libgtk1.1
Description: CVS build of the GIMP Toolkit set of widgets for X
**THIS IS NOT AN OFFICIAL DEBIAN PACKAGE! THIS IS AN AUTOMATED CVS
BUILD OF THE GTK+ LIBRARIES! BEWARE! IT MAY NOT WORK!**
.
The GIMP Toolkit is a freely available set of widgets for X.
GTK is easy to use, and has been implemented in such projects as
The GNU Image Manipulation Program (The GIMP), GNOME, a GNU
desktop set of utilities for X, and gzilla, a GNU web-browser.
.
This is the unstable 1.1 branch of GTK. It is not intended for use
with stable projects!
Package: libgtk-cvs-dev
Architecture: any
Section: devel
Depends: libgtk-cvs-1.1 (=${Source-Version}), libglib-cvs-dev
Suggests: libgtk-cvs-doc
Provides: libgtk1.1-dev
Replaces: libgtk1.1-dev
Conflicts: libgtk-dev, libgtk1 (<< 1:1.0.4), libgtk1.1-dev
Description: CVS build of development files for the GIMP Toolkit
**THIS IS NOT AN OFFICIAL DEBIAN PACKAGE! THIS IS AN AUTOMATED CVS
BUILD OF THE GTK+ LIBRARIES! BEWARE! IT MAY NOT WORK!**
.
This package contains the header files and static libraries for the
GIMP Toolkit set of widgets for X.
.
This is the unstable, 1.1 branch of GTK+. This is not intended for
use with stable releases of programs!
.
Install this package if you wish to develop your own X programs using
the GIMP Toolkit 1.1, or if you wish to compile your own plug-ins for
The GIMP.
Package: libgtk-cvs-doc
Architecture: all
Section: doc
Conflicts: libgtk-dev (<< 1:0.99.4), libgtk-doc, libgtk1.1-doc
Description: CVS build of documentation for the GIMP Toolkit
**THIS IS NOT AN OFFICIAL DEBIAN PACKAGE! THIS IS AN AUTOMATED CVS
BUILD OF THE GTK+ LIBRARIES! BEWARE! IT MAY NOT WORK!**
.
This package contains lots of info-files, HTML docs, FAQs, and
other handy documentation about the GIMP Toolkit set of widgets
for X.
.
This package documents the unstable 1.1 release of the GIMP Toolkit.
.
Install this package if you want to have lots of info about the
GIMP toolkit when you're programming.
Package: libgtk-cvs-dbg
Architecture: any
Section: devel
Depends: libgtk-cvs-1.1 (= ${Source-Version}), libgtk-cvs-dev (= ${Source-Version})
Suggests: libgtk-cvs-doc
Conflicts: libgtk1.1-dbg
Description: CVS build of debugging files for the GIMP Toolkit
**THIS IS NOT AN OFFICIAL DEBIAN PACKAGE! THIS IS AN AUTOMATED CVS
BUILD OF THE GTK+ LIBRARIES! BEWARE! IT MAY NOT WORK!**
.
This package contains the debugging static libraries for the
GIMP Toolkit set of widgets for X.
.
This is the unstable, 1.1 branch of GTK+. This is not intended for
use with stable releases of programs!
.
Install this package if you wish to debug your own X programs using
the GIMP Toolkit 1.1, or if you wish to debug your own plug-ins for
The GIMP.

8
debian/copyright vendored
View File

@@ -1,8 +0,0 @@
This package was debianized by Ben Gertzfield <che@debian.org> on
Tue, 17 Nov 1998 12:07:17 -0800
It was produced from the CVS repository at cvs.gimp.org.
It may be redistributed under the terms of the GNU LGPL, Version 2 or
later, found on Debian systems in the file /usr/doc/copyright/LGPL.

View File

@@ -1,9 +0,0 @@
usr/lib/libgdk.so
usr/lib/libgdk.a
usr/lib/libgtk.so
usr/lib/libgtk.a
usr/include/gdk/
usr/include/gtk/
usr/bin/gtk-config
usr/man/man1/gtk-config.1
usr/share/aclocal/gtk.m4

View File

@@ -1,5 +0,0 @@
#!/bin/sh
set -e
#DEBHELPER#

View File

@@ -1,6 +0,0 @@
#!/bin/sh
set -e
install-info --quiet --remove gtk
#DEBHELPER#

View File

@@ -1,8 +0,0 @@
usr/info/gdk.info
usr/info/gtk.info
usr/info/gtk.info-1
usr/info/gtk.info-2
usr/info/gtk.info-3
usr/info/gtk.info-4
usr/info/gtk.info-5

View File

@@ -1,11 +0,0 @@
#!/bin/sh
set -e
install-info --quiet --description="The GIMP Toolkit." \
--section "The GIMP" "The GIMP" /usr/info/gtk.info.gz
install-info --quiet --description="The GIMP Drawing Kit." \
--section "The GIMP" "The GIMP" /usr/info/gdk.info.gz
#DEBHELPER#

View File

@@ -1,7 +0,0 @@
#!/bin/sh
set -e
install-info --quiet --remove gtk
install-info --quiet --remove gdk
#DEBHELPER#

7
debian/postinst vendored
View File

@@ -1,7 +0,0 @@
#!/bin/sh
set -e
ldconfig
#DEBHELPER#

160
debian/rules vendored
View File

@@ -1,160 +0,0 @@
#!/usr/bin/make -f
# debian/rules file for gtk+ Debian package
# written April 1998 by Ben Gertzfield <che@debian.org
build: build-stamp
build-stamp:
dh_testdir
./autogen.sh --prefix=/usr --with-xinput=xfree
$(MAKE)
cd docs && make distdocs
cd ..
touch build-stamp
build-dbg: build-dbg-stamp
build-dbg-stamp:
dh_testdir
./configure --prefix=/usr --with-xinput=xfree --enable-debug=yes
$(MAKE)
touch build-dbg-stamp
clean:
dh_testdir
dh_testroot
rm -f build-stamp build-dbg-stamp install-stamp install-dbg-stamp
# Add here commands to clean up after the build process.
-$(MAKE) clean
cd docs
-$(MAKE) maintainer-clean
cd ..
-$(MAKE) distclean
find . -name '*.o' -o -name '_libs' -o -name '*.lo' -o -name '*.a' -o -name '.deps' | xargs rm -rf
dh_clean
clean-dbg:
dh_testdir
dh_testroot
rm -f build-stamp build-dbg-stamp install-stamp install-dbg-stamp
# Add here commands to clean up after the build process.
-$(MAKE) clean
cd docs
-$(MAKE) maintainer-clean
cd ..
-$(MAKE) distclean
find . -name '*.o' -o -name '_libs' -o -name '*.lo' -o -name '*.a' -o -name '.deps' | xargs rm -rf
dh_clean -k
install: install-stamp
install-stamp: build
dh_testdir
dh_testroot
dh_clean
$(MAKE) prefix=`pwd`/debian/tmp/usr install
touch install-stamp
install-dbg: install-dbg-stamp
install-dbg-stamp: build-dbg
dh_testdir
dh_testroot
dh_clean -k
$(MAKE) prefix=`pwd`/debian/libgtk-cvs-dbg/usr install
touch install-dbg-stamp
# Build architecture-independent files here.
binary-indep: build install libgtk-cvs-doc
# We have nothing to do by default.
# Build architecture-dependent files here.
binary-arch: build install libgtk-cvs-dev libgtk-cvs-1.1 libgtk-cvs-dbg
libgtk-cvs-1.1: build
dh_testdir -plibgtk-cvs-1.1
dh_testroot -plibgtk-cvs-1.1
dh_installdirs -plibgtk-cvs-1.1
# Add here commands to install the files into debian/tmp
rm -rf debian/tmp/usr/bin debian/tmp/usr/include debian/tmp/usr/info debian/tmp/usr/lib/glib debian/tmp/usr/share/aclocal debian/tmp/usr/man debian/tmp/usr/lib/*.la
dh_installdocs -plibgtk-cvs-1.1
dh_installchangelogs -plibgtk-cvs-1.1
dh_strip -plibgtk-cvs-1.1
dh_compress -plibgtk-cvs-1.1
dh_fixperms -plibgtk-cvs-1.1
dh_installdeb -plibgtk-cvs-1.1
dh_shlibdeps -plibgtk-cvs-1.1
dh_gencontrol -plibgtk-cvs-1.1
dh_makeshlibs -plibgtk-cvs-1.1 -V 'libgtk-cvs-1.1 (='`cat debian/version`')'
dh_md5sums -plibgtk-cvs-1.1
dh_builddeb -plibgtk-cvs-1.1
libgtk-cvs-dev: build
dh_testdir -plibgtk-cvs-dev
dh_testroot -plibgtk-cvs-dev
dh_clean -plibgtk-cvs-dev -k
dh_installdirs -plibgtk-cvs-dev
# Add here commands to install the files into debian/tmp
dh_movefiles -plibgtk-cvs-dev
cp gtk-config debian/tmp/usr/bin
dh_installdocs -plibgtk-cvs-dev
dh_installchangelogs -plibgtk-cvs-dev
dh_strip -plibgtk-cvs-dev
dh_compress -plibgtk-cvs-dev
dh_fixperms -plibgtk-cvs-dev
dh_installdeb -plibgtk-cvs-dev
dh_shlibdeps -plibgtk-cvs-dev
dh_gencontrol -plibgtk-cvs-dev
dh_md5sums -plibgtk-cvs-dev
dh_builddeb -plibgtk-cvs-dev
libgtk-cvs-doc:
dh_testdir -plibgtk-cvs-doc
dh_testroot -plibgtk-cvs-doc
dh_clean -plibgtk-cvs-doc -k
dh_installdirs -plibgtk-cvs-doc usr/doc/libgtk-cvs-doc/faq-html \
usr/doc/libgtk-cvs-doc/tutorial-html usr/doc/libgtk-cvs-doc/italian-tutorial-html usr/doc/libgtk-cvs-doc/french-tutorial-html usr/doc/libgtk-cvs-doc/gdk-html
dh_movefiles -plibgtk-cvs-doc
cp docs/html/gtkfaq*.html debian/libgtk-cvs-doc/usr/doc/libgtk-cvs-doc/faq-html
cp docs/html/gtk_tut-*.html debian/libgtk-cvs-doc/usr/doc/libgtk-cvs-doc/tutorial-html
cp docs/html/*.gif debian/libgtk-cvs-doc/usr/doc/libgtk-cvs-doc/tutorial-html
cp docs/html/gtk_tut.html debian/libgtk-cvs-doc/usr/doc/libgtk-cvs-doc/tutorial-html
cp docs/html/gtk_tut_it*.html debian/libgtk-cvs-doc/usr/doc/libgtk-cvs-doc/italian-tutorial-html
cp docs/html/*.gif debian/libgtk-cvs-doc/usr/doc/libgtk-cvs-doc/italian-tutorial-html
cp docs/html/gtk_tut_fr*.html debian/libgtk-cvs-doc/usr/doc/libgtk-cvs-doc/french-tutorial-html
cp docs/html/*.gif debian/libgtk-cvs-doc/usr/doc/libgtk-cvs-doc/french-tutorial-html
cp docs/html/gdk* debian/libgtk-cvs-doc/usr/doc/libgtk-cvs-doc/gdk-html
cp docs/text/*.txt debian/libgtk-cvs-doc/usr/doc/libgtk-cvs-doc/
dh_installdocs -plibgtk-cvs-doc docs/{debugging,developers,styles,text_widget,widget_system,gtk-config,refcounting}.txt TODO NEWS
dh_installchangelogs -plibgtk-cvs-doc
dh_strip -plibgtk-cvs-doc
dh_compress -plibgtk-cvs-doc
dh_fixperms -plibgtk-cvs-doc
dh_installdeb -plibgtk-cvs-doc
dh_shlibdeps -plibgtk-cvs-doc
dh_gencontrol -plibgtk-cvs-doc
dh_md5sums -plibgtk-cvs-doc
dh_builddeb -plibgtk-cvs-doc
libgtk-cvs-dbg: clean-dbg install-dbg
dh_testdir -plibgtk-cvs-dbg
dh_testroot -plibgtk-cvs-dbg
dh_installdirs -plibgtk-cvs-dbg
# Add here commands to install the files into debian/libgtk-cvs-dbg
rm -rf debian/libgtk-cvs-dbg/usr/bin debian/libgtk-cvs-dbg/usr/include debian/libgtk-cvs-dbg/usr/info debian/libgtk-cvs-dbg/usr/lib/glib debian/libgtk-cvs-dbg/usr/man debian/libgtk-cvs-dbg/usr/share debian/libgtk-cvs-dbg/usr/lib/*.{la,so*}
for file in `find debian/libgtk-cvs-dbg/usr/lib -name '*.a'` ; do \
mv $$file debian/libgtk-cvs-dbg/usr/lib/`basename $$file .a`_g.a; \
done
dh_installdocs -plibgtk-cvs-dbg
dh_installchangelogs -plibgtk-cvs-dbg
dh_compress -plibgtk-cvs-dbg
dh_fixperms -plibgtk-cvs-dbg
dh_installdeb -plibgtk-cvs-dbg
dh_shlibdeps -plibgtk-cvs-dbg
dh_gencontrol -plibgtk-cvs-dbg
dh_md5sums -plibgtk-cvs-dbg
dh_builddeb -plibgtk-cvs-dbg
source diff:
@echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary

View File

@@ -1,59 +1,6 @@
## Makefile.am for gtk+/demos
include $(top_srcdir)/Makefile.decl
SUBDIRS = gtk-demo
INCLUDES = \
-I$(top_srcdir) \
-I$(top_builddir)/gdk \
-DGDK_DISABLE_DEPRECATED \
-DGTK_DISABLE_DEPRECATED \
$(GTK_DEBUG_FLAGS) \
$(GTK_DEP_CFLAGS)
DEPS = \
$(top_builddir)/gtk/libgtk-3.la
LDADDS = \
$(top_builddir)/gtk/libgtk-3.la \
$(top_builddir)/gdk/libgdk-3.la \
$(GTK_DEP_LIBS) \
$(MATH_LIB)
noinst_PROGRAMS = \
testanimation \
testpixbuf-color \
testpixbuf-save \
testpixbuf-scale \
pixbuf-demo
testpixbuf_save_DEPENDENCIES = $(DEPS)
testpixbuf_color_DEPENDENCIES = $(DEPS)
testpixbuf_scale_DEPENDENCIES = $(DEPS)
testanimation_DEPENDENCIES = $(DEPS)
pixbuf_demo_DEPENDENCIES = $(DEPS)
testpixbuf_save_LDADD = $(LDADDS)
testpixbuf_color_LDADD = $(LDADDS)
testpixbuf_scale_LDADD = $(LDADDS)
testanimation_LDADD = $(LDADDS)
pixbuf_demo_LDADD = $(LDADDS)
testpixbuf_save_SOURCES = testpixbuf-save.c
testpixbuf_color_SOURCES = testpixbuf-color.c
testpixbuf_scale_SOURCES = testpixbuf-scale.c pixbuf-init.c
testanimation_SOURCES = testanimation.c pixbuf-init.c
pixbuf_demo_SOURCES = pixbuf-demo.c pixbuf-init.c
EXTRA_DIST += \
apple-red.png \
background.jpg \
gnome-applets.png \
gnome-calendar.png \
gnome-foot.png \
gnome-gimp.png \
gnome-gmush.png \
gnome-gsame.png \
gnu-keys.png
SUBDIRS = gtk-demo widget-factory pixbuf-demo
-include $(top_srcdir)/git.mk

View File

@@ -6,6 +6,7 @@ democodedir=$(datadir)/gtk-$(GTK_API_VERSION)/demo
## These should be in the order you want them to appear in the
## demo app, which means alphabetized by demo title, not filename
demos = \
application.c \
appwindow.c \
assistant.c \
builder.c \
@@ -28,8 +29,10 @@ demos = \
links.c \
list_store.c \
menus.c \
multitouch.c \
offscreen_window.c \
offscreen_window2.c \
overlay.c \
panes.c \
pickers.c \
pixbufs.c \
@@ -42,10 +45,11 @@ demos = \
textview.c \
textscroll.c \
toolpalette.c \
transparent.c \
tree_store.c \
ui_manager.c
INCLUDES = \
AM_CPPFLAGS = \
-DDEMOCODEDIR="\"$(democodedir)\"" \
-I$(top_srcdir) \
-I$(top_builddir)/gdk \
@@ -63,16 +67,27 @@ LDADDS = \
$(GTK_DEP_LIBS) \
-lm
bin_PROGRAMS = gtk3-demo
bin_PROGRAMS = gtk3-demo gtk3-demo-application
BUILT_SOURCES = demos.h
BUILT_SOURCES = demos.h application_resources.c
EXTRA_DIST += \
$(IMAGEFILES) \
demo.ui
EXTRA_DIST += \
$(IMAGEFILES) \
demo.ui \
application.gresource.xml \
application.ui \
menus.ui \
gtk-logo-24.png \
gtk-logo-48.png \
org.gtk.Demo.gschema.xml
gsettings_SCHEMAS = \
org.gtk.Demo.gschema.xml
@GSETTINGS_RULES@
demos.h: @REBUILD@ $(demos) geninclude.pl
(here=`pwd` ; cd $(srcdir) && $(PERL) $$here/geninclude.pl $(demos)) > demos.h
$(AM_V_GEN) (here=`pwd` ; cd $(srcdir) && $(PERL) $$here/geninclude.pl $(demos)) > demos.h
gtk3_demo_SOURCES = \
$(demos) \
@@ -84,8 +99,17 @@ gtk3_demo_DEPENDENCIES = $(DEPS)
gtk3_demo_LDADD = $(LDADDS)
gtk3_demo_LDFLAGS = -export-dynamic
gtk3_demo_application_SOURCES = \
application-standalone.c \
application_resources.c
gtk3_demo_application_LDADD = $(LDADDS)
application_resources.c: application.gresource.xml gtk-logo-24.png gtk-logo-48.png application.ui menus.ui
$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate-source $(srcdir)/application.gresource.xml
IMAGEFILES= alphatest.png \
apple-red.png \
apple-red.png \
background.jpg \
floppybuddy.gif \
gnome-applets.png \

View File

@@ -0,0 +1,3 @@
#define STANDALONE
#include "application.c"

View File

@@ -0,0 +1,479 @@
/* Application class
*
* Demonstrates a simple application.
*
* This examples uses GtkApplication, GtkApplicationWindow, GtkBuilder
* as well as GMenu and GResource. Due to the way GtkApplication is structured,
* it is run as a separate process.
*/
#include "config.h"
#include <gtk/gtk.h>
#ifdef STANDALONE
static void
show_action_dialog (GSimpleAction *action)
{
const gchar *name;
GtkWidget *dialog;
name = g_action_get_name (G_ACTION (action));
dialog = gtk_message_dialog_new (NULL,
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_INFO,
GTK_BUTTONS_CLOSE,
"You activated action: \"%s\"",
name);
g_signal_connect (dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
gtk_widget_show (dialog);
}
static void
show_action_infobar (GSimpleAction *action,
GVariant *parameter,
gpointer window)
{
GtkWidget *infobar;
GtkWidget *message;
gchar *text;
const gchar *name;
const gchar *value;
name = g_action_get_name (G_ACTION (action));
value = g_variant_get_string (parameter, NULL);
message = g_object_get_data (G_OBJECT (window), "message");
infobar = g_object_get_data (G_OBJECT (window), "infobar");
text = g_strdup_printf ("You activated radio action: \"%s\".\n"
"Current value: %s", name, value);
gtk_label_set_text (GTK_LABEL (message), text);
gtk_widget_show (infobar);
g_free (text);
}
static void
activate_action (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
show_action_dialog (action);
}
static void
activate_toggle (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
GVariant *state;
show_action_dialog (action);
state = g_action_get_state (G_ACTION (action));
g_action_change_state (G_ACTION (action), g_variant_new_boolean (!g_variant_get_boolean (state)));
g_variant_unref (state);
}
static void
activate_radio (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
show_action_infobar (action, parameter, user_data);
g_action_change_state (G_ACTION (action), parameter);
}
static void
activate_about (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
GtkWidget *window = user_data;
GdkPixbuf *pixbuf;
const gchar *authors[] = {
"Peter Mattis",
"Spencer Kimball",
"Josh MacDonald",
"and many more...",
NULL
};
const gchar *documentors[] = {
"Owen Taylor",
"Tony Gale",
"Matthias Clasen <mclasen@redhat.com>",
"and many more...",
NULL
};
pixbuf = gdk_pixbuf_new_from_resource ("/logos/gtk-logo-48.png", NULL);
gtk_show_about_dialog (GTK_WINDOW (window),
"program-name", "GTK+ Code Demos",
"version", g_strdup_printf ("%s,\nRunning against GTK+ %d.%d.%d",
PACKAGE_VERSION,
gtk_get_major_version (),
gtk_get_minor_version (),
gtk_get_micro_version ()),
"copyright", "(C) 1997-2009 The GTK+ Team",
"license-type", GTK_LICENSE_LGPL_2_1,
"website", "http://www.gtk.org",
"comments", "Program to demonstrate GTK+ functions.",
"authors", authors,
"documenters", documentors,
"logo", pixbuf,
"title", "About GTK+ Code Demos",
NULL);
g_object_unref (pixbuf);
}
static void
activate_quit (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
GtkApplication *app = user_data;
GtkWidget *win;
GList *list, *next;
list = gtk_application_get_windows (app);
while (list)
{
win = list->data;
next = list->next;
gtk_widget_destroy (GTK_WIDGET (win));
list = next;
}
}
static void
register_stock_icons (void)
{
static gboolean registered = FALSE;
if (!registered)
{
GdkPixbuf *pixbuf;
GtkIconFactory *factory;
GtkIconSet *icon_set;
static GtkStockItem items[] = {
{ "demo-gtk-logo", "_GTK!", 0, 0, NULL }
};
registered = TRUE;
gtk_stock_add (items, G_N_ELEMENTS (items));
factory = gtk_icon_factory_new ();
gtk_icon_factory_add_default (factory);
pixbuf = gdk_pixbuf_new_from_resource ("/logos/gtk-logo-24.png", NULL);
icon_set = gtk_icon_set_new_from_pixbuf (pixbuf);
gtk_icon_factory_add (factory, "demo-gtk-logo", icon_set);
gtk_icon_set_unref (icon_set);
g_object_unref (pixbuf);
/* Drop our reference to the factory, GTK will hold a reference. */
g_object_unref (factory);
}
}
static void
update_statusbar (GtkTextBuffer *buffer,
GtkStatusbar *statusbar)
{
gchar *msg;
gint row, col;
gint count;
GtkTextIter iter;
/* clear any previous message, underflow is allowed */
gtk_statusbar_pop (statusbar, 0);
count = gtk_text_buffer_get_char_count (buffer);
gtk_text_buffer_get_iter_at_mark (buffer,
&iter,
gtk_text_buffer_get_insert (buffer));
row = gtk_text_iter_get_line (&iter);
col = gtk_text_iter_get_line_offset (&iter);
msg = g_strdup_printf ("Cursor at row %d column %d - %d chars in document",
row, col, count);
gtk_statusbar_push (statusbar, 0, msg);
g_free (msg);
}
static void
mark_set_callback (GtkTextBuffer *buffer,
const GtkTextIter *new_location,
GtkTextMark *mark,
gpointer data)
{
update_statusbar (buffer, GTK_STATUSBAR (data));
}
static void
change_theme_state (GSimpleAction *action,
GVariant *state,
gpointer user_data)
{
GtkSettings *settings = gtk_settings_get_default ();
g_object_set (G_OBJECT (settings),
"gtk-application-prefer-dark-theme",
g_variant_get_boolean (state),
NULL);
g_simple_action_set_state (action, state);
}
static void
change_titlebar_state (GSimpleAction *action,
GVariant *state,
gpointer user_data)
{
GtkWindow *window = user_data;
gtk_window_set_hide_titlebar_when_maximized (GTK_WINDOW (window),
g_variant_get_boolean (state));
g_simple_action_set_state (action, state);
}
static void
change_radio_state (GSimpleAction *action,
GVariant *state,
gpointer user_data)
{
g_simple_action_set_state (action, state);
}
static GActionEntry app_entries[] = {
{ "new", activate_action, NULL, NULL, NULL },
{ "open", activate_action, NULL, NULL, NULL },
{ "save", activate_action, NULL, NULL, NULL },
{ "save-as", activate_action, NULL, NULL, NULL },
{ "quit", activate_quit, NULL, NULL, NULL },
{ "dark", activate_toggle, NULL, "false", change_theme_state }
};
static GActionEntry win_entries[] = {
{ "titlebar", activate_toggle, NULL, "false", change_titlebar_state },
{ "shape", activate_radio, "s", "'oval'", change_radio_state },
{ "bold", activate_toggle, NULL, "false", NULL },
{ "about", activate_about, NULL, NULL, NULL },
{ "file1", activate_action, NULL, NULL, NULL },
{ "logo", activate_action, NULL, NULL, NULL }
};
static void
clicked_cb (GtkWidget *widget, GtkWidget *info)
{
gtk_widget_hide (info);
}
static void
startup (GApplication *app)
{
GtkBuilder *builder;
GMenuModel *appmenu;
GMenuModel *menubar;
builder = gtk_builder_new ();
gtk_builder_add_from_resource (builder, "/ui/menus.ui", NULL);
appmenu = (GMenuModel *)gtk_builder_get_object (builder, "appmenu");
menubar = (GMenuModel *)gtk_builder_get_object (builder, "menubar");
gtk_application_set_app_menu (GTK_APPLICATION (app), appmenu);
gtk_application_set_menubar (GTK_APPLICATION (app), menubar);
g_object_unref (builder);
}
static void
activate (GApplication *app)
{
GtkBuilder *builder;
GtkWidget *window;
GtkWidget *grid;
GtkWidget *contents;
GtkWidget *status;
GtkWidget *message;
GtkWidget *button;
GtkWidget *infobar;
GtkWidget *menutool;
GMenuModel *toolmenu;
GtkTextBuffer *buffer;
window = gtk_application_window_new (GTK_APPLICATION (app));
gtk_window_set_title (GTK_WINDOW (window), "Application Class");
gtk_window_set_icon_name (GTK_WINDOW (window), "document-open");
gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);
g_action_map_add_action_entries (G_ACTION_MAP (window),
win_entries, G_N_ELEMENTS (win_entries),
window);
builder = gtk_builder_new ();
gtk_builder_add_from_resource (builder, "/ui/application.ui", NULL);
grid = (GtkWidget *)gtk_builder_get_object (builder, "grid");
contents = (GtkWidget *)gtk_builder_get_object (builder, "contents");
status = (GtkWidget *)gtk_builder_get_object (builder, "status");
message = (GtkWidget *)gtk_builder_get_object (builder, "message");
button = (GtkWidget *)gtk_builder_get_object (builder, "button");
infobar = (GtkWidget *)gtk_builder_get_object (builder, "infobar");
menutool = (GtkWidget *)gtk_builder_get_object (builder, "menutool");
toolmenu = (GMenuModel *)gtk_builder_get_object (builder, "toolmenu");
g_object_set_data (G_OBJECT (window), "message", message);
g_object_set_data (G_OBJECT (window), "infobar", infobar);
gtk_container_add (GTK_CONTAINER (window), grid);
gtk_menu_tool_button_set_menu (GTK_MENU_TOOL_BUTTON (menutool),
gtk_menu_new_from_model (toolmenu));
gtk_widget_grab_focus (contents);
g_signal_connect (button, "clicked", G_CALLBACK (clicked_cb), infobar);
/* Show text widget info in the statusbar */
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (contents));
g_signal_connect_object (buffer, "changed",
G_CALLBACK (update_statusbar), status, 0);
g_signal_connect_object (buffer, "mark-set",
G_CALLBACK (mark_set_callback), status, 0);
update_statusbar (buffer, GTK_STATUSBAR (status));
gtk_widget_show_all (window);
g_object_unref (builder);
}
int
main (int argc, char *argv[])
{
GtkApplication *app;
GSettings *settings;
GAction *action;
gtk_init (NULL, NULL);
register_stock_icons ();
app = gtk_application_new ("org.gtk.Demo", 0);
settings = g_settings_new ("org.gtk.Demo");
g_action_map_add_action_entries (G_ACTION_MAP (app),
app_entries, G_N_ELEMENTS (app_entries),
app);
action = g_settings_create_action (settings, "color");
g_action_map_add_action (G_ACTION_MAP (app), action);
g_signal_connect (app, "startup", G_CALLBACK (startup), NULL);
g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
g_application_run (G_APPLICATION (app), 0, NULL);
return 0;
}
#else /* !STANDALONE */
static gboolean name_seen;
static GtkWidget *placeholder;
static void
on_name_appeared (GDBusConnection *connection,
const gchar *name,
const gchar *name_owner,
gpointer user_data)
{
name_seen = TRUE;
}
static void
on_name_vanished (GDBusConnection *connection,
const gchar *name,
gpointer user_data)
{
if (!name_seen)
return;
if (placeholder)
{
gtk_widget_destroy (placeholder);
g_object_unref (placeholder);
placeholder = NULL;
}
}
GtkWidget *
do_application (GtkWidget *toplevel)
{
static guint watch = 0;
if (watch == 0)
watch = g_bus_watch_name (G_BUS_TYPE_SESSION,
"org.gtk.Demo",
0,
on_name_appeared,
on_name_vanished,
NULL, NULL);
if (placeholder == NULL)
{
const gchar *command;
GError *error = NULL;
if (g_file_test ("./gtk3-demo-application", G_FILE_TEST_IS_EXECUTABLE))
command = "./gtk3-demo-application";
else
command = "gtk3-demo-application";
if (!g_spawn_command_line_async (command, &error))
{
g_warning ("%s", error->message);
g_error_free (error);
}
placeholder = gtk_label_new ("");
g_object_ref_sink (placeholder);
}
else
{
g_dbus_connection_call_sync (g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL),
"org.gtk.Demo",
"/org/gtk/Demo",
"org.gtk.Actions",
"Activate",
g_variant_new ("(sava{sv})", "quit", NULL, NULL),
NULL,
0,
G_MAXINT,
NULL, NULL);
}
return placeholder;
}
#endif

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/logos">
<file preprocess="to-pixdata">gtk-logo-24.png</file>
<file preprocess="to-pixdata">gtk-logo-48.png</file>
</gresource>
<gresource prefix="/ui">
<file preprocess="xml-stripblanks">application.ui</file>
<file preprocess="xml-stripblanks">menus.ui</file>
</gresource>
</gresources>

View File

@@ -0,0 +1,104 @@
<?xml version="1.0"?>
<interface>
<object class="GtkGrid" id="grid">
<child>
<object class="GtkToolbar" id="toolbar">
<property name="orientation">horizontal</property>
<property name="halign">fill</property>
<property name="hexpand">True</property>
<child>
<object class="GtkMenuToolButton" id="menutool">
<property name="stock-id">gtk-open</property>
</object>
</child>
<child>
<object class="GtkToolButton" id="quit">
<property name="stock-id">gtk-quit</property>
<property name="action-name">app.quit</property>
</object>
</child>
<child>
<object class="GtkSeparatorToolItem" id="sep"/>
</child>
<child>
<object class="GtkToolButton" id="logo">
<property name="stock-id">demo-gtk-logo</property>
<property name="action-name">win.logo</property>
</object>
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkInfoBar" id="infobar">
<property name="no-show-all">True</property>
<property name="halign">fill</property>
<property name="hexpand">True</property>
<child internal-child="content_area">
<object class="GtkBox" id="content_area">
<child>
<object class="GtkLabel" id="message">
<property name="visible">True</property>
<property name="hexpand">True</property>
<property name="halign">fill</property>
</object>
</child>
</object>
</child>
<child internal-child="action_area">
<object class="GtkBox" id="action_area">
<child>
<object class="GtkButton" id="button">
<property name="visible">True</property>
<property name="valign">center</property>
<property name="label">gtk-ok</property>
<property name="use-stock">True</property>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow" id="sw">
<property name="shadow-type">in</property>
<child>
<object class="GtkTextView" id="contents">
<property name="halign">fill</property>
<property name="valign">fill</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
</object>
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkStatusbar" id="status">
<property name="halign">fill</property>
<property name="hexpand">True</property>
<property name="visible">True</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">3</property>
</packing>
</child>
</object>
<menu id="toolmenu">
<item>
<attribute name="label">File1</attribute>
<attribute name="action">win.file1</attribute>
</item>
</menu>
</interface>

View File

@@ -1,6 +1,8 @@
/* Application main window
/* Application window
*
* Demonstrates a typical application window with menubar, toolbar, statusbar.
*
* This example uses GtkUIManager and GtkActionGroup.
*/
#include <gtk/gtk.h>
@@ -25,10 +27,18 @@ activate_action (GtkAction *action)
GtkSettings *settings = gtk_settings_get_default ();
g_object_set (G_OBJECT (settings),
"gtk-application-prefer-dark-theme", value,
NULL);
"gtk-application-prefer-dark-theme", value,
NULL);
return;
}
if (g_str_equal (name, "HideTitlebar"))
{
gboolean value = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
gtk_window_set_hide_titlebar_when_maximized (GTK_WINDOW (window), value);
return;
}
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_INFO,
@@ -69,7 +79,7 @@ activate_radio_action (GtkAction *action, GtkRadioAction *current)
static void
about_cb (GtkAction *action,
GtkWidget *window)
GtkWidget *window)
{
GdkPixbuf *pixbuf, *transparent;
gchar *filename;
@@ -102,21 +112,21 @@ about_cb (GtkAction *action,
}
gtk_show_about_dialog (GTK_WINDOW (window),
"program-name", "GTK+ Code Demos",
"version", g_strdup_printf ("%s,\nRunning against GTK+ %d.%d.%d",
PACKAGE_VERSION,
gtk_get_major_version (),
gtk_get_minor_version (),
gtk_get_micro_version ()),
"copyright", "(C) 1997-2009 The GTK+ Team",
"license-type", GTK_LICENSE_LGPL_2_1,
"website", "http://www.gtk.org",
"comments", "Program to demonstrate GTK+ functions.",
"authors", authors,
"documenters", documentors,
"logo", transparent,
"program-name", "GTK+ Code Demos",
"version", g_strdup_printf ("%s,\nRunning against GTK+ %d.%d.%d",
PACKAGE_VERSION,
gtk_get_major_version (),
gtk_get_minor_version (),
gtk_get_micro_version ()),
"copyright", "(C) 1997-2009 The GTK+ Team",
"license-type", GTK_LICENSE_LGPL_2_1,
"website", "http://www.gtk.org",
"comments", "Program to demonstrate GTK+ functions.",
"authors", authors,
"documenters", documentors,
"logo", transparent,
"title", "About GTK+ Code Demos",
NULL);
NULL);
g_object_unref (transparent);
}
@@ -194,6 +204,11 @@ static GtkToggleActionEntry toggle_entries[] = {
"Prefer Dark Theme", /* tooltip */
G_CALLBACK (activate_action),
FALSE }, /* is_active */
{ "HideTitlebar", NULL,
"_Hide Titlebar when maximized", NULL,
"Hide Titlebar when maximized",
G_CALLBACK (activate_action),
FALSE }
};
static guint n_toggle_entries = G_N_ELEMENTS (toggle_entries);
@@ -248,10 +263,11 @@ static const gchar *ui_info =
" </menu>"
" <menu action='PreferencesMenu'>"
" <menuitem action='DarkTheme'/>"
" <menuitem action='HideTitlebar'/>"
" <menu action='ColorMenu'>"
" <menuitem action='Red'/>"
" <menuitem action='Green'/>"
" <menuitem action='Blue'/>"
" <menuitem action='Red'/>"
" <menuitem action='Green'/>"
" <menuitem action='Blue'/>"
" </menu>"
" <menu action='ShapeMenu'>"
" <menuitem action='Square'/>"
@@ -317,10 +333,10 @@ register_stock_icons (void)
pixbuf = NULL;
filename = demo_find_file ("gtk-logo-rgb.gif", NULL);
if (filename)
{
pixbuf = gdk_pixbuf_new_from_file (filename, NULL);
g_free (filename);
}
{
pixbuf = gdk_pixbuf_new_from_file (filename, NULL);
g_free (filename);
}
/* Register icon to accompany stock item */
if (pixbuf != NULL)
@@ -355,8 +371,8 @@ update_statusbar (GtkTextBuffer *buffer,
GtkTextIter iter;
gtk_statusbar_pop (statusbar, 0); /* clear any previous message,
* underflow is allowed
*/
* underflow is allowed
*/
count = gtk_text_buffer_get_char_count (buffer);
@@ -407,7 +423,7 @@ do_appwindow (GtkWidget *do_widget)
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_screen (GTK_WINDOW (window),
gtk_widget_get_screen (do_widget));
gtk_widget_get_screen (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Application Window");
gtk_window_set_icon_name (GTK_WINDOW (window), "document-open");
@@ -416,7 +432,7 @@ do_appwindow (GtkWidget *do_widget)
G_CALLBACK (gtk_widget_destroyed),
&window);
table = gtk_table_new (1, 5, FALSE);
table = gtk_grid_new ();
gtk_container_add (GTK_CONTAINER (window), table);
@@ -425,60 +441,52 @@ do_appwindow (GtkWidget *do_widget)
action_group = gtk_action_group_new ("AppWindowActions");
open_action = g_object_new (tool_menu_action_get_type (),
"name", "Open",
"label", "_Open",
"tooltip", "Open a file",
"stock-id", GTK_STOCK_OPEN,
NULL);
"name", "Open",
"label", "_Open",
"tooltip", "Open a file",
"stock-id", GTK_STOCK_OPEN,
NULL);
gtk_action_group_add_action (action_group, open_action);
g_object_unref (open_action);
gtk_action_group_add_actions (action_group,
entries, n_entries,
window);
entries, n_entries,
window);
gtk_action_group_add_toggle_actions (action_group,
toggle_entries, n_toggle_entries,
NULL);
toggle_entries, n_toggle_entries,
NULL);
gtk_action_group_add_radio_actions (action_group,
color_entries, n_color_entries,
COLOR_RED,
G_CALLBACK (activate_radio_action),
NULL);
color_entries, n_color_entries,
COLOR_RED,
G_CALLBACK (activate_radio_action),
NULL);
gtk_action_group_add_radio_actions (action_group,
shape_entries, n_shape_entries,
SHAPE_SQUARE,
G_CALLBACK (activate_radio_action),
NULL);
shape_entries, n_shape_entries,
SHAPE_SQUARE,
G_CALLBACK (activate_radio_action),
NULL);
merge = gtk_ui_manager_new ();
g_object_set_data_full (G_OBJECT (window), "ui-manager", merge,
g_object_unref);
g_object_unref);
gtk_ui_manager_insert_action_group (merge, action_group, 0);
gtk_window_add_accel_group (GTK_WINDOW (window),
gtk_ui_manager_get_accel_group (merge));
gtk_ui_manager_get_accel_group (merge));
if (!gtk_ui_manager_add_ui_from_string (merge, ui_info, -1, &error))
{
g_message ("building menus failed: %s", error->message);
g_error_free (error);
}
{
g_message ("building menus failed: %s", error->message);
g_error_free (error);
}
bar = gtk_ui_manager_get_widget (merge, "/MenuBar");
gtk_widget_show (bar);
gtk_table_attach (GTK_TABLE (table),
bar,
/* X direction */ /* Y direction */
0, 1, 0, 1,
GTK_EXPAND | GTK_FILL, 0,
0, 0);
gtk_widget_set_halign (bar, GTK_ALIGN_FILL);
gtk_grid_attach (GTK_GRID (table), bar, 0, 0, 1, 1);
bar = gtk_ui_manager_get_widget (merge, "/ToolBar");
gtk_widget_show (bar);
gtk_table_attach (GTK_TABLE (table),
bar,
/* X direction */ /* Y direction */
0, 1, 1, 2,
GTK_EXPAND | GTK_FILL, 0,
0, 0);
gtk_widget_set_halign (bar, GTK_ALIGN_FILL);
gtk_grid_attach (GTK_GRID (table), bar, 0, 1, 1, 1);
/* Create document
*/
@@ -495,12 +503,8 @@ do_appwindow (GtkWidget *do_widget)
g_signal_connect (infobar, "response",
G_CALLBACK (gtk_widget_hide), NULL);
gtk_table_attach (GTK_TABLE (table),
infobar,
/* X direction */ /* Y direction */
0, 1, 2, 3,
GTK_EXPAND | GTK_FILL, 0,
0, 0);
gtk_widget_set_halign (infobar, GTK_ALIGN_FILL);
gtk_grid_attach (GTK_GRID (table), infobar, 0, 2, 1, 1);
sw = gtk_scrolled_window_new (NULL, NULL);
@@ -511,12 +515,11 @@ do_appwindow (GtkWidget *do_widget)
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
GTK_SHADOW_IN);
gtk_table_attach (GTK_TABLE (table),
sw,
/* X direction */ /* Y direction */
0, 1, 3, 4,
GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL,
0, 0);
gtk_widget_set_halign (sw, GTK_ALIGN_FILL);
gtk_widget_set_valign (sw, GTK_ALIGN_FILL);
gtk_widget_set_hexpand (sw, TRUE);
gtk_widget_set_vexpand (sw, TRUE);
gtk_grid_attach (GTK_GRID (table), sw, 0, 3, 1, 1);
gtk_window_set_default_size (GTK_WINDOW (window),
200, 200);
@@ -530,16 +533,12 @@ do_appwindow (GtkWidget *do_widget)
/* Create statusbar */
statusbar = gtk_statusbar_new ();
gtk_table_attach (GTK_TABLE (table),
statusbar,
/* X direction */ /* Y direction */
0, 1, 4, 5,
GTK_EXPAND | GTK_FILL, 0,
0, 0);
gtk_widget_set_halign (sw, GTK_ALIGN_FILL);
gtk_grid_attach (GTK_GRID (table), statusbar, 0, 4, 1, 1);
/* Show text widget info in the statusbar */
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (contents));
g_signal_connect_object (buffer,
"changed",
G_CALLBACK (update_statusbar),
@@ -569,4 +568,3 @@ do_appwindow (GtkWidget *do_widget)
return window;
}

View File

@@ -1,6 +1,6 @@
/* Assistant
*
* Demonstrates a sample multistep assistant. Assistants are used to divide
* Demonstrates a sample multi-step assistant. Assistants are used to divide
* an operation into several simpler sequential steps, and to guide the user
* through these steps.
*/
@@ -23,13 +23,14 @@ apply_changes_gradually (gpointer data)
if (fraction < 1.0)
{
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress_bar), fraction);
return TRUE;
return G_SOURCE_CONTINUE;
}
else
{
/* Close automatically once changes are fully applied. */
gtk_widget_destroy (assistant);
return FALSE;
assistant = NULL;
return G_SOURCE_REMOVE;
}
}
@@ -92,7 +93,6 @@ static void
create_page1 (GtkWidget *assistant)
{
GtkWidget *box, *label, *entry;
GdkPixbuf *pixbuf;
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
gtk_container_set_border_width (GTK_CONTAINER (box), 12);
@@ -101,48 +101,39 @@ create_page1 (GtkWidget *assistant)
gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
entry = gtk_entry_new ();
gtk_entry_set_activates_default (GTK_ENTRY (entry), TRUE);
gtk_box_pack_start (GTK_BOX (box), entry, TRUE, TRUE, 0);
g_signal_connect (G_OBJECT (entry), "changed",
G_CALLBACK (on_entry_changed), assistant);
G_CALLBACK (on_entry_changed), assistant);
gtk_widget_show_all (box);
gtk_assistant_append_page (GTK_ASSISTANT (assistant), box);
gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), box, "Page 1");
gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), box, GTK_ASSISTANT_PAGE_INTRO);
pixbuf = gtk_widget_render_icon_pixbuf (assistant, GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG);
gtk_assistant_set_page_header_image (GTK_ASSISTANT (assistant), box, pixbuf);
g_object_unref (pixbuf);
}
static void
create_page2 (GtkWidget *assistant)
{
GtkWidget *box, *checkbutton;
GdkPixbuf *pixbuf;
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
gtk_container_set_border_width (GTK_CONTAINER (box), 12);
checkbutton = gtk_check_button_new_with_label ("This is optional data, you may continue "
"even if you do not check this");
"even if you do not check this");
gtk_box_pack_start (GTK_BOX (box), checkbutton, FALSE, FALSE, 0);
gtk_widget_show_all (box);
gtk_assistant_append_page (GTK_ASSISTANT (assistant), box);
gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), box, TRUE);
gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), box, "Page 2");
pixbuf = gtk_widget_render_icon_pixbuf (assistant, GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG);
gtk_assistant_set_page_header_image (GTK_ASSISTANT (assistant), box, pixbuf);
g_object_unref (pixbuf);
}
static void
create_page3 (GtkWidget *assistant)
{
GtkWidget *label;
GdkPixbuf *pixbuf;
label = gtk_label_new ("This is a confirmation page, press 'Apply' to apply changes");
@@ -151,30 +142,24 @@ create_page3 (GtkWidget *assistant)
gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), label, GTK_ASSISTANT_PAGE_CONFIRM);
gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), label, TRUE);
gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), label, "Confirmation");
pixbuf = gtk_widget_render_icon_pixbuf (assistant, GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG);
gtk_assistant_set_page_header_image (GTK_ASSISTANT (assistant), label, pixbuf);
g_object_unref (pixbuf);
}
static void
create_page4 (GtkWidget *assistant)
{
GtkWidget *page;
page = gtk_alignment_new (0.5, 0.5, 0.5, 0.0);
progress_bar = gtk_progress_bar_new ();
gtk_container_add (GTK_CONTAINER (page), progress_bar);
gtk_widget_set_halign (progress_bar, GTK_ALIGN_CENTER);
gtk_widget_set_valign (progress_bar, GTK_ALIGN_CENTER);
gtk_widget_show_all (page);
gtk_assistant_append_page (GTK_ASSISTANT (assistant), page);
gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), page, GTK_ASSISTANT_PAGE_PROGRESS);
gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), page, "Applying changes");
gtk_widget_show (progress_bar);
gtk_assistant_append_page (GTK_ASSISTANT (assistant), progress_bar);
gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), progress_bar, GTK_ASSISTANT_PAGE_PROGRESS);
gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), progress_bar, "Applying changes");
/* This prevents the assistant window from being
* closed while we're "busy" applying changes. */
gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), page, FALSE);
* closed while we're "busy" applying changes.
*/
gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), progress_bar, FALSE);
}
GtkWidget*
@@ -184,10 +169,10 @@ do_assistant (GtkWidget *do_widget)
{
assistant = gtk_assistant_new ();
gtk_window_set_default_size (GTK_WINDOW (assistant), -1, 300);
gtk_window_set_default_size (GTK_WINDOW (assistant), -1, 300);
gtk_window_set_screen (GTK_WINDOW (assistant),
gtk_widget_get_screen (do_widget));
gtk_widget_get_screen (do_widget));
create_page1 (assistant);
create_page2 (assistant);
@@ -195,13 +180,13 @@ do_assistant (GtkWidget *do_widget)
create_page4 (assistant);
g_signal_connect (G_OBJECT (assistant), "cancel",
G_CALLBACK (on_assistant_close_cancel), &assistant);
G_CALLBACK (on_assistant_close_cancel), &assistant);
g_signal_connect (G_OBJECT (assistant), "close",
G_CALLBACK (on_assistant_close_cancel), &assistant);
G_CALLBACK (on_assistant_close_cancel), &assistant);
g_signal_connect (G_OBJECT (assistant), "apply",
G_CALLBACK (on_assistant_apply), NULL);
G_CALLBACK (on_assistant_apply), NULL);
g_signal_connect (G_OBJECT (assistant), "prepare",
G_CALLBACK (on_assistant_prepare), NULL);
G_CALLBACK (on_assistant_prepare), NULL);
}
if (!gtk_widget_get_visible (assistant))

View File

@@ -33,7 +33,7 @@ do_builder (GtkWidget *do_widget)
static GtkWidget *window = NULL;
GError *err = NULL;
gchar *filename;
if (!window)
{
builder = gtk_builder_new ();
@@ -41,16 +41,16 @@ do_builder (GtkWidget *do_widget)
gtk_builder_add_from_file (builder, filename, &err);
g_free (filename);
if (err)
{
g_error ("ERROR: %s\n", err->message);
return NULL;
}
{
g_error ("ERROR: %s\n", err->message);
return NULL;
}
gtk_builder_connect_signals (builder, NULL);
window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
gtk_window_set_screen (GTK_WINDOW (window),
gtk_widget_get_screen (do_widget));
gtk_widget_get_screen (do_widget));
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed), &window);
G_CALLBACK (gtk_widget_destroyed), &window);
}
if (!gtk_widget_get_visible (window))
@@ -58,7 +58,7 @@ do_builder (GtkWidget *do_widget)
gtk_widget_show_all (window);
}
else
{
{
gtk_widget_destroy (window);
window = NULL;
}

View File

@@ -7,14 +7,14 @@
static GtkWidget *
create_bbox (gint horizontal,
char *title,
gint spacing,
gint layout)
char *title,
gint spacing,
gint layout)
{
GtkWidget *frame;
GtkWidget *bbox;
GtkWidget *button;
frame = gtk_frame_new (title);
if (horizontal)
@@ -27,13 +27,13 @@ create_bbox (gint horizontal,
gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), layout);
gtk_box_set_spacing (GTK_BOX (bbox), spacing);
button = gtk_button_new_from_stock (GTK_STOCK_OK);
gtk_container_add (GTK_CONTAINER (bbox), button);
button = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
gtk_container_add (GTK_CONTAINER (bbox), button);
button = gtk_button_new_from_stock (GTK_STOCK_HELP);
gtk_container_add (GTK_CONTAINER (bbox), button);
@@ -49,68 +49,68 @@ do_button_box (GtkWidget *do_widget)
GtkWidget *hbox;
GtkWidget *frame_horz;
GtkWidget *frame_vert;
if (!window)
{
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_screen (GTK_WINDOW (window),
gtk_widget_get_screen (do_widget));
gtk_widget_get_screen (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Button Boxes");
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed),
&window);
G_CALLBACK (gtk_widget_destroyed),
&window);
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_container_add (GTK_CONTAINER (window), main_vbox);
frame_horz = gtk_frame_new ("Horizontal Button Boxes");
gtk_box_pack_start (GTK_BOX (main_vbox), frame_horz, TRUE, TRUE, 10);
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 10);
gtk_container_add (GTK_CONTAINER (frame_horz), vbox);
gtk_box_pack_start (GTK_BOX (vbox),
create_bbox (TRUE, "Spread", 40, GTK_BUTTONBOX_SPREAD),
TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (vbox),
create_bbox (TRUE, "Spread", 40, GTK_BUTTONBOX_SPREAD),
TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (vbox),
create_bbox (TRUE, "Edge", 40, GTK_BUTTONBOX_EDGE),
TRUE, TRUE, 5);
gtk_box_pack_start (GTK_BOX (vbox),
create_bbox (TRUE, "Start", 40, GTK_BUTTONBOX_START),
TRUE, TRUE, 5);
gtk_box_pack_start (GTK_BOX (vbox),
create_bbox (TRUE, "End", 40, GTK_BUTTONBOX_END),
TRUE, TRUE, 5);
gtk_box_pack_start (GTK_BOX (vbox),
create_bbox (TRUE, "Edge", 40, GTK_BUTTONBOX_EDGE),
TRUE, TRUE, 5);
gtk_box_pack_start (GTK_BOX (vbox),
create_bbox (TRUE, "Start", 40, GTK_BUTTONBOX_START),
TRUE, TRUE, 5);
gtk_box_pack_start (GTK_BOX (vbox),
create_bbox (TRUE, "End", 40, GTK_BUTTONBOX_END),
TRUE, TRUE, 5);
frame_vert = gtk_frame_new ("Vertical Button Boxes");
gtk_box_pack_start (GTK_BOX (main_vbox), frame_vert, TRUE, TRUE, 10);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
gtk_container_set_border_width (GTK_CONTAINER (hbox), 10);
gtk_container_add (GTK_CONTAINER (frame_vert), hbox);
gtk_box_pack_start (GTK_BOX (hbox),
create_bbox (FALSE, "Spread", 30, GTK_BUTTONBOX_SPREAD),
TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (hbox),
create_bbox (FALSE, "Spread", 30, GTK_BUTTONBOX_SPREAD),
TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (hbox),
create_bbox (FALSE, "Edge", 30, GTK_BUTTONBOX_EDGE),
TRUE, TRUE, 5);
gtk_box_pack_start (GTK_BOX (hbox),
create_bbox (FALSE, "Edge", 30, GTK_BUTTONBOX_EDGE),
TRUE, TRUE, 5);
gtk_box_pack_start (GTK_BOX (hbox),
create_bbox (FALSE, "Start", 30, GTK_BUTTONBOX_START),
TRUE, TRUE, 5);
gtk_box_pack_start (GTK_BOX (hbox),
create_bbox (FALSE, "Start", 30, GTK_BUTTONBOX_START),
TRUE, TRUE, 5);
gtk_box_pack_start (GTK_BOX (hbox),
create_bbox (FALSE, "End", 30, GTK_BUTTONBOX_END),
TRUE, TRUE, 5);
gtk_box_pack_start (GTK_BOX (hbox),
create_bbox (FALSE, "End", 30, GTK_BUTTONBOX_END),
TRUE, TRUE, 5);
}
if (!gtk_widget_get_visible (window))
@@ -118,7 +118,7 @@ do_button_box (GtkWidget *do_widget)
gtk_widget_show_all (window);
}
else
{
{
gtk_widget_destroy (window);
window = NULL;
}

View File

@@ -78,7 +78,8 @@ find_toplevel_at_pointer (GdkDisplay *display)
GdkWindow *pointer_window;
GtkWidget *widget = NULL;
pointer_window = gdk_display_get_window_at_pointer (display, NULL, NULL);
pointer_window = gdk_device_get_window_at_position (gtk_get_current_event_device (),
NULL, NULL);
/* The user data field of a GdkWindow is used to store a pointer
* to the widget that created it.
@@ -95,8 +96,8 @@ find_toplevel_at_pointer (GdkDisplay *display)
static gboolean
button_release_event_cb (GtkWidget *widget,
GdkEventButton *event,
gboolean *clicked)
GdkEventButton *event,
gboolean *clicked)
{
*clicked = TRUE;
return TRUE;
@@ -108,7 +109,7 @@ button_release_event_cb (GtkWidget *widget,
*/
static GtkWidget *
query_for_toplevel (GdkScreen *screen,
const char *prompt)
const char *prompt)
{
GdkDisplay *display = gdk_screen_get_display (screen);
GtkWidget *popup, *label, *frame;
@@ -125,38 +126,40 @@ query_for_toplevel (GdkScreen *screen,
gtk_container_add (GTK_CONTAINER (popup), frame);
label = gtk_label_new (prompt);
gtk_misc_set_padding (GTK_MISC (label), 10, 10);
g_object_set (label, "margin", 10, NULL);
gtk_container_add (GTK_CONTAINER (frame), label);
gtk_widget_show_all (popup);
cursor = gdk_cursor_new_for_display (display, GDK_CROSSHAIR);
if (gdk_pointer_grab (gtk_widget_get_window (popup), FALSE,
GDK_BUTTON_RELEASE_MASK,
NULL,
cursor,
GDK_CURRENT_TIME) == GDK_GRAB_SUCCESS)
if (gdk_device_grab (gtk_get_current_event_device (),
gtk_widget_get_window (popup),
GDK_OWNERSHIP_NONE,
FALSE,
GDK_BUTTON_RELEASE_MASK,
cursor,
GDK_CURRENT_TIME) == GDK_GRAB_SUCCESS)
{
gboolean clicked = FALSE;
g_signal_connect (popup, "button-release-event",
G_CALLBACK (button_release_event_cb), &clicked);
G_CALLBACK (button_release_event_cb), &clicked);
/* Process events until clicked is set by button_release_event_cb.
* We pass in may_block=TRUE since we want to wait if there
* are no events currently.
*/
while (!clicked)
g_main_context_iteration (NULL, TRUE);
g_main_context_iteration (NULL, TRUE);
toplevel = find_toplevel_at_pointer (gdk_screen_get_display (screen));
if (toplevel == popup)
toplevel = NULL;
toplevel = NULL;
}
g_object_unref (cursor);
gtk_widget_destroy (popup);
gdk_flush (); /* Really release the grab */
gdk_flush (); /* Really release the grab */
return toplevel;
}
@@ -171,8 +174,8 @@ query_change_display (ChangeDisplayInfo *info)
GtkWidget *toplevel;
toplevel = query_for_toplevel (screen,
"Please select the toplevel\n"
"to move to the new screen");
"Please select the toplevel\n"
"to move to the new screen");
if (toplevel)
gtk_window_set_screen (GTK_WINDOW (toplevel), info->current_screen);
@@ -193,19 +196,19 @@ fill_screens (ChangeDisplayInfo *info)
gint i;
for (i = 0; i < n_screens; i++)
{
GdkScreen *screen = gdk_display_get_screen (info->current_display, i);
GtkTreeIter iter;
{
GdkScreen *screen = gdk_display_get_screen (info->current_display, i);
GtkTreeIter iter;
gtk_list_store_append (GTK_LIST_STORE (info->screen_model), &iter);
gtk_list_store_set (GTK_LIST_STORE (info->screen_model), &iter,
SCREEN_COLUMN_NUMBER, i,
SCREEN_COLUMN_SCREEN, screen,
-1);
gtk_list_store_append (GTK_LIST_STORE (info->screen_model), &iter);
gtk_list_store_set (GTK_LIST_STORE (info->screen_model), &iter,
SCREEN_COLUMN_NUMBER, i,
SCREEN_COLUMN_SCREEN, screen,
-1);
if (i == 0)
gtk_tree_selection_select_iter (info->screen_selection, &iter);
}
if (i == 0)
gtk_tree_selection_select_iter (info->screen_selection, &iter);
}
}
}
@@ -215,8 +218,8 @@ fill_screens (ChangeDisplayInfo *info)
*/
static void
response_cb (GtkDialog *dialog,
gint response_id,
ChangeDisplayInfo *info)
gint response_id,
ChangeDisplayInfo *info)
{
if (response_id == GTK_RESPONSE_OK)
query_change_display (info);
@@ -230,7 +233,7 @@ response_cb (GtkDialog *dialog,
*/
static void
open_display_cb (GtkWidget *button,
ChangeDisplayInfo *info)
ChangeDisplayInfo *info)
{
GtkWidget *content_area;
GtkWidget *dialog;
@@ -240,11 +243,11 @@ open_display_cb (GtkWidget *button,
GdkDisplay *result = NULL;
dialog = gtk_dialog_new_with_buttons ("Open Display",
GTK_WINDOW (info->window),
GTK_DIALOG_MODAL,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_OK, GTK_RESPONSE_OK,
NULL);
GTK_WINDOW (info->window),
GTK_DIALOG_MODAL,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_OK, GTK_RESPONSE_OK,
NULL);
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
display_entry = gtk_entry_new ();
@@ -264,25 +267,25 @@ open_display_cb (GtkWidget *button,
{
gint response_id = gtk_dialog_run (GTK_DIALOG (dialog));
if (response_id != GTK_RESPONSE_OK)
break;
break;
new_screen_name = gtk_editable_get_chars (GTK_EDITABLE (display_entry),
0, -1);
0, -1);
if (strcmp (new_screen_name, "") != 0)
{
result = gdk_display_open (new_screen_name);
if (!result)
{
gchar *error_msg =
g_strdup_printf ("Can't open display :\n\t%s\nplease try another one\n",
new_screen_name);
gtk_label_set_text (GTK_LABEL (dialog_label), error_msg);
g_free (error_msg);
}
{
result = gdk_display_open (new_screen_name);
if (!result)
{
gchar *error_msg =
g_strdup_printf ("Can't open display :\n\t%s\nplease try another one\n",
new_screen_name);
gtk_label_set_text (GTK_LABEL (dialog_label), error_msg);
g_free (error_msg);
}
g_free (new_screen_name);
}
g_free (new_screen_name);
}
}
gtk_widget_destroy (dialog);
@@ -293,7 +296,7 @@ open_display_cb (GtkWidget *button,
*/
static void
close_display_cb (GtkWidget *button,
ChangeDisplayInfo *info)
ChangeDisplayInfo *info)
{
if (info->current_display)
gdk_display_close (info->current_display);
@@ -305,7 +308,7 @@ close_display_cb (GtkWidget *button,
*/
static void
display_changed_cb (GtkTreeSelection *selection,
ChangeDisplayInfo *info)
ChangeDisplayInfo *info)
{
GtkTreeModel *model;
GtkTreeIter iter;
@@ -314,8 +317,8 @@ display_changed_cb (GtkTreeSelection *selection,
g_object_unref (info->current_display);
if (gtk_tree_selection_get_selected (selection, &model, &iter))
gtk_tree_model_get (model, &iter,
DISPLAY_COLUMN_DISPLAY, &info->current_display,
-1);
DISPLAY_COLUMN_DISPLAY, &info->current_display,
-1);
else
info->current_display = NULL;
@@ -327,7 +330,7 @@ display_changed_cb (GtkTreeSelection *selection,
*/
static void
screen_changed_cb (GtkTreeSelection *selection,
ChangeDisplayInfo *info)
ChangeDisplayInfo *info)
{
GtkTreeModel *model;
GtkTreeIter iter;
@@ -336,8 +339,8 @@ screen_changed_cb (GtkTreeSelection *selection,
g_object_unref (info->current_screen);
if (gtk_tree_selection_get_selected (selection, &model, &iter))
gtk_tree_model_get (model, &iter,
SCREEN_COLUMN_SCREEN, &info->current_screen,
-1);
SCREEN_COLUMN_SCREEN, &info->current_screen,
-1);
else
info->current_screen = NULL;
}
@@ -349,10 +352,10 @@ screen_changed_cb (GtkTreeSelection *selection,
*/
static void
create_frame (ChangeDisplayInfo *info,
const char *title,
GtkWidget **frame,
GtkWidget **tree_view,
GtkWidget **button_vbox)
const char *title,
GtkWidget **frame,
GtkWidget **tree_view,
GtkWidget **button_vbox)
{
GtkTreeSelection *selection;
GtkWidget *scrollwin;
@@ -366,9 +369,9 @@ create_frame (ChangeDisplayInfo *info,
scrollwin = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrollwin),
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollwin),
GTK_SHADOW_IN);
GTK_SHADOW_IN);
gtk_box_pack_start (GTK_BOX (hbox), scrollwin, TRUE, TRUE, 0);
*tree_view = gtk_tree_view_new ();
@@ -397,7 +400,8 @@ left_align_button_new (const char *label)
GtkWidget *button = gtk_button_new_with_mnemonic (label);
GtkWidget *child = gtk_bin_get_child (GTK_BIN (button));
gtk_misc_set_alignment (GTK_MISC (child), 0., 0.5);
gtk_widget_set_halign (child, GTK_ALIGN_START);
gtk_widget_set_valign (child, GTK_ALIGN_CENTER);
return button;
}
@@ -425,20 +429,20 @@ create_display_frame (ChangeDisplayInfo *info)
gtk_box_pack_start (GTK_BOX (button_vbox), button, FALSE, FALSE, 0);
info->display_model = (GtkTreeModel *)gtk_list_store_new (DISPLAY_NUM_COLUMNS,
G_TYPE_STRING,
GDK_TYPE_DISPLAY);
G_TYPE_STRING,
GDK_TYPE_DISPLAY);
gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), info->display_model);
column = gtk_tree_view_column_new_with_attributes ("Name",
gtk_cell_renderer_text_new (),
"text", DISPLAY_COLUMN_NAME,
NULL);
gtk_cell_renderer_text_new (),
"text", DISPLAY_COLUMN_NAME,
NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view));
g_signal_connect (selection, "changed",
G_CALLBACK (display_changed_cb), info);
G_CALLBACK (display_changed_cb), info);
return frame;
}
@@ -456,20 +460,20 @@ create_screen_frame (ChangeDisplayInfo *info)
create_frame (info, "Screen", &frame, &tree_view, &button_vbox);
info->screen_model = (GtkTreeModel *)gtk_list_store_new (SCREEN_NUM_COLUMNS,
G_TYPE_INT,
GDK_TYPE_SCREEN);
G_TYPE_INT,
GDK_TYPE_SCREEN);
gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), info->screen_model);
column = gtk_tree_view_column_new_with_attributes ("Number",
gtk_cell_renderer_text_new (),
"text", SCREEN_COLUMN_NUMBER,
NULL);
gtk_cell_renderer_text_new (),
"text", SCREEN_COLUMN_NUMBER,
NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
info->screen_selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view));
g_signal_connect (info->screen_selection, "changed",
G_CALLBACK (screen_changed_cb), info);
G_CALLBACK (screen_changed_cb), info);
return frame;
}
@@ -479,8 +483,8 @@ create_screen_frame (ChangeDisplayInfo *info)
*/
static void
display_closed_cb (GdkDisplay *display,
gboolean is_error,
ChangeDisplayInfo *info)
gboolean is_error,
ChangeDisplayInfo *info)
{
GtkTreeIter iter;
gboolean valid;
@@ -492,13 +496,13 @@ display_closed_cb (GdkDisplay *display,
GdkDisplay *tmp_display;
gtk_tree_model_get (info->display_model, &iter,
DISPLAY_COLUMN_DISPLAY, &tmp_display,
-1);
DISPLAY_COLUMN_DISPLAY, &tmp_display,
-1);
if (tmp_display == display)
{
gtk_list_store_remove (GTK_LIST_STORE (info->display_model), &iter);
break;
}
{
gtk_list_store_remove (GTK_LIST_STORE (info->display_model), &iter);
break;
}
}
}
@@ -508,27 +512,27 @@ display_closed_cb (GdkDisplay *display,
*/
static void
add_display (ChangeDisplayInfo *info,
GdkDisplay *display)
GdkDisplay *display)
{
const gchar *name = gdk_display_get_name (display);
GtkTreeIter iter;
gtk_list_store_append (GTK_LIST_STORE (info->display_model), &iter);
gtk_list_store_set (GTK_LIST_STORE (info->display_model), &iter,
DISPLAY_COLUMN_NAME, name,
DISPLAY_COLUMN_DISPLAY, display,
-1);
DISPLAY_COLUMN_NAME, name,
DISPLAY_COLUMN_DISPLAY, display,
-1);
g_signal_connect (display, "closed",
G_CALLBACK (display_closed_cb), info);
G_CALLBACK (display_closed_cb), info);
}
/* Called when a new display is opened
*/
static void
display_opened_cb (GdkDisplayManager *manager,
GdkDisplay *display,
ChangeDisplayInfo *info)
GdkDisplay *display,
ChangeDisplayInfo *info)
{
add_display (info, display);
}
@@ -550,7 +554,7 @@ initialize_displays (ChangeDisplayInfo *info)
g_slist_free (tmp_list);
g_signal_connect (manager, "display-opened",
G_CALLBACK (display_opened_cb), info);
G_CALLBACK (display_opened_cb), info);
}
/* Cleans up when the toplevel is destroyed; we remove the
@@ -565,13 +569,13 @@ destroy_info (ChangeDisplayInfo *info)
GSList *tmp_list;
g_signal_handlers_disconnect_by_func (manager,
display_opened_cb,
info);
display_opened_cb,
info);
for (tmp_list = displays; tmp_list; tmp_list = tmp_list->next)
g_signal_handlers_disconnect_by_func (tmp_list->data,
display_closed_cb,
info);
display_closed_cb,
info);
g_slist_free (tmp_list);
@@ -589,7 +593,7 @@ destroy_info (ChangeDisplayInfo *info)
static void
destroy_cb (GObject *object,
ChangeDisplayInfo **info)
ChangeDisplayInfo **info)
{
destroy_info (*info);
*info = NULL;
@@ -612,18 +616,18 @@ do_changedisplay (GtkWidget *do_widget)
info = g_new0 (ChangeDisplayInfo, 1);
info->window = gtk_dialog_new_with_buttons ("Change Screen or display",
GTK_WINDOW (do_widget),
0,
GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
"Change", GTK_RESPONSE_OK,
NULL);
GTK_WINDOW (do_widget),
0,
GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
"Change", GTK_RESPONSE_OK,
NULL);
gtk_window_set_default_size (GTK_WINDOW (info->window), 300, 400);
g_signal_connect (info->window, "response",
G_CALLBACK (response_cb), info);
G_CALLBACK (response_cb), info);
g_signal_connect (info->window, "destroy",
G_CALLBACK (destroy_cb), &info);
G_CALLBACK (destroy_cb), &info);
content_area = gtk_dialog_get_content_area (GTK_DIALOG (info->window));

View File

@@ -172,7 +172,7 @@ button_press (GtkWidget *widget,
GtkWidget *menu;
GtkWidget *item;
if (button->button != 3)
if (button->button != GDK_BUTTON_SECONDARY)
return FALSE;
menu = gtk_menu_new ();

View File

@@ -20,13 +20,12 @@ draw_callback (GtkWidget *widget,
gpointer data)
{
GtkStyleContext *context;
GdkRGBA *bg;
GdkRGBA rgba;
context = gtk_widget_get_style_context (widget);
gtk_style_context_get (context, 0, "background-color", &bg, NULL);
gdk_cairo_set_source_rgba (cr, bg);
gtk_style_context_get_background_color (context, GTK_STATE_FLAG_NORMAL, &rgba);
gdk_cairo_set_source_rgba (cr, &rgba);
cairo_paint (cr);
gdk_rgba_free (bg);
return TRUE;
}
@@ -37,26 +36,17 @@ change_color_callback (GtkWidget *button,
{
GtkWidget *dialog;
GtkColorSelection *colorsel;
GtkColorSelectionDialog *selection_dialog;
GtkColorChooserDialog *selection_dialog;
gint response;
dialog = gtk_color_selection_dialog_new ("Changing color");
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (window));
selection_dialog = GTK_COLOR_SELECTION_DIALOG (dialog);
colorsel = GTK_COLOR_SELECTION (gtk_color_selection_dialog_get_color_selection (selection_dialog));
gtk_color_selection_set_previous_rgba (colorsel, &color);
gtk_color_selection_set_current_rgba (colorsel, &color);
gtk_color_selection_set_has_palette (colorsel, TRUE);
dialog = gtk_color_chooser_dialog_new ("Changing color", GTK_WINDOW (window));
gtk_color_chooser_set_rgba (GTK_COLOR_CHOOSER (dialog), &color);
response = gtk_dialog_run (GTK_DIALOG (dialog));
if (response == GTK_RESPONSE_OK)
{
gtk_color_selection_get_current_rgba (colorsel, &color);
gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (dialog), &color);
gtk_widget_override_background_color (da, 0, &color);
}
@@ -68,7 +58,6 @@ do_colorsel (GtkWidget *do_widget)
{
GtkWidget *vbox;
GtkWidget *button;
GtkWidget *alignment;
if (!window)
{
@@ -111,12 +100,11 @@ do_colorsel (GtkWidget *do_widget)
gtk_container_add (GTK_CONTAINER (frame), da);
alignment = gtk_alignment_new (1.0, 0.5, 0.0, 0.0);
button = gtk_button_new_with_mnemonic ("_Change the above color");
gtk_container_add (GTK_CONTAINER (alignment), button);
gtk_widget_set_halign (button, GTK_ALIGN_END);
gtk_widget_set_valign (button, GTK_ALIGN_CENTER);
gtk_box_pack_start (GTK_BOX (vbox), alignment, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
g_signal_connect (button, "clicked",
G_CALLBACK (change_color_callback), NULL);

View File

@@ -1,15 +1,15 @@
/* Combo boxes
/* Combo boxes
*
* The ComboBox widget allows to select one option out of a list.
* The ComboBoxEntry additionally allows the user to enter a value
* that is not in the list of options.
* that is not in the list of options.
*
* How the options are displayed is controlled by cell renderers.
*/
#include <gtk/gtk.h>
enum
enum
{
PIXBUF_COL,
TEXT_COL
@@ -20,16 +20,16 @@ strip_underscore (const gchar *text)
{
gchar *p, *q;
gchar *result;
result = g_strdup (text);
p = q = result;
while (*p)
while (*p)
{
if (*p != '_')
{
*q = *p;
q++;
}
{
*q = *p;
q++;
}
p++;
}
*q = '\0';
@@ -46,7 +46,7 @@ create_stock_icon_store (void)
GTK_STOCK_NEW,
GTK_STOCK_CLEAR,
NULL,
GTK_STOCK_OPEN
GTK_STOCK_OPEN
};
GtkStockItem item;
@@ -58,50 +58,50 @@ create_stock_icon_store (void)
gint i;
cellview = gtk_cell_view_new ();
store = gtk_list_store_new (2, GDK_TYPE_PIXBUF, G_TYPE_STRING);
for (i = 0; i < G_N_ELEMENTS (stock_id); i++)
{
if (stock_id[i])
{
pixbuf = gtk_widget_render_icon_pixbuf (cellview, stock_id[i],
GTK_ICON_SIZE_BUTTON);
gtk_stock_lookup (stock_id[i], &item);
label = strip_underscore (item.label);
gtk_list_store_append (store, &iter);
gtk_list_store_set (store, &iter,
PIXBUF_COL, pixbuf,
TEXT_COL, label,
-1);
g_object_unref (pixbuf);
g_free (label);
}
{
pixbuf = gtk_widget_render_icon_pixbuf (cellview, stock_id[i],
GTK_ICON_SIZE_BUTTON);
gtk_stock_lookup (stock_id[i], &item);
label = strip_underscore (item.label);
gtk_list_store_append (store, &iter);
gtk_list_store_set (store, &iter,
PIXBUF_COL, pixbuf,
TEXT_COL, label,
-1);
g_object_unref (pixbuf);
g_free (label);
}
else
{
gtk_list_store_append (store, &iter);
gtk_list_store_set (store, &iter,
PIXBUF_COL, NULL,
TEXT_COL, "separator",
-1);
}
{
gtk_list_store_append (store, &iter);
gtk_list_store_set (store, &iter,
PIXBUF_COL, NULL,
TEXT_COL, "separator",
-1);
}
}
gtk_widget_destroy (cellview);
return GTK_TREE_MODEL (store);
}
/* A GtkCellLayoutDataFunc that demonstrates how one can control
* sensitivity of rows. This particular function does nothing
* sensitivity of rows. This particular function does nothing
* useful and just makes the second row insensitive.
*/
static void
set_sensitive (GtkCellLayout *cell_layout,
GtkCellRenderer *cell,
GtkTreeModel *tree_model,
GtkTreeIter *iter,
gpointer data)
GtkCellRenderer *cell,
GtkTreeModel *tree_model,
GtkTreeIter *iter,
gpointer data)
{
GtkTreePath *path;
gint *indices;
@@ -116,13 +116,13 @@ set_sensitive (GtkCellLayout *cell_layout,
}
/* A GtkTreeViewRowSeparatorFunc that demonstrates how rows can be
* rendered as separators. This particular function does nothing
* rendered as separators. This particular function does nothing
* useful and just turns the fourth row into a separator.
*/
static gboolean
is_separator (GtkTreeModel *model,
GtkTreeIter *iter,
gpointer data)
GtkTreeIter *iter,
gpointer data)
{
GtkTreePath *path;
gboolean result;
@@ -141,11 +141,11 @@ create_capital_store (void)
gchar *group;
gchar *capital;
} capitals[] = {
{ "A - B", NULL },
{ "A - B", NULL },
{ NULL, "Albany" },
{ NULL, "Annapolis" },
{ NULL, "Atlanta" },
{ NULL, "Augusta" },
{ NULL, "Augusta" },
{ NULL, "Austin" },
{ NULL, "Baton Rouge" },
{ NULL, "Bismarck" },
@@ -199,36 +199,36 @@ create_capital_store (void)
{ NULL, "Trenton" },
{ NULL, NULL }
};
GtkTreeIter iter, iter2;
GtkTreeStore *store;
gint i;
store = gtk_tree_store_new (1, G_TYPE_STRING);
for (i = 0; capitals[i].group || capitals[i].capital; i++)
{
if (capitals[i].group)
{
gtk_tree_store_append (store, &iter, NULL);
gtk_tree_store_set (store, &iter, 0, capitals[i].group, -1);
}
{
gtk_tree_store_append (store, &iter, NULL);
gtk_tree_store_set (store, &iter, 0, capitals[i].group, -1);
}
else if (capitals[i].capital)
{
gtk_tree_store_append (store, &iter2, &iter);
gtk_tree_store_set (store, &iter2, 0, capitals[i].capital, -1);
}
{
gtk_tree_store_append (store, &iter2, &iter);
gtk_tree_store_set (store, &iter2, 0, capitals[i].capital, -1);
}
}
return GTK_TREE_MODEL (store);
}
static void
is_capital_sensitive (GtkCellLayout *cell_layout,
GtkCellRenderer *cell,
GtkTreeModel *tree_model,
GtkTreeIter *iter,
gpointer data)
GtkCellRenderer *cell,
GtkTreeModel *tree_model,
GtkTreeIter *iter,
gpointer data)
{
gboolean sensitive;
@@ -274,8 +274,8 @@ struct _MaskEntryClass
static void mask_entry_editable_init (GtkEditableInterface *iface);
G_DEFINE_TYPE_WITH_CODE (MaskEntry, mask_entry, GTK_TYPE_ENTRY,
G_IMPLEMENT_INTERFACE (GTK_TYPE_EDITABLE,
mask_entry_editable_init));
G_IMPLEMENT_INTERFACE (GTK_TYPE_EDITABLE,
mask_entry_editable_init));
static void
@@ -286,10 +286,10 @@ mask_entry_set_background (MaskEntry *entry)
if (entry->mask)
{
if (!g_regex_match_simple (entry->mask, gtk_entry_get_text (GTK_ENTRY (entry)), 0, 0))
{
gtk_widget_override_color (GTK_WIDGET (entry), 0, &error_color);
return;
}
{
gtk_widget_override_color (GTK_WIDGET (entry), 0, &error_color);
return;
}
}
gtk_widget_override_color (GTK_WIDGET (entry), 0, NULL);
@@ -338,58 +338,58 @@ do_combobox (GtkWidget *do_widget)
gtk_window_set_screen (GTK_WINDOW (window),
gtk_widget_get_screen (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Combo boxes");
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed),
&window);
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
gtk_container_add (GTK_CONTAINER (window), vbox);
/* A combobox demonstrating cell renderers, separators and
* insensitive rows
* insensitive rows
*/
frame = gtk_frame_new ("Some stock icons");
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_container_set_border_width (GTK_CONTAINER (box), 5);
gtk_container_add (GTK_CONTAINER (frame), box);
model = create_stock_icon_store ();
combo = gtk_combo_box_new_with_model (model);
g_object_unref (model);
gtk_container_add (GTK_CONTAINER (box), combo);
renderer = gtk_cell_renderer_pixbuf_new ();
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), renderer, FALSE);
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo), renderer,
"pixbuf", PIXBUF_COL,
NULL);
"pixbuf", PIXBUF_COL,
NULL);
gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combo),
renderer,
set_sensitive,
NULL, NULL);
renderer,
set_sensitive,
NULL, NULL);
renderer = gtk_cell_renderer_text_new ();
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), renderer, TRUE);
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo), renderer,
"text", TEXT_COL,
NULL);
"text", TEXT_COL,
NULL);
gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combo),
renderer,
set_sensitive,
NULL, NULL);
renderer,
set_sensitive,
NULL, NULL);
gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combo),
is_separator, NULL, NULL);
gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combo),
is_separator, NULL, NULL);
gtk_combo_box_set_active (GTK_COMBO_BOX (combo), 0);
/* A combobox demonstrating trees.
*/
frame = gtk_frame_new ("Where are we ?");
@@ -398,7 +398,7 @@ do_combobox (GtkWidget *do_widget)
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_container_set_border_width (GTK_CONTAINER (box), 5);
gtk_container_add (GTK_CONTAINER (frame), box);
model = create_capital_store ();
combo = gtk_combo_box_new_with_model (model);
g_object_unref (model);
@@ -407,12 +407,12 @@ do_combobox (GtkWidget *do_widget)
renderer = gtk_cell_renderer_text_new ();
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), renderer, TRUE);
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo), renderer,
"text", 0,
NULL);
"text", 0,
NULL);
gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combo),
renderer,
is_capital_sensitive,
NULL, NULL);
renderer,
is_capital_sensitive,
NULL, NULL);
path = gtk_tree_path_new_from_indices (0, 8, -1);
gtk_tree_model_get_iter (model, &iter, path);
@@ -423,18 +423,18 @@ do_combobox (GtkWidget *do_widget)
*/
frame = gtk_frame_new ("Editable");
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_container_set_border_width (GTK_CONTAINER (box), 5);
gtk_container_add (GTK_CONTAINER (frame), box);
combo = gtk_combo_box_text_new_with_entry ();
fill_combo_entry (combo);
gtk_container_add (GTK_CONTAINER (box), combo);
entry = g_object_new (TYPE_MASK_ENTRY, NULL);
MASK_ENTRY (entry)->mask = "^([0-9]*|One|Two|2\302\275|Three)$";
gtk_container_remove (GTK_CONTAINER (combo), gtk_bin_get_child (GTK_BIN (combo)));
gtk_container_add (GTK_CONTAINER (combo), entry);
@@ -464,7 +464,7 @@ do_combobox (GtkWidget *do_widget)
gtk_widget_show_all (window);
}
else
{
{
gtk_widget_destroy (window);
window = NULL;
}

View File

@@ -11,17 +11,17 @@ static GtkWidget *entry2 = NULL;
static void
message_dialog_clicked (GtkButton *button,
gpointer user_data)
gpointer user_data)
{
GtkWidget *dialog;
static gint i = 1;
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_INFO,
GTK_BUTTONS_OK,
"This message box has been popped up the following\n"
"number of times:");
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_INFO,
GTK_BUTTONS_OK,
"This message box has been popped up the following\n"
"number of times:");
gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
"%d", i);
gtk_dialog_run (GTK_DIALOG (dialog));
@@ -31,7 +31,7 @@ message_dialog_clicked (GtkButton *button,
static void
interactive_dialog_clicked (GtkButton *button,
gpointer user_data)
gpointer user_data)
{
GtkWidget *content_area;
GtkWidget *dialog;
@@ -44,13 +44,13 @@ interactive_dialog_clicked (GtkButton *button,
gint response;
dialog = gtk_dialog_new_with_buttons ("Interactive Dialog",
GTK_WINDOW (window),
GTK_DIALOG_MODAL| GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_STOCK_OK,
GTK_RESPONSE_OK,
GTK_WINDOW (window),
GTK_DIALOG_MODAL| GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_STOCK_OK,
GTK_RESPONSE_OK,
"_Non-stock Button",
GTK_RESPONSE_CANCEL,
NULL);
NULL);
content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
@@ -61,29 +61,25 @@ interactive_dialog_clicked (GtkButton *button,
stock = gtk_image_new_from_stock (GTK_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG);
gtk_box_pack_start (GTK_BOX (hbox), stock, FALSE, FALSE, 0);
table = gtk_table_new (2, 2, FALSE);
gtk_table_set_row_spacings (GTK_TABLE (table), 4);
gtk_table_set_col_spacings (GTK_TABLE (table), 4);
table = gtk_grid_new ();
gtk_grid_set_row_spacing (GTK_GRID (table), 4);
gtk_grid_set_column_spacing (GTK_GRID (table), 4);
gtk_box_pack_start (GTK_BOX (hbox), table, TRUE, TRUE, 0);
label = gtk_label_new_with_mnemonic ("_Entry 1");
gtk_table_attach_defaults (GTK_TABLE (table),
label,
0, 1, 0, 1);
gtk_grid_attach (GTK_GRID (table), label, 0, 0, 1, 1);
local_entry1 = gtk_entry_new ();
gtk_entry_set_text (GTK_ENTRY (local_entry1), gtk_entry_get_text (GTK_ENTRY (entry1)));
gtk_table_attach_defaults (GTK_TABLE (table), local_entry1, 1, 2, 0, 1);
gtk_grid_attach (GTK_GRID (table), local_entry1, 1, 0, 1, 1);
gtk_label_set_mnemonic_widget (GTK_LABEL (label), local_entry1);
label = gtk_label_new_with_mnemonic ("E_ntry 2");
gtk_table_attach_defaults (GTK_TABLE (table),
label,
0, 1, 1, 2);
gtk_grid_attach (GTK_GRID (table), label, 0, 1, 1, 1);
local_entry2 = gtk_entry_new ();
gtk_entry_set_text (GTK_ENTRY (local_entry2), gtk_entry_get_text (GTK_ENTRY (entry2)));
gtk_table_attach_defaults (GTK_TABLE (table), local_entry2, 1, 2, 1, 2);
gtk_grid_attach (GTK_GRID (table), local_entry2, 1, 1, 1, 1);
gtk_label_set_mnemonic_widget (GTK_LABEL (label), local_entry2);
gtk_widget_show_all (hbox);
response = gtk_dialog_run (GTK_DIALOG (dialog));
@@ -106,12 +102,12 @@ do_dialog (GtkWidget *do_widget)
GtkWidget *button;
GtkWidget *table;
GtkWidget *label;
if (!window)
{
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_screen (GTK_WINDOW (window),
gtk_widget_get_screen (do_widget));
gtk_widget_get_screen (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Dialogs");
g_signal_connect (window, "destroy", G_CALLBACK (gtk_widget_destroyed), &window);
@@ -129,7 +125,7 @@ do_dialog (GtkWidget *do_widget)
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
button = gtk_button_new_with_mnemonic ("_Message Dialog");
g_signal_connect (button, "clicked",
G_CALLBACK (message_dialog_clicked), NULL);
G_CALLBACK (message_dialog_clicked), NULL);
gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (vbox), gtk_separator_new (GTK_ORIENTATION_HORIZONTAL),
@@ -142,33 +138,27 @@ do_dialog (GtkWidget *do_widget)
button = gtk_button_new_with_mnemonic ("_Interactive Dialog");
g_signal_connect (button, "clicked",
G_CALLBACK (interactive_dialog_clicked), NULL);
G_CALLBACK (interactive_dialog_clicked), NULL);
gtk_box_pack_start (GTK_BOX (hbox), vbox2, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (vbox2), button, FALSE, FALSE, 0);
table = gtk_table_new (2, 2, FALSE);
gtk_table_set_row_spacings (GTK_TABLE (table), 4);
gtk_table_set_col_spacings (GTK_TABLE (table), 4);
table = gtk_grid_new ();
gtk_grid_set_row_spacing (GTK_GRID (table), 4);
gtk_grid_set_column_spacing (GTK_GRID (table), 4);
gtk_box_pack_start (GTK_BOX (hbox), table, FALSE, FALSE, 0);
label = gtk_label_new_with_mnemonic ("_Entry 1");
gtk_table_attach_defaults (GTK_TABLE (table),
label,
0, 1, 0, 1);
gtk_grid_attach (GTK_GRID (table), label, 0, 0, 1, 1);
entry1 = gtk_entry_new ();
gtk_table_attach_defaults (GTK_TABLE (table), entry1, 1, 2, 0, 1);
gtk_grid_attach (GTK_GRID (table), entry1, 1, 0, 1, 1);
gtk_label_set_mnemonic_widget (GTK_LABEL (label), entry1);
label = gtk_label_new_with_mnemonic ("E_ntry 2");
gtk_table_attach_defaults (GTK_TABLE (table),
label,
0, 1, 1, 2);
gtk_grid_attach (GTK_GRID (table), label, 0, 1, 1, 1);
entry2 = gtk_entry_new ();
gtk_table_attach_defaults (GTK_TABLE (table), entry2, 1, 2, 1, 2);
gtk_label_set_mnemonic_widget (GTK_LABEL (label), entry2);
gtk_grid_attach (GTK_GRID (table), entry2, 1, 1, 1, 1);
}
if (!gtk_widget_get_visible (window))
@@ -176,7 +166,7 @@ do_dialog (GtkWidget *do_widget)
gtk_widget_show_all (window);
}
else
{
{
gtk_widget_destroy (window);
window = NULL;
}

View File

@@ -97,7 +97,7 @@ scribble_button_press_event (GtkWidget *widget,
if (surface == NULL)
return FALSE; /* paranoia check, in case we haven't gotten a configure event */
if (event->button == 1)
if (event->button == GDK_BUTTON_PRIMARY)
draw_brush (widget, event->x, event->y);
/* We've handled the event, stop processing */
@@ -126,7 +126,7 @@ scribble_motion_notify_event (GtkWidget *widget,
* can cope.
*/
gdk_window_get_pointer (event->window, &x, &y, &state);
gdk_window_get_device_position (event->window, event->device, &x, &y, &state);
if (state & GDK_BUTTON1_MASK)
draw_brush (widget, x, y);

View File

@@ -6,7 +6,7 @@
* GtkCellRenderer::editing-started signal to do custom setup of the
* editable widget.
*
* The cell renderers used in this demo are GtkCellRendererText,
* The cell renderers used in this demo are GtkCellRendererText,
* GtkCellRendererCombo and GtkCellRendererProgress.
*/
@@ -48,27 +48,27 @@ add_items (void)
g_return_if_fail (articles != NULL);
foo.number = 3;
foo.product = "bottles of coke";
foo.product = g_strdup ("bottles of coke");
foo.yummy = 20;
g_array_append_vals (articles, &foo, 1);
foo.number = 5;
foo.product = "packages of noodles";
foo.product = g_strdup ("packages of noodles");
foo.yummy = 50;
g_array_append_vals (articles, &foo, 1);
foo.number = 2;
foo.product = "packages of chocolate chip cookies";
foo.product = g_strdup ("packages of chocolate chip cookies");
foo.yummy = 90;
g_array_append_vals (articles, &foo, 1);
foo.number = 1;
foo.product = "can vanilla ice cream";
foo.product = g_strdup ("can vanilla ice cream");
foo.yummy = 60;
g_array_append_vals (articles, &foo, 1);
foo.number = 6;
foo.product = "eggs";
foo.product = g_strdup ("eggs");
foo.yummy = 10;
g_array_append_vals (articles, &foo, 1);
}
@@ -205,7 +205,7 @@ editing_started (GtkCellRenderer *cell,
const gchar *path,
gpointer data)
{
gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (editable),
gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (editable),
separator_row, NULL, NULL);
}
@@ -259,7 +259,7 @@ cell_edited (GtkCellRendererText *cell,
}
static void
add_columns (GtkTreeView *treeview,
add_columns (GtkTreeView *treeview,
GtkTreeModel *items_model,
GtkTreeModel *numbers_model)
{
@@ -306,8 +306,6 @@ add_columns (GtkTreeView *treeview,
-1, "Yummy", renderer,
"value", COLUMN_ITEM_YUMMY,
NULL);
}
GtkWidget *

View File

@@ -20,17 +20,17 @@ do_entry_buffer (GtkWidget *do_widget)
if (!window)
{
window = gtk_dialog_new_with_buttons ("GtkEntryBuffer",
GTK_WINDOW (do_widget),
0,
GTK_STOCK_CLOSE,
GTK_RESPONSE_NONE,
NULL);
GTK_WINDOW (do_widget),
0,
GTK_STOCK_CLOSE,
GTK_RESPONSE_NONE,
NULL);
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
g_signal_connect (window, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
G_CALLBACK (gtk_widget_destroy), NULL);
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed), &window);
G_CALLBACK (gtk_widget_destroyed), &window);
content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
@@ -64,5 +64,3 @@ do_entry_buffer (GtkWidget *do_widget)
return window;
}

View File

@@ -15,7 +15,7 @@ create_completion_model (void)
{
GtkListStore *store;
GtkTreeIter iter;
store = gtk_list_store_new (1, G_TYPE_STRING);
/* Append one word */
@@ -29,7 +29,7 @@ create_completion_model (void)
/* And another word */
gtk_list_store_append (store, &iter);
gtk_list_store_set (store, &iter, 0, "totally", -1);
return GTK_TREE_MODEL (store);
}
@@ -43,51 +43,51 @@ do_entry_completion (GtkWidget *do_widget)
GtkWidget *entry;
GtkEntryCompletion *completion;
GtkTreeModel *completion_model;
if (!window)
{
window = gtk_dialog_new_with_buttons ("GtkEntryCompletion",
GTK_WINDOW (do_widget),
0,
GTK_STOCK_CLOSE,
GTK_RESPONSE_NONE,
NULL);
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
{
window = gtk_dialog_new_with_buttons ("GtkEntryCompletion",
GTK_WINDOW (do_widget),
0,
GTK_STOCK_CLOSE,
GTK_RESPONSE_NONE,
NULL);
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
g_signal_connect (window, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed), &window);
g_signal_connect (window, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed), &window);
content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
gtk_box_pack_start (GTK_BOX (content_area), vbox, TRUE, TRUE, 0);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
gtk_box_pack_start (GTK_BOX (content_area), vbox, TRUE, TRUE, 0);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label), "Completion demo, try writing <b>total</b> or <b>gnome</b> for example.");
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label), "Completion demo, try writing <b>total</b> or <b>gnome</b> for example.");
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
/* Create our entry */
entry = gtk_entry_new ();
gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 0);
/* Create our entry */
entry = gtk_entry_new ();
gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 0);
/* Create the completion object */
completion = gtk_entry_completion_new ();
/* Create the completion object */
completion = gtk_entry_completion_new ();
/* Assign the completion to the entry */
gtk_entry_set_completion (GTK_ENTRY (entry), completion);
g_object_unref (completion);
/* Create a tree model and use it as the completion model */
completion_model = create_completion_model ();
gtk_entry_completion_set_model (completion, completion_model);
g_object_unref (completion_model);
/* Use model column 0 as the text column */
gtk_entry_completion_set_text_column (completion, 0);
}
/* Assign the completion to the entry */
gtk_entry_set_completion (GTK_ENTRY (entry), completion);
g_object_unref (completion);
/* Create a tree model and use it as the completion model */
completion_model = create_completion_model ();
gtk_entry_completion_set_model (completion, completion_model);
g_object_unref (completion_model);
/* Use model column 0 as the text column */
gtk_entry_completion_set_text_column (completion, 0);
}
if (!gtk_widget_get_visible (window))
gtk_widget_show_all (window);
@@ -96,5 +96,3 @@ do_entry_completion (GtkWidget *do_widget)
return window;
}

View File

@@ -17,21 +17,21 @@ do_expander (GtkWidget *do_widget)
GtkWidget *vbox;
GtkWidget *label;
GtkWidget *expander;
if (!window)
{
window = gtk_dialog_new_with_buttons ("GtkExpander",
GTK_WINDOW (do_widget),
0,
GTK_STOCK_CLOSE,
GTK_RESPONSE_NONE,
NULL);
GTK_WINDOW (do_widget),
0,
GTK_STOCK_CLOSE,
GTK_RESPONSE_NONE,
NULL);
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
g_signal_connect (window, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
G_CALLBACK (gtk_widget_destroy), NULL);
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed), &window);
G_CALLBACK (gtk_widget_destroyed), &window);
content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
@@ -57,5 +57,3 @@ do_expander (GtkWidget *do_widget)
return window;
}

View File

@@ -116,7 +116,7 @@ if (defined @child_arrays) {
}
# toplevel
print "\nDemo testgtk_demos[] = {\n";
print "\nDemo gtk_demos[] = {\n";
$first = 1;
foreach $href (@demos) {

Binary file not shown.

After

Width:  |  Height:  |  Size: 674 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -1,8 +1,8 @@
/* Text Widget/Hypertext
*
* Usually, tags modify the appearance of text in the view, e.g. making it
* bold or colored or underlined. But tags are not restricted to appearance.
* They can also affect the behavior of mouse and key presses, as this demo
* Usually, tags modify the appearance of text in the view, e.g. making it
* bold or colored or underlined. But tags are not restricted to appearance.
* They can also affect the behavior of mouse and key presses, as this demo
* shows.
*/
@@ -12,19 +12,19 @@
/* Inserts a piece of text into the buffer, giving it the usual
* appearance of a hyperlink in a web browser: blue and underlined.
* Additionally, attaches some data on the tag, to make it recognizable
* as a link.
* as a link.
*/
static void
insert_link (GtkTextBuffer *buffer,
GtkTextIter *iter,
gchar *text,
static void
insert_link (GtkTextBuffer *buffer,
GtkTextIter *iter,
gchar *text,
gint page)
{
GtkTextTag *tag;
tag = gtk_text_buffer_create_tag (buffer, NULL,
"foreground", "blue",
"underline", PANGO_UNDERLINE_SINGLE,
tag = gtk_text_buffer_create_tag (buffer, NULL,
"foreground", "blue",
"underline", PANGO_UNDERLINE_SINGLE,
NULL);
g_object_set_data (G_OBJECT (tag), "page", GINT_TO_POINTER (page));
gtk_text_buffer_insert_with_tags (buffer, iter, text, -1, tag, NULL);
@@ -34,7 +34,7 @@ insert_link (GtkTextBuffer *buffer,
* hypertext app, this method would parse a file to identify the links.
*/
static void
show_page (GtkTextBuffer *buffer,
show_page (GtkTextBuffer *buffer,
gint page)
{
GtkTextIter iter;
@@ -51,7 +51,7 @@ show_page (GtkTextBuffer *buffer,
}
else if (page == 2)
{
gtk_text_buffer_insert (buffer, &iter,
gtk_text_buffer_insert (buffer, &iter,
"A tag is an attribute that can be applied to some range of text. "
"For example, a tag might be called \"bold\" and make the text inside "
"the tag bold. However, the tag concept is more general than that; "
@@ -60,27 +60,27 @@ show_page (GtkTextBuffer *buffer,
"user can't edit it, or countless other things.\n", -1);
insert_link (buffer, &iter, "Go back", 1);
}
else if (page == 3)
else if (page == 3)
{
GtkTextTag *tag;
tag = gtk_text_buffer_create_tag (buffer, NULL,
"weight", PANGO_WEIGHT_BOLD,
tag = gtk_text_buffer_create_tag (buffer, NULL,
"weight", PANGO_WEIGHT_BOLD,
NULL);
gtk_text_buffer_insert_with_tags (buffer, &iter, "hypertext:\n", -1, tag, NULL);
gtk_text_buffer_insert (buffer, &iter,
gtk_text_buffer_insert (buffer, &iter,
"machine-readable text that is not sequential but is organized "
"so that related items of information are connected.\n", -1);
insert_link (buffer, &iter, "Go back", 1);
}
}
/* Looks at all tags covering the position of iter in the text view,
/* Looks at all tags covering the position of iter in the text view,
* and if one of them is a link, follow it by showing the page identified
* by the data attached to it.
*/
static void
follow_if_link (GtkWidget *text_view,
follow_if_link (GtkWidget *text_view,
GtkTextIter *iter)
{
GSList *tags = NULL, *tagp = NULL;
@@ -98,7 +98,7 @@ follow_if_link (GtkWidget *text_view,
}
}
if (tags)
if (tags)
g_slist_free (tags);
}
@@ -113,10 +113,10 @@ key_press_event (GtkWidget *text_view,
switch (event->keyval)
{
case GDK_KEY_Return:
case GDK_KEY_Return:
case GDK_KEY_KP_Enter:
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view));
gtk_text_buffer_get_iter_at_mark (buffer, &iter,
gtk_text_buffer_get_iter_at_mark (buffer, &iter,
gtk_text_buffer_get_insert (buffer));
follow_if_link (text_view, &iter);
break;
@@ -144,7 +144,7 @@ event_after (GtkWidget *text_view,
event = (GdkEventButton *)ev;
if (event->button != 1)
if (event->button != GDK_BUTTON_PRIMARY)
return FALSE;
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view));
@@ -154,7 +154,7 @@ event_after (GtkWidget *text_view,
if (gtk_text_iter_get_offset (&start) != gtk_text_iter_get_offset (&end))
return FALSE;
gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view),
gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view),
GTK_TEXT_WINDOW_WIDGET,
event->x, event->y, &x, &y);
@@ -169,7 +169,7 @@ static gboolean hovering_over_link = FALSE;
static GdkCursor *hand_cursor = NULL;
static GdkCursor *regular_cursor = NULL;
/* Looks at all tags covering the position (x, y) in the text view,
/* Looks at all tags covering the position (x, y) in the text view,
* and if one of them is a link, change the cursor to the "hands" cursor
* typically used by web browsers.
*/
@@ -183,14 +183,14 @@ set_cursor_if_appropriate (GtkTextView *text_view,
gboolean hovering = FALSE;
gtk_text_view_get_iter_at_location (text_view, &iter, x, y);
tags = gtk_text_iter_get_tags (&iter);
for (tagp = tags; tagp != NULL; tagp = tagp->next)
{
GtkTextTag *tag = tagp->data;
gint page = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (tag), "page"));
if (page != 0)
if (page != 0)
{
hovering = TRUE;
break;
@@ -207,11 +207,11 @@ set_cursor_if_appropriate (GtkTextView *text_view,
gdk_window_set_cursor (gtk_text_view_get_window (text_view, GTK_TEXT_WINDOW_TEXT), regular_cursor);
}
if (tags)
if (tags)
g_slist_free (tags);
}
/* Update the cursor image if the pointer moved.
/* Update the cursor image if the pointer moved.
*/
static gboolean
motion_notify_event (GtkWidget *text_view,
@@ -219,35 +219,12 @@ motion_notify_event (GtkWidget *text_view,
{
gint x, y;
gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view),
gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view),
GTK_TEXT_WINDOW_WIDGET,
event->x, event->y, &x, &y);
set_cursor_if_appropriate (GTK_TEXT_VIEW (text_view), x, y);
gdk_window_get_pointer (gtk_widget_get_window (text_view),
NULL, NULL, NULL);
return FALSE;
}
/* Also update the cursor image if the window becomes visible
* (e.g. when a window covering it got iconified).
*/
static gboolean
visibility_notify_event (GtkWidget *text_view,
GdkEventVisibility *event)
{
gint wx, wy, bx, by;
gdk_window_get_pointer (gtk_widget_get_window (text_view),
&wx, &wy, NULL);
gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view),
GTK_TEXT_WINDOW_WIDGET,
wx, wy, &bx, &by);
set_cursor_if_appropriate (GTK_TEXT_VIEW (text_view), bx, by);
return FALSE;
}
@@ -264,13 +241,13 @@ do_hypertext (GtkWidget *do_widget)
hand_cursor = gdk_cursor_new (GDK_HAND2);
regular_cursor = gdk_cursor_new (GDK_XTERM);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_screen (GTK_WINDOW (window),
gtk_widget_get_screen (do_widget));
gtk_window_set_default_size (GTK_WINDOW (window),
450, 450);
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed), &window);
@@ -279,17 +256,15 @@ do_hypertext (GtkWidget *do_widget)
view = gtk_text_view_new ();
gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (view), GTK_WRAP_WORD);
g_signal_connect (view, "key-press-event",
g_signal_connect (view, "key-press-event",
G_CALLBACK (key_press_event), NULL);
g_signal_connect (view, "event-after",
g_signal_connect (view, "event-after",
G_CALLBACK (event_after), NULL);
g_signal_connect (view, "motion-notify-event",
g_signal_connect (view, "motion-notify-event",
G_CALLBACK (motion_notify_event), NULL);
g_signal_connect (view, "visibility-notify-event",
G_CALLBACK (visibility_notify_event), NULL);
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
sw = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
GTK_POLICY_AUTOMATIC,
@@ -314,4 +289,3 @@ do_hypertext (GtkWidget *do_widget)
return window;
}

View File

@@ -85,23 +85,23 @@ fill_store (GtkListStore *store)
/* We ignore hidden files that start with a '.' */
if (name[0] != '.')
{
path = g_build_filename (parent, name, NULL);
{
path = g_build_filename (parent, name, NULL);
is_dir = g_file_test (path, G_FILE_TEST_IS_DIR);
is_dir = g_file_test (path, G_FILE_TEST_IS_DIR);
display_name = g_filename_to_utf8 (name, -1, NULL, NULL, NULL);
display_name = g_filename_to_utf8 (name, -1, NULL, NULL, NULL);
gtk_list_store_append (store, &iter);
gtk_list_store_set (store, &iter,
COL_PATH, path,
COL_DISPLAY_NAME, display_name,
COL_IS_DIRECTORY, is_dir,
COL_PIXBUF, is_dir ? folder_pixbuf : file_pixbuf,
-1);
g_free (path);
g_free (display_name);
}
gtk_list_store_append (store, &iter);
gtk_list_store_set (store, &iter,
COL_PATH, path,
COL_DISPLAY_NAME, display_name,
COL_IS_DIRECTORY, is_dir,
COL_PIXBUF, is_dir ? folder_pixbuf : file_pixbuf,
-1);
g_free (path);
g_free (display_name);
}
name = g_dir_read_name (dir);
}
@@ -110,9 +110,9 @@ fill_store (GtkListStore *store)
static gint
sort_func (GtkTreeModel *model,
GtkTreeIter *a,
GtkTreeIter *b,
gpointer user_data)
GtkTreeIter *a,
GtkTreeIter *b,
gpointer user_data)
{
gboolean is_dir_a, is_dir_b;
gchar *name_a, *name_b;
@@ -124,14 +124,14 @@ sort_func (GtkTreeModel *model,
gtk_tree_model_get (model, a,
COL_IS_DIRECTORY, &is_dir_a,
COL_DISPLAY_NAME, &name_a,
-1);
COL_IS_DIRECTORY, &is_dir_a,
COL_DISPLAY_NAME, &name_a,
-1);
gtk_tree_model_get (model, b,
COL_IS_DIRECTORY, &is_dir_b,
COL_DISPLAY_NAME, &name_b,
-1);
COL_IS_DIRECTORY, &is_dir_b,
COL_DISPLAY_NAME, &name_b,
-1);
if (!is_dir_a && is_dir_b)
ret = 1;
@@ -154,26 +154,26 @@ create_store (void)
GtkListStore *store;
store = gtk_list_store_new (NUM_COLS,
G_TYPE_STRING,
G_TYPE_STRING,
GDK_TYPE_PIXBUF,
G_TYPE_BOOLEAN);
G_TYPE_STRING,
G_TYPE_STRING,
GDK_TYPE_PIXBUF,
G_TYPE_BOOLEAN);
/* Set sort column and function */
gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (store),
sort_func,
NULL, NULL);
sort_func,
NULL, NULL);
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store),
GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID,
GTK_SORT_ASCENDING);
GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID,
GTK_SORT_ASCENDING);
return store;
}
static void
item_activated (GtkIconView *icon_view,
GtkTreePath *tree_path,
gpointer user_data)
GtkTreePath *tree_path,
gpointer user_data)
{
GtkListStore *store;
gchar *path;
@@ -183,11 +183,11 @@ item_activated (GtkIconView *icon_view,
store = GTK_LIST_STORE (user_data);
gtk_tree_model_get_iter (GTK_TREE_MODEL (store),
&iter, tree_path);
&iter, tree_path);
gtk_tree_model_get (GTK_TREE_MODEL (store), &iter,
COL_PATH, &path,
COL_IS_DIRECTORY, &is_dir,
-1);
COL_PATH, &path,
COL_IS_DIRECTORY, &is_dir,
-1);
if (!is_dir)
{
@@ -207,7 +207,7 @@ item_activated (GtkIconView *icon_view,
static void
up_clicked (GtkToolItem *item,
gpointer user_data)
gpointer user_data)
{
GtkListStore *store;
gchar *dir_name;
@@ -223,12 +223,12 @@ up_clicked (GtkToolItem *item,
/* Maybe de-sensitize the up button */
gtk_widget_set_sensitive (GTK_WIDGET (up_button),
strcmp (parent, "/") != 0);
strcmp (parent, "/") != 0);
}
static void
home_clicked (GtkToolItem *item,
gpointer user_data)
gpointer user_data)
{
GtkListStore *store;
@@ -241,7 +241,7 @@ home_clicked (GtkToolItem *item,
/* Sensitize the up button */
gtk_widget_set_sensitive (GTK_WIDGET (up_button),
TRUE);
TRUE);
}
static void close_window(void)
@@ -267,96 +267,96 @@ do_iconview (GtkWidget *do_widget)
gtk_window_set_default_size (GTK_WINDOW (window), 650, 400);
gtk_window_set_screen (GTK_WINDOW (window),
gtk_widget_get_screen (do_widget));
gtk_widget_get_screen (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "GtkIconView demo");
g_signal_connect (window, "destroy",
G_CALLBACK (close_window), NULL);
G_CALLBACK (close_window), NULL);
error = NULL;
if (!load_pixbufs (&error))
{
GtkWidget *dialog;
{
GtkWidget *dialog;
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
"Failed to load an image: %s",
error->message);
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
"Failed to load an image: %s",
error->message);
g_error_free (error);
g_error_free (error);
g_signal_connect (dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
g_signal_connect (dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
gtk_widget_show (dialog);
}
gtk_widget_show (dialog);
}
else
{
GtkWidget *sw;
GtkWidget *icon_view;
GtkListStore *store;
GtkWidget *vbox;
GtkWidget *tool_bar;
GtkToolItem *home_button;
{
GtkWidget *sw;
GtkWidget *icon_view;
GtkListStore *store;
GtkWidget *vbox;
GtkWidget *tool_bar;
GtkToolItem *home_button;
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_container_add (GTK_CONTAINER (window), vbox);
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_container_add (GTK_CONTAINER (window), vbox);
tool_bar = gtk_toolbar_new ();
gtk_box_pack_start (GTK_BOX (vbox), tool_bar, FALSE, FALSE, 0);
tool_bar = gtk_toolbar_new ();
gtk_box_pack_start (GTK_BOX (vbox), tool_bar, FALSE, FALSE, 0);
up_button = gtk_tool_button_new_from_stock (GTK_STOCK_GO_UP);
gtk_tool_item_set_is_important (up_button, TRUE);
gtk_widget_set_sensitive (GTK_WIDGET (up_button), FALSE);
gtk_toolbar_insert (GTK_TOOLBAR (tool_bar), up_button, -1);
up_button = gtk_tool_button_new_from_stock (GTK_STOCK_GO_UP);
gtk_tool_item_set_is_important (up_button, TRUE);
gtk_widget_set_sensitive (GTK_WIDGET (up_button), FALSE);
gtk_toolbar_insert (GTK_TOOLBAR (tool_bar), up_button, -1);
home_button = gtk_tool_button_new_from_stock (GTK_STOCK_HOME);
gtk_tool_item_set_is_important (home_button, TRUE);
gtk_toolbar_insert (GTK_TOOLBAR (tool_bar), home_button, -1);
home_button = gtk_tool_button_new_from_stock (GTK_STOCK_HOME);
gtk_tool_item_set_is_important (home_button, TRUE);
gtk_toolbar_insert (GTK_TOOLBAR (tool_bar), home_button, -1);
sw = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
GTK_SHADOW_ETCHED_IN);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
sw = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
GTK_SHADOW_ETCHED_IN);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
gtk_box_pack_start (GTK_BOX (vbox), sw, TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (vbox), sw, TRUE, TRUE, 0);
/* Create the store and fill it with the contents of '/' */
parent = g_strdup ("/");
store = create_store ();
fill_store (store);
/* Create the store and fill it with the contents of '/' */
parent = g_strdup ("/");
store = create_store ();
fill_store (store);
icon_view = gtk_icon_view_new_with_model (GTK_TREE_MODEL (store));
gtk_icon_view_set_selection_mode (GTK_ICON_VIEW (icon_view),
GTK_SELECTION_MULTIPLE);
g_object_unref (store);
icon_view = gtk_icon_view_new_with_model (GTK_TREE_MODEL (store));
gtk_icon_view_set_selection_mode (GTK_ICON_VIEW (icon_view),
GTK_SELECTION_MULTIPLE);
g_object_unref (store);
/* Connect to the "clicked" signal of the "Up" tool button */
g_signal_connect (up_button, "clicked",
G_CALLBACK (up_clicked), store);
/* Connect to the "clicked" signal of the "Up" tool button */
g_signal_connect (up_button, "clicked",
G_CALLBACK (up_clicked), store);
/* Connect to the "clicked" signal of the "Home" tool button */
g_signal_connect (home_button, "clicked",
G_CALLBACK (home_clicked), store);
/* Connect to the "clicked" signal of the "Home" tool button */
g_signal_connect (home_button, "clicked",
G_CALLBACK (home_clicked), store);
/* We now set which model columns that correspond to the text
* and pixbuf of each item
*/
gtk_icon_view_set_text_column (GTK_ICON_VIEW (icon_view), COL_DISPLAY_NAME);
gtk_icon_view_set_pixbuf_column (GTK_ICON_VIEW (icon_view), COL_PIXBUF);
/* We now set which model columns that correspond to the text
* and pixbuf of each item
*/
gtk_icon_view_set_text_column (GTK_ICON_VIEW (icon_view), COL_DISPLAY_NAME);
gtk_icon_view_set_pixbuf_column (GTK_ICON_VIEW (icon_view), COL_PIXBUF);
/* Connect to the "item-activated" signal */
g_signal_connect (icon_view, "item-activated",
G_CALLBACK (item_activated), store);
gtk_container_add (GTK_CONTAINER (sw), icon_view);
/* Connect to the "item-activated" signal */
g_signal_connect (icon_view, "item-activated",
G_CALLBACK (item_activated), store);
gtk_container_add (GTK_CONTAINER (sw), icon_view);
gtk_widget_grab_focus (icon_view);
}
gtk_widget_grab_focus (icon_view);
}
}
if (!gtk_widget_get_visible (window))
@@ -369,4 +369,3 @@ do_iconview (GtkWidget *do_widget)
return window;
}

View File

@@ -47,10 +47,10 @@ create_store (void)
static void
set_cell_color (GtkCellLayout *cell_layout,
GtkCellRenderer *cell,
GtkTreeModel *tree_model,
GtkTreeIter *iter,
gpointer data)
GtkCellRenderer *cell,
GtkTreeModel *tree_model,
GtkTreeIter *iter,
gpointer data)
{
gchar *text;
GdkColor color;
@@ -76,9 +76,9 @@ set_cell_color (GtkCellLayout *cell_layout,
static void
edited (GtkCellRendererText *cell,
gchar *path_string,
gchar *text,
gpointer data)
gchar *path_string,
gchar *text,
gpointer data)
{
GtkTreeModel *model;
GtkTreeIter iter;
@@ -89,7 +89,7 @@ edited (GtkCellRendererText *cell,
gtk_tree_model_get_iter (model, &iter, path);
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
COL_TEXT, text, -1);
COL_TEXT, text, -1);
gtk_tree_path_free (path);
}
@@ -106,11 +106,11 @@ do_iconview_edit (GtkWidget *do_widget)
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_screen (GTK_WINDOW (window),
gtk_widget_get_screen (do_widget));
gtk_widget_get_screen (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Editing and Drag-and-Drop");
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed), &window);
G_CALLBACK (gtk_widget_destroyed), &window);
store = create_store ();
fill_store (store);
@@ -119,29 +119,29 @@ do_iconview_edit (GtkWidget *do_widget)
g_object_unref (store);
gtk_icon_view_set_selection_mode (GTK_ICON_VIEW (icon_view),
GTK_SELECTION_SINGLE);
GTK_SELECTION_SINGLE);
gtk_icon_view_set_item_orientation (GTK_ICON_VIEW (icon_view),
GTK_ORIENTATION_HORIZONTAL);
GTK_ORIENTATION_HORIZONTAL);
gtk_icon_view_set_columns (GTK_ICON_VIEW (icon_view), 2);
gtk_icon_view_set_reorderable (GTK_ICON_VIEW (icon_view), TRUE);
renderer = gtk_cell_renderer_pixbuf_new ();
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (icon_view),
renderer, TRUE);
renderer, TRUE);
gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (icon_view),
renderer,
set_cell_color,
NULL, NULL);
renderer,
set_cell_color,
NULL, NULL);
renderer = gtk_cell_renderer_text_new ();
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (icon_view),
renderer, TRUE);
renderer, TRUE);
g_object_set (renderer, "editable", TRUE, NULL);
g_signal_connect (renderer, "edited", G_CALLBACK (edited), icon_view);
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (icon_view),
renderer,
"text", COL_TEXT,
NULL);
renderer,
"text", COL_TEXT,
NULL);
gtk_container_add (GTK_CONTAINER (window), icon_view);
}
@@ -156,4 +156,3 @@ do_iconview_edit (GtkWidget *do_widget)
return window;
}

View File

@@ -25,7 +25,7 @@ static FILE* image_stream = NULL;
static void
progressive_prepared_callback (GdkPixbufLoader *loader,
gpointer data)
gpointer data)
{
GdkPixbuf *pixbuf;
GtkWidget *image;
@@ -44,11 +44,11 @@ progressive_prepared_callback (GdkPixbufLoader *loader,
static void
progressive_updated_callback (GdkPixbufLoader *loader,
gint x,
gint y,
gint width,
gint height,
gpointer data)
gint x,
gint y,
gint width,
gint height,
gpointer data)
{
GtkWidget *image;
@@ -86,97 +86,97 @@ progressive_timeout (gpointer data)
bytes_read = fread (buf, 1, 256, image_stream);
if (ferror (image_stream))
{
GtkWidget *dialog;
{
GtkWidget *dialog;
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
"Failure reading image file 'alphatest.png': %s",
g_strerror (errno));
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
"Failure reading image file 'alphatest.png': %s",
g_strerror (errno));
g_signal_connect (dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
g_signal_connect (dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
fclose (image_stream);
image_stream = NULL;
fclose (image_stream);
image_stream = NULL;
gtk_widget_show (dialog);
gtk_widget_show (dialog);
load_timeout = 0;
load_timeout = 0;
return FALSE; /* uninstall the timeout */
}
return FALSE; /* uninstall the timeout */
}
if (!gdk_pixbuf_loader_write (pixbuf_loader,
buf, bytes_read,
&error))
{
GtkWidget *dialog;
buf, bytes_read,
&error))
{
GtkWidget *dialog;
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
"Failed to load image: %s",
error->message);
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
"Failed to load image: %s",
error->message);
g_error_free (error);
g_error_free (error);
g_signal_connect (dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
g_signal_connect (dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
fclose (image_stream);
image_stream = NULL;
fclose (image_stream);
image_stream = NULL;
gtk_widget_show (dialog);
gtk_widget_show (dialog);
load_timeout = 0;
load_timeout = 0;
return FALSE; /* uninstall the timeout */
}
return FALSE; /* uninstall the timeout */
}
if (feof (image_stream))
{
fclose (image_stream);
image_stream = NULL;
{
fclose (image_stream);
image_stream = NULL;
/* Errors can happen on close, e.g. if the image
* file was truncated we'll know on close that
* it was incomplete.
*/
error = NULL;
if (!gdk_pixbuf_loader_close (pixbuf_loader,
&error))
{
GtkWidget *dialog;
/* Errors can happen on close, e.g. if the image
* file was truncated we'll know on close that
* it was incomplete.
*/
error = NULL;
if (!gdk_pixbuf_loader_close (pixbuf_loader,
&error))
{
GtkWidget *dialog;
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
"Failed to load image: %s",
error->message);
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
"Failed to load image: %s",
error->message);
g_error_free (error);
g_error_free (error);
g_signal_connect (dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
g_signal_connect (dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
gtk_widget_show (dialog);
gtk_widget_show (dialog);
g_object_unref (pixbuf_loader);
pixbuf_loader = NULL;
g_object_unref (pixbuf_loader);
pixbuf_loader = NULL;
load_timeout = 0;
load_timeout = 0;
return FALSE; /* uninstall the timeout */
}
return FALSE; /* uninstall the timeout */
}
g_object_unref (pixbuf_loader);
pixbuf_loader = NULL;
}
g_object_unref (pixbuf_loader);
pixbuf_loader = NULL;
}
}
else
{
@@ -190,55 +190,55 @@ progressive_timeout (gpointer data)
*/
filename = demo_find_file ("alphatest.png", &error);
if (error)
{
error_message = g_strdup (error->message);
g_error_free (error);
}
{
error_message = g_strdup (error->message);
g_error_free (error);
}
else
{
image_stream = g_fopen (filename, "rb");
g_free (filename);
{
image_stream = g_fopen (filename, "rb");
g_free (filename);
if (!image_stream)
error_message = g_strdup_printf ("Unable to open image file 'alphatest.png': %s",
g_strerror (errno));
}
if (!image_stream)
error_message = g_strdup_printf ("Unable to open image file 'alphatest.png': %s",
g_strerror (errno));
}
if (image_stream == NULL)
{
GtkWidget *dialog;
{
GtkWidget *dialog;
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
"%s", error_message);
g_free (error_message);
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
"%s", error_message);
g_free (error_message);
g_signal_connect (dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
g_signal_connect (dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
gtk_widget_show (dialog);
gtk_widget_show (dialog);
load_timeout = 0;
load_timeout = 0;
return FALSE; /* uninstall the timeout */
}
return FALSE; /* uninstall the timeout */
}
if (pixbuf_loader)
{
gdk_pixbuf_loader_close (pixbuf_loader, NULL);
g_object_unref (pixbuf_loader);
pixbuf_loader = NULL;
}
{
gdk_pixbuf_loader_close (pixbuf_loader, NULL);
g_object_unref (pixbuf_loader);
pixbuf_loader = NULL;
}
pixbuf_loader = gdk_pixbuf_loader_new ();
g_signal_connect (pixbuf_loader, "area-prepared",
G_CALLBACK (progressive_prepared_callback), image);
G_CALLBACK (progressive_prepared_callback), image);
g_signal_connect (pixbuf_loader, "area-updated",
G_CALLBACK (progressive_updated_callback), image);
G_CALLBACK (progressive_updated_callback), image);
}
/* leave timeout installed */
@@ -256,13 +256,13 @@ start_progressive_loading (GtkWidget *image)
* pauses in the reading process.
*/
load_timeout = gdk_threads_add_timeout (150,
progressive_timeout,
image);
progressive_timeout,
image);
}
static void
cleanup_callback (GObject *object,
gpointer data)
gpointer data)
{
if (load_timeout)
{
@@ -314,7 +314,6 @@ do_images (GtkWidget *do_widget)
GtkWidget *vbox;
GtkWidget *image;
GtkWidget *label;
GtkWidget *align;
GtkWidget *button;
GdkPixbuf *pixbuf;
GIcon *gicon;
@@ -325,13 +324,13 @@ do_images (GtkWidget *do_widget)
{
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_screen (GTK_WINDOW (window),
gtk_widget_get_screen (do_widget));
gtk_widget_get_screen (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Images");
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed), &window);
G_CALLBACK (gtk_widget_destroyed), &window);
g_signal_connect (window, "destroy",
G_CALLBACK (cleanup_callback), NULL);
G_CALLBACK (cleanup_callback), NULL);
gtk_container_set_border_width (GTK_CONTAINER (window), 8);
@@ -341,17 +340,14 @@ do_images (GtkWidget *do_widget)
label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label),
"<u>Image loaded from a file</u>");
"<u>Image loaded from a file</u>");
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
frame = gtk_frame_new (NULL);
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
/* The alignment keeps the frame from growing when users resize
* the window
*/
align = gtk_alignment_new (0.5, 0.5, 0, 0);
gtk_container_add (GTK_CONTAINER (align), frame);
gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
gtk_widget_set_halign (frame, GTK_ALIGN_CENTER);
gtk_widget_set_valign (frame, GTK_ALIGN_CENTER);
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
/* demo_find_file() looks in the current directory first,
* so you can run gtk-demo without installing GTK, then looks
@@ -360,34 +356,34 @@ do_images (GtkWidget *do_widget)
pixbuf = NULL;
filename = demo_find_file ("gtk-logo-rgb.gif", &error);
if (filename)
{
pixbuf = gdk_pixbuf_new_from_file (filename, &error);
g_free (filename);
}
{
pixbuf = gdk_pixbuf_new_from_file (filename, &error);
g_free (filename);
}
if (error)
{
/* This code shows off error handling. You can just use
* gtk_image_new_from_file() instead if you don't want to report
* errors to the user. If the file doesn't load when using
* gtk_image_new_from_file(), a "missing image" icon will
* be displayed instead.
*/
GtkWidget *dialog;
{
/* This code shows off error handling. You can just use
* gtk_image_new_from_file() instead if you don't want to report
* errors to the user. If the file doesn't load when using
* gtk_image_new_from_file(), a "missing image" icon will
* be displayed instead.
*/
GtkWidget *dialog;
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
"Unable to open image file 'gtk-logo-rgb.gif': %s",
error->message);
g_error_free (error);
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
"Unable to open image file 'gtk-logo-rgb.gif': %s",
error->message);
g_error_free (error);
g_signal_connect (dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
g_signal_connect (dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
gtk_widget_show (dialog);
}
gtk_widget_show (dialog);
}
image = gtk_image_new_from_pixbuf (pixbuf);
@@ -398,17 +394,14 @@ do_images (GtkWidget *do_widget)
label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label),
"<u>Animation loaded from a file</u>");
"<u>Animation loaded from a file</u>");
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
frame = gtk_frame_new (NULL);
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
/* The alignment keeps the frame from growing when users resize
* the window
*/
align = gtk_alignment_new (0.5, 0.5, 0, 0);
gtk_container_add (GTK_CONTAINER (align), frame);
gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
gtk_widget_set_halign (frame, GTK_ALIGN_CENTER);
gtk_widget_set_valign (frame, GTK_ALIGN_CENTER);
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
filename = demo_find_file ("floppybuddy.gif", NULL);
image = gtk_image_new_from_file (filename);
@@ -420,17 +413,14 @@ do_images (GtkWidget *do_widget)
label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label),
"<u>Symbolic themed icon</u>");
"<u>Symbolic themed icon</u>");
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
frame = gtk_frame_new (NULL);
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
/* The alignment keeps the frame from growing when users resize
* the window
*/
align = gtk_alignment_new (0.5, 0.5, 0, 0);
gtk_container_add (GTK_CONTAINER (align), frame);
gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
gtk_widget_set_halign (frame, GTK_ALIGN_CENTER);
gtk_widget_set_valign (frame, GTK_ALIGN_CENTER);
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
gicon = g_themed_icon_new_with_default_fallbacks ("battery-caution-charging-symbolic");
image = gtk_image_new_from_gicon (gicon, GTK_ICON_SIZE_DIALOG);
@@ -442,17 +432,14 @@ do_images (GtkWidget *do_widget)
label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label),
"<u>Progressive image loading</u>");
"<u>Progressive image loading</u>");
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
frame = gtk_frame_new (NULL);
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
/* The alignment keeps the frame from growing when users resize
* the window
*/
align = gtk_alignment_new (0.5, 0.5, 0, 0);
gtk_container_add (GTK_CONTAINER (align), frame);
gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
gtk_widget_set_halign (frame, GTK_ALIGN_CENTER);
gtk_widget_set_valign (frame, GTK_ALIGN_CENTER);
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
/* Create an empty image for now; the progressive loader
* will create the pixbuf and fill it in.

View File

@@ -15,10 +15,10 @@ on_bar_response (GtkInfoBar *info_bar,
GtkWidget *dialog;
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_INFO,
GTK_BUTTONS_OK,
"You clicked a button on an info bar");
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_INFO,
GTK_BUTTONS_OK,
"You clicked a button on an info bar");
gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
"Your response has id %d", response_id);
gtk_dialog_run (GTK_DIALOG (dialog));

View File

@@ -54,16 +54,22 @@ do_links (GtkWidget *do_widget)
{
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_screen (GTK_WINDOW (window),
gtk_widget_get_screen (do_widget));
gtk_widget_get_screen (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Links");
gtk_container_set_border_width (GTK_CONTAINER (window), 12);
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed), &window);
G_CALLBACK (gtk_widget_destroyed), &window);
label = gtk_label_new ("Some <a href=\"http://en.wikipedia.org/wiki/Text\""
"title=\"plain text\">text</a> may be marked up\n"
"as hyperlinks, which can be clicked\n"
"or activated via <a href=\"keynav\">keynav</a>");
"or activated via <a href=\"keynav\">keynav</a>\n"
"and they work fine with other markup, like when\n"
"searching on <a href=\"http://www.google.com/\">"
"<span color=\"#0266C8\">G</span><span color=\"#F90101\">o</span>"
"<span color=\"#F2B50F\">o</span><span color=\"#0266C8\">g</span>"
"<span color=\"#00933B\">l</span><span color=\"#F90101\">e</span>"
"</a>.");
gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
g_signal_connect (label, "activate-link", G_CALLBACK (activate_link), NULL);
gtk_container_add (GTK_CONTAINER (window), label);

View File

@@ -60,7 +60,7 @@ spinner_timeout (gpointer data)
guint pulse;
if (model == NULL)
return FALSE;
return G_SOURCE_REMOVE;
gtk_tree_model_get_iter_first (model, &iter);
gtk_tree_model_get (model, &iter,
@@ -77,7 +77,7 @@ spinner_timeout (gpointer data)
COLUMN_ACTIVE, TRUE,
-1);
return TRUE;
return G_SOURCE_CONTINUE;
}
static GtkTreeModel *
@@ -105,7 +105,7 @@ create_model (void)
gboolean sensitive;
if (i == 1 || i == 3)
icon_name = "battery-critical-charging-symbolic";
icon_name = "battery-caution-charging-symbolic";
else
icon_name = NULL;
if (i == 3)

View File

@@ -43,9 +43,9 @@ get_democodedir (void)
{
result = g_win32_get_package_installation_directory_of_module (NULL);
if (result == NULL)
result = "unknown-location";
result = "unknown-location";
result = g_strconcat (result, "\\share\\gtk-2.0\\demo", NULL);
result = g_strconcat (result, "\\share\\gtk-3.0\\demo", NULL);
}
return result;
@@ -59,19 +59,19 @@ get_democodedir (void)
* demo_find_file:
* @base: base filename
* @err: location to store error, or %NULL.
*
*
* Looks for @base first in the current directory, then in the
* location GTK+ where it will be installed on make install,
* returns the first file found.
*
*
* Return value: the filename, if found or %NULL
**/
*/
gchar *
demo_find_file (const char *base,
GError **err)
GError **err)
{
g_return_val_if_fail (err == NULL || *err == NULL, NULL);
if (g_file_test ("gtk-logo-rgb.gif", G_FILE_TEST_EXISTS) &&
g_file_test (base, G_FILE_TEST_EXISTS))
return g_strdup (base);
@@ -79,12 +79,12 @@ demo_find_file (const char *base,
{
char *filename = g_build_filename (DEMOCODEDIR, base, NULL);
if (!g_file_test (filename, G_FILE_TEST_EXISTS))
{
g_set_error (err, G_FILE_ERROR, G_FILE_ERROR_NOENT,
"Cannot find demo data file \"%s\"", base);
g_free (filename);
return NULL;
}
{
g_set_error (err, G_FILE_ERROR, G_FILE_ERROR_NOENT,
"Cannot find demo data file \"%s\"", base);
g_free (filename);
return NULL;
}
return filename;
}
}
@@ -98,12 +98,12 @@ window_closed_cb (GtkWidget *window, gpointer data)
gtk_tree_model_get_iter (cbdata->model, &iter, cbdata->path);
gtk_tree_model_get (GTK_TREE_MODEL (cbdata->model), &iter,
STYLE_COLUMN, &style,
-1);
STYLE_COLUMN, &style,
-1);
if (style == PANGO_STYLE_ITALIC)
gtk_tree_store_set (GTK_TREE_STORE (cbdata->model), &iter,
STYLE_COLUMN, PANGO_STYLE_NORMAL,
-1);
STYLE_COLUMN, PANGO_STYLE_NORMAL,
-1);
gtk_tree_path_free (cbdata->path);
g_free (cbdata);
@@ -113,17 +113,17 @@ gboolean
read_line (FILE *stream, GString *str)
{
int n_read = 0;
#ifdef HAVE_FLOCKFILE
flockfile (stream);
#endif
g_string_truncate (str, 0);
while (1)
{
int c;
#ifdef HAVE_FLOCKFILE
c = getc_unlocked (stream);
#else
@@ -131,31 +131,31 @@ read_line (FILE *stream, GString *str)
#endif
if (c == EOF)
goto done;
goto done;
else
n_read++;
n_read++;
switch (c)
{
case '\r':
case '\n':
{
{
case '\r':
case '\n':
{
#ifdef HAVE_FLOCKFILE
int next_c = getc_unlocked (stream);
int next_c = getc_unlocked (stream);
#else
int next_c = getc (stream);
int next_c = getc (stream);
#endif
if (!(next_c == EOF ||
(c == '\r' && next_c == '\n') ||
(c == '\n' && next_c == '\r')))
ungetc (next_c, stream);
goto done;
}
default:
g_string_append_c (str, c);
}
if (!(next_c == EOF ||
(c == '\r' && next_c == '\n') ||
(c == '\n' && next_c == '\r')))
ungetc (next_c, stream);
goto done;
}
default:
g_string_append_c (str, c);
}
}
done:
@@ -333,10 +333,10 @@ static gchar *control[] =
};
void
parse_chars (gchar *text,
gchar **end_ptr,
gint *state,
gchar **tag,
gboolean start)
gchar **end_ptr,
gint *state,
gchar **tag,
gboolean start)
{
gint i;
gchar *next_token;
@@ -346,11 +346,11 @@ parse_chars (gchar *text,
{
*end_ptr = strstr (text, "*/");
if (*end_ptr)
{
*end_ptr += 2;
*state = STATE_NORMAL;
*tag = "comment";
}
{
*end_ptr += 2;
*state = STATE_NORMAL;
*tag = "comment";
}
return;
}
@@ -362,9 +362,9 @@ parse_chars (gchar *text,
{
*end_ptr = strstr (text, "*/");
if (*end_ptr)
*end_ptr += 2;
*end_ptr += 2;
else
*state = STATE_IN_COMMENT;
*state = STATE_IN_COMMENT;
*tag = "comment";
return;
}
@@ -381,29 +381,29 @@ parse_chars (gchar *text,
if (start && * text != '\t' && *text != ' ' && *text != '{' && *text != '}')
{
if (strstr (text, "("))
{
*end_ptr = strstr (text, "(");
*tag = "function";
return;
}
{
*end_ptr = strstr (text, "(");
*tag = "function";
return;
}
}
/* check for types */
for (i = 0; types[i] != NULL; i++)
if (!strncmp (text, types[i], strlen (types[i])) ||
(start && types[i][0] == ' ' && !strncmp (text, types[i] + 1, strlen (types[i]) - 1)))
{
*end_ptr = text + strlen (types[i]);
*tag = "type";
return;
*end_ptr = text + strlen (types[i]);
*tag = "type";
return;
}
/* check for control */
for (i = 0; control[i] != NULL; i++)
if (!strncmp (text, control[i], strlen (control[i])))
{
*end_ptr = text + strlen (control[i]);
*tag = "control";
return;
*end_ptr = text + strlen (control[i]);
*tag = "control";
return;
}
/* check for string */
@@ -414,18 +414,18 @@ parse_chars (gchar *text,
*end_ptr = text + 1;
*tag = "string";
while (**end_ptr != '\000')
{
if (**end_ptr == '\"' && !maybe_escape)
{
*end_ptr += 1;
return;
}
if (**end_ptr == '\\')
maybe_escape = TRUE;
else
maybe_escape = FALSE;
*end_ptr += 1;
}
{
if (**end_ptr == '\"' && !maybe_escape)
{
*end_ptr += 1;
return;
}
if (**end_ptr == '\\')
maybe_escape = TRUE;
else
maybe_escape = FALSE;
*end_ptr += 1;
}
return;
}
@@ -434,36 +434,36 @@ parse_chars (gchar *text,
{
next_token = strstr (text, tokens[i]);
if (next_token)
{
if (*end_ptr)
*end_ptr = (*end_ptr<next_token)?*end_ptr:next_token;
else
*end_ptr = next_token;
}
{
if (*end_ptr)
*end_ptr = (*end_ptr<next_token)?*end_ptr:next_token;
else
*end_ptr = next_token;
}
}
for (i = 0; types[i] != NULL; i++)
{
next_token = strstr (text, types[i]);
if (next_token)
{
if (*end_ptr)
*end_ptr = (*end_ptr<next_token)?*end_ptr:next_token;
else
*end_ptr = next_token;
}
{
if (*end_ptr)
*end_ptr = (*end_ptr<next_token)?*end_ptr:next_token;
else
*end_ptr = next_token;
}
}
for (i = 0; control[i] != NULL; i++)
{
next_token = strstr (text, control[i]);
if (next_token)
{
if (*end_ptr)
*end_ptr = (*end_ptr<next_token)?*end_ptr:next_token;
else
*end_ptr = next_token;
}
{
if (*end_ptr)
*end_ptr = (*end_ptr<next_token)?*end_ptr:next_token;
else
*end_ptr = next_token;
}
}
}
@@ -488,25 +488,25 @@ fontify (void)
start_ptr = text = gtk_text_iter_get_text (&start_iter, &next_iter);
do
{
parse_chars (start_ptr, &end_ptr, &state, &tag, start);
{
parse_chars (start_ptr, &end_ptr, &state, &tag, start);
start = FALSE;
if (end_ptr)
{
tmp_iter = start_iter;
gtk_text_iter_forward_chars (&tmp_iter, end_ptr - start_ptr);
}
else
{
tmp_iter = next_iter;
}
if (tag)
gtk_text_buffer_apply_tag_by_name (source_buffer, tag, &start_iter, &tmp_iter);
start = FALSE;
if (end_ptr)
{
tmp_iter = start_iter;
gtk_text_iter_forward_chars (&tmp_iter, end_ptr - start_ptr);
}
else
{
tmp_iter = next_iter;
}
if (tag)
gtk_text_buffer_apply_tag_by_name (source_buffer, tag, &start_iter, &tmp_iter);
start_iter = tmp_iter;
start_ptr = end_ptr;
}
start_iter = tmp_iter;
start_ptr = end_ptr;
}
while (end_ptr);
g_free (text);
@@ -533,7 +533,7 @@ load_file (const gchar *filename)
g_free (current_file);
current_file = g_strdup (filename);
gtk_text_buffer_get_bounds (info_buffer, &start, &end);
gtk_text_buffer_delete (info_buffer, &start, &end);
@@ -564,101 +564,101 @@ load_file (const gchar *filename)
gchar *p = buffer->str;
gchar *q;
gchar *r;
switch (state)
{
case 0:
/* Reading title */
while (*p == '/' || *p == '*' || g_ascii_isspace (*p))
p++;
r = p;
while (*r != '/' && strlen (r))
r++;
if (strlen (r) > 0)
p = r + 1;
q = p + strlen (p);
while (q > p && g_ascii_isspace (*(q - 1)))
q--;
{
case 0:
/* Reading title */
while (*p == '/' || *p == '*' || g_ascii_isspace (*p))
p++;
r = p;
while (*r != '/' && strlen (r))
r++;
if (strlen (r) > 0)
p = r + 1;
q = p + strlen (p);
while (q > p && g_ascii_isspace (*(q - 1)))
q--;
if (q > p)
{
int len_chars = g_utf8_pointer_to_offset (p, q);
if (q > p)
{
int len_chars = g_utf8_pointer_to_offset (p, q);
end = start;
end = start;
g_assert (strlen (p) >= q - p);
gtk_text_buffer_insert (info_buffer, &end, p, q - p);
start = end;
g_assert (strlen (p) >= q - p);
gtk_text_buffer_insert (info_buffer, &end, p, q - p);
start = end;
gtk_text_iter_backward_chars (&start, len_chars);
gtk_text_buffer_apply_tag_by_name (info_buffer, "title", &start, &end);
gtk_text_iter_backward_chars (&start, len_chars);
gtk_text_buffer_apply_tag_by_name (info_buffer, "title", &start, &end);
start = end;
state++;
}
break;
case 1:
/* Reading body of info section */
while (g_ascii_isspace (*p))
p++;
if (*p == '*' && *(p + 1) == '/')
{
gtk_text_buffer_get_iter_at_offset (source_buffer, &start, 0);
state++;
}
else
{
int len;
while (*p == '*' || g_ascii_isspace (*p))
p++;
start = end;
len = strlen (p);
while (g_ascii_isspace (*(p + len - 1)))
len--;
if (len > 0)
{
if (in_para)
gtk_text_buffer_insert (info_buffer, &start, " ", 1);
state++;
}
break;
g_assert (strlen (p) >= len);
gtk_text_buffer_insert (info_buffer, &start, p, len);
in_para = 1;
}
else
{
gtk_text_buffer_insert (info_buffer, &start, "\n", 1);
in_para = 0;
}
}
break;
case 1:
/* Reading body of info section */
while (g_ascii_isspace (*p))
p++;
if (*p == '*' && *(p + 1) == '/')
{
gtk_text_buffer_get_iter_at_offset (source_buffer, &start, 0);
state++;
}
else
{
int len;
case 2:
/* Skipping blank lines */
while (g_ascii_isspace (*p))
p++;
if (*p)
{
p = buffer->str;
state++;
/* Fall through */
}
else
break;
case 3:
/* Reading program body */
gtk_text_buffer_insert (source_buffer, &start, p, -1);
gtk_text_buffer_insert (source_buffer, &start, "\n", 1);
break;
}
while (*p == '*' || g_ascii_isspace (*p))
p++;
len = strlen (p);
while (g_ascii_isspace (*(p + len - 1)))
len--;
if (len > 0)
{
if (in_para)
gtk_text_buffer_insert (info_buffer, &start, " ", 1);
g_assert (strlen (p) >= len);
gtk_text_buffer_insert (info_buffer, &start, p, len);
in_para = 1;
}
else
{
gtk_text_buffer_insert (info_buffer, &start, "\n", 1);
in_para = 0;
}
}
break;
case 2:
/* Skipping blank lines */
while (g_ascii_isspace (*p))
p++;
if (*p)
{
p = buffer->str;
state++;
/* Fall through */
}
else
break;
case 3:
/* Reading program body */
gtk_text_buffer_insert (source_buffer, &start, p, -1);
gtk_text_buffer_insert (source_buffer, &start, "\n", 1);
break;
}
}
fclose (file);
fontify ();
g_string_free (buffer, TRUE);
@@ -667,7 +667,7 @@ load_file (const gchar *filename)
void
row_activated_cb (GtkTreeView *tree_view,
GtkTreePath *path,
GtkTreeViewColumn *column)
GtkTreeViewColumn *column)
{
GtkTreeIter iter;
PangoStyle style;
@@ -676,49 +676,49 @@ row_activated_cb (GtkTreeView *tree_view,
GtkTreeModel *model;
model = gtk_tree_view_get_model (tree_view);
gtk_tree_model_get_iter (model, &iter, path);
gtk_tree_model_get (GTK_TREE_MODEL (model),
&iter,
FUNC_COLUMN, &func,
STYLE_COLUMN, &style,
-1);
&iter,
FUNC_COLUMN, &func,
STYLE_COLUMN, &style,
-1);
if (func)
{
gtk_tree_store_set (GTK_TREE_STORE (model),
&iter,
STYLE_COLUMN, (style == PANGO_STYLE_ITALIC ? PANGO_STYLE_NORMAL : PANGO_STYLE_ITALIC),
-1);
&iter,
STYLE_COLUMN, (style == PANGO_STYLE_ITALIC ? PANGO_STYLE_NORMAL : PANGO_STYLE_ITALIC),
-1);
window = (func) (gtk_widget_get_toplevel (GTK_WIDGET (tree_view)));
if (window != NULL)
{
CallbackData *cbdata;
cbdata = g_new (CallbackData, 1);
cbdata->model = model;
cbdata->path = gtk_tree_path_copy (path);
g_signal_connect (window, "destroy",
G_CALLBACK (window_closed_cb), cbdata);
}
{
CallbackData *cbdata;
cbdata = g_new (CallbackData, 1);
cbdata->model = model;
cbdata->path = gtk_tree_path_copy (path);
g_signal_connect (window, "destroy",
G_CALLBACK (window_closed_cb), cbdata);
}
}
}
static void
selection_cb (GtkTreeSelection *selection,
GtkTreeModel *model)
GtkTreeModel *model)
{
GtkTreeIter iter;
GValue value = {0, };
GValue value = G_VALUE_INIT;
if (! gtk_tree_selection_get_selected (selection, NULL, &iter))
return;
gtk_tree_model_get_value (model, &iter,
FILENAME_COLUMN,
&value);
FILENAME_COLUMN,
&value);
if (g_value_get_string (&value))
load_file (g_value_get_string (&value));
g_value_unset (&value);
@@ -726,7 +726,7 @@ selection_cb (GtkTreeSelection *selection,
static GtkWidget *
create_text (GtkTextBuffer **buffer,
gboolean is_source)
gboolean is_source)
{
GtkWidget *scrolled_window;
GtkWidget *text_view;
@@ -734,20 +734,20 @@ create_text (GtkTextBuffer **buffer,
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window),
GTK_SHADOW_IN);
GTK_SHADOW_IN);
text_view = gtk_text_view_new ();
*buffer = gtk_text_buffer_new (NULL);
gtk_text_view_set_buffer (GTK_TEXT_VIEW (text_view), *buffer);
gtk_text_view_set_editable (GTK_TEXT_VIEW (text_view), FALSE);
gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (text_view), FALSE);
gtk_container_add (GTK_CONTAINER (scrolled_window), text_view);
if (is_source)
{
font_desc = pango_font_description_from_string ("monospace");
@@ -767,7 +767,7 @@ create_text (GtkTextBuffer **buffer,
gtk_text_view_set_pixels_below_lines (GTK_TEXT_VIEW (text_view),
2);
}
return scrolled_window;
}
@@ -782,7 +782,7 @@ create_tree (void)
GtkTreeIter iter;
GtkWidget *box, *label, *scrolled_window;
Demo *d = testgtk_demos;
Demo *d = gtk_demos;
model = gtk_tree_store_new (NUM_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_INT);
tree_view = gtk_tree_view_new ();
@@ -790,7 +790,7 @@ create_tree (void)
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view));
gtk_tree_selection_set_mode (GTK_TREE_SELECTION (selection),
GTK_SELECTION_BROWSE);
GTK_SELECTION_BROWSE);
gtk_widget_set_size_request (tree_view, 200, -1);
/* this code only supports 1 level of children. If we
@@ -803,46 +803,46 @@ create_tree (void)
gtk_tree_store_append (GTK_TREE_STORE (model), &iter, NULL);
gtk_tree_store_set (GTK_TREE_STORE (model),
&iter,
TITLE_COLUMN, d->title,
FILENAME_COLUMN, d->filename,
FUNC_COLUMN, d->func,
STYLE_COLUMN, PANGO_STYLE_NORMAL,
-1);
&iter,
TITLE_COLUMN, d->title,
FILENAME_COLUMN, d->filename,
FUNC_COLUMN, d->func,
STYLE_COLUMN, PANGO_STYLE_NORMAL,
-1);
d++;
if (!children)
continue;
while (children->title)
{
GtkTreeIter child_iter;
continue;
gtk_tree_store_append (GTK_TREE_STORE (model), &child_iter, &iter);
gtk_tree_store_set (GTK_TREE_STORE (model),
&child_iter,
TITLE_COLUMN, children->title,
FILENAME_COLUMN, children->filename,
FUNC_COLUMN, children->func,
STYLE_COLUMN, PANGO_STYLE_NORMAL,
-1);
children++;
}
while (children->title)
{
GtkTreeIter child_iter;
gtk_tree_store_append (GTK_TREE_STORE (model), &child_iter, &iter);
gtk_tree_store_set (GTK_TREE_STORE (model),
&child_iter,
TITLE_COLUMN, children->title,
FILENAME_COLUMN, children->filename,
FUNC_COLUMN, children->func,
STYLE_COLUMN, PANGO_STYLE_NORMAL,
-1);
children++;
}
}
cell = gtk_cell_renderer_text_new ();
column = gtk_tree_view_column_new_with_attributes ("Widget (double click for demo)",
cell,
"text", TITLE_COLUMN,
"style", STYLE_COLUMN,
NULL);
cell,
"text", TITLE_COLUMN,
"style", STYLE_COLUMN,
NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view),
GTK_TREE_VIEW_COLUMN (column));
GTK_TREE_VIEW_COLUMN (column));
gtk_tree_model_get_iter_first (GTK_TREE_MODEL (model), &iter);
gtk_tree_selection_select_iter (GTK_TREE_SELECTION (selection), &iter);
@@ -852,11 +852,11 @@ create_tree (void)
gtk_tree_view_collapse_all (GTK_TREE_VIEW (tree_view));
gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (tree_view), FALSE);
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
GTK_POLICY_NEVER,
GTK_POLICY_AUTOMATIC);
GTK_POLICY_NEVER,
GTK_POLICY_AUTOMATIC);
gtk_container_add (GTK_CONTAINER (scrolled_window), tree_view);
label = gtk_label_new ("Widget (double click for demo)");
@@ -895,21 +895,21 @@ setup_default_icon (void)
if (err)
{
GtkWidget *dialog;
dialog = gtk_message_dialog_new (NULL, 0,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
"Failed to read icon file: %s",
err->message);
GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
"Failed to read icon file: %s",
err->message);
g_error_free (err);
g_signal_connect (dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
G_CALLBACK (gtk_widget_destroy), NULL);
}
if (pixbuf)
{
GList *list;
GList *list;
GdkPixbuf *transparent;
/* The gtk-logo-rgb icon has a white background, make it transparent */
@@ -931,28 +931,25 @@ main (int argc, char **argv)
GtkWidget *notebook;
GtkWidget *hbox;
GtkWidget *tree;
GtkTextTag *tag;
/* Most code in gtk-demo is intended to be exemplary, but not
* these few lines, which are just a hack so gtk-demo will work
* in the GTK tree without installing it.
*/
if (g_file_test ("../../gdk-pixbuf/libpixbufloader-pnm.la",
G_FILE_TEST_EXISTS))
if (g_file_test ("../../modules/input/immodules.cache", G_FILE_TEST_EXISTS))
{
g_setenv ("GDK_PIXBUF_MODULE_FILE", "../../gdk-pixbuf/loaders.cache", TRUE);
g_setenv ("GTK_IM_MODULE_FILE", "../../modules/input/immodules.cache", TRUE);
}
/* -- End of hack -- */
gtk_init (&argc, &argv);
setup_default_icon ();
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "GTK+ Code Demos");
g_signal_connect_after (window, "destroy",
G_CALLBACK (gtk_main_quit), NULL);
G_CALLBACK (gtk_main_quit), NULL);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
gtk_container_add (GTK_CONTAINER (window), hbox);
@@ -964,48 +961,47 @@ main (int argc, char **argv)
gtk_box_pack_start (GTK_BOX (hbox), notebook, TRUE, TRUE, 0);
gtk_notebook_append_page (GTK_NOTEBOOK (notebook),
create_text (&info_buffer, FALSE),
gtk_label_new_with_mnemonic ("_Info"));
create_text (&info_buffer, FALSE),
gtk_label_new_with_mnemonic ("_Info"));
tag = gtk_text_buffer_create_tag (info_buffer, "title",
"font", "Sans 18",
NULL);
g_object_unref (info_buffer);
gtk_text_buffer_create_tag (info_buffer, "title",
"font", "Sans 18",
NULL);
g_object_unref (info_buffer);
gtk_notebook_append_page (GTK_NOTEBOOK (notebook),
create_text (&source_buffer, TRUE),
gtk_label_new_with_mnemonic ("_Source"));
create_text (&source_buffer, TRUE),
gtk_label_new_with_mnemonic ("_Source"));
tag = gtk_text_buffer_create_tag (source_buffer, "comment",
"foreground", "DodgerBlue",
NULL);
tag = gtk_text_buffer_create_tag (source_buffer, "type",
"foreground", "ForestGreen",
NULL);
tag = gtk_text_buffer_create_tag (source_buffer, "string",
"foreground", "RosyBrown",
"weight", PANGO_WEIGHT_BOLD,
NULL);
tag = gtk_text_buffer_create_tag (source_buffer, "control",
"foreground", "purple",
NULL);
tag = gtk_text_buffer_create_tag (source_buffer, "preprocessor",
"style", PANGO_STYLE_OBLIQUE,
"foreground", "burlywood4",
NULL);
tag = gtk_text_buffer_create_tag (source_buffer, "function",
"weight", PANGO_WEIGHT_BOLD,
"foreground", "DarkGoldenrod4",
NULL);
g_object_unref (source_buffer);
gtk_text_buffer_create_tag (source_buffer, "comment",
"foreground", "DodgerBlue",
NULL);
gtk_text_buffer_create_tag (source_buffer, "type",
"foreground", "ForestGreen",
NULL);
gtk_text_buffer_create_tag (source_buffer, "string",
"foreground", "RosyBrown",
"weight", PANGO_WEIGHT_BOLD,
NULL);
gtk_text_buffer_create_tag (source_buffer, "control",
"foreground", "purple",
NULL);
gtk_text_buffer_create_tag (source_buffer, "preprocessor",
"style", PANGO_STYLE_OBLIQUE,
"foreground", "burlywood4",
NULL);
gtk_text_buffer_create_tag (source_buffer, "function",
"weight", PANGO_WEIGHT_BOLD,
"foreground", "DarkGoldenrod4",
NULL);
g_object_unref (source_buffer);
gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
gtk_widget_show_all (window);
load_file (testgtk_demos[0].filename);
load_file (gtk_demos[0].filename);
gtk_main ();
return 0;

View File

@@ -30,8 +30,7 @@
#include <stdio.h>
static GtkWidget *
create_menu (gint depth,
gboolean tearoff)
create_menu (gint depth)
{
GtkWidget *menu;
GtkWidget *menuitem;
@@ -45,13 +44,6 @@ create_menu (gint depth,
menu = gtk_menu_new ();
group = NULL;
if (tearoff)
{
menuitem = gtk_tearoff_menu_item_new ();
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
gtk_widget_show (menuitem);
}
for (i = 0, j = 1; i < 5; i++, j++)
{
sprintf (buf, "item %2d - %d", depth, j);
@@ -61,9 +53,9 @@ create_menu (gint depth,
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
gtk_widget_show (menuitem);
if (i == 3)
gtk_widget_set_sensitive (menuitem, FALSE);
gtk_widget_set_sensitive (menuitem, FALSE);
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), create_menu (depth - 1, TRUE));
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), create_menu (depth - 1));
}
return menu;
@@ -106,10 +98,10 @@ do_menus (GtkWidget *do_widget)
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_screen (GTK_WINDOW (window),
gtk_widget_get_screen (do_widget));
gtk_widget_get_screen (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Menus");
g_signal_connect (window, "destroy",
G_CALLBACK(gtk_widget_destroyed), &window);
G_CALLBACK(gtk_widget_destroyed), &window);
accel_group = gtk_accel_group_new ();
gtk_window_add_accel_group (GTK_WINDOW (window), accel_group);
@@ -128,7 +120,7 @@ do_menus (GtkWidget *do_widget)
gtk_box_pack_start (GTK_BOX (box1), menubar, FALSE, TRUE, 0);
gtk_widget_show (menubar);
menu = create_menu (2, TRUE);
menu = create_menu (2);
menuitem = gtk_menu_item_new_with_label ("test\nline2");
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), menu);
@@ -136,13 +128,12 @@ do_menus (GtkWidget *do_widget)
gtk_widget_show (menuitem);
menuitem = gtk_menu_item_new_with_label ("foo");
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), create_menu (3, TRUE));
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), create_menu (3));
gtk_menu_shell_append (GTK_MENU_SHELL (menubar), menuitem);
gtk_widget_show (menuitem);
menuitem = gtk_menu_item_new_with_label ("bar");
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), create_menu (4, TRUE));
gtk_menu_item_set_right_justified (GTK_MENU_ITEM (menuitem), TRUE);
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), create_menu (4));
gtk_menu_shell_append (GTK_MENU_SHELL (menubar), menuitem);
gtk_widget_show (menuitem);
@@ -153,13 +144,13 @@ do_menus (GtkWidget *do_widget)
button = gtk_button_new_with_label ("Flip");
g_signal_connect (button, "clicked",
G_CALLBACK (change_orientation), menubar);
G_CALLBACK (change_orientation), menubar);
gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
gtk_widget_show (button);
button = gtk_button_new_with_label ("Close");
g_signal_connect_swapped (button, "clicked",
G_CALLBACK(gtk_widget_destroy), window);
G_CALLBACK(gtk_widget_destroy), window);
gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
gtk_widget_set_can_default (button, TRUE);
gtk_widget_grab_default (button);

107
demos/gtk-demo/menus.ui Normal file
View File

@@ -0,0 +1,107 @@
<?xml version="1.0"?>
<interface>
<menu id="appmenu">
<section>
<item>
<attribute name="label" translatable="yes">_New</attribute>
<attribute name="action">app.new</attribute>
<attribute name="accel">&lt;Primary&gt;n</attribute>
</item>
<item>
<attribute name="label" translatable="yes">_Open</attribute>
<attribute name="action">app.open</attribute>
</item>
<item>
<attribute name="label" translatable="yes">_Save</attribute>
<attribute name="action">app.save</attribute>
<attribute name="accel">&lt;Primary&gt;s</attribute>
</item>
<item>
<attribute name="label" translatable="yes">Save _As...</attribute>
<attribute name="action">app.save-as</attribute>
<attribute name="accel">&lt;Primary&gt;s</attribute>
</item>
</section>
<section>
<item>
<attribute name="label" translatable="yes">_Quit</attribute>
<attribute name="action">app.quit</attribute>
<attribute name="accel">&lt;Primary&gt;q</attribute>
</item>
</section>
</menu>
<menu id="menubar">
<submenu>
<attribute name="label" translatable="yes">_Preferences</attribute>
<section>
<item>
<attribute name="label" translatable="yes">_Prefer Dark Theme</attribute>
<attribute name="action">app.dark</attribute>
</item>
<item>
<attribute name="label" translatable="yes">_Hide Titlebar when maximized</attribute>
<attribute name="action">win.titlebar</attribute>
</item>
<submenu>
<attribute name="label" translatable="yes">_Color</attribute>
<section>
<item>
<attribute name="label" translatable="yes">_Red</attribute>
<attribute name="action">app.color</attribute>
<attribute name="target">red</attribute>
<attribute name="accel">&lt;Primary&gt;r</attribute>
</item>
<item>
<attribute name="label" translatable="yes">_Green</attribute>
<attribute name="action">app.color</attribute>
<attribute name="target">green</attribute>
<attribute name="accel">&lt;Primary&gt;g</attribute>
</item>
<item>
<attribute name="label" translatable="yes">_Blue</attribute>
<attribute name="action">app.color</attribute>
<attribute name="target">blue</attribute>
<attribute name="accel">&lt;Primary&gt;b</attribute>
</item>
</section>
</submenu>
<submenu>
<attribute name="label" translatable="yes">_Shape</attribute>
<section>
<item>
<attribute name="label" translatable="yes">_Square</attribute>
<attribute name="action">win.shape</attribute>
<attribute name="target">square</attribute>
<attribute name="accel">&lt;Primary&gt;s</attribute>
</item>
<item>
<attribute name="label" translatable="yes">_Rectangle</attribute>
<attribute name="action">win.shape</attribute>
<attribute name="target">rectangle</attribute>
<attribute name="accel">&lt;Primary&gt;r</attribute>
</item>
<item>
<attribute name="label" translatable="yes">_Oval</attribute>
<attribute name="action">win.shape</attribute>
<attribute name="target">oval</attribute>
<attribute name="accel">&lt;Primary&gt;o</attribute>
</item>
</section>
</submenu>
<item>
<attribute name="label" translatable="yes">_Bold</attribute>
<attribute name="action">win.bold</attribute>
<attribute name="accel">&lt;Primary&gt;b</attribute>
</item>
</section>
</submenu>
<submenu>
<attribute name="label" translatable="yes">_Help</attribute>
<item>
<attribute name="label" translatable="yes">_About</attribute>
<attribute name="action">win.about</attribute>
<attribute name="accel">&lt;Primary&gt;a</attribute>
</item>
</submenu>
</menu>
</interface>

698
demos/gtk-demo/multitouch.c Normal file
View File

@@ -0,0 +1,698 @@
/* Multitouch
*
* Demonstrates some general multitouch event handling,
* using GdkTouchCluster in order to get grouped motion
* events for the touches within a cluster. Each of the
* created rectangles has one of those GdkTouchCluster
* objects.
*
* Touch events are also enabled on additional widgets,
* enabling simultaneous touch interaction on those. Not
* all widgets are prepared for multitouch interaction,
* as there are constraints that not all widgets may
* apply to.
*/
#include <math.h>
#include <gtk/gtk.h>
#include "demo-common.h"
#define RECT_BORDER_WIDTH 6
static GtkWidget *window = NULL;
static GtkWidget *area = NULL;
static GtkWidget *red = NULL;
static GtkWidget *green = NULL;
static GtkWidget *blue = NULL;
static GtkWidget *alpha = NULL;
static GQueue *shapes = NULL;
typedef struct {
GdkTouchCluster *cluster;
GdkRGBA color;
gdouble angle;
gdouble zoom;
gdouble center_x;
gdouble center_y;
gdouble x;
gdouble y;
gdouble width;
gdouble height;
gdouble base_zoom;
gdouble base_angle;
gdouble initial_distance;
gdouble initial_angle;
GdkPoint points[4];
} ShapeInfo;
static void
calculate_rotated_point (gdouble angle,
gdouble zoom,
gdouble center_x,
gdouble center_y,
gdouble point_x,
gdouble point_y,
gdouble *ret_x,
gdouble *ret_y)
{
gdouble distance, xd, yd, ang;
if (angle == 0)
{
*ret_x = point_x;
*ret_y = point_y;
return;
}
xd = center_x - point_x;
yd = center_y - point_y;
if (xd == 0 && yd == 0)
{
*ret_x = center_x;
*ret_y = center_y;
return;
}
distance = sqrt ((xd * xd) + (yd * yd));
distance *= zoom;
ang = atan2 (xd, yd);
/* Invert angle */
ang = (2 * G_PI) - ang;
/* Shift it 270° */
ang += 3 * (G_PI / 2);
/* And constraint it to 0°-360° */
ang = fmod (ang, 2 * G_PI);
ang += angle;
*ret_x = center_x + (distance * cos (ang));
*ret_y = center_y + (distance * sin (ang));
}
static void
shape_info_allocate_input_rect (ShapeInfo *info)
{
gint width, height, i;
width = info->width;
height = info->height;
/* Top/left */
info->points[0].x = info->x - info->center_x;
info->points[0].y = info->y - info->center_y;
/* Top/right */
info->points[1].x = info->x - info->center_x + width;
info->points[1].y = info->y - info->center_y;
/* Bottom/right */
info->points[2].x = info->x - info->center_x + width;
info->points[2].y = info->y - info->center_y + height;
/* Bottom/left */
info->points[3].x = info->x - info->center_x;
info->points[3].y = info->y - info->center_y + height;
for (i = 0; i < 4; i++)
{
gdouble ret_x, ret_y;
calculate_rotated_point (info->angle,
info->zoom,
info->x,
info->y,
(gdouble) info->points[i].x,
(gdouble) info->points[i].y,
&ret_x,
&ret_y);
info->points[i].x = (gint) ret_x;
info->points[i].y = (gint) ret_y;
}
}
static void
shape_info_bounding_rect (ShapeInfo *info,
GdkRectangle *rect)
{
gint i, left, right, top, bottom;
left = top = G_MAXINT;
right = bottom = 0;
for (i = 0; i < 4; i++)
{
if (info->points[i].x < left)
left = info->points[i].x;
if (info->points[i].x > right)
right = info->points[i].x;
if (info->points[i].y < top)
top = info->points[i].y;
if (info->points[i].y > bottom)
bottom = info->points[i].y;
}
rect->x = left - 20;
rect->y = top - 20;
rect->width = right - left + 40;
rect->height = bottom - top + 40;
}
static gboolean
shape_info_point_in (ShapeInfo *info,
gint x,
gint y)
{
GdkPoint *left, *right, *top, *bottom;
gint i;
left = right = top = bottom = NULL;
for (i = 0; i < 4; i++)
{
GdkPoint *p = &info->points[i];
if (!left ||
p->x < left->x ||
(p->x == left->x && p->y > left->y))
left = p;
if (!right ||
p->x > right->x ||
(p->x == right->x && p->y < right->y))
right = p;
}
for (i = 0; i < 4; i++)
{
GdkPoint *p = &info->points[i];
if (p == left || p == right)
continue;
if (!top ||
p->y < top->y)
top = p;
if (!bottom ||
p->y > bottom->y)
bottom = p;
}
g_assert (left && right && top && bottom);
if (x < left->x ||
x > right->x ||
y < top->y ||
y > bottom->y)
return FALSE;
/* Check whether point is above the sides
* between leftmost and topmost, and
* topmost and rightmost corners.
*/
if (x <= top->x)
{
if (left->y - ((left->y - top->y) * (((gdouble) x - left->x) / (top->x - left->x))) > y)
return FALSE;
}
else
{
if (top->y + ((right->y - top->y) * (((gdouble) x - top->x) / (right->x - top->x))) > y)
return FALSE;
}
/* Check whether point is below the sides
* between leftmost and bottom, and
* bottom and rightmost corners.
*/
if (x <= bottom->x)
{
if (left->y + ((bottom->y - left->y) * (((gdouble) x - left->x) / (bottom->x - left->x))) < y)
return FALSE;
}
else
{
if (bottom->y - ((bottom->y - right->y) * (((gdouble) x - bottom->x) / (right->x - bottom->x))) < y)
return FALSE;
}
return TRUE;
}
static ShapeInfo *
shape_info_new (gdouble x,
gdouble y,
gdouble width,
gdouble height,
GdkRGBA *color)
{
ShapeInfo *info;
info = g_slice_new0 (ShapeInfo);
info->cluster = NULL;
info->color = *color;
info->x = x;
info->y = y;
info->width = width;
info->height = height;
info->angle = 0;
info->zoom = 1;
info->base_zoom = 1;
info->base_angle = 0;
info->initial_distance = 0;
info->initial_angle = 0;
shape_info_allocate_input_rect (info);
g_queue_push_tail (shapes, info);
return info;
}
static void
shape_info_free (ShapeInfo *info)
{
g_slice_free (ShapeInfo, info);
}
static void
shape_info_draw (cairo_t *cr,
ShapeInfo *info)
{
cairo_save (cr);
cairo_translate (cr,
info->points[0].x + RECT_BORDER_WIDTH / 2,
info->points[0].y + RECT_BORDER_WIDTH / 2);
cairo_scale (cr, info->zoom, info->zoom);
cairo_rotate (cr, info->angle);
cairo_rectangle (cr, 0, 0,
info->width - RECT_BORDER_WIDTH,
info->height - RECT_BORDER_WIDTH);
gdk_cairo_set_source_rgba (cr, &info->color);
cairo_fill_preserve (cr);
cairo_set_line_width (cr, RECT_BORDER_WIDTH);
cairo_set_source_rgb (cr, 0, 0, 0);
cairo_stroke (cr);
cairo_restore (cr);
}
static void
shape_update_scales (ShapeInfo *info)
{
gtk_range_set_value (GTK_RANGE (red), info->color.red);
gtk_range_set_value (GTK_RANGE (green), info->color.green);
gtk_range_set_value (GTK_RANGE (blue), info->color.blue);
gtk_range_set_value (GTK_RANGE (alpha), info->color.alpha);
}
static void
range_value_changed_cb (GtkRange *range,
gpointer user_data)
{
GtkWidget *widget;
GdkRectangle rect;
ShapeInfo *shape;
gdouble value;
widget = GTK_WIDGET (range);
shape = g_queue_peek_head (shapes);
if (!shape)
return;
value = gtk_range_get_value (range);
if (widget == red)
shape->color.red = value;
else if (widget == green)
shape->color.green = value;
else if (widget == blue)
shape->color.blue = value;
else if (widget == alpha)
shape->color.alpha = value;
shape_info_bounding_rect (shape, &rect);
gdk_window_invalidate_rect (gtk_widget_get_window (area),
&rect, FALSE);
}
static gboolean
draw_cb (GtkWidget *widget,
cairo_t *cr,
gpointer user_data)
{
GList *l;
cairo_save (cr);
cairo_set_source_rgb (cr, 1, 1, 1);
cairo_paint (cr);
for (l = shapes->tail; l; l = l->prev)
shape_info_draw (cr, l->data);
cairo_restore (cr);
return FALSE;
}
static gboolean
button_press_cb (GtkWidget *widget,
GdkEvent *event,
gpointer user_data)
{
ShapeInfo *shape = NULL;
guint touch_id;
if (gdk_event_get_touch_id (event, &touch_id))
{
GList *l;
for (l = shapes->tail; l; l = l->prev)
{
ShapeInfo *info = l->data;
if (shape_info_point_in (info,
(gint) event->button.x,
(gint) event->button.y))
shape = info;
}
if (!shape)
return FALSE;
/* Put on top */
g_queue_remove (shapes, shape);
g_queue_push_head (shapes, shape);
shape_update_scales (shape);
if (!shape->cluster)
shape->cluster = gdk_window_create_touch_cluster (gtk_widget_get_window (widget),
gdk_event_get_device (event));
else if (gdk_touch_cluster_get_n_touches (shape->cluster) == 0)
{
/* Only change cluster device if there were no touches */
gdk_touch_cluster_set_device (shape->cluster,
gdk_event_get_device (event));
}
gdk_touch_cluster_add_touch (shape->cluster, touch_id);
return TRUE;
}
return FALSE;
}
static gboolean
multitouch_cb (GtkWidget *widget,
GdkEvent *event,
gpointer user_data)
{
ShapeInfo *info = NULL;
gboolean new_center = FALSE;
gboolean new_position = FALSE;
gdouble event_x, event_y;
cairo_region_t *region;
GdkRectangle rect;
GList *l;
for (l = shapes->head; l; l = l->next)
{
ShapeInfo *shape = l->data;
if (event->multitouch.group == shape->cluster)
{
info = shape;
break;
}
}
if (!info)
return FALSE;
shape_info_bounding_rect (info, &rect);
region = cairo_region_create_rectangle ((cairo_rectangle_int_t *) &rect);
if (event->multitouch.n_events == 1)
{
/* Update center if we just got to
* this situation from either way */
if (event->type == GDK_MULTITOUCH_ADDED ||
event->type == GDK_MULTITOUCH_REMOVED)
new_center = TRUE;
event_x = event->multitouch.events[0]->x;
event_y = event->multitouch.events[0]->y;
new_position = TRUE;
}
else if (event->multitouch.n_events == 2)
{
gdouble distance, angle;
gdk_events_get_center ((GdkEvent *) event->multitouch.events[0],
(GdkEvent *) event->multitouch.events[1],
&event_x, &event_y);
gdk_events_get_distance ((GdkEvent *) event->multitouch.events[0],
(GdkEvent *) event->multitouch.events[1],
&distance);
gdk_events_get_angle ((GdkEvent *) event->multitouch.events[0],
(GdkEvent *) event->multitouch.events[1],
&angle);
if (event->type == GDK_MULTITOUCH_ADDED)
{
/* Second touch was just added, update base zoom/angle */
info->base_zoom = info->zoom;
info->base_angle = info->angle;
info->initial_angle = angle;
info->initial_distance = distance;
new_center = TRUE;
}
info->zoom = MAX (info->base_zoom * (distance / info->initial_distance), 1.0);
info->angle = info->base_angle + (angle - info->initial_angle);
new_position = TRUE;
}
if (new_center)
{
gdouble origin_x, origin_y;
origin_x = info->x - info->center_x;
origin_y = info->y - info->center_y;
calculate_rotated_point (- info->angle,
1 / info->zoom,
info->x - origin_x,
info->y - origin_y,
event_x - origin_x,
event_y - origin_y,
&info->center_x,
&info->center_y);
}
if (new_position)
{
info->x = event_x;
info->y = event_y;
}
shape_info_allocate_input_rect (info);
shape_info_bounding_rect (info, &rect);
cairo_region_union_rectangle (region, (cairo_rectangle_int_t *) &rect);
gdk_window_invalidate_region (gtk_widget_get_window (widget), region, FALSE);
return TRUE;
}
static void
window_destroyed_cb (GtkWidget *widget,
gpointer user_data)
{
g_queue_foreach (shapes, (GFunc) shape_info_free, NULL);
g_queue_free (shapes);
shapes = NULL;
window = NULL;
}
static void
new_rectangle_clicked_cb (GtkButton *button,
gpointer user_data)
{
GdkRectangle rect;
ShapeInfo *info;
GdkRGBA color;
color.red = color.green = color.blue = color.alpha = 0.5;
info = shape_info_new (0, 0, 100, 150, &color);
shape_info_bounding_rect (info, &rect);
gdk_window_invalidate_rect (gtk_widget_get_window (area), &rect, FALSE);
}
GtkWidget *
create_drawing_area (void)
{
area = gtk_drawing_area_new ();
gtk_widget_add_events (area,
GDK_TOUCH_MASK |
GDK_POINTER_MOTION_MASK |
GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK);
gtk_widget_set_size_request (area, 600, 600);
g_signal_connect (area, "draw",
G_CALLBACK (draw_cb), NULL);
g_signal_connect (area, "button-press-event",
G_CALLBACK (button_press_cb), NULL);
g_signal_connect (area, "multitouch-event",
G_CALLBACK (multitouch_cb), NULL);
return area;
}
GtkWidget *
create_scale (void)
{
GtkWidget *scale;
scale = gtk_scale_new_with_range (GTK_ORIENTATION_VERTICAL, 0, 1, 0.01);
gtk_range_set_inverted (GTK_RANGE (scale), TRUE);
gtk_widget_set_vexpand (scale, TRUE);
gtk_widget_set_margin_left (scale, 15);
gtk_widget_set_margin_right (scale, 15);
gtk_widget_add_events (scale, GDK_TOUCH_MASK);
g_signal_connect (scale, "value-changed",
G_CALLBACK (range_value_changed_cb), NULL);
return scale;
}
GtkWidget *
create_window (void)
{
GtkWidget *grid, *label, *button;
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Multitouch demo");
g_signal_connect (window, "destroy",
G_CALLBACK (window_destroyed_cb), NULL);
grid = gtk_grid_new ();
gtk_container_add (GTK_CONTAINER (window), grid);
area = create_drawing_area ();
gtk_grid_attach (GTK_GRID (grid),
area, 0, 0, 1, 3);
gtk_widget_set_hexpand (area, TRUE);
gtk_widget_set_vexpand (area, TRUE);
/* "red" label/scale */
label = gtk_label_new ("Red");
gtk_widget_set_vexpand (label, FALSE);
gtk_grid_attach (GTK_GRID (grid),
label, 1, 0, 1, 1);
red = create_scale ();
gtk_grid_attach (GTK_GRID (grid),
red, 1, 1, 1, 1);
/* "green" label/scale */
label = gtk_label_new ("Green");
gtk_widget_set_vexpand (label, FALSE);
gtk_grid_attach (GTK_GRID (grid),
label, 2, 0, 1, 1);
green = create_scale ();
gtk_grid_attach (GTK_GRID (grid),
green, 2, 1, 1, 1);
/* "blue" label/scale */
label = gtk_label_new ("Blue");
gtk_widget_set_vexpand (label, FALSE);
gtk_grid_attach (GTK_GRID (grid),
label, 3, 0, 1, 1);
blue = create_scale ();
gtk_grid_attach (GTK_GRID (grid),
blue, 3, 1, 1, 1);
/* "alpha" label/scale */
label = gtk_label_new ("Alpha");
gtk_widget_set_vexpand (label, FALSE);
gtk_grid_attach (GTK_GRID (grid),
label, 4, 0, 1, 1);
alpha = create_scale ();
gtk_grid_attach (GTK_GRID (grid),
alpha, 4, 1, 1, 1);
/* button */
button = gtk_button_new_from_stock (GTK_STOCK_NEW);
gtk_widget_add_events (button, GDK_TOUCH_MASK);
gtk_grid_attach (GTK_GRID (grid),
button, 1, 2, 4, 1);
gtk_widget_set_vexpand (button, FALSE);
g_signal_connect (button, "clicked",
G_CALLBACK (new_rectangle_clicked_cb), NULL);
gtk_widget_show_all (grid);
return window;
}
GtkWidget *
do_multitouch (GtkWidget *do_widget)
{
if (!shapes)
shapes = g_queue_new ();
if (!window)
window = create_window ();
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
{
gtk_widget_destroy (window);
window = NULL;
g_queue_foreach (shapes, (GFunc) shape_info_free, NULL);
g_queue_free (shapes);
shapes = NULL;
}
return window;
}

View File

@@ -613,4 +613,3 @@ do_offscreen_window (GtkWidget *do_widget)
return window;
}

View File

@@ -524,4 +524,3 @@ do_offscreen_window2 (GtkWidget *do_widget)
return window;
}

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<schemalist>
<enum id='org.gtk.Demo.Color'>
<value nick='red' value='0'/>
<value nick='green' value='1'/>
<value nick='blue' value='2'/>
</enum>
<schema id='org.gtk.Demo' path='/org/gtk/Demo/'>
<key name='color' enum='org.gtk.Demo.Color'>
<default>'red'</default>
</key>
</schema>
</schemalist>

181
demos/gtk-demo/overlay.c Normal file
View File

@@ -0,0 +1,181 @@
/* Overlay
*
* Stack widgets in static positions over a main widget
*/
#include <gtk/gtk.h>
GtkWidget *
do_overlay (GtkWidget *do_widget)
{
static GtkWidget *window = NULL;
if (!window)
{
GtkWidget *view;
GtkWidget *sw;
GtkWidget *overlay;
GtkWidget *entry;
GtkWidget *label;
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_screen (GTK_WINDOW (window),
gtk_widget_get_screen (do_widget));
gtk_window_set_default_size (GTK_WINDOW (window),
450, 450);
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed), &window);
gtk_window_set_title (GTK_WINDOW (window), "Overlay");
gtk_container_set_border_width (GTK_CONTAINER (window), 0);
view = gtk_text_view_new ();
sw = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
gtk_container_add (GTK_CONTAINER (sw), view);
overlay = gtk_overlay_new ();
gtk_container_add (GTK_CONTAINER (overlay), sw);
gtk_container_add (GTK_CONTAINER (window), overlay);
entry = gtk_entry_new ();
gtk_overlay_add_overlay (GTK_OVERLAY (overlay), entry);
gtk_widget_set_halign (entry, GTK_ALIGN_END);
gtk_widget_set_valign (entry, GTK_ALIGN_END);
label = gtk_label_new ("Hello world");
gtk_widget_set_halign (label, GTK_ALIGN_END);
gtk_widget_set_valign (label, GTK_ALIGN_END);
gtk_overlay_add_overlay (GTK_OVERLAY (overlay), label);
gtk_widget_set_margin_left (label, 20);
gtk_widget_set_margin_right (label, 20);
gtk_widget_set_margin_top (label, 5);
gtk_widget_set_margin_bottom (label, 5);
entry = gtk_entry_new ();
gtk_widget_set_halign (entry, GTK_ALIGN_START);
gtk_widget_set_valign (entry, GTK_ALIGN_END);
gtk_overlay_add_overlay (GTK_OVERLAY (overlay), entry);
label = gtk_label_new ("Hello world");
gtk_widget_set_halign (label, GTK_ALIGN_START);
gtk_widget_set_valign (label, GTK_ALIGN_END);
gtk_overlay_add_overlay (GTK_OVERLAY (overlay), label);
gtk_widget_set_margin_left (label, 20);
gtk_widget_set_margin_right (label, 20);
gtk_widget_set_margin_top (label, 5);
gtk_widget_set_margin_bottom (label, 5);
entry = gtk_entry_new ();
gtk_widget_set_halign (entry, GTK_ALIGN_END);
gtk_widget_set_valign (entry, GTK_ALIGN_START);
gtk_overlay_add_overlay (GTK_OVERLAY (overlay), entry);
label = gtk_label_new ("Hello world");
gtk_widget_set_halign (label, GTK_ALIGN_END);
gtk_widget_set_valign (label, GTK_ALIGN_START);
gtk_overlay_add_overlay (GTK_OVERLAY (overlay), label);
gtk_widget_set_margin_left (label, 20);
gtk_widget_set_margin_right (label, 20);
gtk_widget_set_margin_top (label, 5);
gtk_widget_set_margin_bottom (label, 5);
entry = gtk_entry_new ();
gtk_widget_set_halign (entry, GTK_ALIGN_START);
gtk_widget_set_valign (entry, GTK_ALIGN_START);
gtk_overlay_add_overlay (GTK_OVERLAY (overlay), entry);
label = gtk_label_new ("Hello world");
gtk_widget_set_halign (label, GTK_ALIGN_START);
gtk_widget_set_valign (label, GTK_ALIGN_START);
gtk_overlay_add_overlay (GTK_OVERLAY (overlay), label);
gtk_widget_set_margin_left (label, 20);
gtk_widget_set_margin_right (label, 20);
gtk_widget_set_margin_top (label, 5);
gtk_widget_set_margin_bottom (label, 5);
entry = gtk_entry_new ();
gtk_widget_set_halign (entry, GTK_ALIGN_END);
gtk_widget_set_valign (entry, GTK_ALIGN_CENTER);
gtk_overlay_add_overlay (GTK_OVERLAY (overlay), entry);
label = gtk_label_new ("Hello world");
gtk_widget_set_halign (label, GTK_ALIGN_END);
gtk_widget_set_valign (label, GTK_ALIGN_CENTER);
gtk_overlay_add_overlay (GTK_OVERLAY (overlay), label);
gtk_widget_set_margin_left (label, 20);
gtk_widget_set_margin_right (label, 20);
gtk_widget_set_margin_top (label, 5);
gtk_widget_set_margin_bottom (label, 5);
entry = gtk_entry_new ();
gtk_widget_set_halign (entry, GTK_ALIGN_START);
gtk_widget_set_valign (entry, GTK_ALIGN_CENTER);
gtk_overlay_add_overlay (GTK_OVERLAY (overlay), entry);
label = gtk_label_new ("Hello world");
gtk_widget_set_halign (label, GTK_ALIGN_START);
gtk_widget_set_valign (label, GTK_ALIGN_CENTER);
gtk_overlay_add_overlay (GTK_OVERLAY (overlay), label);
gtk_widget_set_margin_left (label, 20);
gtk_widget_set_margin_right (label, 20);
gtk_widget_set_margin_top (label, 5);
gtk_widget_set_margin_bottom (label, 5);
entry = gtk_entry_new ();
gtk_widget_set_halign (entry, GTK_ALIGN_CENTER);
gtk_widget_set_valign (entry, GTK_ALIGN_START);
gtk_overlay_add_overlay (GTK_OVERLAY (overlay), entry);
label = gtk_label_new ("Hello world");
gtk_widget_set_halign (label, GTK_ALIGN_CENTER);
gtk_widget_set_valign (label, GTK_ALIGN_START);
gtk_overlay_add_overlay (GTK_OVERLAY (overlay), label);
gtk_widget_set_margin_left (label, 20);
gtk_widget_set_margin_right (label, 20);
gtk_widget_set_margin_top (label, 5);
gtk_widget_set_margin_bottom (label, 5);
entry = gtk_entry_new ();
gtk_widget_set_halign (entry, GTK_ALIGN_CENTER);
gtk_widget_set_valign (entry, GTK_ALIGN_END);
gtk_overlay_add_overlay (GTK_OVERLAY (overlay), entry);
label = gtk_label_new ("Hello world");
gtk_widget_set_halign (label, GTK_ALIGN_CENTER);
gtk_widget_set_valign (label, GTK_ALIGN_END);
gtk_overlay_add_overlay (GTK_OVERLAY (overlay), label);
gtk_widget_set_margin_left (label, 10);
gtk_widget_set_margin_right (label, 10);
gtk_widget_set_margin_top (label, 5);
gtk_widget_set_margin_bottom (label, 5);
entry = gtk_entry_new ();
gtk_widget_set_halign (entry, GTK_ALIGN_CENTER);
gtk_widget_set_valign (entry, GTK_ALIGN_CENTER);
gtk_overlay_add_overlay (GTK_OVERLAY (overlay), entry);
label = gtk_label_new ("Hello world");
gtk_widget_set_halign (label, GTK_ALIGN_CENTER);
gtk_widget_set_valign (label, GTK_ALIGN_CENTER);
gtk_overlay_add_overlay (GTK_OVERLAY (overlay), label);
gtk_widget_show_all (overlay);
}
if (!gtk_widget_get_visible (window))
{
gtk_widget_show (window);
}
else
{
gtk_widget_destroy (window);
window = NULL;
}
return window;
}

View File

@@ -15,7 +15,7 @@
void
toggle_resize (GtkWidget *widget,
GtkWidget *child)
GtkWidget *child)
{
GtkWidget *parent;
GtkPaned *paned;
@@ -43,7 +43,7 @@ toggle_resize (GtkWidget *widget,
void
toggle_shrink (GtkWidget *widget,
GtkWidget *child)
GtkWidget *child)
{
GtkWidget *parent;
GtkPaned *paned;
@@ -70,10 +70,10 @@ toggle_shrink (GtkWidget *widget,
}
GtkWidget *
create_pane_options (GtkPaned *paned,
const gchar *frame_label,
const gchar *label1,
const gchar *label2)
create_pane_options (GtkPaned *paned,
const gchar *frame_label,
const gchar *label1,
const gchar *label2)
{
GtkWidget *child1, *child2;
GtkWidget *frame;
@@ -86,47 +86,38 @@ create_pane_options (GtkPaned *paned,
frame = gtk_frame_new (frame_label);
gtk_container_set_border_width (GTK_CONTAINER (frame), 4);
table = gtk_table_new (3, 2, TRUE);
table = gtk_grid_new ();
gtk_container_add (GTK_CONTAINER (frame), table);
label = gtk_label_new (label1);
gtk_table_attach_defaults (GTK_TABLE (table), label,
0, 1, 0, 1);
gtk_grid_attach (GTK_GRID (table), label, 0, 0, 1, 1);
check_button = gtk_check_button_new_with_mnemonic ("_Resize");
gtk_table_attach_defaults (GTK_TABLE (table), check_button,
0, 1, 1, 2);
gtk_grid_attach (GTK_GRID (table), check_button, 0, 1, 1, 1);
g_signal_connect (check_button, "toggled",
G_CALLBACK (toggle_resize), child1);
G_CALLBACK (toggle_resize), child1);
check_button = gtk_check_button_new_with_mnemonic ("_Shrink");
gtk_table_attach_defaults (GTK_TABLE (table), check_button,
0, 1, 2, 3);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button),
TRUE);
gtk_grid_attach (GTK_GRID (table), check_button, 0, 2, 1, 1);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button), TRUE);
g_signal_connect (check_button, "toggled",
G_CALLBACK (toggle_shrink), child1);
G_CALLBACK (toggle_shrink), child1);
label = gtk_label_new (label2);
gtk_table_attach_defaults (GTK_TABLE (table), label,
1, 2, 0, 1);
gtk_grid_attach (GTK_GRID (table), label, 1, 0, 1, 1);
check_button = gtk_check_button_new_with_mnemonic ("_Resize");
gtk_table_attach_defaults (GTK_TABLE (table), check_button,
1, 2, 1, 2);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button),
TRUE);
gtk_grid_attach (GTK_GRID (table), check_button, 1, 1, 1, 1);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button), TRUE);
g_signal_connect (check_button, "toggled",
G_CALLBACK (toggle_resize), child2);
G_CALLBACK (toggle_resize), child2);
check_button = gtk_check_button_new_with_mnemonic ("_Shrink");
gtk_table_attach_defaults (GTK_TABLE (table), check_button,
1, 2, 2, 3);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button),
TRUE);
gtk_grid_attach (GTK_GRID (table), check_button, 1, 2, 1, 1);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button), TRUE);
g_signal_connect (check_button, "toggled",
G_CALLBACK (toggle_shrink), child2);
G_CALLBACK (toggle_shrink), child2);
return frame;
}
@@ -145,10 +136,10 @@ do_panes (GtkWidget *do_widget)
{
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_screen (GTK_WINDOW (window),
gtk_widget_get_screen (do_widget));
gtk_widget_get_screen (do_widget));
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed), &window);
G_CALLBACK (gtk_widget_destroyed), &window);
gtk_window_set_title (GTK_WINDOW (window), "Panes");
gtk_container_set_border_width (GTK_CONTAINER (window), 0);
@@ -167,7 +158,7 @@ do_panes (GtkWidget *do_widget)
gtk_frame_set_shadow_type (GTK_FRAME(frame), GTK_SHADOW_IN);
gtk_widget_set_size_request (frame, 60, 60);
gtk_paned_add1 (GTK_PANED (hpaned), frame);
button = gtk_button_new_with_mnemonic ("_Hi there");
gtk_container_add (GTK_CONTAINER(frame), button);
@@ -184,18 +175,18 @@ do_panes (GtkWidget *do_widget)
/* Now create toggle buttons to control sizing */
gtk_box_pack_start (GTK_BOX (vbox),
create_pane_options (GTK_PANED (hpaned),
"Horizontal",
"Left",
"Right"),
FALSE, FALSE, 0);
create_pane_options (GTK_PANED (hpaned),
"Horizontal",
"Left",
"Right"),
FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (vbox),
create_pane_options (GTK_PANED (vpaned),
"Vertical",
"Top",
"Bottom"),
FALSE, FALSE, 0);
create_pane_options (GTK_PANED (vpaned),
"Vertical",
"Top",
"Bottom"),
FALSE, FALSE, 0);
gtk_widget_show_all (vbox);
}

View File

@@ -1,7 +1,7 @@
/* Pickers
/* Pickers
*
* These widgets are mainly intended for use in preference dialogs.
* They allow to select colors, fonts, files and directories.
* They allow to select colors, fonts, files, directories and applications.
*/
#include <gtk/gtk.h>
@@ -18,45 +18,61 @@ do_pickers (GtkWidget *do_widget)
gtk_window_set_screen (GTK_WINDOW (window),
gtk_widget_get_screen (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Pickers");
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed),
&window);
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
table = gtk_table_new (4, 2, FALSE);
gtk_table_set_col_spacing (GTK_TABLE (table), 0, 10);
gtk_table_set_row_spacings (GTK_TABLE (table), 3);
table = gtk_grid_new ();
gtk_grid_set_row_spacing (GTK_GRID (table), 3);
gtk_grid_set_column_spacing (GTK_GRID (table), 10);
gtk_container_add (GTK_CONTAINER (window), table);
gtk_container_set_border_width (GTK_CONTAINER (table), 10);
label = gtk_label_new ("Color:");
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_widget_set_halign (label, GTK_ALIGN_START);
gtk_widget_set_valign (label, GTK_ALIGN_CENTER);
gtk_widget_set_hexpand (label, TRUE);
picker = gtk_color_button_new ();
gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 0, 1);
gtk_table_attach_defaults (GTK_TABLE (table), picker, 1, 2, 0, 1);
gtk_grid_attach (GTK_GRID (table), label, 0, 0, 1, 1);
gtk_grid_attach (GTK_GRID (table), picker, 1, 0, 1, 1);
label = gtk_label_new ("Font:");
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_widget_set_halign (label, GTK_ALIGN_START);
gtk_widget_set_valign (label, GTK_ALIGN_CENTER);
gtk_widget_set_hexpand (label, TRUE);
picker = gtk_font_button_new ();
gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 1, 2);
gtk_table_attach_defaults (GTK_TABLE (table), picker, 1, 2, 1, 2);
gtk_grid_attach (GTK_GRID (table), label, 0, 1, 1, 1);
gtk_grid_attach (GTK_GRID (table), picker, 1, 1, 1, 1);
label = gtk_label_new ("File:");
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
picker = gtk_file_chooser_button_new ("Pick a File",
gtk_widget_set_halign (label, GTK_ALIGN_START);
gtk_widget_set_valign (label, GTK_ALIGN_CENTER);
gtk_widget_set_hexpand (label, TRUE);
picker = gtk_file_chooser_button_new ("Pick a File",
GTK_FILE_CHOOSER_ACTION_OPEN);
gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 2, 3);
gtk_table_attach_defaults (GTK_TABLE (table), picker, 1, 2, 2, 3);
gtk_grid_attach (GTK_GRID (table), label, 0, 2, 1, 1);
gtk_grid_attach (GTK_GRID (table), picker, 1, 2, 1, 1);
label = gtk_label_new ("Folder:");
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
picker = gtk_file_chooser_button_new ("Pick a Folder",
gtk_widget_set_halign (label, GTK_ALIGN_START);
gtk_widget_set_valign (label, GTK_ALIGN_CENTER);
picker = gtk_file_chooser_button_new ("Pick a Folder",
GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 3, 4);
gtk_table_attach_defaults (GTK_TABLE (table), picker, 1, 2, 3, 4);
gtk_grid_attach (GTK_GRID (table), label, 0, 3, 1, 1);
gtk_grid_attach (GTK_GRID (table), picker, 1, 3, 1, 1);
label = gtk_label_new ("Mail:");
gtk_widget_set_halign (label, GTK_ALIGN_START);
gtk_widget_set_valign (label, GTK_ALIGN_CENTER);
gtk_widget_set_hexpand (label, TRUE);
picker = gtk_app_chooser_button_new ("x-scheme-handler/mailto");
gtk_app_chooser_button_set_show_dialog_item (GTK_APP_CHOOSER_BUTTON (picker), TRUE);
gtk_grid_attach (GTK_GRID (table), label, 0, 4, 1, 1);
gtk_grid_attach (GTK_GRID (table), picker, 1, 4, 1, 1);
}
if (!gtk_widget_get_visible (window))
@@ -64,7 +80,7 @@ do_pickers (GtkWidget *do_widget)
gtk_widget_show_all (window);
}
else
{
{
gtk_widget_destroy (window);
window = NULL;
}

View File

@@ -71,7 +71,7 @@ load_pixbufs (GError **error)
background = gdk_pixbuf_new_from_file (filename, error);
g_free (filename);
if (!background)
return FALSE; /* Note that "error" was filled with a GError */
@@ -83,10 +83,10 @@ load_pixbufs (GError **error)
filename = demo_find_file (image_names[i], error);
if (!filename)
return FALSE; /* Note that "error" was filled with a GError */
images[i] = gdk_pixbuf_new_from_file (filename, error);
g_free (filename);
if (!images[i])
return FALSE; /* Note that "error" was filled with a GError */
}
@@ -180,7 +180,7 @@ timeout (gpointer data)
GDK_THREADS_LEAVE ();
frame_num++;
return TRUE;
return G_SOURCE_CONTINUE;
}
static guint timeout_id;

View File

@@ -26,8 +26,8 @@ typedef struct
static void
begin_print (GtkPrintOperation *operation,
GtkPrintContext *context,
gpointer user_data)
GtkPrintContext *context,
gpointer user_data)
{
PrintData *data = (PrintData *)user_data;
char *contents;
@@ -55,9 +55,9 @@ begin_print (GtkPrintOperation *operation,
static void
draw_page (GtkPrintOperation *operation,
GtkPrintContext *context,
gint page_nr,
gpointer user_data)
GtkPrintContext *context,
gint page_nr,
gpointer user_data)
{
PrintData *data = (PrintData *)user_data;
cairo_t *cr;
@@ -132,8 +132,8 @@ draw_page (GtkPrintOperation *operation,
static void
end_print (GtkPrintOperation *operation,
GtkPrintContext *context,
gpointer user_data)
GtkPrintContext *context,
gpointer user_data)
{
PrintData *data = (PrintData *)user_data;
@@ -159,11 +159,11 @@ do_printing (GtkWidget *do_widget)
data->font_size = 12.0;
g_signal_connect (G_OBJECT (operation), "begin-print",
G_CALLBACK (begin_print), data);
G_CALLBACK (begin_print), data);
g_signal_connect (G_OBJECT (operation), "draw-page",
G_CALLBACK (draw_page), data);
G_CALLBACK (draw_page), data);
g_signal_connect (G_OBJECT (operation), "end-print",
G_CALLBACK (end_print), data);
G_CALLBACK (end_print), data);
gtk_print_operation_set_use_full_page (operation, FALSE);
gtk_print_operation_set_unit (operation, GTK_UNIT_POINTS);
@@ -195,14 +195,14 @@ do_printing (GtkWidget *do_widget)
GtkWidget *dialog;
dialog = gtk_message_dialog_new (GTK_WINDOW (do_widget),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
"%s", error->message);
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
"%s", error->message);
g_error_free (error);
g_signal_connect (dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
G_CALLBACK (gtk_widget_destroy), NULL);
gtk_widget_show (dialog);
}

View File

@@ -75,7 +75,7 @@ create_fancy_attr_list_for_layout (PangoLayout *layout)
for (p = text; (p = strstr (p, HEART)); p += strlen (HEART))
{
PangoAttribute *attr;
attr = pango_attr_shape_new_with_data (&ink_rect,
&logical_rect,
GUINT_TO_POINTER (g_utf8_get_char (p)),
@@ -152,7 +152,7 @@ rotated_text_draw (GtkWidget *widget,
/* Inform Pango to re-layout the text with the new transformation matrix */
pango_cairo_update_layout (cr, layout);
pango_layout_get_pixel_size (layout, &width, &height);
cairo_move_to (cr, - width / 2, - RADIUS * .9);
pango_cairo_show_layout (cr, layout);
@@ -166,7 +166,7 @@ rotated_text_draw (GtkWidget *widget,
g_object_unref (layout);
g_object_unref (context);
cairo_pattern_destroy (pattern);
return FALSE;
}

View File

@@ -29,8 +29,7 @@ static gboolean
search_progress (gpointer data)
{
gtk_entry_progress_pulse (GTK_ENTRY (data));
return TRUE;
return G_SOURCE_CONTINUE;
}
static void

View File

@@ -2,9 +2,9 @@
*
* GtkSizeGroup provides a mechanism for grouping a number of
* widgets together so they all request the same amount of space.
* This is typically useful when you want a column of widgets to
* This is typically useful when you want a column of widgets to
* have the same size, but you can't use a GtkTable widget.
*
*
* Note that size groups only affect the amount of space requested,
* not the size that the widgets finally receive. If you want the
* widgets in a GtkSizeGroup to actually be the same size, you need
@@ -26,7 +26,7 @@ create_combo_box (const char **strings)
const char **str;
combo_box = gtk_combo_box_text_new ();
for (str = strings; *str; str++)
gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo_box), *str);
@@ -36,34 +36,30 @@ create_combo_box (const char **strings)
}
static void
add_row (GtkTable *table,
int row,
GtkSizeGroup *size_group,
const char *label_text,
const char **options)
add_row (GtkGrid *table,
int row,
GtkSizeGroup *size_group,
const char *label_text,
const char **options)
{
GtkWidget *combo_box;
GtkWidget *label;
label = gtk_label_new_with_mnemonic (label_text);
gtk_misc_set_alignment (GTK_MISC (label), 0, 1);
gtk_table_attach (GTK_TABLE (table), label,
0, 1, row, row + 1,
GTK_EXPAND | GTK_FILL, 0,
0, 0);
gtk_widget_set_halign (label, GTK_ALIGN_START);
gtk_widget_set_valign (label, GTK_ALIGN_END);
gtk_widget_set_hexpand (label, TRUE);
gtk_grid_attach (table, label, 0, row, 1, 1);
combo_box = create_combo_box (options);
gtk_label_set_mnemonic_widget (GTK_LABEL (label), combo_box);
gtk_size_group_add_widget (size_group, combo_box);
gtk_table_attach (GTK_TABLE (table), combo_box,
1, 2, row, row + 1,
0, 0,
0, 0);
gtk_grid_attach (table, combo_box, 1, row, 1, 1);
}
static void
toggle_grouping (GtkToggleButton *check_button,
GtkSizeGroup *size_group)
GtkSizeGroup *size_group)
{
GtkSizeGroupMode new_mode;
@@ -75,7 +71,7 @@ toggle_grouping (GtkToggleButton *check_button,
new_mode = GTK_SIZE_GROUP_HORIZONTAL;
else
new_mode = GTK_SIZE_GROUP_NONE;
gtk_size_group_set_mode (size_group, new_mode);
}
@@ -92,29 +88,29 @@ do_sizegroup (GtkWidget *do_widget)
static const char *color_options[] = {
"Red", "Green", "Blue", NULL
};
static const char *dash_options[] = {
"Solid", "Dashed", "Dotted", NULL
};
static const char *end_options[] = {
"Square", "Round", "Arrow", NULL
};
if (!window)
{
window = gtk_dialog_new_with_buttons ("GtkSizeGroup",
GTK_WINDOW (do_widget),
0,
GTK_STOCK_CLOSE,
GTK_RESPONSE_NONE,
NULL);
GTK_WINDOW (do_widget),
0,
GTK_STOCK_CLOSE,
GTK_RESPONSE_NONE,
NULL);
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
g_signal_connect (window, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
G_CALLBACK (gtk_widget_destroy), NULL);
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed), &window);
G_CALLBACK (gtk_widget_destroyed), &window);
content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
@@ -123,42 +119,40 @@ do_sizegroup (GtkWidget *do_widget)
gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
/* Create one frame holding color options
*/
/* Create one frame holding color options */
frame = gtk_frame_new ("Color Options");
gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE, 0);
table = gtk_table_new (2, 2, FALSE);
table = gtk_grid_new ();
gtk_container_set_border_width (GTK_CONTAINER (table), 5);
gtk_table_set_row_spacings (GTK_TABLE (table), 5);
gtk_table_set_col_spacings (GTK_TABLE (table), 10);
gtk_grid_set_row_spacing (GTK_GRID (table), 5);
gtk_grid_set_column_spacing (GTK_GRID (table), 10);
gtk_container_add (GTK_CONTAINER (frame), table);
add_row (GTK_TABLE (table), 0, size_group, "_Foreground", color_options);
add_row (GTK_TABLE (table), 1, size_group, "_Background", color_options);
add_row (GTK_GRID (table), 0, size_group, "_Foreground", color_options);
add_row (GTK_GRID (table), 1, size_group, "_Background", color_options);
/* And another frame holding line style options
*/
/* And another frame holding line style options */
frame = gtk_frame_new ("Line Options");
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
table = gtk_table_new (2, 2, FALSE);
table = gtk_grid_new ();
gtk_container_set_border_width (GTK_CONTAINER (table), 5);
gtk_table_set_row_spacings (GTK_TABLE (table), 5);
gtk_table_set_col_spacings (GTK_TABLE (table), 10);
gtk_grid_set_row_spacing (GTK_GRID (table), 5);
gtk_grid_set_column_spacing (GTK_GRID (table), 10);
gtk_container_add (GTK_CONTAINER (frame), table);
add_row (GTK_TABLE (table), 0, size_group, "_Dashing", dash_options);
add_row (GTK_TABLE (table), 1, size_group, "_Line ends", end_options);
add_row (GTK_GRID (table), 0, size_group, "_Dashing", dash_options);
add_row (GTK_GRID (table), 1, size_group, "_Line ends", end_options);
/* And a check button to turn grouping on and off */
check_button = gtk_check_button_new_with_mnemonic ("_Enable grouping");
gtk_box_pack_start (GTK_BOX (vbox), check_button, FALSE, FALSE, 0);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button), TRUE);
g_signal_connect (check_button, "toggled",
G_CALLBACK (toggle_grouping), size_group);
G_CALLBACK (toggle_grouping), size_group);
}
if (!gtk_widget_get_visible (window))

View File

@@ -93,5 +93,3 @@ do_spinner (GtkWidget *do_widget)
return window;
}

View File

@@ -35,7 +35,7 @@ stock_item_info_free (StockItemInfo *info)
g_free (info->accel_str);
if (info->small_icon)
g_object_unref (info->small_icon);
g_free (info);
}
@@ -48,7 +48,7 @@ stock_item_info_copy (StockItemInfo *src)
info->id = g_strdup (src->id);
info->macro = g_strdup (src->macro);
info->accel_str = g_strdup (src->accel_str);
info->item = src->item;
info->small_icon = src->small_icon;
@@ -82,9 +82,9 @@ id_to_macro (const gchar *id)
/* gtk-foo-bar -> GTK_STOCK_FOO_BAR */
macro = g_string_new (NULL);
cp = id;
if (strncmp (cp, "gtk-", 4) == 0)
{
g_string_append (macro, "GTK_STOCK_");
@@ -94,11 +94,11 @@ id_to_macro (const gchar *id)
while (*cp)
{
if (*cp == '-')
g_string_append_c (macro, '_');
g_string_append_c (macro, '_');
else if (g_ascii_islower (*cp))
g_string_append_c (macro, g_ascii_toupper (*cp));
g_string_append_c (macro, g_ascii_toupper (*cp));
else
g_string_append_c (macro, *cp);
g_string_append_c (macro, *cp);
cp++;
}
@@ -112,7 +112,7 @@ create_model (void)
GtkListStore *store;
GSList *ids;
GSList *tmp_list;
store = gtk_list_store_new (2, STOCK_ITEM_INFO_TYPE, G_TYPE_STRING);
ids = gtk_stock_list_ids ();
@@ -124,9 +124,9 @@ create_model (void)
GtkStockItem item;
GtkTreeIter iter;
GtkIconSet *icon_set;
info.id = tmp_list->data;
if (gtk_stock_lookup (info.id, &item))
{
info.item = item;
@@ -165,19 +165,19 @@ create_model (void)
++i;
}
g_free (sizes);
info.small_icon = gtk_widget_render_icon_pixbuf (window,
info.small_icon = gtk_widget_render_icon_pixbuf (window,
info.id,
size);
if (size != GTK_ICON_SIZE_MENU)
{
/* Make the result the proper size for our thumbnail */
gint w, h;
GdkPixbuf *scaled;
gtk_icon_size_lookup (GTK_ICON_SIZE_MENU, &w, &h);
scaled = gdk_pixbuf_scale_simple (info.small_icon,
w, h,
GDK_INTERP_BILINEAR);
@@ -200,7 +200,7 @@ create_model (void)
}
info.macro = id_to_macro (info.id);
gtk_list_store_append (store, &iter);
gtk_list_store_set (store, &iter, 0, &info, 1, info.id, -1);
@@ -208,10 +208,10 @@ create_model (void)
g_free (info.accel_str);
if (info.small_icon)
g_object_unref (info.small_icon);
tmp_list = g_slist_next (tmp_list);
}
g_slist_foreach (ids, (GFunc)g_free, NULL);
g_slist_free (ids);
@@ -235,16 +235,16 @@ get_largest_size (const char *id)
for (i = 0; i < n_sizes; i++)
{
gint width, height;
gtk_icon_size_lookup (sizes[i], &width, &height);
if (width * height > best_pixels)
{
best_size = sizes[i];
best_pixels = width * height;
}
{
best_size = sizes[i];
best_pixels = width * height;
}
}
g_free (sizes);
return best_size;
@@ -257,7 +257,7 @@ selection_changed (GtkTreeSelection *selection)
StockItemDisplay *display;
GtkTreeModel *model;
GtkTreeIter iter;
treeview = gtk_tree_selection_get_tree_view (selection);
display = g_object_get_data (G_OBJECT (treeview), "stock-display");
@@ -265,7 +265,7 @@ selection_changed (GtkTreeSelection *selection)
{
StockItemInfo *info;
gchar *str;
gtk_tree_model_get (model, &iter,
0, &info,
-1);
@@ -313,21 +313,21 @@ selection_changed (GtkTreeSelection *selection)
static void
macro_set_func_text (GtkTreeViewColumn *tree_column,
GtkCellRenderer *cell,
GtkTreeModel *model,
GtkTreeIter *iter,
gpointer data)
GtkCellRenderer *cell,
GtkTreeModel *model,
GtkTreeIter *iter,
gpointer data)
{
StockItemInfo *info;
gtk_tree_model_get (model, iter,
0, &info,
-1);
g_object_set (GTK_CELL_RENDERER (cell),
"text", info->macro,
NULL);
stock_item_info_free (info);
}
@@ -339,15 +339,15 @@ id_set_func (GtkTreeViewColumn *tree_column,
gpointer data)
{
StockItemInfo *info;
gtk_tree_model_get (model, iter,
0, &info,
-1);
g_object_set (GTK_CELL_RENDERER (cell),
"text", info->id,
NULL);
stock_item_info_free (info);
}
@@ -359,15 +359,15 @@ accel_set_func (GtkTreeViewColumn *tree_column,
gpointer data)
{
StockItemInfo *info;
gtk_tree_model_get (model, iter,
0, &info,
-1);
g_object_set (GTK_CELL_RENDERER (cell),
"text", info->accel_str,
NULL);
stock_item_info_free (info);
}
@@ -379,21 +379,21 @@ label_set_func (GtkTreeViewColumn *tree_column,
gpointer data)
{
StockItemInfo *info;
gtk_tree_model_get (model, iter,
0, &info,
-1);
g_object_set (GTK_CELL_RENDERER (cell),
"text", info->item.label,
NULL);
stock_item_info_free (info);
}
GtkWidget *
do_stock_browser (GtkWidget *do_widget)
{
{
if (!window)
{
GtkWidget *frame;
@@ -401,7 +401,6 @@ do_stock_browser (GtkWidget *do_widget)
GtkWidget *hbox;
GtkWidget *sw;
GtkWidget *treeview;
GtkWidget *align;
GtkTreeModel *model;
GtkCellRenderer *cell_renderer;
StockItemDisplay *display;
@@ -410,7 +409,7 @@ do_stock_browser (GtkWidget *do_widget)
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_screen (GTK_WINDOW (window),
gtk_widget_get_screen (do_widget));
gtk_widget_get_screen (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Stock Icons and Items");
gtk_window_set_default_size (GTK_WINDOW (window), -1, 500);
@@ -427,31 +426,31 @@ do_stock_browser (GtkWidget *do_widget)
gtk_box_pack_start (GTK_BOX (hbox), sw, FALSE, FALSE, 0);
model = create_model ();
treeview = gtk_tree_view_new_with_model (model);
g_object_unref (model);
gtk_container_add (GTK_CONTAINER (sw), treeview);
column = gtk_tree_view_column_new ();
gtk_tree_view_column_set_title (column, "Macro");
cell_renderer = gtk_cell_renderer_pixbuf_new ();
gtk_tree_view_column_pack_start (column,
cell_renderer,
FALSE);
cell_renderer,
FALSE);
gtk_tree_view_column_set_attributes (column, cell_renderer,
"stock_id", 1, NULL);
"stock_id", 1, NULL);
cell_renderer = gtk_cell_renderer_text_new ();
gtk_tree_view_column_pack_start (column,
cell_renderer,
TRUE);
cell_renderer,
TRUE);
gtk_tree_view_column_set_cell_data_func (column, cell_renderer,
macro_set_func_text, NULL, NULL);
macro_set_func_text, NULL, NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (treeview),
column);
column);
cell_renderer = gtk_cell_renderer_text_new ();
gtk_tree_view_insert_column_with_data_func (GTK_TREE_VIEW (treeview),
@@ -479,12 +478,10 @@ do_stock_browser (GtkWidget *do_widget)
id_set_func,
NULL,
NULL);
align = gtk_alignment_new (0.5, 0.0, 0.0, 0.0);
gtk_box_pack_end (GTK_BOX (hbox), align, FALSE, FALSE, 0);
frame = gtk_frame_new ("Selected Item");
gtk_container_add (GTK_CONTAINER (align), frame);
gtk_widget_set_valign (frame, GTK_ALIGN_START);
gtk_box_pack_end (GTK_BOX (hbox), frame, FALSE, FALSE, 0);
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 8);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 4);
@@ -495,7 +492,7 @@ do_stock_browser (GtkWidget *do_widget)
"stock-display",
display,
g_free); /* free display with treeview */
display->type_label = gtk_label_new (NULL);
display->macro_label = gtk_label_new (NULL);
display->id_label = gtk_label_new (NULL);
@@ -507,7 +504,7 @@ do_stock_browser (GtkWidget *do_widget)
gtk_box_pack_start (GTK_BOX (vbox), display->icon_image,
FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (vbox), display->label_accel_label,
FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (vbox), display->macro_label,
@@ -517,11 +514,11 @@ do_stock_browser (GtkWidget *do_widget)
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
g_signal_connect (selection,
"changed",
G_CALLBACK (selection_changed),
NULL);
"changed",
G_CALLBACK (selection_changed),
NULL);
}
if (!gtk_widget_get_visible (window))
@@ -529,7 +526,7 @@ do_stock_browser (GtkWidget *do_widget)
gtk_widget_show_all (window);
}
else
{
{
gtk_widget_destroy (window);
window = NULL;
}

View File

@@ -1,6 +1,6 @@
/* Text Widget/Automatic scrolling
*
* This example demonstrates how to use the gravity of
* This example demonstrates how to use the gravity of
* GtkTextMarks to keep a text view scrolled to the bottom
* while appending text.
*/
@@ -20,14 +20,14 @@ scroll_to_end (GtkTextView *textview)
static int count;
buffer = gtk_text_view_get_buffer (textview);
/* Get "end" mark. It's located at the end of buffer because
/* Get "end" mark. It's located at the end of buffer because
* of right gravity
*/
mark = gtk_text_buffer_get_mark (buffer, "end");
gtk_text_buffer_get_iter_at_mark (buffer, &iter, mark);
/* and insert some text at its position, the iter will be
/* and insert some text at its position, the iter will be
* revalidated after insertion to point to the end of inserted text
*/
spaces = g_strnfill (count++, ' ');
@@ -43,13 +43,13 @@ scroll_to_end (GtkTextView *textview)
*/
gtk_text_view_scroll_mark_onscreen (textview, mark);
/* Emulate typewriter behavior, shift to the left if we
/* Emulate typewriter behavior, shift to the left if we
* are far enough to the right.
*/
if (count > 150)
count = 0;
return TRUE;
return G_SOURCE_CONTINUE;
}
/* Scroll to the bottom of the buffer.
@@ -64,7 +64,7 @@ scroll_to_bottom (GtkTextView *textview)
static int count;
buffer = gtk_text_view_get_buffer (textview);
/* Get end iterator */
gtk_text_buffer_get_end_iter (buffer, &iter);
@@ -80,17 +80,17 @@ scroll_to_bottom (GtkTextView *textview)
-1);
g_free (spaces);
/* Move the iterator to the beginning of line, so we don't scroll
* in horizontal direction
/* Move the iterator to the beginning of line, so we don't scroll
* in horizontal direction
*/
gtk_text_iter_set_line_offset (&iter, 0);
/* and place the mark at iter. the mark will stay there after we
* insert some text at the end because it has right gravity.
*/
mark = gtk_text_buffer_get_mark (buffer, "scroll");
gtk_text_buffer_move_mark (buffer, mark, &iter);
/* Scroll the mark onscreen.
*/
gtk_text_view_scroll_mark_onscreen (textview, mark);
@@ -100,7 +100,7 @@ scroll_to_bottom (GtkTextView *textview)
if (count > 40)
count = 0;
return TRUE;
return G_SOURCE_CONTINUE;
}
static guint
@@ -114,30 +114,30 @@ setup_scroll (GtkTextView *textview,
gtk_text_buffer_get_end_iter (buffer, &iter);
if (to_end)
{
/* If we want to scroll to the end, including horizontal scrolling,
* then we just create a mark with right gravity at the end of the
* buffer. It will stay at the end unless explicitely moved with
* gtk_text_buffer_move_mark.
*/
gtk_text_buffer_create_mark (buffer, "end", &iter, FALSE);
/* Add scrolling timeout. */
return g_timeout_add (50, (GSourceFunc) scroll_to_end, textview);
}
{
/* If we want to scroll to the end, including horizontal scrolling,
* then we just create a mark with right gravity at the end of the
* buffer. It will stay at the end unless explicitely moved with
* gtk_text_buffer_move_mark.
*/
gtk_text_buffer_create_mark (buffer, "end", &iter, FALSE);
/* Add scrolling timeout. */
return g_timeout_add (50, (GSourceFunc) scroll_to_end, textview);
}
else
{
/* If we want to scroll to the bottom, but not scroll horizontally,
* then an end mark won't do the job. Just create a mark so we can
* use it with gtk_text_view_scroll_mark_onscreen, we'll position it
* explicitely when needed. Use left gravity so the mark stays where
* we put it after inserting new text.
*/
gtk_text_buffer_create_mark (buffer, "scroll", &iter, TRUE);
/* Add scrolling timeout. */
return g_timeout_add (100, (GSourceFunc) scroll_to_bottom, textview);
}
{
/* If we want to scroll to the bottom, but not scroll horizontally,
* then an end mark won't do the job. Just create a mark so we can
* use it with gtk_text_view_scroll_mark_onscreen, we'll position it
* explicitely when needed. Use left gravity so the mark stays where
* we put it after inserting new text.
*/
gtk_text_buffer_create_mark (buffer, "scroll", &iter, TRUE);
/* Add scrolling timeout. */
return g_timeout_add (100, (GSourceFunc) scroll_to_bottom, textview);
}
}
static void
@@ -163,7 +163,7 @@ create_text_view (GtkWidget *hbox,
timeout = setup_scroll (GTK_TEXT_VIEW (textview), to_end);
/* Remove the timeout in destroy handler, so we don't try to
* scroll destroyed widget.
* scroll destroyed widget.
*/
g_signal_connect (textview, "destroy",
G_CALLBACK (remove_timeout),
@@ -181,9 +181,9 @@ do_textscroll (GtkWidget *do_widget)
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed), &window);
G_CALLBACK (gtk_widget_destroyed), &window);
gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
gtk_box_set_homogeneous (GTK_BOX (hbox), TRUE);
gtk_container_add (GTK_CONTAINER (window), hbox);
@@ -193,9 +193,9 @@ do_textscroll (GtkWidget *do_widget)
}
if (!gtk_widget_get_visible (window))
gtk_widget_show_all (window);
gtk_widget_show_all (window);
else
gtk_widget_destroy (window);
gtk_widget_destroy (window);
return window;
}

View File

@@ -132,7 +132,6 @@ insert_text (GtkTextBuffer *buffer)
GtkTextIter start, end;
GdkPixbuf *pixbuf;
GdkPixbuf *scaled;
GtkTextChildAnchor *anchor;
char *filename;
/* demo_find_file() looks in the current directory first,
@@ -376,15 +375,15 @@ insert_text (GtkTextBuffer *buffer)
gtk_text_buffer_insert (buffer, &iter,
"You can put widgets in the buffer: Here's a button: ", -1);
anchor = gtk_text_buffer_create_child_anchor (buffer, &iter);
gtk_text_buffer_create_child_anchor (buffer, &iter);
gtk_text_buffer_insert (buffer, &iter, " and a menu: ", -1);
anchor = gtk_text_buffer_create_child_anchor (buffer, &iter);
gtk_text_buffer_create_child_anchor (buffer, &iter);
gtk_text_buffer_insert (buffer, &iter, " and a scale: ", -1);
anchor = gtk_text_buffer_create_child_anchor (buffer, &iter);
gtk_text_buffer_create_child_anchor (buffer, &iter);
gtk_text_buffer_insert (buffer, &iter, " and an animation: ", -1);
anchor = gtk_text_buffer_create_child_anchor (buffer, &iter);
gtk_text_buffer_create_child_anchor (buffer, &iter);
gtk_text_buffer_insert (buffer, &iter, " finally a text entry: ", -1);
anchor = gtk_text_buffer_create_child_anchor (buffer, &iter);
gtk_text_buffer_create_child_anchor (buffer, &iter);
gtk_text_buffer_insert (buffer, &iter, ".\n", -1);
gtk_text_buffer_insert (buffer, &iter,
@@ -562,7 +561,6 @@ recursive_attach_view (int depth,
GtkWidget *child_view;
GtkWidget *event_box;
GdkRGBA color;
GtkWidget *align;
if (depth > 4)
return;
@@ -574,11 +572,10 @@ recursive_attach_view (int depth,
gdk_rgba_parse (&color, "black");
gtk_widget_override_background_color (event_box, 0, &color);
align = gtk_alignment_new (0.5, 0.5, 1.0, 1.0);
gtk_container_set_border_width (GTK_CONTAINER (align), 1);
gtk_widget_set_halign (child_view, GTK_ALIGN_FILL);
gtk_widget_set_valign (child_view, GTK_ALIGN_FILL);
gtk_container_add (GTK_CONTAINER (event_box), align);
gtk_container_add (GTK_CONTAINER (align), child_view);
gtk_container_add (GTK_CONTAINER (event_box), child_view);
gtk_text_view_add_child_at_anchor (view, event_box, anchor);
@@ -635,4 +632,3 @@ easter_egg_callback (GtkWidget *button,
gtk_widget_show_all (window);
}

View File

@@ -350,7 +350,7 @@ interactive_canvas_real_drag_leave (gpointer data)
gtk_widget_queue_draw (widget);
}
return FALSE;
return G_SOURCE_REMOVE;
}
static void

View File

@@ -0,0 +1,248 @@
/* Transparent
*
* Use transparent background on GdkWindows to create a shadow effect on a GtkOverlay widget.
*/
#include <gtk/gtk.h>
#define SHADOW_OFFSET_X 7
#define SHADOW_OFFSET_Y 7
#define SHADOW_RADIUS 5
static void
draw_shadow_box (cairo_t *cr,
GdkRectangle rect,
double radius,
double transparency)
{
cairo_pattern_t *pattern;
double x0, x1, x2, x3;
double y0, y1, y2, y3;
x0 = rect.x;
x1 = rect.x + radius;
x2 = rect.x + rect.width - radius;
x3 = rect.x + rect.width;
y0 = rect.y;
y1 = rect.y + radius;
y2 = rect.y + rect.height - radius;
y3 = rect.y + rect.height;
/* Fill non-border part */
cairo_set_source_rgba (cr, 0, 0, 0, transparency);
cairo_rectangle (cr,
x1, y1, x2 - x1, y2 - y1);
cairo_fill (cr);
/* Upper border */
pattern = cairo_pattern_create_linear (0, y0, 0, y1);
cairo_pattern_add_color_stop_rgba (pattern, 0.0, 0.0, 0, 0, 0.0);
cairo_pattern_add_color_stop_rgba (pattern, 1.0, 0.0, 0, 0, transparency);
cairo_set_source (cr, pattern);
cairo_pattern_destroy (pattern);
cairo_rectangle (cr,
x1, y0,
x2 - x1, y1 - y0);
cairo_fill (cr);
/* Bottom border */
pattern = cairo_pattern_create_linear (0, y2, 0, y3);
cairo_pattern_add_color_stop_rgba (pattern, 0.0, 0.0, 0, 0, transparency);
cairo_pattern_add_color_stop_rgba (pattern, 1.0, 0.0, 0, 0, 0.0);
cairo_set_source (cr, pattern);
cairo_pattern_destroy (pattern);
cairo_rectangle (cr,
x1, y2,
x2 - x1, y3 - y2);
cairo_fill (cr);
/* Left border */
pattern = cairo_pattern_create_linear (x0, 0, x1, 0);
cairo_pattern_add_color_stop_rgba (pattern, 0.0, 0.0, 0, 0, 0.0);
cairo_pattern_add_color_stop_rgba (pattern, 1.0, 0.0, 0, 0, transparency);
cairo_set_source (cr, pattern);
cairo_pattern_destroy (pattern);
cairo_rectangle (cr,
x0, y1,
x1 - x0, y2 - y1);
cairo_fill (cr);
/* Right border */
pattern = cairo_pattern_create_linear (x2, 0, x3, 0);
cairo_pattern_add_color_stop_rgba (pattern, 0.0, 0.0, 0, 0, transparency);
cairo_pattern_add_color_stop_rgba (pattern, 1.0, 0.0, 0, 0, 0.0);
cairo_set_source (cr, pattern);
cairo_pattern_destroy (pattern);
cairo_rectangle (cr,
x2, y1,
x3 - x2, y2 - y1);
cairo_fill (cr);
/* NW corner */
pattern = cairo_pattern_create_radial (x1, y1, 0,
x1, y1, radius);
cairo_pattern_add_color_stop_rgba (pattern, 0.0, 0.0, 0, 0, transparency);
cairo_pattern_add_color_stop_rgba (pattern, 1.0, 0.0, 0, 0, 0.0);
cairo_set_source (cr, pattern);
cairo_pattern_destroy (pattern);
cairo_rectangle (cr,
x0, y0,
x1 - x0, y1 - y0);
cairo_fill (cr);
/* NE corner */
pattern = cairo_pattern_create_radial (x2, y1, 0,
x2, y1, radius);
cairo_pattern_add_color_stop_rgba (pattern, 0.0, 0.0, 0, 0, transparency);
cairo_pattern_add_color_stop_rgba (pattern, 1.0, 0.0, 0, 0, 0.0);
cairo_set_source (cr, pattern);
cairo_pattern_destroy (pattern);
cairo_rectangle (cr,
x2, y0,
x3 - x2, y1 - y0);
cairo_fill (cr);
/* SW corner */
pattern = cairo_pattern_create_radial (x1, y2, 0,
x1, y2, radius);
cairo_pattern_add_color_stop_rgba (pattern, 0.0, 0.0, 0, 0, transparency);
cairo_pattern_add_color_stop_rgba (pattern, 1.0, 0.0, 0, 0, 0.0);
cairo_set_source (cr, pattern);
cairo_pattern_destroy (pattern);
cairo_rectangle (cr,
x0, y2,
x1 - x0, y3 - y2);
cairo_fill (cr);
/* SE corner */
pattern = cairo_pattern_create_radial (x2, y2, 0,
x2, y2, radius);
cairo_pattern_add_color_stop_rgba (pattern, 0.0, 0.0, 0, 0, transparency);
cairo_pattern_add_color_stop_rgba (pattern, 1.0, 0.0, 0, 0, 0.0);
cairo_set_source (cr, pattern);
cairo_pattern_destroy (pattern);
cairo_rectangle (cr,
x2, y2,
x3 - x2, y3 - y2);
cairo_fill (cr);
}
static gboolean
draw_callback (GtkWidget *widget,
cairo_t *cr,
gpointer data)
{
GdkRectangle rect;
gtk_widget_get_allocation (widget, &rect);
rect.x += SHADOW_OFFSET_X;
rect.y += SHADOW_OFFSET_Y;
rect.width -= SHADOW_OFFSET_X;
rect.height -= SHADOW_OFFSET_Y;
draw_shadow_box (cr,
rect, SHADOW_RADIUS, 0.4);
return FALSE;
}
GtkWidget *
do_transparent (GtkWidget *do_widget)
{
static GtkWidget *window = NULL;
if (!window)
{
GtkWidget *view;
GtkWidget *sw;
GtkWidget *overlay;
GtkWidget *align;
GtkWidget *entry;
GdkRGBA transparent = {0, 0, 0, 0};
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_screen (GTK_WINDOW (window),
gtk_widget_get_screen (do_widget));
gtk_window_set_default_size (GTK_WINDOW (window),
450, 450);
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed), &window);
gtk_window_set_title (GTK_WINDOW (window), "Transparent");
gtk_container_set_border_width (GTK_CONTAINER (window), 0);
view = gtk_text_view_new ();
sw = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
gtk_container_add (GTK_CONTAINER (sw), view);
overlay = gtk_overlay_new ();
gtk_container_add (GTK_CONTAINER (overlay), sw);
gtk_container_add (GTK_CONTAINER (window), overlay);
gtk_widget_override_background_color (overlay, 0, &transparent);
align = gtk_alignment_new (0.0, 0.0, 0.0, 0.0);
gtk_alignment_set_padding (GTK_ALIGNMENT (align),
0, SHADOW_OFFSET_Y, 0, SHADOW_OFFSET_X);
g_signal_connect (align, "draw", G_CALLBACK (draw_callback), NULL);
entry = gtk_entry_new ();
gtk_container_add (GTK_CONTAINER (align), entry);
gtk_overlay_add_overlay (GTK_OVERLAY (overlay), align);
gtk_widget_set_halign (align, GTK_ALIGN_CENTER);
gtk_widget_set_valign (align, GTK_ALIGN_START);
gtk_widget_show_all (overlay);
}
if (!gtk_widget_get_visible (window))
{
gtk_widget_show (window);
}
else
{
gtk_widget_destroy (window);
window = NULL;
}
return window;
}

Some files were not shown because too many files have changed in this diff Show More