« first day (1991 days earlier)      last day (1189 days later) » 
00:00 - 19:0019:00 - 00:00

12:00 AM
RELOAD!
[Minesweeper] Games Played: 74, Bombs Used: 46, Moves Performed: 10083, New Users: 12
 
 
9 hours later…
9:30 AM
 
 
3 hours later…
12:07 PM
wow... Rep recalculations continued through yesterday! I just earned my first badge on Aviation yesterday for a question I asked in '17!
 
12:31 PM
Amazing what happens after a weekend of thinking about something else.
Last week, I moved all my source code around for my Access project. I reopened my project and BOOM nothing was there. After a brief panic, I got distracted by other things and it's sat until this morning.
Re-opening the project this morning, there's still nothing in it (shocking, I know...), but it hit me - use OASIS-SVN to import the code from the new location!
Because Access only knows that the modules exist in the directory they were originally created in. Wait... that makes no sense... Access doesn't export/import files by default.
Why did Access loose visibility to all my code/queries/tables/forms when I moved the export/import directory?
This still makes zero sense...
(but it sounded good for a sec. And at least I'm not panicked about what to do about my missing code...)
 
1:10 PM
@FreeMan Did you use the OASIS import functionality after moving the code by any chance?
That would overwrite everything with nothing since that is the perceived state of the repo after removing all exported files.
 
1:26 PM
I don't remember 100% of my steps from last Thurs/Fri, but I'm certain that I did not do an import.
I'd moved everything from project to project\Forms, project\Modules, etc. because I like that structure better.
All was good. Then I read @this' article on OASIS set up and decided to move to project\Source\Modules, project\Source\Forms, etc. That's when everything disappeared from the .accdb
I right-clicked and used TortoiseGit's move with git function to move the files
After reimporting this morning, though, I'm finding issues with my code.
I foolishly reused a branch that seems to have been somewhat incomplete and behind the times.
I did git stash push, then git checkout master and it tells me error: The following untracked working tree files would be overwritten by checkout: for every file in the project.
I thought a git stash would effectively leave you with a clean working tree and you could checkout a different branch at will...
git status yields:
On branch FileReorg
Untracked files:
  (use "git add <file>..." to include in what will be committed)

        Forms/
        Modules/
        Queries/
        Reports/
        Tables/

nothing added to commit but untracked files present (use "git add" to track)
I'm discovering git is somewhat like C - plenty of rope to shoot yourself in the foot with. :(
 
Git stash would only stash changes to tracked files.
Looks like when you moved them, Git didn't pick them up.
 
though I believe git will offer you the tools to bandage said foot, you just have to know how.
 
I think VS does the git add automatically when you create/move a file?
 
untracked files requires a flag.... --untracked, I think
 
but they were all tracked on Thurs/Fri... no, things were still a bit fubared then, too.
Above is the output of git status - everything looks clean. I'm OK with the untracked files because I want to get to a different branch and things are good sitting where they are.
 
1:36 PM
FWIW, I'm not sure I understand the git status. Git doesn't deal with folders.
 
This is a git checkout master:
$ git checkout master
error: The following untracked working tree files would be overwritten by checkout:
        Forms/DataMove.def
        Forms/DataMove.layout
        Forms/GenQuarterlyRpt.def
followed by a complete list of every file in the project.
it's like git is internally confused.
oh... the following untracked files...
#ReadingFailure
These are the 'broken' set of files that won't compile at the moment. I need to physically move them elsewhere for now to make git happy, then I'll probably delete them once I get myself to a known good state.
 
but Forms/ is a folder, so why would it be even listed? I thought git always will list the files, not folder. unless it's a file with a folder name.
 
having opened one file that I know has issues and seeing those issues in the Modules folder
@this because those folders all have files in them and git wants to track them for me. I think...
 
the thing is that I expected it to list all files, not the folders, like this:
5 mins ago, by FreeMan
$ git checkout master
error: The following untracked working tree files would be overwritten by checkout:
        Forms/DataMove.def
        Forms/DataMove.layout
        Forms/GenQuarterlyRpt.def
That is what I expect in an output. Just Forms/ is unfamiliar to me.
 
from the command line, I've seen it list the folders like that since I first moved things to folders, so that's expected to me. Not sure it's right, but it's what I've seen...
OK, I moved the folders out of git & OASIS' sight and now git status is telling me everything is deleted. Makes sense. Another git stash push should put me right so I can get to my master branch, right?
Yes!
 
1:56 PM
I was able to git checkout master. However, upon importing all the code via OASIS, 2 of my forms ended up with all code duplicated and some random text between the copies
Private Sub DeclareTempVars()

  TempVars.Add "DBPath", GetUNC(CurrentProject.path & "\")

  TempVars.Add "dbServer", "Server=chmohcsysoc;"
  If TempVars.Item("dbPath").Value = "\\chp.clarian.org\group\mohc\vol1\SHARE\Business Solutions\Data Analyst\Quarterly Reports\PROD\" Then
    TempVars.Add "DevMode", False
    TempVars.Add "ConString", "Provider=SQLNCLI11;" & TempVars.Item("dbServer").Value & "Database=Reporting;Trusted_Connection=Yes;"
  Else
    TempVars.Add "DevMode", True
    TempVars.Add "ConString", "Provider=SQLNCLI11;" & TempVars.Item("dbServer").Value & "Database=ReportingDev
DeclareTempVars() is physically the last routine in the file.
I have no idea where the CodeBehindForm text came from
 
sounds like the merge went bad
 
Then Option Compare Database and all seemed good after that.
 
the CodeBehindForm is normally the marker in the exported text where the layout ends and the module starts
the fact there's code before CodeBehindForm means git got confused and just kind of.... smooshed them together
 
I wonder if that was because I was originally using my import/export that wrote the code & layout in one file then switched to OASIS and had it break them up.
 
Remember that git has no semantic knowledge of the code; all conflicts are resolved line by line and evidently, git decided that there wasn't a conflict; just an insertion in a different place.
Perhaps
Why don't you just start from a fresh branch?
 
1:59 PM
That's what I've been trying to do. This was on my master!
O_o
 
Oh dear
first, you do have a backup of the working file, right?
 
I do have my production .accdb
 
Then use that as your new source
 
the only change of significance is the file reorg.
i.e. move Prod .accdb to Dev, then export from that for a clean copy?
 
make a new branch
Delete everything in the working tree, commit, so that the branch is now effectively empty
Then export everything the way you want it into that branch. Commit again. There should be no merges going on.
 
2:01 PM
in that new branch, right?
 
Yes.
 
wish me luck!
 
Once you're satisfied this is all good, then you 'll need to push this to your master but specify that it's not to merge but rather take all changes from the new branch.
 
^ will have to find instructions...
 
(don't have the command handy, sorry)
 
2:02 PM
-f
 
but will force still merge?
 
git push -f (or --force).
No, it's a complete overwrite.
 
makes backup of messed up dev .accdb, just in case
 
I'm thinking of setting the merge strategy so that it's taking from one branch
OK
 
It's a full-on nuclear overwrite and nuke the history too.
 
2:04 PM
@Hosch250 pretty much what I'm after at this point.
 
That's why you try to avoid -f'ing the master branch.
Because it loses all history and everything.
 
there were no branches with any significant work that I'm concerned about maintaining.
Just to be sure...
 
@Hosch250 so, -f'ing leads to f'd up branch, gotcha.
 
@this It certainly can :D
 
1. Copy known good prod .accdb to dev
2. Make a new branch in dev
3. delete all files from the new branch
4. commit to create an empty working set
5. export to desired folder structure
6. git commit
7. git push -f (from branch to master) to force all changes overwriting master with known good status
 
2:07 PM
yeah
 
based on HEAD or master is the same thing and what I want, right?
actually, it doesn't matter since I'm going to blow everything away...
never mind...
All was good through step 6.
 MINGW64 /h/git/ROIReport/Source (ReorgCleanup)
$ git push -f
fatal: The current branch ReorgCleanup has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin ReorgCleanup
Do I need to checkout master then do a git merge ReorgCleanup then git push -f?
 
2:23 PM
no, do what it just said
git push -f --set-upstream master ReorgCleanup
 
No.
master is a branch. origin is a remote.
You don't want to set the upstream anyway.
Do git push master -f
 
What Hosch said
 
hrm...
$ git status
On branch ReorgCleanup
nothing to commit, working tree clean
$ git push master -f
fatal: 'master' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
just to be sure:
$ git status
On branch master
Your branch is ahead of 'origin/master' by 2 commits.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean
after checking out master, obviously
 
If you are in master, try this:
git pull ReorgCleanup -f
Actually, NVM, do this:
 
$ git pull ReorgCleanup -f
fatal: 'ReorgCleanup' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
 
2:33 PM
Go back to ReorgCleanup
And then do git push origin master -f
You need to specify the remote in the git push.
I thought it defaulted to the origin, but it doesn't.
 
Yay!
$ git push origin master -f
Enumerating objects: 8, done.
Counting objects: 100% (8/8), done.
Delta compression using up to 4 threads
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 639 bytes | 79.00 KiB/s, done.
Total 6 (delta 4), reused 0 (delta 0)
So, where, exactly does that leave me now?
I think that my master is now == to ReorgCleanup, so I can delete branches and move on with life, right?
 
Should be able to.
 
Ohhh, pretty picture! Not sure how to interpret it, though...
 
2:51 PM
@FreeMan Not sure how either.
 
I'll just trust all is good. At least until evidence proves otherwise.
 
3:08 PM
Just saw something that struck me as kind of funny.
Someone in the F# software foundation slack asked if anyone had gone from F# to Scala.
That would be better to ask in a Scala community?
 
This is a bit annoying: what should the behaviour be for ReorderParameters in case of partially named arguments?
 
@M.Doerner Isn't there one set?
 
well, you can't have named arguments before any positional arguments
 
I think the UI won't let you move them below the positional ones.
 
So therefore, you need 2 sections, (whether visible or not) that divides between positional arguments and named arguments.
 
3:16 PM
It'll pop an error or disable the OK button or something, if you do.
It's not visible, but I know I had that at one point.
 
The problem comes up if you reorder in a way that previously named arguments end up before previously prsitional arguments.
 
with named arguments, there's no real effect (except maybe for readability), so it should be in its own section so you can rearrange among other named arguments but not before any positional arguments which always come first.
 
@M.Doerner Ohh, I think I know what I did!
I think I only paid attention to the current call location, not globally.
 
We have all kind of checks regarding the parameters, but not the arguments of all references.
 
does Reorder Parameter normalize all the call sites?
 
3:18 PM
We take care to not mix up optional and mandatory parameters and param arrays, but we do not inspect all calls.
Currently, it simply reorders.
Named or not
 
does it make sense to want to normalize them?
If we did, it makes the work much simpler
Otherwise, it would have to evaluate each call site one by one
 
It would already be OK, if we left named arguments where they are and made positional arguments sorted after them named.
We have to evaluate each call site.
 
I assume you meant positional coming before the named, not after.
 
The user can write calls anyway he likes to.
I meant, after reordering the parameters.
Just confirmed, currently, the refactoring produces illegal code for partially named calls.
 
Are you sure it doesn't not reorder the named ones?
Ugh.
 
3:23 PM
It reorders the named ones. There are passing tests for it.
 
OK, LOL.
 
does it already divide it into 2 logical sections? If not, that would suffice to prevent such invalid refactoring.
 
What do you mean with two logical sections?
Where should it divide?
 
Like {named parameters} | {positional parameters}
 
between the positional and named
 
3:25 PM
That is not a property of the parameters.
 
It should probably leave the named and only reorder positional, or at worst reorder both, but always leave all named in front of all positional.
 
Thus, there cannot be a sensible separation for the refactoring.
That does not work.
 
I don't follow. The first occurance of a named parameter requires that all subsequent parameters be named for that call site.
 
Each and every call can distribute between positional and named in a different way.
 
That means the reordering cannot span that boundary, and thus must provide a named parameter.
If the boundary is not hit where the parameter reordering is supposed to happen, it can be positional.
 
3:27 PM
Being named is a property of the argument not the parameter.
 
Ok, but we still can see at a given call site when an argument is named, and adjust the reordering of parameters accordingly for that call, no?
 
I'm tracking, @M.Doerner! (for once, I get it! :)
 
We have to change arguments from named to non-named or the other way around in some cases.
My problem is to find the heuristic which way to go.
 
I would think that the rewrite would have to look at each individual call site, reorder the parameters, and if there are named parameters, either name all parameters, or name only those that come after the first named param for this call based on the new order.
 
Correct and that depends on finding the first named argument to divide the argument list into 2 logical sections, then see whether the reordering will need named or not, depending on how reorder should happen.
 
3:29 PM
Maybe have an option for the user to decide:
 
@FreeMan That's why I'm more inclined to normalize the call sites.
 
@this huh? pretty sure VBA doesn't care about that #TIL
 
1) Name all parameters
2) Name no parameters
3) Name as necessary
 
