Commit Graph

11304 Commits

Author SHA1 Message Date
Benjamin Otte
7125712299 calendar: Get rid of gdk_drawable_get_size() usage 2010-09-26 15:11:44 +02:00
Benjamin Otte
5f57cede3c widget: Check the widget has an allocation in gtk_widget_draw()
Following the mailing list discussion, require that the widget does not
have a pending size_allocate when calling the draw function.

http://mail.gnome.org/archives/gtk-devel-list/2010-September/msg00214.html
and the associated thread explain this in more detail.
2010-09-26 15:11:43 +02:00
Benjamin Otte
b89920e203 API: Add gtk_widget_draw()
And here's the final patch that all the previous patches were about.
2010-09-26 15:11:43 +02:00
Benjamin Otte
1142c8bf18 API: gtk_cell_renderer_render_cairo() => gtk_cell_renderer_render() 2010-09-26 15:11:43 +02:00
Benjamin Otte
ec6e97be4d API: Remove gtk_cell_renderer_render()
The next commit will rename gtk_cell_renderer_render_cairo() to
gtk_cell_renderer_render() again
2010-09-26 15:11:43 +02:00
Benjamin Otte
67284a57de API: Get rid of gtk_draw_insertion_cursor()
and rename gtk_cairo_draw_insertion_cursor() to
gtk_draw_insertion_cursor().
2010-09-26 15:11:43 +02:00
Benjamin Otte
1d3f6b30b0 API: Rename gtk_cairo_paint_*() to gtk_paint_*()
Large patch, but just renaming.
Indentation should still mostly be correct because I took care of
keeping the indentation for this function name.
2010-09-26 15:11:42 +02:00
Benjamin Otte
70e6aba0d0 API: style: Remove old drawing functions 2010-09-26 15:11:42 +02:00
Benjamin Otte
326f887ae7 API: widget: Remove the expose event
gtk_widget_send_expose() now calls the draw function.
2010-09-26 15:11:42 +02:00
Benjamin Otte
9aa4f417d0 API: Remove gtk_container_propagate_expose()
Also, move the documentation to its replacement
gtk_widget_propagate_draw().
2010-09-26 15:11:42 +02:00
Benjamin Otte
7947b3faf8 container: Implement gtk_container_propagate_draw() without fallbacks
No more fallbacks to gtk_container_propagate_expose().
2010-09-26 15:11:42 +02:00
Benjamin Otte
45744d9a5f Change semantics of the draw signal
Previously, we tried to move the context's origin to the widget's top
left location, no matter what window the paint was happening on. Now we
only do that for child windows of the widget's window and leave the
context untouched for windows that the widget has created outside its
own hierarchy. In those casses, we also don't clip the context to
the widget's allocation.

Includes fixes to GtkHandlebox for this effect and fixes all known
issues with it.

These semantics assume that gtk_widget_draw() should only draw the parts
of a widget that are inside child windows and not draw stuff that is
located in completely different GdkWindows. In the handlebox case, it
means that it should only draw the handle when it is attached, but not
when it isn't. We'll likely need a special draw function for the
detached handlebox if we want to draw it.
2010-09-26 15:11:42 +02:00
Benjamin Otte
0acec382c8 widget: Clip drawing to the widget's allocation.
I've seen (and written) quite some widgets (and theme engines) that use
cairo_paint() to draw the background. So avoiding overdraw makes sense.

