Alexander Butenko
08dab16bc2
Refactoring of bookmarks add functions
2010-06-26 17:24:53 +02:00
Alexander Butenko
3eea7c933d
Reimplement bookmarkbar with sqlite
2010-06-26 17:08:31 +02:00
Alexander Butenko
2ec272eb96
Rip the old bookmarkbar out of the browser
2010-06-26 16:46:14 +02:00
Peter de Ridder
a84a077ac8
Implement default configuration files on Windows
2010-06-26 16:02:49 +02:00
Christian Dywan
f14152fe17
Don't hardcode toolbar icon style on Windows
2010-06-24 22:37:12 +02:00
Christian Dywan
eec5359cf5
Don't clear bindings of an erroneous sqlite statement
...
This is not safe and can cause a crash.
2010-06-23 02:12:56 +02:00
Christian Dywan
e200f2cb3e
Hide panel if a panel was activated that's already shown
...
Also default hotkeys for History And Transfers.
2010-06-21 22:47:52 +02:00
Christian Dywan
bc6849494d
Add 'Open in New Window' to page context menu
...
While we're at it, the label of the according tab menu item
should be the same.
2010-06-21 22:19:59 +02:00
Christian Dywan
f5604f290c
Refactor findbar into MidoriFindbar
...
The findbar still depends on the browser for knowing when to
search and to propagate focus. Behaviour did not change.
2010-06-21 01:53:08 +02:00
Alexander Butenko
053048d05e
Fixed handling of bookmark meta data
...
sqlite doesn't store negative value but rather 0 and 1, so we
work with these values now. As a side effect it makes the code
easier to read.
2010-06-19 16:23:49 +02:00
Christian Dywan
22cd35be6f
Fix typo of sokoke_gtk_action_count_modifier/s
...
Oddly enough the compiler failed to complain that the
function had no definition/ prototype.
2010-06-19 15:17:34 +02:00
André Stösel
6556d71273
Add sokoke_gtk_action_count_modifiers helper function
2010-06-19 00:32:58 +02:00
Christian Dywan
fa08c4d1f9
Refactor transferbar into MidoriTransferbar
...
The transferbar is separated from the browser, albeit it is still
created and filled from within the browser so it is not completely
independent.
The new class now keeps a list of TransferInfo items to keep track
of transfers and queries the status from the download object.
Destroying a button belonging to a transfer is connected to
removing it from the list and cleaning up the info structure. Also
the Clear button is updated from the destroy handler.
2010-06-17 20:17:21 +02:00
Alexander Butenko
f55377e7f3
Fix selecting a directory while adding a new bookmark
...
Allow folders to be removed
2010-06-17 00:12:17 +02:00
Alexander Butenko
09d9615964
Refresh bookmark sidebar on new items
2010-06-17 00:02:10 +02:00
Alexander Butenko
954939fdd1
Use extra attributes of a bookmark
2010-06-16 23:30:56 +02:00
Alexander Butenko
5af37f6c92
Fix edit/ delete/ new operations on bookmarks
2010-06-16 23:27:59 +02:00
Alexander Butenko
6f415c4e6e
Import bookmarks from bookmarks.xbel on the first start.
...
The bookmark handling in main is not needed any more.
2010-06-16 23:17:51 +02:00
Alexander Butenko
87ac3ae563
Initial sqlite read support
...
We go back to GtkTreeStore rather than a custom class.
2010-06-16 20:55:37 +02:00
Christian Dywan
1676fcc217
Confirm before overwriting in Save As dialogue
2010-06-11 22:52:51 +02:00
Christian Dywan
61add83eeb
Iterate links and anchors for next/ previous labels
2010-06-11 21:36:18 +02:00
Christian Dywan
61c5514c1c
Remove toolbar menu items from the compact menu
2010-06-10 17:54:44 +02:00
Christian Dywan
ff6fec6367
Use g_file_set_contents to save 'config' with a temporary file
...
If the filesystem runs out of space and Midori tries to save
the 'config' file under that condition, the file is lost. To
avoid that, we use g_file_set_contents which writes a temporary
file first, at the cost of destroying symbolic links.
2010-06-10 17:54:44 +02:00
Christian Dywan
fd2e0b7aed
Implement MIDORI_UNARMED variable for 'dry run'
2010-06-07 22:01:41 +02:00
Christian Dywan
4aebdad671
Enable encoding action at compilation time
2010-06-07 22:01:41 +02:00
Christian Dywan
dcf1bb5356
Always add blank pages without delay
2010-06-06 23:52:55 +02:00
Christian Dywan
997d8df49c
Ensure the web view of the thumb view is realized
2010-06-05 00:50:06 +02:00
Christian Dywan
57b05a458e
Replace {enter_dial_size}, not {enter_dial_width}
2010-06-03 22:21:55 +02:00
Peter de Ridder
4422f640cb
Combined speed dial resize and thumbnail sizes
2010-06-02 02:09:43 +02:00
Christian Dywan
fa4de7b723
Connect view *after* mime-policy-decision-requested
...
In order to allow extensions to override the MIME handling,
we need to be late in the order.
2010-06-01 22:19:11 +02:00
Tsahee Zidenberg
ea7e627e3b
Implement loading delayed pages at startup
...
Each view has a meta value 'delay' which indicates whether it be
loaded or needs to be loaded manually before it shows content.
One way to trigger this is that Midori crashes and if it is
configured to 'Show last open tabs', all tabs will now be
delayed. To allow Midori to safely open without crashing again.
The other way is to change the 'Load on Startup' preference to
'Show last tabs without loading'. This causes all tabs restored
from the session to be delayed.
One interesting aspect is that it is possible to have delayed
tabs, use 'Show last open tabs' and tabs will remain as they are,
so delayed tabs will be delayed over following sessions.
2010-06-01 00:12:30 +02:00
Christian Dywan
c2be3d67cf
Recognize more characters as next page and be more tolerant
2010-05-26 22:48:33 +02:00
Christian Dywan
dc047272d7
Always bring the inspector window in the foreground
2010-05-25 22:24:41 +02:00
Christian Dywan
c571a6394f
Don't pass around KatzeNet instances anymore
...
The KatzeNet is always a singleton, no need to pass it around.
2010-05-25 19:03:01 +02:00
Christian Dywan
59926ad492
Verbosely explain how to use news feed URI
2010-05-25 18:32:56 +02:00
Christian Dywan
8cb761239f
Show dialog if quitting while files are being downloaded
2010-05-23 01:09:40 +02:00
Christian Dywan
6c4d94942f
Render stock:// as pixbufs and pass as data URIs
...
Stock icons do not match filenames in many icon themes and the
appropriate sizes may not be available. Thus we now always
render the icon through the theme engine and encode it as a
data URI with BASE64/ PNG.
As a side effect, we use stock sizes now instead of pixel sizes,
where 1 means menu size, 4 means button size and 6 dialog size;
the value 16 is translated to 4 to keep existing files working.
2010-05-21 02:23:15 +02:00
Christian Dywan
62cafb87b2
Deprecate midori_viewable_new_from_uri and _register_protocol
...
These facilities haven't been used and likely won't be.
2010-05-21 01:07:25 +02:00
André Stösel
7753db46e0
Pass the frame to midori_view_load_alternate_string
...
The frame where an error occurs may not be the main frame, and
coincidentally there is a race condition where the main frame
isn't valid, so this actually reolves a crash.
2010-05-20 23:21:55 +02:00
Peter de Ridder
84d4865e22
Allow custom shortcut and column count in speed dial
2010-05-19 00:58:03 +02:00
Christian Dywan
01548549a8
Rename midori_browser_get/set_current_tab to get/set_tab
2010-05-19 00:18:31 +02:00
Christian Dywan
a69ba674b1
Add 'Add to Speed Dial' button to 'Add bookmark'
2010-05-19 00:18:31 +02:00
Peter de Ridder
486ebfb930
Check user data dir first for resource files
2010-05-16 17:57:41 +02:00
Christian Dywan
be0fe03eee
Refactor error display into midori_view_display_error
...
Further more midori_view_load_alternate_string now abstracts the
different ways to load data in different WebKitGTK+ versions.
2010-05-16 02:02:09 +02:00
Christian Dywan
dfddd7ce0a
Leave panel icon styles to the system settings
2010-05-13 16:53:19 +02:00
Christian Dywan
9241afa0db
Implement FTP support in External Applications
...
For the moment 'gftp' is hardcoded for ftp://.
2010-05-13 01:06:58 +02:00
Christian Dywan
969c225c3b
Add Midori.View to midori.vala description
2010-05-12 23:52:39 +02:00
Christian Dywan
4027fdfcd4
Use grouped bit fields in MidoriWebSettings
...
One settings instance needs only about half the memory
when using bit fields with exact sizes.
2010-05-12 23:37:26 +02:00
Christian Dywan
d522efa23c
Hide the tab label properly if it's minimized initially
2010-05-09 00:30:24 +02:00
Christian Dywan
3b9a4a5705
Hide the tab label if it's minimized at creation
2010-05-09 00:27:02 +02:00
Christian Dywan
6442b34b89
Use the basename of the suggested download name
...
Sometimes the suggested name contains a folder name.
2010-05-09 00:25:22 +02:00
Christian Dywan
cd54d23dbe
Take care to avoid overwriting files accidentally
...
When a file needs to be saved in a specific location, ask
whether to overwrite or not. And if a file is saved
implicitly, append a number if the filename exists.
2010-05-08 03:38:07 +02:00
Christian Dywan
743b264a72
Rework rendering of raw XML as source
...
We need to be stricter with what counts as raw XML, for instance
not SVG images. And we shouldn't break explicit source view.
2010-05-07 20:31:41 +02:00
Christian Dywan
fb72bcfeae
Unify content type/ MIME type handling and plug leak
2010-05-07 20:17:53 +02:00
Christian Dywan
affde90e2c
Consistently focus the view, which propagates
...
Rather than trying to determine and focus the web view
from different places, the parent view should simply
propagate focus by default. The child needs to be
constructed implicitly if focus comes in early.
2010-05-06 22:49:47 +02:00
Christian Dywan
4b94b63f70
Base KatzeThrobber on GtkSpinner if available
2010-05-02 16:11:18 +02:00
Christian Dywan
001d9e463a
Rely on WebKitWebView::icon-uri for icon discovery
2010-05-02 12:19:37 +02:00
Arno Renevier
7c0e58a835
Refactor userscripts and userstyles as an extension
2010-05-02 11:53:05 +02:00
Christian Dywan
f24bc315e2
Update FAQ link used for Help > Frequent Questions
2010-05-01 03:12:03 +02:00
Christian Dywan
e7f04272cd
Check free space before trying to download
2010-04-30 23:52:33 +02:00
Christian Dywan
efa81643c5
Expose midori_view_populate_popup for use in extensions
2010-04-29 02:19:20 +02:00
Christian Dywan
a25e4c5f0a
Add gtk_widget_get_window and fix gtk_dialog_get_content_area
2010-04-28 23:57:22 +02:00
Christian Dywan
7a7f4c6a44
Provide midori.vapi for App, Browser, Extension and WebSettings
...
With this API description extensions can be written in Vala. Mind
it is not complete yet, missing interfaces can be added later.
2010-04-27 23:49:45 +02:00
Christian Dywan
4576360ec3
Implement midori_browser_get_settings in MidoriBrowser
2010-04-27 23:36:14 +02:00
Christian Dywan
64b6f6ce6d
Implement midori_app_get_browser in MidoriApp
2010-04-27 22:34:26 +02:00
Christian Dywan
7044bb70c4
Expose tabs in MidoriBrowser as GList
2010-04-25 23:39:00 +02:00
Christian Dywan
102810842f
Expose browsers in MidoriApp as GList
2010-04-25 23:39:00 +02:00
Christian Dywan
9d3c884194
Implement midori_browser_get_proxy_items
...
This supersedes midori_browser_get_proxy_array as a means to
access the KatzeItem* items. The new name is clearer.
2010-04-25 23:38:59 +02:00
Christian Dywan
d2d5086e3b
Unset save file dialog when it is destroyed
...
If the window manager closes the dialogue rather than one of the
buttons, it is destroyed implicitly.
2010-04-25 00:57:21 +02:00
Christian Dywan
34984c7ac1
Fix gtk_widget_set_no_show_all and g_filename_to_uri calls
2010-04-23 00:02:46 +02:00
Christian Dywan
0d4b041de3
Security with background color and secondary icon
2010-04-21 02:47:21 +02:00
Christian Dywan
aaf0d4b395
Guards around midori_browser_add_download_item
...
The function is guarded already but of course the declaration
needs to be guarded as well.
2010-04-20 21:38:02 +02:00
Christian Dywan
999af1d164
Fix use of priv in GtkIconEntry code
2010-04-17 01:42:09 +02:00
Christian Dywan
aade642897
Conditionalize SSL validation on libsoup 2.29.91
...
The flag in the SoupMessage to verify secure connections is
only available in recent versions of libsoup. So we continue
to be oblivious to certificates with older versions.
2010-04-14 22:41:24 +02:00
Christian Dywan
2507f971ca
Validate SSL against root certificates
...
If one of two known root certificate files is available, we
enable certificate validation, otherwise a warning is emitted.
Not using validation means that we trust any certificate. We
should consider doing the opposite.
The new property MidoriView:security is set during load
and indicates the security status. midori_view_get_security can
be used to determine the status later on.
midori_location_action_set_security_hint is implemented to
present security status visually. For now, this only changes
the icon, we need to find a more visible solution.
MidoriBrowser updates the security hint for the current view in
_midori_browser_update_interface.
2010-04-14 04:20:56 +02:00
Christian Dywan
b4a7bb928b
Use view source mode for XML that isn't XHTML
2010-04-14 03:55:19 +02:00
Christian Dywan
586469fa73
Only hide find implicitly if invoked by typing, . or /
2010-04-14 03:55:19 +02:00
Christian Dywan
2ba9b1b65f
Remove bookmark, open and image in window from Link context menu
2010-04-14 03:55:18 +02:00
Christian Dywan
f71e86d879
Update copyright in --version and about dialogue
2010-04-10 00:58:15 +02:00
Christian Dywan
130eb0e46a
Make the license in the about dialogue localizable
2010-04-10 00:58:15 +02:00
Christian Dywan
1cdd7cc643
Add an i18n comment for Clear Private Data dialog
...
Since there is a button with the same wording, it is good to
point out the difference.
2010-04-08 23:54:25 +02:00
Christian Dywan
5146e5182c
Add an explaining i18n comment for 'Reset Midori...'
2010-04-08 23:51:52 +02:00
Christian Dywan
b389c5bcde
Refer to regular expression as PATTERN like grep
2010-04-08 23:27:04 +02:00
Christian Dywan
51b1f87400
Reindent author and license definitions
2010-04-04 21:38:16 +02:00
Christian Dywan
82ee513a96
Reindent entries, toggle_entries, encoding_entries
2010-04-04 21:38:16 +02:00
Christian Dywan
23b093a248
Reindent actions in Tools menu in MidoriBrowser
2010-04-04 21:38:16 +02:00
Christian Dywan
2b66adabf2
Reindent ui_markup definition in MidoriBrowser
2010-04-04 21:38:16 +02:00
Christian Dywan
bde7495e6c
Implement -b, --blocked-uris command line option
...
Using a regular expression of blocked URIs makes it possible to
restrict the locations that can be visited. Any URI matching
the expression will be replaced with "http://.invalid ".
The option works in --app and normal mode.
2010-04-04 01:43:56 +02:00
Christian Dywan
e886293ebf
Implement 'Proxy type' preference which can be Auto, HTTP or None
2010-04-02 20:41:39 +02:00
Christian Dywan
476f64e9bc
Pass the correct parent in the web-view-ready callback
...
This was overlooked when changing the packing of the view.
2010-04-02 19:14:22 +02:00
Christian Dywan
f2f0f16dd2
Update uses of deprecated GTK+ macros and API
2010-04-02 18:54:29 +02:00
Christian Dywan
12b4859dc7
Use gtk_widget_get_visible rather than GTK_WIDGET_VISIBLE
2010-04-02 18:38:56 +02:00
Christian Dywan
2f1ae3feba
Make use of the XScreenSaver extension optional
...
The extension is only needed for the --inactivity-reset option,
so most users building Midori won't need it.
We also need to check for the according header file.
2010-04-01 18:25:30 +02:00
Christian Dywan
37e2216775
Implement -i, --inactivity-reset command line option
...
The use case is kiosk systems where leaving the application
idle for a period of time means that the user left, and the
session is reset so the next user starts off clean.
The implementation uses libXss and uses XScreenSaverQueryExtension
which means it is for now supported on X11 only.
Right now reset means closing any opens web pages and opening
the original web page.
Currently --inactivity-reset is only supported with --app.
2010-04-01 00:05:08 +02:00
Christian Dywan
832b2e9922
Change remaining GET_PRIVATE to priv in GtkIconEntry
2010-03-31 21:02:37 +02:00
Christian Dywan
67b9fc013a
Use priv instead of GET_PRIVATE in GtkIconEntry
2010-03-31 19:05:17 +02:00
Arno Renevier
c3238d7c12
Change MidoriView into a subclass of GtkVBox
...
This change makes it possible to pack widgets, notably info bars,
into a MidoriView.
2010-03-31 00:18:42 +02:00
Arno Renevier
3e67ce525f
Implement midori_view_get_web_view function
...
This provides access to the child web view even if we change
the internal packing of MidoriView.
2010-03-31 00:18:41 +02:00
Enrico Tröger
05488d8bd3
Filter keyboard state against modfifier default mask
...
The modifier state does in fact incorporate modal keys such as
NumLock. So code assuming that state be 0 if no modifier is
pressed is wrong, if NumLock, CapsLock and the like are active.
The solution is to filter out these modal keys with
gtk_accelerator_get_default_mod_mask(), and compare the result.
This fixes the problem of being unable to type keys used as
single-letter shortcuts.
2010-03-30 01:05:36 +02:00
Christian Dywan
fdf075513c
Don't propagate key events more than once
...
This fixes problems with dead keys used to type accented letters.
2010-03-26 20:48:33 +01:00
Dale Whittaker
3f8b34853d
Update year in Copyright headers
2010-03-25 23:06:38 +01:00
Dale Whittaker
ff63a5f7bd
Wrap the location completion in a GtkFrame
...
That's what GtkEntryCompletion does as well, so it gives our
completion consistent appearance.
2010-03-24 23:26:51 +01:00
Christian Dywan
a15c70ec61
Add behavior preference 'Allow scripts to open popups'
2010-03-23 20:52:06 +01:00
Christian Dywan
9587fde97b
Spawn new apps with the original executable name
...
Opening a web app or private mode should open Midori from the
same executable it was originally opened with.
2010-03-22 02:55:10 +01:00
Christian Dywan
3682b7755e
Clarify MidoriApp signal documentation
2010-03-19 20:16:48 +01:00
Christian Dywan
b4a18b2aef
Only print error if completion actually failed
2010-03-18 23:26:45 +01:00
André Stösel
555f7a57e4
Implement sokoke_resolve_hostname
...
sokoke_prefetch_uri is extended take a callback and user data.
sokoke_resolve_hostname is implemented for resolving hostnames
based on a maximum timeout.
sokoke_magic_uri resolves localhost and uris with a / to verify
if there is a local domain, otherwise falls back to search.
Thanks to Andy Kittner <andkit@gmx.de> for input on proceeding
the event loop while resolving asynchronously.
2010-03-17 02:20:58 +01:00
Christian Dywan
ba7f73891f
Also update icon URI when a new icon was loaded
2010-03-16 00:26:38 +01:00
Samuel Creshal
f4b4c53166
Always pass view pointer to icon callback
2010-03-15 17:45:00 +01:00
Samuel Creshal
b10b311b07
Don't overwrite uri in _action_location_secondary_icon_released
2010-03-13 19:58:06 +01:00
Christian Dywan
25bbea02e2
Use a boolean 'special' to identify special pages
...
We used to load special pages, such as error pages as 'blank'
pages internally and try to identify them indirectly. This
breaks navigating back to and forward to such pages and makes
it difficult to allow stock icons for them.
Now a boolean 'special' is used which is reset on any
navigation attempt and any finished load. It is set only
if a special page is loaded.
This should make icons in error pages work reliably.
2010-03-13 16:46:45 +01:00
Christian Dywan
c7ee74610e
Normally reload error pages with WebKitGTK+ 1.1.14
...
For older versions we used a workaround for reloading
special pages like error pages. This is not needed
with recent versions of WebKitGTK+.
2010-03-13 15:07:02 +01:00
André Stösel
283005e217
Implement and use sokoke_recursive_fork_protection
...
As Midori may call external tools to open URIs it cannot handle,
and at the same time Midori is commonly the default browser,
this can end in recursion when the external tool also calls Midori.
See the description of sokoke_recursive_fork_protection().
2010-03-12 23:31:14 +01:00
Christian Dywan
b5f8334360
Merge KatzeNet icon loading into MidoriView
...
MidoriView is the only place where icons are and should be
loaded, elsewhere we just use cached icons.
midori_view_get_icon_uri allows distinguishing whether a view
has an icon or a default icon, and using the filename.
2010-03-11 23:30:54 +01:00
Christian Dywan
e69ee84b6b
Cancel completion if we don't have an entry
2010-03-06 19:18:09 +01:00
Christian Dywan
e7005abd55
Bail out of Export if no bookmarks or hidden
2010-03-06 19:16:52 +01:00
Christian Dywan
cf6cffe2bc
Relate completion height to browser window height
...
To prevent the completion from obscuring other windows, it will
relate to 2/3 of the browser window and screen height respectively.
2010-03-05 00:02:07 +01:00
Christian Dywan
6ae3633dce
Always append tabs added from a loaded session
...
We shouldn't honor user preferences for new tabs when loading
the session. Rather we append in the order they were saved in.
This is currently a hack. In the future we should consider
public API additions to insert tabs in a particular order.
2010-03-04 02:08:49 +01:00
Christian Dywan
044f1f96fb
Only middle click search if the selection contains :// or Alt
...
Accidentally searching is annoying. Presumably when a proper
address is selected it was intentional.
2010-03-03 00:31:35 +01:00
Christian Dywan
100eea41da
Implement "Export bookmarks" menu item to export to XBEL
2010-03-02 23:58:17 +01:00
Christian Dywan
fe203524fe
Implement Scroll actions, defaulting to Vim direction keys
2010-03-01 00:24:46 +01:00
Christian Dywan
3f886f7153
Include previous searches in History panel items
2010-03-01 00:24:46 +01:00
Christian Dywan
de89bcd2dc
Store searches and completion search in the location
2010-02-25 00:44:25 +01:00
Alexander Butenko
458c5109be
Dupe OS type for ident string before using it
2010-02-22 19:03:45 +01:00
Alexander Butenko
f3f53db4d7
Fallback to the first browser if one is closed
...
We need to keep one browser as the default for commands
and opening files externally.
2010-02-22 19:03:45 +01:00
Christian Dywan
679ecf5d84
Don't override small toolbar icon size
...
The hack was originally meant to fix themes with no proper
small icons, but it doesn't really help in most cases.
2010-02-22 14:23:20 +01:00
Christian Dywan
7cf326a338
Always use Icons only for panel toolbar
2010-02-21 18:03:27 +01:00
Christian Dywan
7580ecad8e
Omit micro version and arch from ident string
2010-02-20 22:31:58 +01:00
Christian Dywan
142dc432ca
Use content_area instead of GtkDialog->vbox in browser
2010-02-19 19:05:29 +01:00
Alexander Butenko
e94edca766
Use the correct completion model and no static
...
Since the model was a static variable and only set when the
popup was created, we ended up using an obsolete model in
case multiple windows were opened and closed.
As a small optimization we don't need to retrieve the database
pointer except when compiling the statement initially.
2010-02-19 18:55:16 +01:00
Christian Dywan
10591640d1
Re-implement 'Recently visited pages' based on sqlite
2010-02-19 00:34:39 +01:00
Christian Dywan
f3f9dd2b3f
Be sure to save outstanding changes to the config on quit
...
We intentionally set a timeout before saving changes to avoid
continuous disc access and also in case opening or closing a tab
results in an immediate crash or freezing.
But closing Midori normally should save outstanding changes.
2010-02-17 23:19:16 +01:00
Peter de Ridder
aef84bfa02
Look for MidoriView resource files dynamically
2010-02-16 00:59:43 +01:00
Peter de Ridder
4774e35932
Look for user documentation dynamically on win32
2010-02-16 00:59:43 +01:00
Peter de Ridder
c90344ac44
Look for extensions relative to program folder on win32
2010-02-16 00:59:42 +01:00
Peter de Ridder
f4b2111b40
Implement sokoke_show_uri on top of explorer for win32
2010-02-16 00:59:42 +01:00
Christian Dywan
902f836810
Improve and optimize sokoke_uri_to_ascii to parse about:version
2010-02-12 02:08:05 +01:00
Christian Dywan
f19412bc70
Pass action to cell renderer callback rather than the entry
...
The entry pointer is only meaningful if completion was triggered
by typing or editing in an entry.
We shouldn't render a key in results if the arrow button opened the
completion popup.
We need to check the key in the callback to avoid accidentally
working with an entry of a different window.
2010-02-12 00:36:59 +01:00
Alexander Butenko
f733f453d2
Clear history via sqlite if selected in 'Clear private data' dialog
2010-02-11 23:24:28 +01:00
Christian Dywan
de12aa0078
Revise completion key handling to directly pass or compute the key
2010-02-11 01:57:42 +01:00
Christian Dywan
f494ec090b
Handle external, magic URIs from command line consistently
2010-02-11 00:28:49 +01:00
Christian Dywan
532e84ea4f
Set consistent flags on all properties of MidoriWebSettings
2010-02-10 23:37:33 +01:00
Christian Dywan
713091134f
Handle search engines in MidoriBrowser and simplify sokoke_magic_uri
2010-02-10 19:52:12 +01:00
Christian Dywan
0243e26bed
Only split URI if no domain pattern is found in the string
2010-02-10 19:52:11 +01:00
Christian Dywan
060c0b6940
Use strncmp instead of g_str_has_prefix to optimize sokoke_magic_uri
2010-02-10 19:52:11 +01:00
Christian Dywan
ccaf696256
Remove unused KatzeNet instance from MidoriSearchAction
2010-02-10 19:52:11 +01:00
Christian Dywan
e15fe776ed
Don't update the saved window size if it didn't actually change
2010-02-10 19:52:10 +01:00
Christian Dywan
13b1c9462b
Connect config change notifications after creating the first browser
2010-02-10 19:52:10 +01:00
Christian Dywan
2e5c5026bc
Only set config properties which are present in the config file
2010-02-07 17:19:00 +01:00
Christian Dywan
0bf27662c5
Only update location combo arrow if there is a history at all
2010-02-07 17:19:00 +01:00
Christian Dywan
14f0a091f6
Do startup timing if MIDORI_STARTTIME environment variable is set
2010-02-07 17:19:00 +01:00
Alexander Butenko
d7f42c5d72
Fix check whether we have the latest database structure
2010-02-04 22:16:01 +01:00
Alexander Butenko
4461a16a79
Refactor location completion queries to use prepared statements
2010-02-04 22:07:30 +01:00
Alexander Butenko
db334e2921
Switch to prepared statements when adding/ updating history
2010-02-04 22:07:16 +01:00
Alexander Butenko
5887067e73
Show the combo arrow if the history table contains any rows
2010-02-04 03:30:09 +01:00
Christian Dywan
af94855fee
Render search actions as one line without address
2010-02-04 03:11:52 +01:00
Alexander Butenko
c273d6c73a
NULL check the key before rendering suggestions
2010-02-04 02:44:30 +01:00
Christian Dywan
4d05be6a5e
Do allow internal icons for views with an unreachable URI
2010-02-03 22:18:51 +01:00
Alexander Butenko
42a29682e6
Store visited pages in the history again
2010-02-03 22:12:19 +01:00
Christian Dywan
297d38e7d0
Use the correct theme detail for < GTK+ 2.18 entry progress
2010-02-03 18:41:54 +01:00
Christian Dywan
bee4615d10
Render history dates directly without age column or render callback
...
Resurrect sokoke_days_between for calculating age in days.
2010-02-03 01:39:13 +01:00
Christian Dywan
b4a414f371
Load about:blank in private window if URI is empty
2010-02-02 22:29:31 +01:00
Alexander Butenko
57ce6cbe21
Do not populate the history array from sqlite at startup
2010-02-02 21:02:45 +01:00
Christian Dywan
c9c9351ffb
Always enable developer extras regardless of the saved value
2010-02-01 23:55:51 +01:00
Christian Dywan
c056a21d1a
Unconditionally propagae modified user-agent property value
2010-02-01 23:55:51 +01:00
Christian Dywan
24759ec86f
Do not add duplicate Netscape plugins to the extensions
2010-01-31 23:02:31 +01:00
Christian Dywan
41583dc940
Guard pixbuf in location action that is not used with Hildon
2010-01-31 22:29:22 +01:00
Christian Dywan
f5489973f5
Position the suggestion popup, towards the top if below is too narrow
2010-01-31 22:12:58 +01:00
Christian Dywan
4f9d726c55
Merge ident-string setting into user-agent for old and new WebKit
...
Since the existence of two properties causes confusion among users
we merge the two, and actually remove ident-string.
2010-01-31 22:10:24 +01:00
Christian Dywan
b447070d7d
Use new GtkActivatable API in MidoriBrowser
2010-01-31 20:41:30 +01:00
Christian Dywan
cc50c6d58b
Remember whether 'Clear private data when quitting' is enabled
2010-01-31 20:41:30 +01:00
Christian Dywan
5472c5d5df
Fix the order of search engines in the completion
2010-01-30 17:39:32 +01:00
Christian Dywan
a436234edb
Add local storage, database and offline app cache to preferences
2010-01-30 17:26:26 +01:00
Christian Dywan
3441ab45ef
Default local storage, database and offline app cache to disabled
2010-01-30 17:26:03 +01:00
Christian Dywan
c43d887747
Use first search engine if the default is not set
2010-01-30 16:54:38 +01:00
Christian Dywan
3d01b7b0c3
Search engines in completion should have a distinct background
2010-01-30 01:52:22 +01:00
Christian Dywan
1a0573e2f3
Use gtk_widget_is_toplevel if available instead of the macro
2010-01-29 22:54:42 +01:00
Christian Dywan
cc6bb8fddb
Lookup icon size in relation to the according screen or widget
2010-01-29 22:43:39 +01:00
Christian Dywan
37d89d0986
Move declaration in search action icon callback to the top
2010-01-29 21:13:44 +01:00
Christian Dywan
218a05049c
Create and release script context for --run/ -r only when needed
2010-01-29 21:12:14 +01:00
Christian Dywan
32a62a7057
Hide the combobox arrow if the history unset or is empty
2010-01-29 18:54:58 +01:00
Christian Dywan
e5c65a160c
Turn browser action helpers into macros
2010-01-28 23:50:44 +01:00
Christian Dywan
88becdd669
Destroy the thumb_view with WebKitGTK+ <> 1.1.14
2010-01-28 23:28:37 +01:00
Christian Dywan
8c62689981
Initially pressing Up in completion should select the last match
2010-01-28 23:15:49 +01:00
Christian Dywan
ca9420bdfc
Always hide findbar on hotkey if visible, or when it loses focus
2010-01-28 22:35:21 +01:00
Christian Dywan
b947e5d662
Re-implement search engines in the completion
2010-01-28 22:19:00 +01:00
Christian Dywan
7065767a61
Apply scrollbar size hack to get the correct completion height
...
GtkEntryCompletion uses a hack to ensure that the suggestion
popup has the correct height. We do the same now.
2010-01-28 02:25:52 +01:00
Christian Dywan
3a949ac407
Use about:blank as speed dial resource root with WebKitGTK+ 1.1.14
2010-01-27 23:17:15 +01:00
Christian Dywan
38d0022ec8
Do not validate URI or title when rendering completion matches
2010-01-26 22:07:57 +01:00
Alexander Butenko
5fa82189fa
Only show the completion after resizing it properly
...
Showing the completion early on will result in ugly flickering,
curiously not with xfwm4.
2010-01-25 22:10:39 +01:00
Christian Dywan
3bcd5700e1
Prevent the panel buttons from shrinking below minimum width
2010-01-25 21:44:26 +01:00
Christian Dywan
36becf34c8
Re-implement location arrow popup with sqlite
...
All uses of populating filter model, freezing and the hash table
are replaced by populating the combo box model on popup.
2010-01-25 21:44:26 +01:00
Alexander Butenko
4854cfab5d
Use notify-send only as a fallback if libnotify is not available
2010-01-25 21:44:26 +01:00
Christian Dywan
65c56f26a8
Rely on sqlite for completion, otherwise disable it entirely
2010-01-25 01:19:03 +01:00
Christian Dywan
726c7c34e0
Popdown completion if key is empty or there are no matches
2010-01-25 00:06:32 +01:00
Christian Dywan
f0bfc701d9
Correct panel toggle button tooltip to say 'Hide operating controls'
2010-01-24 11:04:17 +01:00
Christian Dywan
82cb12b605
Revise and unitfy behavior modulating modifier handling
...
We define modfifier macros that indicate whether a modifier
indicates a new window, new tab, background tab or scrolling.
Modifier checks in the address entry, the search entry and view
now use the same consistent modifiers.
2010-01-24 11:00:52 +01:00
Alexander Butenko
dc25035e29
Sort completion matches by visits in complete days
2010-01-24 11:00:51 +01:00
Christian Dywan
edc6d6587c
Update Firefox identification to Firefox 3.8
2010-01-21 18:59:34 +01:00
Christian Dywan
3a3fa03bf4
Implement 'Inspect page' menuitem with WebKitGTK+ >= 1.1.17
2010-01-21 18:59:34 +01:00
Christian Dywan
0442113b94
Popdown completion when location text is changed explicitly
...
Programmatic changes are done when adding, closing or switching
the current tab, and that should popdown completion.
2010-01-20 23:20:28 +01:00
Christian Dywan
8aba77a0e9
Allow button handling for selection and context menu in location entry
2010-01-20 23:16:29 +01:00
Christian Dywan
897af36ed5
Revise completion to react on paste/ cursor/ backspace
...
We need to avoid updating the real text afterall, but update it
in the event of a cursor movement.
We also need to trigger completion on backspace or paste.
We need to remove the timer when we popdown completion.
We need to make sure to not show completion for empty text.
2010-01-20 23:11:25 +01:00
Christian Dywan
33d90b247c
Truly update text in location entry to make Home, End and friends work
2010-01-20 21:55:54 +01:00
Christian Dywan
e0a50c47d3
Clicking inside the location entry closes the completion window
2010-01-20 21:34:17 +01:00
Christian Dywan
4110b64ae8
Let hovering completion suggestions select rows
2010-01-20 21:28:44 +01:00
Christian Dywan
0145cb3171
Make clicking completion suggestion actually open the address
2010-01-20 21:25:39 +01:00
Christian Dywan
cabc3f0764
Fill in address if clicked on completion suggestion
2010-01-20 07:48:34 +01:00
Christian Dywan
0795c4f13c
Add #define for gtk_widget_has_focus for GTK+ < 2.18
2010-01-20 07:11:20 +01:00
Christian Dywan
04f953dc0d
Don't trigger completion on control characters
2010-01-19 07:11:51 +01:00
Alexander Butenko
4b35435c2c
Order completion matches by most recent visit, ascending
2010-01-19 06:42:21 +01:00
Alexander Butenko
5bf92be622
Don't show completion if the entry already lost focus
2010-01-19 06:34:53 +01:00
Alexander Butenko
b5a23cec3a
Show completion popup only after resizing the columns
2010-01-19 06:28:07 +01:00
Christian Dywan
1f3313424f
Use a tree model filter visible function to limit recent items
2010-01-17 22:36:44 +01:00
Christian Dywan
c99921022f
Implement completion with live sqlite queries
...
If sqlite is available, we can directly query results from the
database and populate our model on the fly.
2010-01-17 18:14:49 +01:00
Christian Dywan
07261e284c
Re-implement location action with our own completion popup
...
Completion is triggered on key press only, with a delay of 150ms.
Completion can be triggered by input method usage.
The popup size adjusts to the entry size and closes if focus is lost.
2010-01-17 18:14:49 +01:00
Christian Dywan
27634e4f1e
Use prepared statement to read history array instead of exec
2010-01-17 18:14:49 +01:00
Christian Dywan
7f26cc7384
Remove 'Search engines in completion' functionality
...
The feature doesn't work well with more than two engines.
2010-01-17 18:14:49 +01:00
Christian Dywan
2d8c8bebf5
Add G_GNUC_CONST to all Midori type functions
2010-01-17 18:14:48 +01:00
Christian Dywan
86d060f250
Change db_ helpers in main.c into direct sqlite3_ calls
...
This means 1 function call instead of 2 or 3 calls for each
query and should reduce some overhead.
2010-01-15 07:07:00 +01:00
Christian Dywan
8dbc86361d
Implement 'Close other tabs' menu item in tab context menu
2010-01-14 02:49:19 +01:00
Dale Whittaker
96178e60b7
Check page icons of search engines first, afterwards icon names
2010-01-13 06:55:49 +01:00
Christian Dywan
789485a086
Do no extra type checking when querying the history database
2010-01-13 00:10:32 +01:00
André Stösel
4e561eeef3
Fixup the key value to allow Ctrl + Shift + Tab
2010-01-12 23:34:10 +01:00
Christian Dywan
dab3505e0c
Store argument vector and display it in about:version
2010-01-12 23:34:10 +01:00
André Stösel
ca5bfa1b1d
Allow the panel to expand, to stop it from ever-growing in fullscreen
2010-01-11 21:55:12 +01:00
Christoph Wickert
96a03e91bf
Use FileTransfer category rather than Network for download managers
2010-01-10 22:02:46 +01:00
Christian Dywan
a4a9cd91d3
Use an alignment the image size request to adjust close buttons
2010-01-10 22:02:46 +01:00
Christian Dywan
16947894d4
Make %u in command lines work just like %s
...
This is not strictly by the spec but it works in practise.
2010-01-10 22:02:46 +01:00
Christian Dywan
9cf6f6a3cc
Move around preferences so Open panels in Windows is always shown
2010-01-10 07:22:21 +01:00
André Stösel
de4eede5cc
It should be 'gint position', not gboolean
2010-01-10 07:22:20 +01:00
Christian Dywan
a7cbc73981
Add i18n comments for Paste Proceed as well as Go to next/ previous page
2010-01-10 07:22:20 +01:00
Christian Dywan
9db458ba9c
Hide panel toolbooks when there is only a controls button in there
2010-01-08 01:43:33 +01:00
Christian Dywan
317eefa1c8
Prevent a recurive loop when toggling operating controls
2010-01-08 01:08:37 +01:00
Christian Dywan
dba473e069
Move the logo on special pages to the background
2010-01-08 00:42:23 +01:00
Christian Dywan
a8cd1499ab
Move panel icons to the bottom and always remove the labels
...
This is an attempt at simplifying the panel, in the hope
that it is still discoverable enough.
2010-01-08 00:16:56 +01:00
Christian Dywan
cbebda0db4
Remove Plugins panel, instead add Netscape plugins to Extensions
...
Netscape Plugins cannot actually be activated or deactivated
at the moment.
2010-01-08 00:16:56 +01:00
Christian Dywan
f4c7df59b4
Connect accelerators of implicitly created panel actions
2010-01-08 00:16:55 +01:00
Christian Dywan
139132afbd
Implement about:version page with important build configuration aspects
2010-01-08 00:16:55 +01:00
André Stösel
5c89cc8bd2
Spell accept language header as 'Accept-Language'
2010-01-08 00:16:55 +01:00
André Stösel
b5b32495f9
Implement 'Preferred languages' preference, ACCEPT_LANGUAGE header
2010-01-07 01:35:51 +01:00
Christian Dywan
b7d09f38bb
Handle window raising without the help of unique
2010-01-06 23:40:46 +01:00
Christian Dywan
996f1a86d3
Omit an unused config variable when loading extensions
2010-01-06 23:40:45 +01:00
Christian Dywan
5d5d2517c8
Rename 'Spell checking languages' to 'Spelling dictionaries'
2010-01-06 23:40:45 +01:00
Christian Dywan
66d72c915e
Add a label 'Spell checking languages:' in front of the spell entry
...
The entry by itself is confusing to many users, and a label is better
than nothing while we don't have a better interface.
2010-01-04 23:42:30 +01:00
Christian Dywan
b8037dc906
Ctrl + Right-click to suppress javascript button handling
...
Pages like Google Maps handle right-clicks and either provide
their own sort of context menu or just disable the menu. We
want the option to always get our proper menu.
2010-01-04 23:42:30 +01:00
Christian Dywan
97d6137ea8
Disable developer extras in web app mode
2010-01-03 23:00:27 +01:00
Christian Dywan
bb9ec27402
Build only main.c in the progressive midori target
2010-01-03 22:58:04 +01:00
Christian Dywan
bebacc8565
Determine whether we can view the source via g_content_type_is_a
2010-01-03 22:26:15 +01:00
Christian Dywan
83f68c90d9
Use mnemonic s instead of C for 'Copy Link destination'
...
It can conflict if Copy is visible due to a selection.
2010-01-02 22:03:32 +01:00
Christian Dywan
3163c659e5
Implement 'Open Link as Web A_pplication' in link context menu
2010-01-02 21:59:34 +01:00
Christian Dywan
af43d5a761
Construct entry in location action, obsoleting location entry class
2010-01-02 01:25:57 +01:00
Christian Dywan
d55e771b3a
Merge MidoriLocationEntry progress drawing into GtkIconEntry
2010-01-02 00:21:49 +01:00
Christian Dywan
fb04846992
Fix a macro typo in the GtkIconEntry implementation
2010-01-01 23:45:29 +01:00
Christian Dywan
d81f84aa9c
Show bookmarkbar if 'Show in the toolbar' is used on a bookmark
2010-01-01 23:37:13 +01:00
Christian Dywan
578f74a308
Merge compat.h into sokoke and remove gtk_show_uri implementation
2010-01-01 23:24:03 +01:00
Christian Dywan
2f202f8020
Implement "Paste and proceed" menuitem in location context menu
2010-01-01 23:01:56 +01:00
Christian Dywan
311a5a8a1b
Store searches with tokens in the completion as a distinct item
...
Currently searches won't be stored persistently in the database.
2010-01-01 22:47:24 +01:00
Christian Dywan
3aff0a34d0
Disable 'inline' completion, it causes a huge extra matching overhead
2010-01-01 21:53:28 +01:00
Christian Dywan
8039785073
Move up/ down key handling from the entry into MidoriLocationAction
2010-01-01 18:23:15 +01:00
Christian Dywan
15658145b2
Build katze, core and panels as one, and allow non-progressive build
...
This simplifies the build and possibly helps with linking problems
on some platforms. The 'progressive' option allows building
without an intermediate static library except for unit tests.
2010-01-01 18:20:08 +01:00
Christian Dywan
fc7689f906
Move DNS prefetching into the core
...
The feature is going to be included with WebKitGTK+ and
having it in the core allows us to prefetch bookmarks as well.
2010-01-01 18:16:55 +01:00
Christian Dywan
35d99286d6
Enable page cache by default with WebKitGTK+ 1.1.18
2010-01-01 04:48:36 +01:00
Christian Dywan
df6f4a16b8
Show error message if bookmarklet/ javascript: fails
2009-12-31 05:15:24 +01:00
Enrico Tröger
9183f8e16d
Connect callbacks for gtk_widget_destroy where signature differs
...
Apparently dependent on architecture and compiler, mismatching
callback signatures can cause segmentation faults.
2009-12-29 23:49:10 +01:00
Christian Dywan
b1ee80d55e
Implement katze_utf8_stristr, katze_collfold and use in completion
...
Evidently normalizing any whole string is too slow for completion,
so we need to even out case and composition while iterating through
the strings.
The decompositing version of katze_utf8_stristr is disabled, since
it is too slow, and an ascii only version is used, for now.
A unit test 'compare' is added that solely measures performance of
katze_collfold and katze_utf8_stristr.
2009-12-28 23:59:54 +01:00
Christian Dywan
8b7fdb7a56
Check that g_utf8_normalize was non-NULL, fallback otherwise
2009-12-27 22:18:02 +01:00
Peter de Ridder
10d3733f2d
Reword history error messages to be more accurate
2009-12-27 17:20:42 +01:00
Christian Dywan
b973527239
Remove SelectionSourceView action stubs
...
The web inspector is more than good enough for inspecting select
parts of a page.
2009-12-27 17:05:40 +01:00
Christian Dywan
2d80e60106
Include 'Inspect element' in all menus and show Copy in link menus
2009-12-27 17:02:32 +01:00
Christian Dywan
bd078ed1dd
Print error on console if script execution failed
2009-12-27 16:54:34 +01:00
Christian Dywan
b45fe5cca2
Implement Next and Previous buttons and add to the default toolbar
2009-12-27 13:41:37 +01:00
Christian Dywan
f51785f0aa
Make completion 'inline' which makes it instanteous
...
Against expectation making the entry completion 'inline' does not
show the first match inline but completes instantly when typing.
2009-12-26 23:02:20 +01:00
Christian Dywan
bf11be2cfe
Normalize text when matching location completion
2009-12-26 22:57:18 +01:00
Christian Dywan
0f988af446
Tweak location match rendering by reducing conditions
2009-12-26 15:21:39 +01:00
Christian Dywan
3686061033
Update location icon for the correct view, and update it properly
2009-12-26 15:20:57 +01:00
Christian Dywan
be5c679b39
Optimize icon handling in MidoriView and use Find for blank page
...
We return early where appropriate and use icon names when possible.
2009-12-26 15:20:56 +01:00
Christian Dywan
fc8145aa41
Add workaround for wrong context menus in forms and certain links
...
There is no API currently to tell if the pointer is over a form
control and there seem to be cases of wrongly reported context.
2009-12-23 23:13:25 +01:00
Christian Dywan
112966fe67
Implement web inspector attaching/ detaching properly
2009-12-23 22:01:42 +01:00
Christian Dywan
407e4dd5d3
Enable web inspector by default and remove the preference
...
Apparently the web inspector is not discoverable and a lot of
people who would use it, are not aware of its existence. So
we enable it by default.
2009-12-23 16:24:51 +01:00
Christian Dywan
a671f8fd5b
Remove unused Original cookies only preference
...
If we implement it, a new value in accept-cookies is good enough.
2009-12-23 16:03:04 +01:00
Christian Dywan
973e4aa907
Bookmarking a link is a new bookmark, hence pass TRUE for new_bookmark
...
This used to work by accident as long as the code wasn't optimized
to avoid removing and adding existing bookmarks.
2009-12-23 15:26:34 +01:00
Christian Dywan
7801ecfeb5
Return TRUE when starting inline find, to prevent inserting . or /
2009-12-23 15:24:51 +01:00
Christian Dywan
cec6b31044
Initialize diagnostic_dialog to FALSE by default
2009-12-22 01:07:01 +01:00
Alexander Butenko
613979a579
Declare fd_recv early at the top of socket.c
2009-12-21 23:22:04 +01:00
Christian Dywan
d0e72f5d33
Fix crasher in sokoke_hostname_from_uri and add additional tests
2009-12-21 18:26:50 +01:00
Christian Dywan
4e25f72768
Fix two typos from replacing g_file_test with g_access in sokoke
2009-12-21 18:26:49 +01:00
Christian Dywan
8f0d632ef5
Add -d, --diagnostic-dialog command line switch
2009-12-21 18:26:49 +01:00
Alexander Butenko
045cc81b45
Use g_access instead of g_file_test consistently
2009-12-19 11:28:46 +01:00
Christian Dywan
a94cf71700
Turn libnotify into a build-time dependency, mind notify-send
...
libnotify support is decided at build-time now, to avoid so name
issues. notify-send is still optional at runtime as a fallback.
2009-12-15 00:03:28 +01:00
Christian Dywan
f905420967
Show spell checking preferences unconditionally
2009-12-14 23:25:33 +01:00
Christian Dywan
e04a078de4
Check for libnotify.so.1 and libenchant.so.1 explicitly
...
Some distributions only install versioned libraries by default
while the generic files reside in development packages. This is
because later versions may break ABI, so we explicitly use
the supported version.
2009-12-14 18:54:32 +01:00
Christian Dywan
c9da1beb1c
Fix visibility of the Statusbar action
2009-12-14 18:52:16 +01:00
Christian Dywan
a6a4f0ffec
Make sure there is an URI when spawning private browsing
...
This is mainly an issue for unit tests.
2009-12-13 15:59:54 +01:00
Christian Dywan
d2d5bf33b6
Implement context menu in menu items, forward buttons from the menubar
2009-12-13 15:44:02 +01:00
Christian Dywan
18ec1f25cb
Add primitive Private Browsing based on Midori web app mode
...
Essentially it's just an instance of Midori that doesn't load or
write any preferences or personal data. The main drawback is that
it doesn't load any extensions either.
2009-12-12 21:56:11 +01:00
Christian Dywan
ff2e042898
Show Manage Search Engines in the context menu of the address entry
2009-12-12 21:55:37 +01:00
Christian Dywan
fb5d74d53f
Validate uri and title in completion in case of invalid UTF-8
2009-12-12 18:04:48 +01:00
Christian Dywan
63e3672632
Validate formatted URI, otherwise pass the original URI
...
Apparently g_uri_unescape_string can return invalid UTF8, so
until we can replace or fix it, we double check to avoid
crashing in g_markup_escape_text and other places.
2009-12-12 01:21:06 +01:00
Christian Dywan
e403f2259b
Don't remove edited bookmark from parent if it's at the toplevel
2009-12-12 00:14:20 +01:00