(hi @all!)
 
E.g. if your last argument was provided named and moved up front, you can either name all arguments or make the one argument positional.
 
3:31 PM
@M.Doerner There's a third option, actually.
You could do {named-args-as-originally} {positional-args-reordered}
 
It gets especially interesting if your parameters are optional and you have missinf positional arguments in between.
 
Which is what I was trying to propose above, but accidentally called them parameters.
 
What do you do, if a parameter with a named argument gets moved to the first position?
 
The problem is if I have (ByVal a, Optional ByVal b, Optional ByVal c). and my call site is "x", c:=7. then I reorganize the parms to (ByVal c, Optional ByVal b, Optional ByVal a). A simple reorg is c:=7, "x", but that won't compile
 
Well, you could either leave it as it is (they manually specified the original out-of-order position anyway), or you could reorder within the two sections.
 
3:34 PM
@M.Doerner that's what I said... :)
 
How can you reorder in the two sections?
 
Reorder the named parameters to be "in order", but still possibly out of order, then the positional ones.
 
The position of positional arguments has to match the parameter position and come before that of any named argument.
 
Interesting: In my ToDo explorer settings, I've got @ since I was trying (unsuccessfully) to get it to pick up annotations to make them easier to find.
In code I've borrowed, I've got:
' @class JsonConverter
' @author tim.hall.engr@gmail.com
' @license MIT (opensource.org/licenses/mit-license.php)
 