Also move all that setup into a _gtk_widget_draw_internal() function
that will be used by all functions that can be used by other functions
that draw widgets.
2010-09-26 15:11:42 +02:00
Benjamin Otte
0c285bad75 iconfactory: Initialize varibale to NULL in failure path
Otherwise we use random memory and that is not good.
2010-09-26 15:11:42 +02:00
Benjamin Otte
8929321cba image: Add a default case to switch statement to avoid gcc warnings 2010-09-26 15:11:42 +02:00
Benjamin Otte
3f10e45ea1 printunixdialog: Connect to draw vfunc 2010-09-26 15:11:40 +02:00
Benjamin Otte
d207fd05e5 printunixdialog: Connect to draw signal for collate callback 2010-09-26 15:11:40 +02:00
Benjamin Otte
b0f078ba43 dnd-quartz: Connect to draw func for dnd hilight 2010-09-26 15:11:40 +02:00
Benjamin Otte
729f80b554 dnd: Connect to raw func for drag hilight 2010-09-26 15:11:40 +02:00
Benjamin Otte
830cda9e32 colorsel: Connect to draw signal 2010-09-26 15:11:40 +02:00
Benjamin Otte
b717f1b265 filechooserentry: Connect to draw event 2010-09-26 15:11:40 +02:00
Benjamin Otte
8f2fdec7d6 colorbutton: Connect to draw event 2010-09-26 15:11:40 +02:00
Benjamin Otte
5f771c8a9f notebook: Connect to draw signal 2010-09-26 15:11:40 +02:00
Benjamin Otte
c54968e964 tooltip: Connect to draw signal 2010-09-26 15:11:40 +02:00
Benjamin Otte
bec11c352d toolitemgroup: Connect to draw signal 2010-09-26 15:11:40 +02:00
Benjamin Otte
a4bbe4da10 assistant: Port to draw vfunc 2010-09-26 15:11:39 +02:00
Benjamin Otte
b0c5302115 trayicon: Port to draw vfunc 2010-09-26 15:11:39 +02:00
Benjamin Otte
1b9f793311 window: Port to draw vfunc 2010-09-26 15:11:39 +02:00
Benjamin Otte
15f48a818d window: Remove hack to set background
I can't see this having any effect in current code, but who knows...
2010-09-26 15:11:39 +02:00
Benjamin Otte
67299ed106 expander: Port to draw vfunc 2010-09-26 15:11:39 +02:00
Benjamin Otte
e63d6dd379 frame: Port to draw vfunc 2010-09-26 15:11:39 +02:00
Benjamin Otte
fac27827c4 frame: Remove unneeded is_drawable() check 2010-09-26 15:11:39 +02:00
Benjamin Otte
ff97485695 API: checkbutton: Port to draw vfunc
Requires changing the API of the draw_indicator vfunc.
2010-09-26 15:11:39 +02:00
Benjamin Otte
be8a398bb5 radiobutton: Remove redundant is_drawable() check 2010-09-26 15:11:39 +02:00
Benjamin Otte
70bdbb3f4c checkbutton: Remove redundant is_drawable() check 2010-09-26 15:11:39 +02:00
Benjamin Otte
66bd7c1578 checkbutton: Remove excessive is_drawable() check 2010-09-26 15:11:39 +02:00
Benjamin Otte
6a0c31143f handlebox: Port to draw vfunc 2010-09-26 15:11:39 +02:00
Benjamin Otte
2e53b58b01 handlebox: Simplify painting code 2010-09-26 15:11:39 +02:00
Benjamin Otte
08d05f954d handlebox: Don't draw outside of expose events
We do a queue_draw() via queue_resize() here, so everything's fine.
2010-09-26 15:11:39 +02:00
Benjamin Otte
748d3d612d button: Port to draw vfunc
Also port togglebutton, they use the same paint function.
2010-09-26 15:11:39 +02:00
Benjamin Otte
e0be884297 button: Remove is_drawable() check
It's already done in the expose function
2010-09-26 15:11:39 +02:00
Benjamin Otte
ee15f5aab1 tearoffmenuitem: remove is_drawable() check 2010-09-26 15:11:39 +02:00
Benjamin Otte
c9c9d2ac15 API: checkmenuitem: Port to draw vfunc
Requires changing the draw_indicator vfunc to take a cairo_t.
2010-09-26 15:11:39 +02:00
Benjamin Otte
79477e097d tearoffmenuitem: Port to draw vfunc 2010-09-26 15:11:39 +02:00
Benjamin Otte
557b9d0b26 tearoffmenuitem: Don't clear the window, it should be clear already 2010-09-26 15:11:38 +02:00
Benjamin Otte
d992df0a47 tearoffmenuitem: Merge paint() into expose() 2010-09-26 15:11:38 +02:00
Benjamin Otte
6f6c81e527 menuitem: Remove is_drawable() check 2010-09-26 15:11:38 +02:00
Benjamin Otte
475f96216d menuitem: Port to draw vfunc 2010-09-26 15:11:38 +02:00
Benjamin Otte
e6d1c8aeab menuitem: Move paint function into expose function 2010-09-26 15:11:38 +02:00
Benjamin Otte
1f640d127e combobox: Port to draw vfunc 2010-09-26 15:11:38 +02:00
Benjamin Otte
fe4c61b1ec eventbox: Port to draw vfunc 2010-09-26 15:11:38 +02:00
Benjamin Otte
d17ba1d30a eventbox: Merge paint function into expose function 2010-09-26 15:11:38 +02:00
Benjamin Otte
ce2d6cc015 scrolledwindow: Port to draw vfunc 2010-09-26 15:11:38 +02:00
Benjamin Otte
5eabd8c6fa scrolledwindow: Move paint function into expose handler
Also remove the is_drawable() check. It will not be needed once we have
the draw vfunc.
2010-09-26 15:11:38 +02:00
Benjamin Otte
8af968946f viewport: No need to check if the widget is drawable anymore 2010-09-26 15:11:38 +02:00
Benjamin Otte
bf8df2daea viewport: Port to draw vfunc 2010-09-26 15:11:38 +02:00
Benjamin Otte
4a23b12911 viewport: Pass sizes explicitly to paint functions 2010-09-26 15:11:38 +02:00
Benjamin Otte
e087fe7e99 viewport: Merge gtk_viewport_paint() into expose function 2010-09-26 15:11:38 +02:00
Benjamin Otte
01a1e16dcf viewport: Don't paint stuff in realize handler 2010-09-26 15:11:38 +02:00
Benjamin Otte
f383e1f183 notebook: Port to draw vfunc 2010-09-26 15:11:38 +02:00
Benjamin Otte
21099d31ed notebook: The drawable check is not necessary
Large patch, but that's only indentation.
2010-09-26 15:11:38 +02:00
Benjamin Otte
fadf269a36 notebook: Draw tabs and arrows with Cairo
Includes a fix to only draw the current page once during a drag
operation.
2010-09-26 15:11:38 +02:00
Benjamin Otte
ad030e1696 notebook: Simplify draw_tab function a bit
Don't keep lots of local variables that are only used once.
2010-09-26 15:11:38 +02:00
Benjamin Otte
806bcb10ff notebook: remove check for is_drawable
When we reach that code, the widget will always be drawable
2010-09-26 15:11:37 +02:00
Benjamin Otte
c46ce97145 notebook: Reorder expose function in preparation of draw vfunc 2010-09-26 15:11:37 +02:00
Benjamin Otte
f94ff0b3b9 notebook: Use a for loop when iterating over a list 2010-09-26 15:11:37 +02:00
Benjamin Otte
468e453a31 notebook: Draw focus when drawing tab
Instead of using a special function, draw the focus of a tab when the
tab actually is painted. Simplifies the code quite a bit.
2010-09-26 15:11:37 +02:00
Benjamin Otte
a5e487846a notebook: Remove useless optimization
It will become especially useless once we draw with Cairo exclusively.
2010-09-26 15:11:37 +02:00
Benjamin Otte
1c94efc921 paned: Port to draw vfunc 2010-09-26 15:11:37 +02:00
Benjamin Otte
f2d7e6c8d4 infobar: Port to draw vfunc 2010-09-26 15:11:37 +02:00
Benjamin Otte
299d533376 statusbar: Port to draw vfunc 2010-09-26 15:11:37 +02:00
Benjamin Otte
782af63273 layout: Port to draw vfunc 2010-09-26 15:11:37 +02:00
Benjamin Otte
8fc35150a2 iconview: Port to draw vfunc 2010-09-26 15:11:37 +02:00
Benjamin Otte
c8b16f66b6 iconview: Check if the cr is clipped instead of using region 2010-09-26 15:11:37 +02:00
Benjamin Otte
ab781bd89b iconview: Simplify rubberband drawing 2010-09-26 15:11:37 +02:00
Benjamin Otte
0d6461714b menu: Port to draw vfunc 2010-09-26 15:11:37 +02:00
Benjamin Otte
240ca0bb21 menubar: Port to draw vfunc 2010-09-26 15:11:37 +02:00
Benjamin Otte
00375c7692 textview: Port to draw vfunc 2010-09-26 15:11:37 +02:00
Benjamin Otte
9daab81ab5 separatortoolitem: Port to draw vfunc 2010-09-26 15:11:37 +02:00
Benjamin Otte
818005f3fe toolbar: Port to draw vfunc 2010-09-26 15:11:37 +02:00
Benjamin Otte
9a8c9d6579 toolbar: Don't propagate events to placeholders
In particular don't when that's done using uninitialized memory
2010-09-26 15:11:36 +02:00
Benjamin Otte
a18ec3485c toolpalette: Port to draw vfunc 2010-09-26 15:11:36 +02:00
Benjamin Otte
f525837e39 treeview: Port to draw vfunc 2010-09-26 15:11:36 +02:00
Benjamin Otte
327a04807e treeview: Update rubberbanding code to Cairo 2010-09-26 15:11:36 +02:00
Benjamin Otte
bf3b4438bb treeview: Do not put different windows in else if branches anymore 2010-09-26 15:11:36 +02:00
Benjamin Otte
f679516ce1 treeview: Use Cairo for all bin window drawing 2010-09-26 15:11:36 +02:00
Benjamin Otte
62f5fdc856 treeview: Invalidate on expander changes, don't just repaint
Repaints are supposed to be initiated by GDK, not by random repaints.
2010-09-26 15:11:36 +02:00
Benjamin Otte
bc1cd6c5cb treeview: Draw empty tree view with Cairo 2010-09-26 15:11:36 +02:00
Benjamin Otte
0cbe62f943 API: Add gtk_container_propagate_draw()
Equivalent to gtk_container_propagate_expose(), just for the draw event.
Also port GtkContainer to the draw vfunc
2010-09-26 15:11:36 +02:00
Benjamin Otte
90379ed68a widget: Store the expose event in the cairo_t, not just the window
This way we can grab it for propagating expose events. Not sure if we
need to do this once we're all Cairo, but for now we do.
2010-09-26 15:11:36 +02:00
Benjamin Otte
fb4ba51d44 accellabel: Port to draw vfunc 2010-09-26 15:11:36 +02:00
Benjamin Otte
4aefc82496 label: Port to draw vfunc 2010-09-26 15:11:36 +02:00
Benjamin Otte
2e75cecd49 scale: Port to draw vfunc 2010-09-26 15:11:36 +02:00
Benjamin Otte
e605272436 range: Port to draw vfunc 2010-09-26 15:11:36 +02:00
Benjamin Otte
745f110814 range: Make drawing use a single cairo context 2010-09-26 15:11:36 +02:00
Benjamin Otte
1d5796c95b arrow: Port to draw vfunc 2010-09-26 15:11:35 +02:00
Benjamin Otte
9233a08991 calendar: Port to draw vfunc 2010-09-26 15:11:35 +02:00
Benjamin Otte
725749cd14 calendar: Fix drawing order for windows 2010-09-26 15:11:35 +02:00
Benjamin Otte
02572cdf7e calendar: Create one cairo_t per expose event and pass it around 2010-09-26 15:11:35 +02:00
Benjamin Otte
ed996bcd68 cellview: Port to draw vfunc 2010-09-26 15:11:35 +02:00