summaryrefslogtreecommitdiff
path: root/Applications/FileManager
AgeCommit message (Collapse)Author
2020-07-15FileManager: Allow double-clicking applications againTom
By adding a special LauncherType::Application we can still get meta data for the application, but also know that we should consider executing that binary as the default action. LaunchServer will not do this for us, as it should probably not be allowed to run arbitrary binaries that haven't been registered as handlers.
2020-07-15FileManager: Add "Open with" menu if alternative applications are availableTom
2020-07-13LibGUI: Add ModelClient abstract class and allow registering clientsTom
This solves a problem where the SortingProxyModel doesn't receive the on_update call because other code overwrote the handler later on.
2020-07-11FileManager: Specify "Open in Text Editor" action as default in context menuTom
Since double-clicking the item would trigger the "Open in Text Editor" action, specify it as the default action when displaying the context menu.
2020-07-10FileManager: Show an open folder icon for the selected directorythankyouverycool
The currently selected directory now displays an open folder icon in the directory tree.
2020-07-04TextEditor: Tweak 16x16 iconAndreas Kling
In keeping with the slightly-higher-contrast theme.
2020-07-04LibGUI: Turn GUI::Application::the() into a pointerAndreas Kling
During app teardown, the Application object may be destroyed before something else, and so having Application::the() return a reference was obscuring the truth about its lifetime. This patch makes the API more honest by returning a pointer. While this makes call sites look a bit more sketchy, do note that the global Application pointer only becomes null during app teardown.
2020-07-04LibGUI: Make GUI::Application a Core::ObjectAndreas Kling
Having this on the stack makes whole-program teardown iffy. Turning it into a Core::Object allows anyone who needs it to extends its lifetime.
2020-07-03FileManager: Add "Open Terminal here..." action to menu and toolbarLinus Groh
Currently it's only available in the context menu, which isn't quite obvious.
2020-06-29FileManager: Show a folder icon in the location text box :^)Andreas Kling
2020-06-29Everywhere: Replace some uses of fork/exec with posix_spawnNico Weber
It's less code, and it's potentially more efficient once posix_spawn is a real syscall.
2020-06-18FileManager: Small improvements to PropertyDialog's apply button logicTill Mayer
The apply button used to be enabled directly after opening the dialog. Changes in the permissions now enable/disable the apply button as well.
2020-06-18FileManager: Replace Label with Image component to show iconsHüseyin ASLITÜRK
2020-06-17FileManager: Use Core::File::read_link()Sergey Bugaev
2020-05-29Meta: Add a script check the presence of "#pragma once" in header filesEmanuele Torre
.. and make travis run it. I renamed check-license-headers.sh to check-style.sh and expanded it so that it now also checks for the presence of "#pragma once" in .h files. It also checks the presence of a (single) blank line above and below the "#pragma once" line. I also added "#pragma once" to all the files that need it: even the ones we are not check. I also added/removed blank lines in order to make the script not fail. I also ran clang-format on the files I modified.
2020-05-26AK: Rename FileSystemPath -> LexicalPathSergey Bugaev
And move canonicalized_path() to a static method on LexicalPath. This is to make it clear that FileSystemPath/canonicalized_path() only perform *lexical* canonicalization.
2020-05-26Userland et al: Pledge sigaction when neededSergey Bugaev
* In some cases, we can first call sigaction()/signal(), then *not* pledge sigaction. * In other cases, we pledge sigaction at first, call sigaction()/signal() second, then pledge again, this time without sigaction. * In yet other cases, we keep the sigaction pledge. I suppose these could all be migrated to drop it or not pledge it at all, if somebody is interested in doing that.
2020-05-19FileManager: Remove empty public access modifier from DesktopWidgetLinus Groh
2020-05-18FileManager: Make the location box 2px tallerAndreas Kling
2020-05-16FileManager+LibGUI+Userland: Switch clipboard to MIME typesSergey Bugaev
We will now actually use MIME types for clipboard. The default type is now "text/plain" (instead of just "text"). This also fixes some issues in copy(1) and paste(1).
2020-05-14Clipboard: Move the system clipboard to a dedicated service process :^)Andreas Kling
This commit moves the clipboard from WindowServer into a new Clipboard service program. Clipboard runs as the unprivileged "clipboard" user and with a much tighter pledge than WindowServer. To keep things working as before, all GUI::Application users now make a connection to Clipboard after making the connection to WindowServer. It could be interesting to connect to Clipboard on demand, but right now that would necessitate expanding every GUI app's pledge to include "unix" and also unveiling the clipboard portal, which I prefer not to.
2020-05-14Build: Switch to CMake :^)Sergey Bugaev
Closes https://github.com/SerenityOS/serenity/issues/2080
2020-05-12LibGUI: Include keyboard modifier state with button on_click callsAndreas Kling
This will allow you us to implement special behavior when Ctrl+clicking a button.
2020-05-09LibDesktop: Switch to LaunchServer for DesktopServices::openNicholas Hollett
Moves DirectoryServices out of LibCore (because we need to link with LibIPC), renames it Desktop::Launcher (because Desktop::DesktopServices doesn't scan right) and ports it to use the LaunchServer which is now responsible for starting programs for a file.
2020-05-03AK+FileManager: Move out human_readable_size to AK::NumberFormatAnotherTest
2020-05-02LibGUI: The UI calls it 'Icon view', fix the name in the codeBen Wiederhake
2020-04-30FileManager: Realize the initial path when opened from the command lineAndreas Kling
2020-04-29FileManager: Fix crash when file properties has unnamed UID or GIDAndreas Kling
It's perfectly valid for a file to be owned by a UID or GID with no corresponding entry in /etc/passwd or /etc/group respectively. Fixes #1988.
2020-04-29DisplaySettings: Rename from DisplayPropertiesAndreas Kling
2020-04-28FileManager: Disable PropertiesDialog custom rename disabling logicAndres Vieira
TextBox already handles well its disabled state so it's no use to have a way to prevent it from PropertiesDialog, too.
2020-04-28FileManager: Disable permission checkboxes if user is not owner of pathAndres Vieira
2020-04-28FileManager: Deny rename in PropertiesDialog if user can't write in pathAndres Vieira
The FileManager PropertiesDialog always let the user change the name of files and folders to then be prompted with write permissions error. Now it checks for write permissions on the containing folder so it can "disable" the TextBox input. We can't really disable TextBox right now, hence the quotes.
2020-04-28FileManager: Disable delete action if user can't write in current pathAndres Vieira
Before this the delete action would be enabled in whenever was the case in which the user had some selection made. This patch forces a check to access() with the current folder path to see if the user actually can delete nodes in it.
2020-04-28FileManager: Add folder-specific paste actionAndres Vieira
This action is a bit different to the regular paste action because it takes into account the folder in which the context menu was opened, so it can be enabled/disabled whether that folder is writable or not for the current user. Both paste action use the same logic, now moved to the function do_action(const GUI::Action&), but in the case of the folder being right clicked, it pastes inside of it.
2020-04-28FileManager: Disable paste action for non-writable directoriesAndres Vieira
2020-04-28FileManager: Disables mkdir action if permissions don't allow itAndres Vieira
Now the "New directory..." contextual menu is disabled if the current user doesn't have enough permissions to create a node in the current path. This prevents the user going to the "New Directory" InputBox, writing an appropriate name and accepting just to find they can't even do it :)
2020-04-27FileManager: Add paste action to DirectoryView's context menuAndres Vieira
2020-04-27FileManager: Paste inside folder if done through its context menuAndres Vieira
Now FileManager will paste the clipboard contents inside a folder if the paste action was clicked through a folder context menu, being the target directory the selected folder. This mimicks most of the behaviours that the different file managers have.
2020-04-27FileManager: Copy and Delete selected file(s), not current folderAndres Vieira
FileManager had this weird behaviour in which it would ignore the current selection and try to copy and delete the current folder.
2020-04-26FileManager: Disable open_parent_directory_action if the new path is "/"Andres Vieira
2020-04-24FileManager: Set content margin of DirectoryView to same as childrenAndreas Kling
2020-04-23LibGUI: Add a ToolBarContainer widget and put most ToolBars in oneAndreas Kling
This mimics the Explorer toolbar container from Windows 2000 and looks pretty neat! :^)
2020-04-23Desktop: Context menu option to open FileManagerJonathan Archer
2020-04-23Desktop: Show DisplayProperties in context menuJonathan Archer
2020-04-23Desktop: File creation from the context menuJonathan Archer
Kinda hackish, but it does work.
2020-04-23Desktop: Add context menu for directory viewJonathan Archer
Only has the option to create a folder, but hey ;^)
2020-04-22FileManager: Fix buildAndreas Kling
2020-04-22FileManager: Exit the application cleanly when failing to open initial directoryangel
Co-Authored-By: Andreas Kling <kling@serenityos.org>
2020-04-22FileManager: Graceful handling of access errorsangel
A neat error message is displayed when failing to open a directory!
2020-04-21LibGUI: Make it easier to create checkable GUI::ActionsAndreas Kling
This patch adds GUI::Action::create_checkable() helpers that work just like the existing create() helpers, but the actions become checkable(!) Clients are no longer required to manage the checked state of their actions manually, but instead they will be checked/unchecked as needed by GUI::Action itself before the activation hook is fired.