FWIW, I dislike several commas which makes for a confusing reading and even if there's only one comma, it is possible to create a seemingly valid call that still assigns wrong value to the parameter.
 
3:36 PM
Ohh, I thought named come first, then positional :(
Sorry.
 
and the ToDo Explorer is picking up @Author only...
 
Example: MsgBox "hi", "title" <-- compiles but will be a runtime error
 
NVM, just ignore me...
 
@FreeMan any "illegal annotation" results?
 
Msgbox "hi", , "title" is legal but .... bleh
 
3:38 PM
@MathieuGuindon Nope!
note the space between (') and (@)
I think that "fixes" the illegal annotation issue.
 
So, should I simply go with the following strategy: if there are named arguments, make them all named and drop missing arguments, if there are none, reorder the arguments?
 
So back to Max's question - if we are not going to normalize the calls, I think the best thing is to do the least impact, depending on the call sites. Meaning, we should prefer positional parameters whenever it is possible and failing that, name only what must be named, based on the new positions.
 
@M.Doerner seems reasonable, but that is a call-site by call-site analysis
 
It is.
 
@M.Doerner FWIW, I would prefer it did that (normalize the calls). That also encourage good coding
As I cited earlier with MsgBox example, it is too easy to end up with a call that looks legal but is wrong.
 
3:40 PM
I prefer it, because it gives me the least amount of headaches for the implementation.
 
@M.Doerner Sounds good.
 
4:25 PM
LOL, said question generated a massive rant about Scala and the JVM in particular.
TIL: Eta is a dialect of Haskell that runs on the JVM...
 
5:06 PM
@this You like Dapper, right?
What's the standard protocol for the direct SQL queries?
 
until I find something better. :)
 
The current system I'm working on just has them all in static strings in a file.
 
um, I don't do direct SQL queries?
 
Oh, right, you are the stored proc guy.
 
they should be put int a procedure or at least a tabled valued function
so at most, it'll be just a name & parameters, no more than that.
thinking about it further, I'm pretty sure I do have a repository class as to abstract out the mechanics of creating the parameters & naming the procedure/function
 
5:17 PM
@Hosch250 everybody should be the stored proc guy
 
Linq-to-Entities is good enough for me.
I don't need one stored proc to get a Foo by ID, another to get it by name, and yet another to get a set by date range.
 
TBH I haven't needed to use EF or any ORM in ages
ADO.NET works perfectly fine for me - plus I get to solve DB issues in a DB rather than in code :)
 
Good for you.
But, when working with non-trivial systems, sorry, but I simply can't see the number of SPs scaling nicely.
 
but yeah if I needed more than 2-3 entity types I'd probably want a mapper
number of entity types doesn't speak to trivialness/complexity of the system though
 
I wouldn't make a one stored procedure for each. That's horrid.
I would use a view or table-valued function and apply filters accordingly.
 
5:28 PM
in my case I have parts of the logic that need to hit a linked server hosted on AWS. code only needs to care for 1 single connection string because everything happens in SPs. Otherwise I'd need 4 connection strings, and my life would be a nightmare
 
That does imply you have the ORM to abstract out the filtering part.
(there's Dapper<something> package that handles this latter scenario)
 
OK, SQL question.
I have the following query:
select count(*)
from Foo f
group by f.Bar
having count(*) = 1
So, that returns a big long column of 1s.
Now, how do I count these results?
So, if I have 5 rows, I want 5 back.
 
with uniques as (
select count(*)
from Foo f
group by f.Bar
having count(*) = 1)
select count(*) from uniques
 
OK.
So, basically, two queries.
Nested query works too.
select count(*)
from (
    select count(*) [c]
    from Foo f
    group by f.Bar
    having count(*) = 1
) values
 
5:35 PM
Just was wondering if there was way to do it with one query.
 
except values is a keyword
 
CTE is more readable
 
FWIW, I'd have written it as ....
 
@MathieuGuindon LOL, good catch.
 
5:37 PM
SELECT ...
FROM foo AS f
WHERE EXISTS (
  SELECT NULL
  FROM foo AS x
  WHERE f.bar = x.bar
  HAVING COUNT(*) = 1
);
 
huh
why?
WHERE EXISTS (SELECT NULL...) is rather confusing IMO
 
because it's been my experience that SQL Server likes EXISTS better and does better job of optimizing, using anti-semi-joins for those.
 
yeah..... I'd go with readability first, and then optimize for perf if perf is a problem :)
 
SELECT NULL is precisely correct thing to do for EXISTS.
you should blame the SQL standard for requiring a SELECT in a EXISTS subquery.
 
so the outer query is just counting nulls?
(assuming "..." stands for a count(*))
 
5:40 PM
no. the SELECT in a EXISTS subquery has zero meaning
the ... is all the columns Hosch wants.
to illustrate this more clearly...
SELECT 1/0; <-- Division by zero error
SELECT 1
WHERE EXISTS (
  SELECT 1 /0
);
^ OK
 
wait how is HAVING legal without a GROUP BY clause? ...
I still can't parse it. checks caffeine levels
 
there's no need to have a GROUP BY since there's only one group
WHERE f.bar = x.bar is effectively grouping it into a single bucket
and there is nothing selected in the SELECT (which has ramifications on what you must have in a GROUP BY vs must be aggregated)
 
ah, so it's the SELECT NULL that allows using aggregation (HAVING COUNT(*)) without a GROUP BY
@Hosch250 XAML question if you have a minute
 
not the exact invocation. Same would be true were it SELECT 1, SELECT 'x' or SELECT bar
 
I'm trying to make a "Filter" button and have it aligned to the right of the column header, but for some reason it doesn't want to hear it and keeps sticking to the header text
 
5:55 PM
NULL is only there to emphasize that it really does not matter because EXISTS doesn't give a hoot what is in the SELECT; it's ignored entirely.
 
                <DataGridTextColumn.Header>
                    <DockPanel LastChildFill="True">
                        <ItemsControl DockPanel.Dock="Top">
                            <ItemsControl.ItemsPanel>
                                <ItemsPanelTemplate>
                                    <DockPanel HorizontalAlignment="Stretch" LastChildFill="True" />
                                </ItemsPanelTemplate>
                            </ItemsControl.ItemsPanel>
                            <TextBlock Text="Shop" />
 
@MathieuGuindon Sure. Can't promise I know anymore :)
 
@this right - any value that's not pulled from the table
 
 
@Feeds Great. Another one of those.
 
5:57 PM
Marge vs. the monorail?
Love the Asterix, though!
 
lol I remember that episode!
 
Evidently I missed that. What was that about?
Regarding "Kramer vs. Kramer" I wonder how many readers will mistake it for Seinfield's Kramer.
 
@this I did, LOL.
@MathieuGuindon What's the XAML question?
 
3 mins ago, by Mathieu Guindon
I'm trying to make a "Filter" button and have it aligned to the right of the column header, but for some reason it doesn't want to hear it and keeps sticking to the header text
 
I almost did, too.
 
6:00 PM
I want the filter icon to stick to the right (and the caption to stick to the left)
 
Did you try Width="*" on the textblock?
 
I tried inlining a .HeaderTemplate, but that blew the popup positioning
 
Or auto instead of *, maybe.
If that doesn't work, try using a grid with columns.
 
tried both
 
OK.
I'm lost then, without actually running it (can't--at work).
 
6:03 PM
all good, I couldn't have you run it anyway (can't--at work.. and it's kind of sensitive data)
 
OK, try this on the textblock: HorizontalAlignment="Stretch"
 
I'll probably just end up putting the icon on the left
@Hosch250 no cheese
 
OK.
 
I love WPF, but in moments like this.... ugh.
 
I think I know what's going on, though.
It is stretching to fill the parent control.
The parent control is sizing itself to fit the child, though.
 
6:05 PM
exactly
so.. there's no way to fix it without defining the HeaderTemplate, is there
 
If I had to guess, it's the dockpanel.
Maybe look at a different control?
It could be as simple as putting a 100% width on the parent controls.
 
eh, I'm in a <DataGridTextColumn.Header> tag, there's no parent control
oh ffs
if I put an explicit Width="100" on the DockPanel...
 
Exactly what I suggested :D
 
So, I guessed that from RD's dock panels.
 
6:10 PM
nope, not gonna do it
 
They are designed to be as small as possible, but expand to fill the required space, and drop down to show more controls if necessary.
I don't think you really want a dock panel there.
Pretty sure you want a stackpanel with orientation set to horizontal.
BBIAB, TFL.
 
..exactly what I had before trying the DockPanel
fml
 
Hmm.
Try it again with the width thing.
Or maybe * will work on the width thing?
 
squiggly green underline
I'll just put the icon on the left and call it a day
thanks anyway :)
the problem is that whatever I put in the header, it never stretches to fill all the available space in the column
stupid wpf
 
6:25 PM
@this covered in your book? expecting to find a copy under the tree this Christmas
 
not for Dapper in particular. The book focuses more more on the raw SQL, rather than the underlying technology stack that may form the final SQL.
 
I meant the specific items in that particular message. ;)
 
We do talk some about considerations that should go into the views & procedures. I can't remember off the hand if we include table-valued function because that is more SQL Server specific and the book is toward SQL standard.
 
@MathieuGuindon set up as a table with two <td> and make first 100px while not specifying the second. <tr width=100>
assuming that works like html
 
@Cyril that's the thing - I have no problem making the button look like it's right-aligned if the table column can't be resized. But the user can resize it, and if I made it 100-wide, then it looks very very awkward if the user made the column wider, and even more wrong if the column was made narrower (gets clipped)
the infuriating part is that the popup does work
^ "x" button right-aligned as intended
going to leave the button left-of-heading and move on :)
 
6:38 PM
@MathieuGuindon did you try putting the button in its own cell?
 
depending on the font, you can set font-size and pixel width using JS when resized
 
but it's wrong. WPF/XAML will handle the layout without any code... just needs the correct incantation
 
@MathieuGuindon then you need to try putting less WTF in the WPF. (sorry, don't have anything better than a snarky remark)
 
6:44 PM
i honestly don't see the issue with having it fixed and if the user shrinks it too small and blocks the text, it's the same as most docks in windows
i would chalk that up to diverting a river to fill a cup
resize the project dock in the microsoft IDE; just truncates the visible width
 
6:56 PM
>
Version 2.4.1.16231
OS: Microsoft Windows NT 10.0.18362.0, x64
Host Product: Microsoft Office x86
Host Version: 16.0.12130.20272
Host Executable: EXCEL.EXE

**Description**
If the user uses the Close button rather than the Cancel button to dismiss a refactoring dialog, the refactoring executes rather then cancelling.

**To Reproduce**
Steps to reproduce the behavior:
1. Attempt to Rename or Encapsulate a field.
2. Click on the Close button
3. The code pane is updated with refact
 
@Duga It's probably on all refactorings.
Dang, only 2.5 hours left before TTGH.
 
00:00 - 19:0019:00 - 00:00

« first day (1991 days earlier)      last day (1189 days later) »